@opentrons/step-generation 0.3.4-alpha.0 → 0.3.6-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.cjs CHANGED
@@ -1,150 +1,150 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("@opentrons/shared-data");function fb(){return{type:"INSUFFICIENT_TIPS",message:"Not enough tips to complete action"}}function mb(){return{type:"MISSING_96_CHANNEL_TIPRACK_ADAPTER",message:"A 96-channel cannot pick up tips fully without an adapter"}}function hb(){return{type:"REMOVE_96_CHANNEL_TIPRACK_ADAPTER",message:"A 96-channel cannot pick up tips partially with an adapter"}}function Bt(e){const{actionName:t,pipette:r,labware:n,well:a}=e;return{message:n==null||a==null?`Attempted to ${t} with no tip on pipette: ${r} in place`:`Attempted to ${t} with no tip on pipette: ${r} from ${n}'s well ${a}`,type:"NO_TIP_ON_PIPETTE"}}function _b(){return{message:"One or more of the pipettes has a tip",type:"PIPETTE_HAS_TIP"}}function ut(e){const{pipette:t}=e;return{message:`This step tries to use the ${t}. Add the pipette to your protocol or change the step to use a different pipette.`,type:"PIPETTE_DOES_NOT_EXIST"}}function ct(e){const{actionName:t,labware:r}=e;return console.warn(`Attempted to ${t} with labware id "${r}", this labware was not found under "labware"`),{message:`This step tries to use ${r}. Add the labware to your protocol or change the step to use a different labware.`,type:"LABWARE_DOES_NOT_EXIST"}}function Z(){return{message:"This step requires a module, but none is selected",type:"MISSING_MODULE"}}function yb(){return{message:"This module is not changing temperature because it has either been deactivated or is already holding a temperature. In order to pause the protocol and wait for your module to reach a temperature, you must first use a Temperature step to tell the module to start changing to a new temperature",type:"MISSING_TEMPERATURE_STEP"}}function np(){return{message:"This module is not currently running a profile.",type:"MISSING_PROFILE_STEP"}}function bb(e){const{volume:t,maxVolume:r,actionName:n}=e;return{message:`This step tries to ${n} ${t}µL, but the tip can only hold ${r}µL.`,type:"TIP_VOLUME_EXCEEDED"}}function rs(e){const{actionName:t,volume:r,maxVolume:n,disposalVolume:a}=e;return{message:a!=null?`Attemped to ${t} volume + disposal volume greater than pipette max volume (${r} + ${a} > ${n})`:`This step tries to ${t} ${r}µL, but the tip can only hold ${n}µL.`,type:"PIPETTE_VOLUME_EXCEEDED"}}const Tb=()=>({type:"MOVE_LOCATION_NOT_SPECIFIED",message:"This step is missing a move location."}),ma=()=>({type:"MODULE_PIPETTE_COLLISION_DANGER",message:"Gen 1 8-Channel pipettes cannot access labware or tip racks in slot 4 or 6 because they are adjacent to modules."}),gb=()=>({type:"THERMOCYCLER_BUSY_WITH_PROFILE",message:"This step cannot run while the Thermocycler is running a profile. Move the step outside the profile."}),_n=()=>({type:"THERMOCYCLER_LID_CLOSED",message:"Attempted to interact with contents of a thermocycler with the lid closed."}),is=()=>({type:"HEATER_SHAKER_LATCH_OPEN",message:"Attempted to interact with contents of a heater-shaker with the latch open."}),ap=()=>({type:"HEATER_SHAKER_LATCH_CLOSED",message:"Attempted to move the contents of a heater-shaker with the latch closed."}),Fr=()=>({type:"ABSORBANCE_READER_LID_CLOSED",message:"Attempted to interact with contents of an absorbance plate reader with the lid closed."}),Ib=()=>({type:"ABSORBANCE_READER_NO_INITIALIZATION",message:"This step tries to read labware without initializing the Plate Reader first. Initialize the Plate Reader module or remove this step in order to proceed."}),bh=()=>({type:"ABSORBANCE_READER_NO_GRIPPER",message:"This step involves opening or closing the Absorbance Plate Reader lid with a gripper. Add a gripper or remove step to proceed."}),Eb=()=>({type:"HOPPER_EMPTY",message:"Cannot retrieve labware from empty stacker"}),wb=()=>({type:"SHUTTLE_FULL",message:"Shuttle must be empty in order to retrieve labware from the stacker"}),Sb=()=>({type:"SHUTTLE_EMPTY",message:"Shuttle must have labware in order to store it in the stacker"}),Th=()=>({type:"MISMATCHED_STACKER_LABWARE_TYPE",message:"The stacker can only store a single type of labware at a time"}),Ab=()=>({type:"MISSING_STACKER_LABWARE_TYPE",message:"Add labware to the stacker in the starting deck so that you can refill it later"}),gh=()=>({type:"HOPPER_FULL",message:"The hopper has reached capacity"}),yn=()=>({type:"HEATER_SHAKER_IS_SHAKING",message:"Attempted to interact with the contents of a heater-shaker when it is shaking."}),Lb=e=>({type:"TALL_LABWARE_EAST_WEST_OF_HEATER_SHAKER",message:`Labware over 53 mm is ${e} of this Heater-Shaker module.`}),Ut=e=>{const{unsafePipetteMovementReason:t}=e;switch(t.type){case"thermocyclerLidCollision":return{type:"POSSIBLE_PIPETTE_COLLISION_THERMOCYCLER_LID",message:"There is a possibility that the Pipette will collide with the Thermocycler lid"};case"outsidePipetteExtents":return{type:"POSSIBLE_PIPETTE_COLLISION_OUTSIDE_DECK_EXTENTS",message:"There is a possibility that the pipette will move outside the deck extents."};case"adjacentAdressableAreaCollision":return{type:"POSSIBLE_PIPETTE_COLLISION_ADJACENT_ADDRESSABLE_AREA",message:`There is a possibility that the pipette will collide with adjacent items in ${t.addressableAreaCausingCollision.displayName}`,translationParams:{addressableAreaCausingCollisionDisplayName:t.addressableAreaCausingCollision.displayName}}}},ha=()=>({type:"HEATER_SHAKER_EAST_WEST_LATCH_OPEN",message:"The Heater-Shaker labware latch is open"}),_a=()=>({type:"HEATER_SHAKER_NORTH_SOUTH_EAST_WEST_SHAKING",message:"The Heater-Shaker is shaking"}),ya=()=>({type:"HEATER_SHAKER_EAST_WEST_MULTI_CHANNEL",message:"The Heater-Shaker is shaking"}),ls=()=>({type:"HEATER_SHAKER_NORTH_SOUTH__OF_NON_TIPRACK_WITH_MULTI_CHANNEL",message:"8-Channel pipette cannot access labware"}),bn=()=>({type:"LABWARE_OFF_DECK",message:"Attempted to interact with labware off deck"}),Ob=()=>({type:"LABWARE_ON_ANOTHER_ENTITY",message:"Attempted to move labware onto another entity with the same slotName"}),En=()=>({type:"DROP_TIP_LOCATION_DOES_NOT_EXIST",message:"The destination for dropping tip does not exist"}),Ih=()=>({type:"EQUIPMENT_DOES_NOT_EXIST",message:"Equipment does not exist."}),Rb=()=>({type:"GRIPPER_REQUIRED",message:"The gripper is required to fulfill this action"}),$t=e=>({type:"PIPETTING_INTO_COLUMN_4",message:`Cannot ${e.typeOfStep} into a column 4 slot.`}),vb=()=>({type:"CANNOT_MOVE_WITH_GRIPPER",message:"The gripper cannot move aluminum blocks"}),kb=()=>({type:"NO_TIP_SELECTED",message:"No tips were selected for this step"}),ba=()=>({type:"LABWARE_DISCARDED_IN_TRASH",message:"The labware was discarded in trash in a previous step."}),Eh=()=>({type:"SUBMERGE_BELOW_ASPIRATE",message:"The submerge position must be above the aspirate position"}),wh=()=>({type:"RETRACT_BELOW_ASPIRATE",message:"The retract position must be above the aspirate position"}),Pb=()=>({type:"SUBMERGE_BELOW_DISPENSE",message:"The submerge position must be above the dispense position"}),Cb=()=>({type:"RETRACT_BELOW_DISPENSE",message:"The retract position must be above the dispense position"}),Nb=()=>({type:"MULTI_ASPIRATE_VOLUME_TOO_HIGH",message:"Consolidate pipette path was selected but cannot fit volume for more than 1 well in the tip"}),Db=()=>({type:"MULTI_DISPENSE_VOLUME_TOO_HIGH",message:"Distribute pipette path was selected but cannot fit volume for more than 1 well in the tip"}),Mb=e=>({type:"CLOSING_THERMOCYCLER_WITH_INVALID_LABWARE_LID",message:`Closing the Thermocycler lid with ${e.lidDisplayName} in place will cause damage`}),sp=()=>({type:"RETURN_TIP_UNAVAILABLE",message:"Current tip does not have a known location to return to"}),Fb=()=>({type:"TIPRACK_LID_NOT_ALLOWED_ON_DECK",message:"The tip rack lid is not supported directly on the deck"}),qb=()=>({type:"NEXT_TIPRACK_HAS_LID",message:"A pipette cannot pick up tips from a tip rack with a lid"}),Ub=e=>({type:"STACK_TOO_HIGH",message:`The stack on slot ${e.slot} is too high`}),$b=()=>({type:"TOO_MANY_TIPS",message:"Action will pick up too many tips"}),Vb=()=>({type:"INCOMPLETE_PICKUP",message:"At least one of the selected tips is empty"}),Bb=()=>({type:"LABWARE_ON_HOPPER",message:"Labware cannot be moved from the Flex Stacker Hopper"}),xb=()=>({type:"MISSING_PUMP_ACTIVITY",message:"This module is not currently running a pump activity."}),Hb=e=>({type:"INVALID_WAIT_CONDITION",message:`Invalid wait condition: ${e}`}),Ta=()=>({type:"LIVE_TASK_ERROR",message:"This module is currently running a live task. Please wait for it to complete before performing this action."});function xe(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Fs,op;function Sh(){if(op)return Fs;op=1;var e=typeof globalThis=="object"&&globalThis&&globalThis.Object===Object&&globalThis;return Fs=e,Fs}var qs,ip;function xt(){if(ip)return qs;ip=1;var e=Sh(),t=typeof self=="object"&&self&&self.Object===Object&&self,r=e||t||Function("return this")();return qs=r,qs}var Us,lp;function wn(){if(lp)return Us;lp=1;var e=xt(),t=e.Symbol;return Us=t,Us}var $s,up;function zb(){if(up)return $s;up=1;var e=wn(),t=Object.prototype,r=t.hasOwnProperty,n=t.toString,a=e?e.toStringTag:void 0;function s(o){var i=r.call(o,a),l=o[a];try{o[a]=void 0;var u=!0}catch{}var p=n.call(o);return u&&(i?o[a]=l:delete o[a]),p}return $s=s,$s}var Vs,cp;function jb(){if(cp)return Vs;cp=1;var e=Object.prototype,t=e.toString;function r(n){return t.call(n)}return Vs=r,Vs}var Bs,pp;function Sn(){if(pp)return Bs;pp=1;var e=wn(),t=zb(),r=jb(),n="[object Null]",a="[object Undefined]",s=e?e.toStringTag:void 0;function o(i){return i==null?i===void 0?a:n:s&&s in Object(i)?t(i):r(i)}return Bs=o,Bs}var xs,dp;function er(){if(dp)return xs;dp=1;function e(t){return t!=null&&typeof t=="object"}return xs=e,xs}var Hs,fp;function ga(){if(fp)return Hs;fp=1;var e=Sn(),t=er(),r="[object Symbol]";function n(a){return typeof a=="symbol"||t(a)&&e(a)==r}return Hs=n,Hs}var zs,mp;function Ah(){if(mp)return zs;mp=1;var e=ga();function t(r,n,a){for(var s=-1,o=r.length;++s<o;){var i=r[s],l=n(i);if(l!=null&&(u===void 0?l===l&&!e(l):a(l,u)))var u=l,p=i}return p}return zs=t,zs}var js,hp;function Gb(){if(hp)return js;hp=1;function e(t,r){return t<r}return js=e,js}var Gs,_p;function Ia(){if(_p)return Gs;_p=1;function e(t){return t}return Gs=e,Gs}var Ws,yp;function Wb(){if(yp)return Ws;yp=1;var e=Ah(),t=Gb(),r=Ia();function n(a){return a&&a.length?e(a,r,t):void 0}return Ws=n,Ws}var Yb=Wb();const Kb=xe(Yb),Ea="TEMPERATURE_DEACTIVATED",tc="TEMPERATURE_AT_TARGET",rc="TEMPERATURE_APPROACHING_TARGET",qu=1,Lh=[c.MAGNETIC_MODULE_V1,c.TEMPERATURE_MODULE_V1],Uu="fixedTrash",Oh={type:c.MAGNETIC_MODULE_TYPE,engaged:!1},Rh={type:c.TEMPERATURE_MODULE_TYPE,status:Ea,targetTemperature:null},vh={type:c.THERMOCYCLER_MODULE_TYPE,currentBlockActivity:{type:"blockDeactivated"},lidTargetTemp:null,lidOpen:null,numProfilesStarted:0},kh={type:c.HEATERSHAKER_MODULE_TYPE,targetTemp:null,targetSpeed:null,latchOpen:null},Ph={type:"absorbanceReaderType",lidOpen:null,initialization:null},Ch={type:"magneticBlockType"},Nh={type:c.FLEX_STACKER_MODULE_TYPE,storedLabwareDetails:null,labwareInHopper:null,labwareOnShuttle:null,setStoredLabwareCount:1,fillCount:1},Dh={type:c.VACUUM_MODULE_TYPE,ventStatus:null,numPumpActivitiesStarted:0,currentPumpActivity:{type:"pumpDeactivated"}},Mh={[c.MAGNETIC_MODULE_TYPE]:Oh,[c.TEMPERATURE_MODULE_TYPE]:Rh,[c.THERMOCYCLER_MODULE_TYPE]:vh,[c.HEATERSHAKER_MODULE_TYPE]:kh,[c.ABSORBANCE_READER_TYPE]:Ph,[c.MAGNETIC_BLOCK_TYPE]:Ch,[c.FLEX_STACKER_MODULE_TYPE]:Nh,[c.VACUUM_MODULE_TYPE]:Dh},Xb="opentrons/opentrons_1_trash_1100ml_fixed/1",Zb="opentrons/opentrons_1_trash_3200ml_fixed/1",Me=["A4","B4","C4","D4"],wt={x:0,y:0,z:0},Fh="mounted",wa="CLEAN",Xt="DIRTY",ie="EMPTY",nc="automatic",St="manual",qh=["A4","B4","C4","D4"],Qb=["7","8","10","11"],je="hopper",Uh=["hopperA4","hopperB4","hopperC4","hopperD4"],$h={hopperA4:"A4",hopperB4:"B4",hopperC4:"C4",hopperD4:"D4"},Zt=["adapterLabwareId","primaryLabwareId","lidLabwareId"],Jb=["adapterLabwareURI","primaryLabwareURI","lidLabwareURI"],eT={A4:"hopperA4",B4:"hopperB4",C4:"hopperC4",D4:"hopperD4"},ac="vacuumDock",tT=c.VACUUM_MODULE_DOCK_A4_ADDRESSABLE_AREA,sc="open",Sa="closed",$u="power",Vu="pressure",rT="state",nT="profile",aT="pumpOff",sT="pumpOn",oT="vent",iT="open",lT="closed",uT="VACUUM_DEACTIVATED",cT="VACUUM_AT_TARGET",Ue=[];for(let e=0;e<256;++e)Ue.push((e+256).toString(16).slice(1));function pT(e,t=0){return(Ue[e[t+0]]+Ue[e[t+1]]+Ue[e[t+2]]+Ue[e[t+3]]+"-"+Ue[e[t+4]]+Ue[e[t+5]]+"-"+Ue[e[t+6]]+Ue[e[t+7]]+"-"+Ue[e[t+8]]+Ue[e[t+9]]+"-"+Ue[e[t+10]]+Ue[e[t+11]]+Ue[e[t+12]]+Ue[e[t+13]]+Ue[e[t+14]]+Ue[e[t+15]]).toLowerCase()}const dT=new Uint8Array(16);function fT(){return crypto.getRandomValues(dT)}function mT(e,t,r){return!t&&!e&&crypto.randomUUID?crypto.randomUUID():hT(e,t,r)}function hT(e,t,r){e=e||{};const n=e.random??e.rng?.()??fT();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t){if(r=r||0,r<0||r+16>t.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`);for(let a=0;a<16;++a)t[r+a]=n[a];return t}return pT(n)}var Ys,bp;function oc(){if(bp)return Ys;bp=1;function e(t,r){for(var n=-1,a=r.length,s=t.length;++n<a;)t[s+n]=r[n];return t}return Ys=e,Ys}var Ks,Tp;function _T(){if(Tp)return Ks;Tp=1;var e=Sn(),t=er(),r="[object Arguments]";function n(a){return t(a)&&e(a)==r}return Ks=n,Ks}var Xs,gp;function us(){if(gp)return Xs;gp=1;var e=_T(),t=er(),r=Object.prototype,n=r.hasOwnProperty,a=r.propertyIsEnumerable,s=e((function(){return arguments})())?e:function(o){return t(o)&&n.call(o,"callee")&&!a.call(o,"callee")};return Xs=s,Xs}var Zs,Ip;function Ze(){if(Ip)return Zs;Ip=1;var e=Array.isArray;return Zs=e,Zs}var Qs,Ep;function yT(){if(Ep)return Qs;Ep=1;var e=wn(),t=us(),r=Ze(),n=e?e.isConcatSpreadable:void 0;function a(s){return r(s)||t(s)||!!(n&&s&&s[n])}return Qs=a,Qs}var Js,wp;function Vh(){if(wp)return Js;wp=1;var e=oc(),t=yT();function r(n,a,s,o,i){var l=-1,u=n.length;for(s||(s=t),i||(i=[]);++l<u;){var p=n[l];a>0&&s(p)?a>1?r(p,a-1,s,o,i):e(i,p):o||(i[i.length]=p)}return i}return Js=r,Js}var eo,Sp;function Aa(){if(Sp)return eo;Sp=1;function e(t,r){for(var n=-1,a=t==null?0:t.length,s=Array(a);++n<a;)s[n]=r(t[n],n,t);return s}return eo=e,eo}var to,Ap;function bT(){if(Ap)return to;Ap=1;function e(){this.__data__=[],this.size=0}return to=e,to}var ro,Lp;function cs(){if(Lp)return ro;Lp=1;function e(t,r){return t===r||t!==t&&r!==r}return ro=e,ro}var no,Op;function ps(){if(Op)return no;Op=1;var e=cs();function t(r,n){for(var a=r.length;a--;)if(e(r[a][0],n))return a;return-1}return no=t,no}var ao,Rp;function TT(){if(Rp)return ao;Rp=1;var e=ps(),t=Array.prototype,r=t.splice;function n(a){var s=this.__data__,o=e(s,a);if(o<0)return!1;var i=s.length-1;return o==i?s.pop():r.call(s,o,1),--this.size,!0}return ao=n,ao}var so,vp;function gT(){if(vp)return so;vp=1;var e=ps();function t(r){var n=this.__data__,a=e(n,r);return a<0?void 0:n[a][1]}return so=t,so}var oo,kp;function IT(){if(kp)return oo;kp=1;var e=ps();function t(r){return e(this.__data__,r)>-1}return oo=t,oo}var io,Pp;function ET(){if(Pp)return io;Pp=1;var e=ps();function t(r,n){var a=this.__data__,s=e(a,r);return s<0?(++this.size,a.push([r,n])):a[s][1]=n,this}return io=t,io}var lo,Cp;function ds(){if(Cp)return lo;Cp=1;var e=bT(),t=TT(),r=gT(),n=IT(),a=ET();function s(o){var i=-1,l=o==null?0:o.length;for(this.clear();++i<l;){var u=o[i];this.set(u[0],u[1])}}return s.prototype.clear=e,s.prototype.delete=t,s.prototype.get=r,s.prototype.has=n,s.prototype.set=a,lo=s,lo}var uo,Np;function wT(){if(Np)return uo;Np=1;var e=ds();function t(){this.__data__=new e,this.size=0}return uo=t,uo}var co,Dp;function ST(){if(Dp)return co;Dp=1;function e(t){var r=this.__data__,n=r.delete(t);return this.size=r.size,n}return co=e,co}var po,Mp;function AT(){if(Mp)return po;Mp=1;function e(t){return this.__data__.get(t)}return po=e,po}var fo,Fp;function LT(){if(Fp)return fo;Fp=1;function e(t){return this.__data__.has(t)}return fo=e,fo}var mo,qp;function tr(){if(qp)return mo;qp=1;function e(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}return mo=e,mo}var ho,Up;function Bh(){if(Up)return ho;Up=1;var e=Sn(),t=tr(),r="[object AsyncFunction]",n="[object Function]",a="[object GeneratorFunction]",s="[object Proxy]";function o(i){if(!t(i))return!1;var l=e(i);return l==n||l==a||l==r||l==s}return ho=o,ho}var _o,$p;function OT(){if($p)return _o;$p=1;var e=xt(),t=e["__core-js_shared__"];return _o=t,_o}var yo,Vp;function RT(){if(Vp)return yo;Vp=1;var e=OT(),t=(function(){var n=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""})();function r(n){return!!t&&t in n}return yo=r,yo}var bo,Bp;function xh(){if(Bp)return bo;Bp=1;var e=Function.prototype,t=e.toString;function r(n){if(n!=null){try{return t.call(n)}catch{}try{return n+""}catch{}}return""}return bo=r,bo}var To,xp;function vT(){if(xp)return To;xp=1;var e=Bh(),t=RT(),r=tr(),n=xh(),a=/[\\^$.*+?()[\]{}|]/g,s=/^\[object .+?Constructor\]$/,o=Function.prototype,i=Object.prototype,l=o.toString,u=i.hasOwnProperty,p=RegExp("^"+l.call(u).replace(a,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function d(f){if(!r(f)||t(f))return!1;var _=e(f)?p:s;return _.test(n(f))}return To=d,To}var go,Hp;function kT(){if(Hp)return go;Hp=1;function e(t,r){return t?.[r]}return go=e,go}var Io,zp;function xr(){if(zp)return Io;zp=1;var e=vT(),t=kT();function r(n,a){var s=t(n,a);return e(s)?s:void 0}return Io=r,Io}var Eo,jp;function ic(){if(jp)return Eo;jp=1;var e=xr(),t=xt(),r=e(t,"Map");return Eo=r,Eo}var wo,Gp;function fs(){if(Gp)return wo;Gp=1;var e=xr(),t=e(Object,"create");return wo=t,wo}var So,Wp;function PT(){if(Wp)return So;Wp=1;var e=fs();function t(){this.__data__=e?e(null):{},this.size=0}return So=t,So}var Ao,Yp;function CT(){if(Yp)return Ao;Yp=1;function e(t){var r=this.has(t)&&delete this.__data__[t];return this.size-=r?1:0,r}return Ao=e,Ao}var Lo,Kp;function NT(){if(Kp)return Lo;Kp=1;var e=fs(),t="__lodash_hash_undefined__",r=Object.prototype,n=r.hasOwnProperty;function a(s){var o=this.__data__;if(e){var i=o[s];return i===t?void 0:i}return n.call(o,s)?o[s]:void 0}return Lo=a,Lo}var Oo,Xp;function DT(){if(Xp)return Oo;Xp=1;var e=fs(),t=Object.prototype,r=t.hasOwnProperty;function n(a){var s=this.__data__;return e?s[a]!==void 0:r.call(s,a)}return Oo=n,Oo}var Ro,Zp;function MT(){if(Zp)return Ro;Zp=1;var e=fs(),t="__lodash_hash_undefined__";function r(n,a){var s=this.__data__;return this.size+=this.has(n)?0:1,s[n]=e&&a===void 0?t:a,this}return Ro=r,Ro}var vo,Qp;function FT(){if(Qp)return vo;Qp=1;var e=PT(),t=CT(),r=NT(),n=DT(),a=MT();function s(o){var i=-1,l=o==null?0:o.length;for(this.clear();++i<l;){var u=o[i];this.set(u[0],u[1])}}return s.prototype.clear=e,s.prototype.delete=t,s.prototype.get=r,s.prototype.has=n,s.prototype.set=a,vo=s,vo}var ko,Jp;function qT(){if(Jp)return ko;Jp=1;var e=FT(),t=ds(),r=ic();function n(){this.size=0,this.__data__={hash:new e,map:new(r||t),string:new e}}return ko=n,ko}var Po,ed;function UT(){if(ed)return Po;ed=1;function e(t){var r=typeof t;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?t!=="__proto__":t===null}return Po=e,Po}var Co,td;function ms(){if(td)return Co;td=1;var e=UT();function t(r,n){var a=r.__data__;return e(n)?a[typeof n=="string"?"string":"hash"]:a.map}return Co=t,Co}var No,rd;function $T(){if(rd)return No;rd=1;var e=ms();function t(r){var n=e(this,r).delete(r);return this.size-=n?1:0,n}return No=t,No}var Do,nd;function VT(){if(nd)return Do;nd=1;var e=ms();function t(r){return e(this,r).get(r)}return Do=t,Do}var Mo,ad;function BT(){if(ad)return Mo;ad=1;var e=ms();function t(r){return e(this,r).has(r)}return Mo=t,Mo}var Fo,sd;function xT(){if(sd)return Fo;sd=1;var e=ms();function t(r,n){var a=e(this,r),s=a.size;return a.set(r,n),this.size+=a.size==s?0:1,this}return Fo=t,Fo}var qo,od;function lc(){if(od)return qo;od=1;var e=qT(),t=$T(),r=VT(),n=BT(),a=xT();function s(o){var i=-1,l=o==null?0:o.length;for(this.clear();++i<l;){var u=o[i];this.set(u[0],u[1])}}return s.prototype.clear=e,s.prototype.delete=t,s.prototype.get=r,s.prototype.has=n,s.prototype.set=a,qo=s,qo}var Uo,id;function HT(){if(id)return Uo;id=1;var e=ds(),t=ic(),r=lc(),n=200;function a(s,o){var i=this.__data__;if(i instanceof e){var l=i.__data__;if(!t||l.length<n-1)return l.push([s,o]),this.size=++i.size,this;i=this.__data__=new r(l)}return i.set(s,o),this.size=i.size,this}return Uo=a,Uo}var $o,ld;function uc(){if(ld)return $o;ld=1;var e=ds(),t=wT(),r=ST(),n=AT(),a=LT(),s=HT();function o(i){var l=this.__data__=new e(i);this.size=l.size}return o.prototype.clear=t,o.prototype.delete=r,o.prototype.get=n,o.prototype.has=a,o.prototype.set=s,$o=o,$o}var Vo,ud;function zT(){if(ud)return Vo;ud=1;var e="__lodash_hash_undefined__";function t(r){return this.__data__.set(r,e),this}return Vo=t,Vo}var Bo,cd;function jT(){if(cd)return Bo;cd=1;function e(t){return this.__data__.has(t)}return Bo=e,Bo}var xo,pd;function Hh(){if(pd)return xo;pd=1;var e=lc(),t=zT(),r=jT();function n(a){var s=-1,o=a==null?0:a.length;for(this.__data__=new e;++s<o;)this.add(a[s])}return n.prototype.add=n.prototype.push=t,n.prototype.has=r,xo=n,xo}var Ho,dd;function zh(){if(dd)return Ho;dd=1;function e(t,r){for(var n=-1,a=t==null?0:t.length;++n<a;)if(r(t[n],n,t))return!0;return!1}return Ho=e,Ho}var zo,fd;function jh(){if(fd)return zo;fd=1;function e(t,r){return t.has(r)}return zo=e,zo}var jo,md;function Gh(){if(md)return jo;md=1;var e=Hh(),t=zh(),r=jh(),n=1,a=2;function s(o,i,l,u,p,d){var f=l&n,_=o.length,m=i.length;if(_!=m&&!(f&&m>_))return!1;var h=d.get(o),b=d.get(i);if(h&&b)return h==i&&b==o;var T=-1,y=!0,A=l&a?new e:void 0;for(d.set(o,i),d.set(i,o);++T<_;){var S=o[T],g=i[T];if(u)var I=f?u(g,S,T,i,o,d):u(S,g,T,o,i,d);if(I!==void 0){if(I)continue;y=!1;break}if(A){if(!t(i,function(L,w){if(!r(A,w)&&(S===L||p(S,L,l,u,d)))return A.push(w)})){y=!1;break}}else if(!(S===g||p(S,g,l,u,d))){y=!1;break}}return d.delete(o),d.delete(i),y}return jo=s,jo}var Go,hd;function Wh(){if(hd)return Go;hd=1;var e=xt(),t=e.Uint8Array;return Go=t,Go}var Wo,_d;function GT(){if(_d)return Wo;_d=1;function e(t){var r=-1,n=Array(t.size);return t.forEach(function(a,s){n[++r]=[s,a]}),n}return Wo=e,Wo}var Yo,yd;function cc(){if(yd)return Yo;yd=1;function e(t){var r=-1,n=Array(t.size);return t.forEach(function(a){n[++r]=a}),n}return Yo=e,Yo}var Ko,bd;function WT(){if(bd)return Ko;bd=1;var e=wn(),t=Wh(),r=cs(),n=Gh(),a=GT(),s=cc(),o=1,i=2,l="[object Boolean]",u="[object Date]",p="[object Error]",d="[object Map]",f="[object Number]",_="[object RegExp]",m="[object Set]",h="[object String]",b="[object Symbol]",T="[object ArrayBuffer]",y="[object DataView]",A=e?e.prototype:void 0,S=A?A.valueOf:void 0;function g(I,L,w,E,v,k,$){switch(w){case y:if(I.byteLength!=L.byteLength||I.byteOffset!=L.byteOffset)return!1;I=I.buffer,L=L.buffer;case T:return!(I.byteLength!=L.byteLength||!k(new t(I),new t(L)));case l:case u:case f:return r(+I,+L);case p:return I.name==L.name&&I.message==L.message;case _:case h:return I==L+"";case d:var q=a;case m:var ee=E&o;if(q||(q=s),I.size!=L.size&&!ee)return!1;var pe=$.get(I);if(pe)return pe==L;E|=i,$.set(I,L);var _e=n(q(I),q(L),E,v,k,$);return $.delete(I),_e;case b:if(S)return S.call(I)==S.call(L)}return!1}return Ko=g,Ko}var Xo,Td;function Yh(){if(Td)return Xo;Td=1;var e=oc(),t=Ze();function r(n,a,s){var o=a(n);return t(n)?o:e(o,s(n))}return Xo=r,Xo}var Zo,gd;function Kh(){if(gd)return Zo;gd=1;function e(t,r){for(var n=-1,a=t==null?0:t.length,s=0,o=[];++n<a;){var i=t[n];r(i,n,t)&&(o[s++]=i)}return o}return Zo=e,Zo}var Qo,Id;function Xh(){if(Id)return Qo;Id=1;function e(){return[]}return Qo=e,Qo}var Jo,Ed;function pc(){if(Ed)return Jo;Ed=1;var e=Kh(),t=Xh(),r=Object.prototype,n=r.propertyIsEnumerable,a=Object.getOwnPropertySymbols,s=a?function(o){return o==null?[]:(o=Object(o),e(a(o),function(i){return n.call(o,i)}))}:t;return Jo=s,Jo}var ei,wd;function Zh(){if(wd)return ei;wd=1;function e(t,r){for(var n=-1,a=Array(t);++n<t;)a[n]=r(n);return a}return ei=e,ei}var sa={exports:{}},ti,Sd;function YT(){if(Sd)return ti;Sd=1;function e(){return!1}return ti=e,ti}sa.exports;var Ad;function hs(){return Ad||(Ad=1,(function(e,t){var r=xt(),n=YT(),a=t&&!t.nodeType&&t,s=a&&!0&&e&&!e.nodeType&&e,o=s&&s.exports===a,i=o?r.Buffer:void 0,l=i?i.isBuffer:void 0,u=l||n;e.exports=u})(sa,sa.exports)),sa.exports}var ri,Ld;function _s(){if(Ld)return ri;Ld=1;var e=9007199254740991,t=/^(?:0|[1-9]\d*)$/;function r(n,a){var s=typeof n;return a=a??e,!!a&&(s=="number"||s!="symbol"&&t.test(n))&&n>-1&&n%1==0&&n<a}return ri=r,ri}var ni,Od;function dc(){if(Od)return ni;Od=1;var e=9007199254740991;function t(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=e}return ni=t,ni}var ai,Rd;function KT(){if(Rd)return ai;Rd=1;var e=Sn(),t=dc(),r=er(),n="[object Arguments]",a="[object Array]",s="[object Boolean]",o="[object Date]",i="[object Error]",l="[object Function]",u="[object Map]",p="[object Number]",d="[object Object]",f="[object RegExp]",_="[object Set]",m="[object String]",h="[object WeakMap]",b="[object ArrayBuffer]",T="[object DataView]",y="[object Float32Array]",A="[object Float64Array]",S="[object Int8Array]",g="[object Int16Array]",I="[object Int32Array]",L="[object Uint8Array]",w="[object Uint8ClampedArray]",E="[object Uint16Array]",v="[object Uint32Array]",k={};k[y]=k[A]=k[S]=k[g]=k[I]=k[L]=k[w]=k[E]=k[v]=!0,k[n]=k[a]=k[b]=k[s]=k[T]=k[o]=k[i]=k[l]=k[u]=k[p]=k[d]=k[f]=k[_]=k[m]=k[h]=!1;function $(q){return r(q)&&t(q.length)&&!!k[e(q)]}return ai=$,ai}var si,vd;function fc(){if(vd)return si;vd=1;function e(t){return function(r){return t(r)}}return si=e,si}var oa={exports:{}};oa.exports;var kd;function mc(){return kd||(kd=1,(function(e,t){var r=Sh(),n=t&&!t.nodeType&&t,a=n&&!0&&e&&!e.nodeType&&e,s=a&&a.exports===n,o=s&&r.process,i=(function(){try{var l=a&&a.require&&a.require("util").types;return l||o&&o.binding&&o.binding("util")}catch{}})();e.exports=i})(oa,oa.exports)),oa.exports}var oi,Pd;function hc(){if(Pd)return oi;Pd=1;var e=KT(),t=fc(),r=mc(),n=r&&r.isTypedArray,a=n?t(n):e;return oi=a,oi}var ii,Cd;function Qh(){if(Cd)return ii;Cd=1;var e=Zh(),t=us(),r=Ze(),n=hs(),a=_s(),s=hc(),o=Object.prototype,i=o.hasOwnProperty;function l(u,p){var d=r(u),f=!d&&t(u),_=!d&&!f&&n(u),m=!d&&!f&&!_&&s(u),h=d||f||_||m,b=h?e(u.length,String):[],T=b.length;for(var y in u)(p||i.call(u,y))&&!(h&&(y=="length"||_&&(y=="offset"||y=="parent")||m&&(y=="buffer"||y=="byteLength"||y=="byteOffset")||a(y,T)))&&b.push(y);return b}return ii=l,ii}var li,Nd;function ys(){if(Nd)return li;Nd=1;var e=Object.prototype;function t(r){var n=r&&r.constructor,a=typeof n=="function"&&n.prototype||e;return r===a}return li=t,li}var ui,Dd;function Jh(){if(Dd)return ui;Dd=1;function e(t,r){return function(n){return t(r(n))}}return ui=e,ui}var ci,Md;function XT(){if(Md)return ci;Md=1;var e=Jh(),t=e(Object.keys,Object);return ci=t,ci}var pi,Fd;function e_(){if(Fd)return pi;Fd=1;var e=ys(),t=XT(),r=Object.prototype,n=r.hasOwnProperty;function a(s){if(!e(s))return t(s);var o=[];for(var i in Object(s))n.call(s,i)&&i!="constructor"&&o.push(i);return o}return pi=a,pi}var di,qd;function Hr(){if(qd)return di;qd=1;var e=Bh(),t=dc();function r(n){return n!=null&&t(n.length)&&!e(n)}return di=r,di}var fi,Ud;function La(){if(Ud)return fi;Ud=1;var e=Qh(),t=e_(),r=Hr();function n(a){return r(a)?e(a):t(a)}return fi=n,fi}var mi,$d;function t_(){if($d)return mi;$d=1;var e=Yh(),t=pc(),r=La();function n(a){return e(a,r,t)}return mi=n,mi}var hi,Vd;function ZT(){if(Vd)return hi;Vd=1;var e=t_(),t=1,r=Object.prototype,n=r.hasOwnProperty;function a(s,o,i,l,u,p){var d=i&t,f=e(s),_=f.length,m=e(o),h=m.length;if(_!=h&&!d)return!1;for(var b=_;b--;){var T=f[b];if(!(d?T in o:n.call(o,T)))return!1}var y=p.get(s),A=p.get(o);if(y&&A)return y==o&&A==s;var S=!0;p.set(s,o),p.set(o,s);for(var g=d;++b<_;){T=f[b];var I=s[T],L=o[T];if(l)var w=d?l(L,I,T,o,s,p):l(I,L,T,s,o,p);if(!(w===void 0?I===L||u(I,L,i,l,p):w)){S=!1;break}g||(g=T=="constructor")}if(S&&!g){var E=s.constructor,v=o.constructor;E!=v&&"constructor"in s&&"constructor"in o&&!(typeof E=="function"&&E instanceof E&&typeof v=="function"&&v instanceof v)&&(S=!1)}return p.delete(s),p.delete(o),S}return hi=a,hi}var _i,Bd;function QT(){if(Bd)return _i;Bd=1;var e=xr(),t=xt(),r=e(t,"DataView");return _i=r,_i}var yi,xd;function JT(){if(xd)return yi;xd=1;var e=xr(),t=xt(),r=e(t,"Promise");return yi=r,yi}var bi,Hd;function r_(){if(Hd)return bi;Hd=1;var e=xr(),t=xt(),r=e(t,"Set");return bi=r,bi}var Ti,zd;function eg(){if(zd)return Ti;zd=1;var e=xr(),t=xt(),r=e(t,"WeakMap");return Ti=r,Ti}var gi,jd;function Oa(){if(jd)return gi;jd=1;var e=QT(),t=ic(),r=JT(),n=r_(),a=eg(),s=Sn(),o=xh(),i="[object Map]",l="[object Object]",u="[object Promise]",p="[object Set]",d="[object WeakMap]",f="[object DataView]",_=o(e),m=o(t),h=o(r),b=o(n),T=o(a),y=s;return(e&&y(new e(new ArrayBuffer(1)))!=f||t&&y(new t)!=i||r&&y(r.resolve())!=u||n&&y(new n)!=p||a&&y(new a)!=d)&&(y=function(A){var S=s(A),g=S==l?A.constructor:void 0,I=g?o(g):"";if(I)switch(I){case _:return f;case m:return i;case h:return u;case b:return p;case T:return d}return S}),gi=y,gi}var Ii,Gd;function tg(){if(Gd)return Ii;Gd=1;var e=uc(),t=Gh(),r=WT(),n=ZT(),a=Oa(),s=Ze(),o=hs(),i=hc(),l=1,u="[object Arguments]",p="[object Array]",d="[object Object]",f=Object.prototype,_=f.hasOwnProperty;function m(h,b,T,y,A,S){var g=s(h),I=s(b),L=g?p:a(h),w=I?p:a(b);L=L==u?d:L,w=w==u?d:w;var E=L==d,v=w==d,k=L==w;if(k&&o(h)){if(!o(b))return!1;g=!0,E=!1}if(k&&!E)return S||(S=new e),g||i(h)?t(h,b,T,y,A,S):r(h,b,L,T,y,A,S);if(!(T&l)){var $=E&&_.call(h,"__wrapped__"),q=v&&_.call(b,"__wrapped__");if($||q){var ee=$?h.value():h,pe=q?b.value():b;return S||(S=new e),A(ee,pe,T,y,S)}}return k?(S||(S=new e),n(h,b,T,y,A,S)):!1}return Ii=m,Ii}var Ei,Wd;function _c(){if(Wd)return Ei;Wd=1;var e=tg(),t=er();function r(n,a,s,o,i){return n===a?!0:n==null||a==null||!t(n)&&!t(a)?n!==n&&a!==a:e(n,a,s,o,r,i)}return Ei=r,Ei}var wi,Yd;function rg(){if(Yd)return wi;Yd=1;var e=uc(),t=_c(),r=1,n=2;function a(s,o,i,l){var u=i.length,p=u,d=!l;if(s==null)return!p;for(s=Object(s);u--;){var f=i[u];if(d&&f[2]?f[1]!==s[f[0]]:!(f[0]in s))return!1}for(;++u<p;){f=i[u];var _=f[0],m=s[_],h=f[1];if(d&&f[2]){if(m===void 0&&!(_ in s))return!1}else{var b=new e;if(l)var T=l(m,h,_,s,o,b);if(!(T===void 0?t(h,m,r|n,l,b):T))return!1}}return!0}return wi=a,wi}var Si,Kd;function n_(){if(Kd)return Si;Kd=1;var e=tr();function t(r){return r===r&&!e(r)}return Si=t,Si}var Ai,Xd;function ng(){if(Xd)return Ai;Xd=1;var e=n_(),t=La();function r(n){for(var a=t(n),s=a.length;s--;){var o=a[s],i=n[o];a[s]=[o,i,e(i)]}return a}return Ai=r,Ai}var Li,Zd;function a_(){if(Zd)return Li;Zd=1;function e(t,r){return function(n){return n==null?!1:n[t]===r&&(r!==void 0||t in Object(n))}}return Li=e,Li}var Oi,Qd;function ag(){if(Qd)return Oi;Qd=1;var e=rg(),t=ng(),r=a_();function n(a){var s=t(a);return s.length==1&&s[0][2]?r(s[0][0],s[0][1]):function(o){return o===a||e(o,a,s)}}return Oi=n,Oi}var Ri,Jd;function yc(){if(Jd)return Ri;Jd=1;var e=Ze(),t=ga(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;function a(s,o){if(e(s))return!1;var i=typeof s;return i=="number"||i=="symbol"||i=="boolean"||s==null||t(s)?!0:n.test(s)||!r.test(s)||o!=null&&s in Object(o)}return Ri=a,Ri}var vi,ef;function sg(){if(ef)return vi;ef=1;var e=lc(),t="Expected a function";function r(n,a){if(typeof n!="function"||a!=null&&typeof a!="function")throw new TypeError(t);var s=function(){var o=arguments,i=a?a.apply(this,o):o[0],l=s.cache;if(l.has(i))return l.get(i);var u=n.apply(this,o);return s.cache=l.set(i,u)||l,u};return s.cache=new(r.Cache||e),s}return r.Cache=e,vi=r,vi}var ki,tf;function og(){if(tf)return ki;tf=1;var e=sg(),t=500;function r(n){var a=e(n,function(o){return s.size===t&&s.clear(),o}),s=a.cache;return a}return ki=r,ki}var Pi,rf;function ig(){if(rf)return Pi;rf=1;var e=og(),t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,r=/\\(\\)?/g,n=e(function(a){var s=[];return a.charCodeAt(0)===46&&s.push(""),a.replace(t,function(o,i,l,u){s.push(l?u.replace(r,"$1"):i||o)}),s});return Pi=n,Pi}var Ci,nf;function lg(){if(nf)return Ci;nf=1;var e=wn(),t=Aa(),r=Ze(),n=ga(),a=e?e.prototype:void 0,s=a?a.toString:void 0;function o(i){if(typeof i=="string")return i;if(r(i))return t(i,o)+"";if(n(i))return s?s.call(i):"";var l=i+"";return l=="0"&&1/i==-1/0?"-0":l}return Ci=o,Ci}var Ni,af;function ug(){if(af)return Ni;af=1;var e=lg();function t(r){return r==null?"":e(r)}return Ni=t,Ni}var Di,sf;function An(){if(sf)return Di;sf=1;var e=Ze(),t=yc(),r=ig(),n=ug();function a(s,o){return e(s)?s:t(s,o)?[s]:r(n(s))}return Di=a,Di}var Mi,of;function Ln(){if(of)return Mi;of=1;var e=ga();function t(r){if(typeof r=="string"||e(r))return r;var n=r+"";return n=="0"&&1/r==-1/0?"-0":n}return Mi=t,Mi}var Fi,lf;function bs(){if(lf)return Fi;lf=1;var e=An(),t=Ln();function r(n,a){a=e(a,n);for(var s=0,o=a.length;n!=null&&s<o;)n=n[t(a[s++])];return s&&s==o?n:void 0}return Fi=r,Fi}var qi,uf;function cg(){if(uf)return qi;uf=1;var e=bs();function t(r,n,a){var s=r==null?void 0:e(r,n);return s===void 0?a:s}return qi=t,qi}var Ui,cf;function pg(){if(cf)return Ui;cf=1;function e(t,r){return t!=null&&r in Object(t)}return Ui=e,Ui}var $i,pf;function dg(){if(pf)return $i;pf=1;var e=An(),t=us(),r=Ze(),n=_s(),a=dc(),s=Ln();function o(i,l,u){l=e(l,i);for(var p=-1,d=l.length,f=!1;++p<d;){var _=s(l[p]);if(!(f=i!=null&&u(i,_)))break;i=i[_]}return f||++p!=d?f:(d=i==null?0:i.length,!!d&&a(d)&&n(_,d)&&(r(i)||t(i)))}return $i=o,$i}var Vi,df;function fg(){if(df)return Vi;df=1;var e=pg(),t=dg();function r(n,a){return n!=null&&t(n,a,e)}return Vi=r,Vi}var Bi,ff;function mg(){if(ff)return Bi;ff=1;var e=_c(),t=cg(),r=fg(),n=yc(),a=n_(),s=a_(),o=Ln(),i=1,l=2;function u(p,d){return n(p)&&a(d)?s(o(p),d):function(f){var _=t(f,p);return _===void 0&&_===d?r(f,p):e(d,_,i|l)}}return Bi=u,Bi}var xi,mf;function s_(){if(mf)return xi;mf=1;function e(t){return function(r){return r?.[t]}}return xi=e,xi}var Hi,hf;function hg(){if(hf)return Hi;hf=1;var e=bs();function t(r){return function(n){return e(n,r)}}return Hi=t,Hi}var zi,_f;function _g(){if(_f)return zi;_f=1;var e=s_(),t=hg(),r=yc(),n=Ln();function a(s){return r(s)?e(n(s)):t(s)}return zi=a,zi}var ji,yf;function On(){if(yf)return ji;yf=1;var e=ag(),t=mg(),r=Ia(),n=Ze(),a=_g();function s(o){return typeof o=="function"?o:o==null?r:typeof o=="object"?n(o)?t(o[0],o[1]):e(o):a(o)}return ji=s,ji}var Gi,bf;function yg(){if(bf)return Gi;bf=1;function e(t){return function(r,n,a){for(var s=-1,o=Object(r),i=a(r),l=i.length;l--;){var u=i[t?l:++s];if(n(o[u],u,o)===!1)break}return r}}return Gi=e,Gi}var Wi,Tf;function bg(){if(Tf)return Wi;Tf=1;var e=yg(),t=e();return Wi=t,Wi}var Yi,gf;function o_(){if(gf)return Yi;gf=1;var e=bg(),t=La();function r(n,a){return n&&e(n,a,t)}return Yi=r,Yi}var Ki,If;function Tg(){if(If)return Ki;If=1;var e=Hr();function t(r,n){return function(a,s){if(a==null)return a;if(!e(a))return r(a,s);for(var o=a.length,i=n?o:-1,l=Object(a);(n?i--:++i<o)&&s(l[i],i,l)!==!1;);return a}}return Ki=t,Ki}var Xi,Ef;function bc(){if(Ef)return Xi;Ef=1;var e=o_(),t=Tg(),r=t(e);return Xi=r,Xi}var Zi,wf;function gg(){if(wf)return Zi;wf=1;var e=bc(),t=Hr();function r(n,a){var s=-1,o=t(n)?Array(n.length):[];return e(n,function(i,l,u){o[++s]=a(i,l,u)}),o}return Zi=r,Zi}var Qi,Sf;function Ig(){if(Sf)return Qi;Sf=1;var e=Aa(),t=On(),r=gg(),n=Ze();function a(s,o){var i=n(s)?e:r;return i(s,t(o,3))}return Qi=a,Qi}var Ji,Af;function Eg(){if(Af)return Ji;Af=1;var e=Vh(),t=Ig();function r(n,a){return e(t(n,a),1)}return Ji=r,Ji}var wg=Eg();const Tn=xe(wg);var el,Lf;function i_(){if(Lf)return el;Lf=1;var e=xr(),t=(function(){try{var r=e(Object,"defineProperty");return r({},"",{}),r}catch{}})();return el=t,el}var tl,Of;function Tc(){if(Of)return tl;Of=1;var e=i_();function t(r,n,a){n=="__proto__"&&e?e(r,n,{configurable:!0,enumerable:!0,value:a,writable:!0}):r[n]=a}return tl=t,tl}var rl,Rf;function Sg(){if(Rf)return rl;Rf=1;var e=Tc(),t=o_(),r=On();function n(a,s){var o={};return s=r(s,3),t(a,function(i,l,u){e(o,l,s(i,l,u))}),o}return rl=n,rl}var Ag=Sg();const Jt=xe(Ag);var nl,vf;function Lg(){if(vf)return nl;vf=1;var e=Math.ceil,t=Math.max;function r(n,a,s,o){for(var i=-1,l=t(e((a-n)/(s||1)),0),u=Array(l);l--;)u[o?l:++i]=n,n+=s;return u}return nl=r,nl}var al,kf;function gc(){if(kf)return al;kf=1;var e=cs(),t=Hr(),r=_s(),n=tr();function a(s,o,i){if(!n(i))return!1;var l=typeof o;return(l=="number"?t(i)&&r(o,i.length):l=="string"&&o in i)?e(i[o],s):!1}return al=a,al}var sl,Pf;function Og(){if(Pf)return sl;Pf=1;var e=/\s/;function t(r){for(var n=r.length;n--&&e.test(r.charAt(n)););return n}return sl=t,sl}var ol,Cf;function Rg(){if(Cf)return ol;Cf=1;var e=Og(),t=/^\s+/;function r(n){return n&&n.slice(0,e(n)+1).replace(t,"")}return ol=r,ol}var il,Nf;function vg(){if(Nf)return il;Nf=1;var e=Rg(),t=tr(),r=ga(),n=NaN,a=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,o=/^0o[0-7]+$/i,i=parseInt;function l(u){if(typeof u=="number")return u;if(r(u))return n;if(t(u)){var p=typeof u.valueOf=="function"?u.valueOf():u;u=t(p)?p+"":p}if(typeof u!="string")return u===0?u:+u;u=e(u);var d=s.test(u);return d||o.test(u)?i(u.slice(2),d?2:8):a.test(u)?n:+u}return il=l,il}var ll,Df;function l_(){if(Df)return ll;Df=1;var e=vg(),t=1/0,r=17976931348623157e292;function n(a){if(!a)return a===0?a:0;if(a=e(a),a===t||a===-t){var s=a<0?-1:1;return s*r}return a===a?a:0}return ll=n,ll}var ul,Mf;function kg(){if(Mf)return ul;Mf=1;var e=Lg(),t=gc(),r=l_();function n(a){return function(s,o,i){return i&&typeof i!="number"&&t(s,o,i)&&(o=i=void 0),s=r(s),o===void 0?(o=s,s=0):o=r(o),i=i===void 0?s<o?1:-1:r(i),e(s,o,i,a)}}return ul=n,ul}var cl,Ff;function Pg(){if(Ff)return cl;Ff=1;var e=kg(),t=e();return cl=t,cl}var Cg=Pg();const dn=xe(Cg);var pl,qf;function Ng(){if(qf)return pl;qf=1;function e(t,r,n,a){var s=-1,o=t==null?0:t.length;for(a&&o&&(n=t[++s]);++s<o;)n=r(n,t[s],s,t);return n}return pl=e,pl}var dl,Uf;function Dg(){if(Uf)return dl;Uf=1;function e(t,r,n,a,s){return s(t,function(o,i,l){n=a?(a=!1,o):r(n,o,i,l)}),n}return dl=e,dl}var fl,$f;function Mg(){if($f)return fl;$f=1;var e=Ng(),t=bc(),r=On(),n=Dg(),a=Ze();function s(o,i,l){var u=a(o)?e:n,p=arguments.length<3;return u(o,r(i,4),l,p,t)}return fl=s,fl}var Fg=Mg();const lt=xe(Fg),Ts=(e,t,r)=>{const{gripperEntities:n,moduleEntities:a}=t,s=Un(r,e.moduleId),o=Object.keys(n).length>0,i=[];if((e.moduleId==null||s==null)&&i.push(Z()),o||i.push(bh()),i.length>0)return{errors:i};const l=a[e.moduleId].pythonName;return{commands:[{commandType:"absorbanceReader/closeLid",key:D(),params:{moduleId:e.moduleId}}],python:`${l}.close_lid()`}},u_=(e,t,r)=>{const{moduleId:n,sampleWavelengths:a,measureMode:s,referenceWavelength:o}=e,i=t.moduleEntities[n].pythonName,l=o!=null?`, reference_wavelength=${o}`:"";return{commands:[{commandType:"absorbanceReader/initialize",key:D(),params:{moduleId:n,measureMode:s,sampleWavelengths:a,...o!=null?{referenceWavelength:o}:{}}}],python:`${i}.initialize(${N(s)}, ${Es(a)}${l})`}},c_=(e,t,r)=>{const{gripperEntities:n,moduleEntities:a}=t,s=Un(r,e.moduleId),o=Object.keys(n).length>0,i=[];if((e.moduleId==null||s==null)&&i.push(Z()),o||i.push(bh()),i.length>0)return{errors:i};const l=a[e.moduleId].pythonName;return{commands:[{commandType:"absorbanceReader/openLid",key:D(),params:{moduleId:e.moduleId}}],python:`${l}.open_lid()`}},p_=(e,t,r)=>{const{moduleId:n,fileName:a}=e,s=[],o=Un(r,n);if(o==null)return{errors:[Z()]};o.initialization===null&&s.push(Fr());const i=t.moduleEntities[n].pythonName,l=a!=null?`export_filename=${N(a)}`:"";return s.length>0?{errors:s}:{commands:[{commandType:"absorbanceReader/read",key:D(),params:{moduleId:n,...a!=null?{fileName:a}:{}}}],python:`${i}.read(${l})`}},At=(e,t,r)=>{const{flowRate:n,pipetteId:a,volume:s,correctionVolume:o}=e,i=[];t.pipetteEntities[a]?.spec||i.push(ut({pipette:a}));const u=t.pipetteEntities[a].pythonName;return{commands:[{commandType:"airGapInPlace",key:D(),params:{flowRate:n,pipetteId:a,volume:s,...o!=null?{correctionVolume:o}:{}}}],python:`${u}.air_gap(${[`volume=${s}`,"in_place=True",`flow_rate=${n}`].join(", ")})`}},qg=(e,t,r)=>{const{pipetteId:n,volume:a,labwareId:s,wellName:o,flowRate:i,isAirGap:l,tipRack:u,wellLocation:p,primaryNozzle:d,nozzles:f}=e,_="aspirate",m=r.labware,h=[],b=t.pipetteEntities[n]?.spec,T=(b?.displayCategory==="FLEX"||b?.channels===96)??!1,y=Cn(s,r.labware);if(b||h.push(ut({pipette:n})),!s||!r.labware[s]?h.push(ct({actionName:_,labware:s})):G(r.labware[s].stack)==="offDeck"&&h.push(bn()),Me.includes(y))h.push($t({typeOfStep:_}));else if(m[y]!=null){const v=G(m[y].stack);Me.includes(v)&&h.push($t({typeOfStep:_}))}Dn({pipette:n,labware:s,invariantContext:t,prevRobotState:r})&&h.push(ma()),r.tipState.pipettes[n]?.hasTip||h.push(Bt({actionName:_,pipette:n,labware:s,well:o}));const A=t.pipetteEntities[n]?.spec.channels!==1,S=dt({robotState:r,invariantContext:t,pipetteId:n,labwareId:s,wellLocationOffset:p?.offset??{x:0,y:0,z:0},wellTargetName:o,primaryNozzle:d,nozzleConfiguration:f});if(A&&b&&!S.isSafe&&h.push(Ut({unsafePipetteMovementReason:S.reason})),Ma(r.modules,r.labware,s)&&h.push(_n()),Ca(r.modules,r.labware,s)&&h.push(Fr()),Ua(r.modules,r.labware,s)&&h.push(is()),$a(r.modules,r.labware,s)&&h.push(yn()),qn(r.modules,y,T?c.FLEX_ROBOT_TYPE:c.OT2_ROBOT_TYPE)&&h.push(_a()),T||(Mn(r.modules,y)&&h.push(ha()),Fn(r.modules,y,b)&&h.push(ya()),qa(r.modules,y,b,t.labwareEntities[s])&&h.push(ls())),h.length===0&&b&&b.liquids.default.maxVolume<a&&h.push(rs({actionName:_,volume:a,maxVolume:b.liquids.default.maxVolume})),h.length===0&&b){const v=Ns(n,t,u);v<a&&h.push(bb({actionName:_,volume:a,maxVolume:v}))}if(h.length>0)return{errors:h};const g=[{commandType:"aspirate",key:D(),params:{pipetteId:n,volume:a,labwareId:s,wellName:o,wellLocation:p,flowRate:i},...l&&{meta:{isAirGap:l}}}],I=t.pipetteEntities[n].pythonName,L=t.labwareEntities[s].pythonName,w=[`volume=${a}`,`location=${L}[${N(o)}]${Vt(p)}`,`flow_rate=${i}`],E=`${I}.aspirate(
2
- ${K(w.join(`,
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("@opentrons/shared-data");function Cb(){return{type:"INSUFFICIENT_TIPS",message:"Not enough tips to complete action"}}function Nb(){return{type:"MISSING_96_CHANNEL_TIPRACK_ADAPTER",message:"A 96-channel cannot pick up tips fully without an adapter"}}function Db(){return{type:"REMOVE_96_CHANNEL_TIPRACK_ADAPTER",message:"A 96-channel cannot pick up tips partially with an adapter"}}function xt(e){const{actionName:t,pipette:r,labware:n,well:a}=e;return{message:n==null||a==null?`Attempted to ${t} with no tip on pipette: ${r} in place`:`Attempted to ${t} with no tip on pipette: ${r} from ${n}'s well ${a}`,type:"NO_TIP_ON_PIPETTE"}}function Mb(){return{message:"One or more of the pipettes has a tip",type:"PIPETTE_HAS_TIP"}}function ct(e){const{pipette:t}=e;return{message:`This step tries to use the ${t}. Add the pipette to your protocol or change the step to use a different pipette.`,type:"PIPETTE_DOES_NOT_EXIST"}}function pt(e){const{actionName:t,labware:r}=e;return console.warn(`Attempted to ${t} with labware id "${r}", this labware was not found under "labware"`),{message:`This step tries to use ${r}. Add the labware to your protocol or change the step to use a different labware.`,type:"LABWARE_DOES_NOT_EXIST"}}function Q(){return{message:"This step requires a module, but none is selected",type:"MISSING_MODULE"}}function Fb(){return{message:"This module is not changing temperature because it has either been deactivated or is already holding a temperature. In order to pause the protocol and wait for your module to reach a temperature, you must first use a Temperature step to tell the module to start changing to a new temperature",type:"MISSING_TEMPERATURE_STEP"}}function pp(){return{message:"This module is not currently running a profile.",type:"MISSING_PROFILE_STEP"}}function Ub(e){const{volume:t,maxVolume:r,actionName:n}=e;return{message:`This step tries to ${n} ${t}µL, but the tip can only hold ${r}µL.`,type:"TIP_VOLUME_EXCEEDED"}}function os(e){const{actionName:t,volume:r,maxVolume:n,disposalVolume:a}=e;return{message:a!=null?`Attemped to ${t} volume + disposal volume greater than pipette max volume (${r} + ${a} > ${n})`:`This step tries to ${t} ${r}µL, but the tip can only hold ${n}µL.`,type:"PIPETTE_VOLUME_EXCEEDED"}}const qb=()=>({type:"MOVE_LOCATION_NOT_SPECIFIED",message:"This step is missing a move location."}),Ta=()=>({type:"MODULE_PIPETTE_COLLISION_DANGER",message:"Gen 1 8-Channel pipettes cannot access labware or tip racks in slot 4 or 6 because they are adjacent to modules."}),$b=()=>({type:"THERMOCYCLER_BUSY_WITH_PROFILE",message:"This step cannot run while the Thermocycler is running a profile. Move the step outside the profile."}),In=()=>({type:"THERMOCYCLER_LID_CLOSED",message:"Attempted to interact with contents of a thermocycler with the lid closed."}),ps=()=>({type:"HEATER_SHAKER_LATCH_OPEN",message:"Attempted to interact with contents of a heater-shaker with the latch open."}),dp=()=>({type:"HEATER_SHAKER_LATCH_CLOSED",message:"Attempted to move the contents of a heater-shaker with the latch closed."}),Mr=()=>({type:"ABSORBANCE_READER_LID_CLOSED",message:"Attempted to interact with contents of an absorbance plate reader with the lid closed."}),Vb=()=>({type:"ABSORBANCE_READER_NO_INITIALIZATION",message:"This step tries to read labware without initializing the Plate Reader first. Initialize the Plate Reader module or remove this step in order to proceed."}),Ah=()=>({type:"ABSORBANCE_READER_NO_GRIPPER",message:"This step involves opening or closing the Absorbance Plate Reader lid with a gripper. Add a gripper or remove step to proceed."}),Bb=()=>({type:"HOPPER_EMPTY",message:"Cannot retrieve labware from empty stacker"}),xb=()=>({type:"SHUTTLE_FULL",message:"Shuttle must be empty in order to retrieve labware from the stacker"}),Hb=()=>({type:"SHUTTLE_EMPTY",message:"Shuttle must have labware in order to store it in the stacker"}),Lh=()=>({type:"MISMATCHED_STACKER_LABWARE_TYPE",message:"The stacker can only store a single type of labware at a time"}),zb=()=>({type:"MISSING_STACKER_LABWARE_TYPE",message:"Add labware to the stacker in the starting deck so that you can refill it later"}),Oh=()=>({type:"HOPPER_FULL",message:"The hopper has reached capacity"}),En=()=>({type:"HEATER_SHAKER_IS_SHAKING",message:"Attempted to interact with the contents of a heater-shaker when it is shaking."}),jb=e=>({type:"TALL_LABWARE_EAST_WEST_OF_HEATER_SHAKER",message:`Labware over 53 mm is ${e} of this Heater-Shaker module.`}),$t=e=>{const{unsafePipetteMovementReason:t}=e;switch(t.type){case"thermocyclerLidCollision":return{type:"POSSIBLE_PIPETTE_COLLISION_THERMOCYCLER_LID",message:"There is a possibility that the Pipette will collide with the Thermocycler lid"};case"outsidePipetteExtents":return{type:"POSSIBLE_PIPETTE_COLLISION_OUTSIDE_DECK_EXTENTS",message:"There is a possibility that the pipette will move outside the deck extents."};case"adjacentAdressableAreaCollision":return{type:"POSSIBLE_PIPETTE_COLLISION_ADJACENT_ADDRESSABLE_AREA",message:`There is a possibility that the pipette will collide with adjacent items in ${t.addressableAreaCausingCollision.displayName}`,translationParams:{addressableAreaCausingCollisionDisplayName:t.addressableAreaCausingCollision.displayName}}}},ga=()=>({type:"HEATER_SHAKER_EAST_WEST_LATCH_OPEN",message:"The Heater-Shaker labware latch is open"}),Ia=()=>({type:"HEATER_SHAKER_NORTH_SOUTH_EAST_WEST_SHAKING",message:"The Heater-Shaker is shaking"}),Ea=()=>({type:"HEATER_SHAKER_EAST_WEST_MULTI_CHANNEL",message:"The Heater-Shaker is shaking"}),ds=()=>({type:"HEATER_SHAKER_NORTH_SOUTH__OF_NON_TIPRACK_WITH_MULTI_CHANNEL",message:"8-Channel pipette cannot access labware"}),wn=()=>({type:"LABWARE_OFF_DECK",message:"Attempted to interact with labware off deck"}),Gb=()=>({type:"LABWARE_ON_ANOTHER_ENTITY",message:"Attempted to move labware onto another entity with the same slotName"}),Rn=()=>({type:"DROP_TIP_LOCATION_DOES_NOT_EXIST",message:"The destination for dropping tip does not exist"}),Rh=()=>({type:"EQUIPMENT_DOES_NOT_EXIST",message:"Equipment does not exist."}),Wb=()=>({type:"GRIPPER_REQUIRED",message:"The gripper is required to fulfill this action"}),Vt=e=>({type:"PIPETTING_INTO_COLUMN_4",message:`Cannot ${e.typeOfStep} into a column 4 slot.`}),Yb=()=>({type:"CANNOT_MOVE_WITH_GRIPPER",message:"The gripper cannot move aluminum blocks"}),Kb=()=>({type:"NO_TIP_SELECTED",message:"No tips were selected for this step"}),wa=()=>({type:"LABWARE_DISCARDED_IN_TRASH",message:"The labware was discarded in trash in a previous step."}),kh=()=>({type:"SUBMERGE_BELOW_ASPIRATE",message:"The submerge position must be above the aspirate position"}),vh=()=>({type:"RETRACT_BELOW_ASPIRATE",message:"The retract position must be above the aspirate position"}),Xb=()=>({type:"SUBMERGE_BELOW_DISPENSE",message:"The submerge position must be above the dispense position"}),Zb=()=>({type:"RETRACT_BELOW_DISPENSE",message:"The retract position must be above the dispense position"}),Qb=()=>({type:"MULTI_ASPIRATE_VOLUME_TOO_HIGH",message:"Consolidate pipette path was selected but cannot fit volume for more than 1 well in the tip"}),Jb=()=>({type:"MULTI_DISPENSE_VOLUME_TOO_HIGH",message:"Distribute pipette path was selected but cannot fit volume for more than 1 well in the tip"}),eT=e=>({type:"CLOSING_THERMOCYCLER_WITH_INVALID_LABWARE_LID",message:`Closing the Thermocycler lid with ${e.lidDisplayName} in place will cause damage`}),fp=()=>({type:"RETURN_TIP_UNAVAILABLE",message:"Current tip does not have a known location to return to"}),tT=()=>({type:"TIPRACK_LID_NOT_ALLOWED_ON_DECK",message:"The tip rack lid is not supported directly on the deck"}),rT=()=>({type:"NEXT_TIPRACK_HAS_LID",message:"A pipette cannot pick up tips from a tip rack with a lid"}),nT=e=>({type:"STACK_TOO_HIGH",message:`The stack on slot ${e.slot} is too high`}),aT=()=>({type:"TOO_MANY_TIPS",message:"Action will pick up too many tips"}),sT=()=>({type:"INCOMPLETE_PICKUP",message:"At least one of the selected tips is empty"}),oT=()=>({type:"LABWARE_ON_HOPPER",message:"Labware cannot be moved from the Flex Stacker Hopper"}),iT=()=>({type:"MISSING_PUMP_ACTIVITY",message:"This module is not currently running a pump activity."}),lT=e=>({type:"INVALID_WAIT_CONDITION",message:`Invalid wait condition: ${e}`}),Sa=()=>({type:"LIVE_TASK_ERROR",message:"This module is currently running a live task. Please wait for it to complete before performing this action."}),mp=()=>({type:"VACUUM_UNDER_PRESSURE",message:"The vacuum module is under pressure. Deactivate the pump to move labware to or from it."});function xe(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Vs,hp;function Ph(){if(hp)return Vs;hp=1;var e=typeof globalThis=="object"&&globalThis&&globalThis.Object===Object&&globalThis;return Vs=e,Vs}var Bs,_p;function Ht(){if(_p)return Bs;_p=1;var e=Ph(),t=typeof self=="object"&&self&&self.Object===Object&&self,r=e||t||Function("return this")();return Bs=r,Bs}var xs,yp;function kn(){if(yp)return xs;yp=1;var e=Ht(),t=e.Symbol;return xs=t,xs}var Hs,bp;function uT(){if(bp)return Hs;bp=1;var e=kn(),t=Object.prototype,r=t.hasOwnProperty,n=t.toString,a=e?e.toStringTag:void 0;function s(o){var i=r.call(o,a),l=o[a];try{o[a]=void 0;var u=!0}catch{}var p=n.call(o);return u&&(i?o[a]=l:delete o[a]),p}return Hs=s,Hs}var zs,Tp;function cT(){if(Tp)return zs;Tp=1;var e=Object.prototype,t=e.toString;function r(n){return t.call(n)}return zs=r,zs}var js,gp;function vn(){if(gp)return js;gp=1;var e=kn(),t=uT(),r=cT(),n="[object Null]",a="[object Undefined]",s=e?e.toStringTag:void 0;function o(i){return i==null?i===void 0?a:n:s&&s in Object(i)?t(i):r(i)}return js=o,js}var Gs,Ip;function nr(){if(Ip)return Gs;Ip=1;function e(t){return t!=null&&typeof t=="object"}return Gs=e,Gs}var Ws,Ep;function Aa(){if(Ep)return Ws;Ep=1;var e=vn(),t=nr(),r="[object Symbol]";function n(a){return typeof a=="symbol"||t(a)&&e(a)==r}return Ws=n,Ws}var Ys,wp;function Ch(){if(wp)return Ys;wp=1;var e=Aa();function t(r,n,a){for(var s=-1,o=r.length;++s<o;){var i=r[s],l=n(i);if(l!=null&&(u===void 0?l===l&&!e(l):a(l,u)))var u=l,p=i}return p}return Ys=t,Ys}var Ks,Sp;function pT(){if(Sp)return Ks;Sp=1;function e(t,r){return t<r}return Ks=e,Ks}var Xs,Ap;function La(){if(Ap)return Xs;Ap=1;function e(t){return t}return Xs=e,Xs}var Zs,Lp;function dT(){if(Lp)return Zs;Lp=1;var e=Ch(),t=pT(),r=La();function n(a){return a&&a.length?e(a,r,t):void 0}return Zs=n,Zs}var fT=dT();const mT=xe(fT),Oa="TEMPERATURE_DEACTIVATED",ic="TEMPERATURE_AT_TARGET",lc="TEMPERATURE_APPROACHING_TARGET",Bu=1,Nh=[c.MAGNETIC_MODULE_V1,c.TEMPERATURE_MODULE_V1],xu="fixedTrash",Dh={type:c.MAGNETIC_MODULE_TYPE,engaged:!1},Mh={type:c.TEMPERATURE_MODULE_TYPE,status:Oa,targetTemperature:null},Fh={type:c.THERMOCYCLER_MODULE_TYPE,currentBlockActivity:{type:"blockDeactivated"},lidTargetTemp:null,lidOpen:null,numProfilesStarted:0},Uh={type:c.HEATERSHAKER_MODULE_TYPE,targetTemp:null,targetSpeed:null,latchOpen:null},qh={type:"absorbanceReaderType",lidOpen:null,initialization:null},$h={type:"magneticBlockType"},Vh={type:c.FLEX_STACKER_MODULE_TYPE,storedLabwareDetails:null,labwareInHopper:null,labwareOnShuttle:null,setStoredLabwareCount:1,fillCount:1},Bh={type:c.VACUUM_MODULE_TYPE,ventStatus:null,numPumpActivitiesStarted:0,currentPumpActivity:{type:"pumpDeactivated"}},xh={[c.MAGNETIC_MODULE_TYPE]:Dh,[c.TEMPERATURE_MODULE_TYPE]:Mh,[c.THERMOCYCLER_MODULE_TYPE]:Fh,[c.HEATERSHAKER_MODULE_TYPE]:Uh,[c.ABSORBANCE_READER_TYPE]:qh,[c.MAGNETIC_BLOCK_TYPE]:$h,[c.FLEX_STACKER_MODULE_TYPE]:Vh,[c.VACUUM_MODULE_TYPE]:Bh},hT="opentrons/opentrons_1_trash_1100ml_fixed/1",_T="opentrons/opentrons_1_trash_3200ml_fixed/1",ve=["A4","B4","C4","D4"],wt={x:0,y:0,z:0},Hh="mounted",Ra="CLEAN",Qt="DIRTY",ue="EMPTY",uc="automatic",St="manual",zh=["A4","B4","C4","D4"],yT=["7","8","10","11"],Ze="hopper",jh=["hopperA4","hopperB4","hopperC4","hopperD4"],Gh={hopperA4:"A4",hopperB4:"B4",hopperC4:"C4",hopperD4:"D4"},Jt=["adapterLabwareId","primaryLabwareId","lidLabwareId"],bT=["adapterLabwareURI","primaryLabwareURI","lidLabwareURI"],TT={A4:"hopperA4",B4:"hopperB4",C4:"hopperC4",D4:"hopperD4"},cc="vacuumDock",Wh=c.VACUUM_MODULE_DOCK_A4_ADDRESSABLE_AREA,pc="opened",ka="closed",Hu="power",zu="pressure",gT="state",IT="profile",ET="pumpOff",wT="pumpOn",ST="vent",AT="open",LT="closed",OT="VACUUM_DEACTIVATED",RT="VACUUM_AT_TARGET",Yh=["opentrons_vacuum_manifold_spacer_short","opentrons_vacuum_manifold_spacer_tall"],$e=[];for(let e=0;e<256;++e)$e.push((e+256).toString(16).slice(1));function kT(e,t=0){return($e[e[t+0]]+$e[e[t+1]]+$e[e[t+2]]+$e[e[t+3]]+"-"+$e[e[t+4]]+$e[e[t+5]]+"-"+$e[e[t+6]]+$e[e[t+7]]+"-"+$e[e[t+8]]+$e[e[t+9]]+"-"+$e[e[t+10]]+$e[e[t+11]]+$e[e[t+12]]+$e[e[t+13]]+$e[e[t+14]]+$e[e[t+15]]).toLowerCase()}const vT=new Uint8Array(16);function PT(){return crypto.getRandomValues(vT)}function CT(e,t,r){return!t&&!e&&crypto.randomUUID?crypto.randomUUID():NT(e,t,r)}function NT(e,t,r){e=e||{};const n=e.random??e.rng?.()??PT();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t){if(r=r||0,r<0||r+16>t.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`);for(let a=0;a<16;++a)t[r+a]=n[a];return t}return kT(n)}var Qs,Op;function dc(){if(Op)return Qs;Op=1;function e(t,r){for(var n=-1,a=r.length,s=t.length;++n<a;)t[s+n]=r[n];return t}return Qs=e,Qs}var Js,Rp;function DT(){if(Rp)return Js;Rp=1;var e=vn(),t=nr(),r="[object Arguments]";function n(a){return t(a)&&e(a)==r}return Js=n,Js}var eo,kp;function fs(){if(kp)return eo;kp=1;var e=DT(),t=nr(),r=Object.prototype,n=r.hasOwnProperty,a=r.propertyIsEnumerable,s=e((function(){return arguments})())?e:function(o){return t(o)&&n.call(o,"callee")&&!a.call(o,"callee")};return eo=s,eo}var to,vp;function Qe(){if(vp)return to;vp=1;var e=Array.isArray;return to=e,to}var ro,Pp;function MT(){if(Pp)return ro;Pp=1;var e=kn(),t=fs(),r=Qe(),n=e?e.isConcatSpreadable:void 0;function a(s){return r(s)||t(s)||!!(n&&s&&s[n])}return ro=a,ro}var no,Cp;function Kh(){if(Cp)return no;Cp=1;var e=dc(),t=MT();function r(n,a,s,o,i){var l=-1,u=n.length;for(s||(s=t),i||(i=[]);++l<u;){var p=n[l];a>0&&s(p)?a>1?r(p,a-1,s,o,i):e(i,p):o||(i[i.length]=p)}return i}return no=r,no}var ao,Np;function va(){if(Np)return ao;Np=1;function e(t,r){for(var n=-1,a=t==null?0:t.length,s=Array(a);++n<a;)s[n]=r(t[n],n,t);return s}return ao=e,ao}var so,Dp;function FT(){if(Dp)return so;Dp=1;function e(){this.__data__=[],this.size=0}return so=e,so}var oo,Mp;function ms(){if(Mp)return oo;Mp=1;function e(t,r){return t===r||t!==t&&r!==r}return oo=e,oo}var io,Fp;function hs(){if(Fp)return io;Fp=1;var e=ms();function t(r,n){for(var a=r.length;a--;)if(e(r[a][0],n))return a;return-1}return io=t,io}var lo,Up;function UT(){if(Up)return lo;Up=1;var e=hs(),t=Array.prototype,r=t.splice;function n(a){var s=this.__data__,o=e(s,a);if(o<0)return!1;var i=s.length-1;return o==i?s.pop():r.call(s,o,1),--this.size,!0}return lo=n,lo}var uo,qp;function qT(){if(qp)return uo;qp=1;var e=hs();function t(r){var n=this.__data__,a=e(n,r);return a<0?void 0:n[a][1]}return uo=t,uo}var co,$p;function $T(){if($p)return co;$p=1;var e=hs();function t(r){return e(this.__data__,r)>-1}return co=t,co}var po,Vp;function VT(){if(Vp)return po;Vp=1;var e=hs();function t(r,n){var a=this.__data__,s=e(a,r);return s<0?(++this.size,a.push([r,n])):a[s][1]=n,this}return po=t,po}var fo,Bp;function _s(){if(Bp)return fo;Bp=1;var e=FT(),t=UT(),r=qT(),n=$T(),a=VT();function s(o){var i=-1,l=o==null?0:o.length;for(this.clear();++i<l;){var u=o[i];this.set(u[0],u[1])}}return s.prototype.clear=e,s.prototype.delete=t,s.prototype.get=r,s.prototype.has=n,s.prototype.set=a,fo=s,fo}var mo,xp;function BT(){if(xp)return mo;xp=1;var e=_s();function t(){this.__data__=new e,this.size=0}return mo=t,mo}var ho,Hp;function xT(){if(Hp)return ho;Hp=1;function e(t){var r=this.__data__,n=r.delete(t);return this.size=r.size,n}return ho=e,ho}var _o,zp;function HT(){if(zp)return _o;zp=1;function e(t){return this.__data__.get(t)}return _o=e,_o}var yo,jp;function zT(){if(jp)return yo;jp=1;function e(t){return this.__data__.has(t)}return yo=e,yo}var bo,Gp;function ar(){if(Gp)return bo;Gp=1;function e(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}return bo=e,bo}var To,Wp;function Xh(){if(Wp)return To;Wp=1;var e=vn(),t=ar(),r="[object AsyncFunction]",n="[object Function]",a="[object GeneratorFunction]",s="[object Proxy]";function o(i){if(!t(i))return!1;var l=e(i);return l==n||l==a||l==r||l==s}return To=o,To}var go,Yp;function jT(){if(Yp)return go;Yp=1;var e=Ht(),t=e["__core-js_shared__"];return go=t,go}var Io,Kp;function GT(){if(Kp)return Io;Kp=1;var e=jT(),t=(function(){var n=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""})();function r(n){return!!t&&t in n}return Io=r,Io}var Eo,Xp;function Zh(){if(Xp)return Eo;Xp=1;var e=Function.prototype,t=e.toString;function r(n){if(n!=null){try{return t.call(n)}catch{}try{return n+""}catch{}}return""}return Eo=r,Eo}var wo,Zp;function WT(){if(Zp)return wo;Zp=1;var e=Xh(),t=GT(),r=ar(),n=Zh(),a=/[\\^$.*+?()[\]{}|]/g,s=/^\[object .+?Constructor\]$/,o=Function.prototype,i=Object.prototype,l=o.toString,u=i.hasOwnProperty,p=RegExp("^"+l.call(u).replace(a,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function d(f){if(!r(f)||t(f))return!1;var h=e(f)?p:s;return h.test(n(f))}return wo=d,wo}var So,Qp;function YT(){if(Qp)return So;Qp=1;function e(t,r){return t?.[r]}return So=e,So}var Ao,Jp;function Br(){if(Jp)return Ao;Jp=1;var e=WT(),t=YT();function r(n,a){var s=t(n,a);return e(s)?s:void 0}return Ao=r,Ao}var Lo,ed;function fc(){if(ed)return Lo;ed=1;var e=Br(),t=Ht(),r=e(t,"Map");return Lo=r,Lo}var Oo,td;function ys(){if(td)return Oo;td=1;var e=Br(),t=e(Object,"create");return Oo=t,Oo}var Ro,rd;function KT(){if(rd)return Ro;rd=1;var e=ys();function t(){this.__data__=e?e(null):{},this.size=0}return Ro=t,Ro}var ko,nd;function XT(){if(nd)return ko;nd=1;function e(t){var r=this.has(t)&&delete this.__data__[t];return this.size-=r?1:0,r}return ko=e,ko}var vo,ad;function ZT(){if(ad)return vo;ad=1;var e=ys(),t="__lodash_hash_undefined__",r=Object.prototype,n=r.hasOwnProperty;function a(s){var o=this.__data__;if(e){var i=o[s];return i===t?void 0:i}return n.call(o,s)?o[s]:void 0}return vo=a,vo}var Po,sd;function QT(){if(sd)return Po;sd=1;var e=ys(),t=Object.prototype,r=t.hasOwnProperty;function n(a){var s=this.__data__;return e?s[a]!==void 0:r.call(s,a)}return Po=n,Po}var Co,od;function JT(){if(od)return Co;od=1;var e=ys(),t="__lodash_hash_undefined__";function r(n,a){var s=this.__data__;return this.size+=this.has(n)?0:1,s[n]=e&&a===void 0?t:a,this}return Co=r,Co}var No,id;function eg(){if(id)return No;id=1;var e=KT(),t=XT(),r=ZT(),n=QT(),a=JT();function s(o){var i=-1,l=o==null?0:o.length;for(this.clear();++i<l;){var u=o[i];this.set(u[0],u[1])}}return s.prototype.clear=e,s.prototype.delete=t,s.prototype.get=r,s.prototype.has=n,s.prototype.set=a,No=s,No}var Do,ld;function tg(){if(ld)return Do;ld=1;var e=eg(),t=_s(),r=fc();function n(){this.size=0,this.__data__={hash:new e,map:new(r||t),string:new e}}return Do=n,Do}var Mo,ud;function rg(){if(ud)return Mo;ud=1;function e(t){var r=typeof t;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?t!=="__proto__":t===null}return Mo=e,Mo}var Fo,cd;function bs(){if(cd)return Fo;cd=1;var e=rg();function t(r,n){var a=r.__data__;return e(n)?a[typeof n=="string"?"string":"hash"]:a.map}return Fo=t,Fo}var Uo,pd;function ng(){if(pd)return Uo;pd=1;var e=bs();function t(r){var n=e(this,r).delete(r);return this.size-=n?1:0,n}return Uo=t,Uo}var qo,dd;function ag(){if(dd)return qo;dd=1;var e=bs();function t(r){return e(this,r).get(r)}return qo=t,qo}var $o,fd;function sg(){if(fd)return $o;fd=1;var e=bs();function t(r){return e(this,r).has(r)}return $o=t,$o}var Vo,md;function og(){if(md)return Vo;md=1;var e=bs();function t(r,n){var a=e(this,r),s=a.size;return a.set(r,n),this.size+=a.size==s?0:1,this}return Vo=t,Vo}var Bo,hd;function mc(){if(hd)return Bo;hd=1;var e=tg(),t=ng(),r=ag(),n=sg(),a=og();function s(o){var i=-1,l=o==null?0:o.length;for(this.clear();++i<l;){var u=o[i];this.set(u[0],u[1])}}return s.prototype.clear=e,s.prototype.delete=t,s.prototype.get=r,s.prototype.has=n,s.prototype.set=a,Bo=s,Bo}var xo,_d;function ig(){if(_d)return xo;_d=1;var e=_s(),t=fc(),r=mc(),n=200;function a(s,o){var i=this.__data__;if(i instanceof e){var l=i.__data__;if(!t||l.length<n-1)return l.push([s,o]),this.size=++i.size,this;i=this.__data__=new r(l)}return i.set(s,o),this.size=i.size,this}return xo=a,xo}var Ho,yd;function hc(){if(yd)return Ho;yd=1;var e=_s(),t=BT(),r=xT(),n=HT(),a=zT(),s=ig();function o(i){var l=this.__data__=new e(i);this.size=l.size}return o.prototype.clear=t,o.prototype.delete=r,o.prototype.get=n,o.prototype.has=a,o.prototype.set=s,Ho=o,Ho}var zo,bd;function lg(){if(bd)return zo;bd=1;var e="__lodash_hash_undefined__";function t(r){return this.__data__.set(r,e),this}return zo=t,zo}var jo,Td;function ug(){if(Td)return jo;Td=1;function e(t){return this.__data__.has(t)}return jo=e,jo}var Go,gd;function Qh(){if(gd)return Go;gd=1;var e=mc(),t=lg(),r=ug();function n(a){var s=-1,o=a==null?0:a.length;for(this.__data__=new e;++s<o;)this.add(a[s])}return n.prototype.add=n.prototype.push=t,n.prototype.has=r,Go=n,Go}var Wo,Id;function Jh(){if(Id)return Wo;Id=1;function e(t,r){for(var n=-1,a=t==null?0:t.length;++n<a;)if(r(t[n],n,t))return!0;return!1}return Wo=e,Wo}var Yo,Ed;function e_(){if(Ed)return Yo;Ed=1;function e(t,r){return t.has(r)}return Yo=e,Yo}var Ko,wd;function t_(){if(wd)return Ko;wd=1;var e=Qh(),t=Jh(),r=e_(),n=1,a=2;function s(o,i,l,u,p,d){var f=l&n,h=o.length,m=i.length;if(h!=m&&!(f&&m>h))return!1;var _=d.get(o),b=d.get(i);if(_&&b)return _==i&&b==o;var T=-1,y=!0,A=l&a?new e:void 0;for(d.set(o,i),d.set(i,o);++T<h;){var w=o[T],I=i[T];if(u)var S=f?u(I,w,T,i,o,d):u(w,I,T,o,i,d);if(S!==void 0){if(S)continue;y=!1;break}if(A){if(!t(i,function(L,g){if(!r(A,g)&&(w===L||p(w,L,l,u,d)))return A.push(g)})){y=!1;break}}else if(!(w===I||p(w,I,l,u,d))){y=!1;break}}return d.delete(o),d.delete(i),y}return Ko=s,Ko}var Xo,Sd;function r_(){if(Sd)return Xo;Sd=1;var e=Ht(),t=e.Uint8Array;return Xo=t,Xo}var Zo,Ad;function cg(){if(Ad)return Zo;Ad=1;function e(t){var r=-1,n=Array(t.size);return t.forEach(function(a,s){n[++r]=[s,a]}),n}return Zo=e,Zo}var Qo,Ld;function _c(){if(Ld)return Qo;Ld=1;function e(t){var r=-1,n=Array(t.size);return t.forEach(function(a){n[++r]=a}),n}return Qo=e,Qo}var Jo,Od;function pg(){if(Od)return Jo;Od=1;var e=kn(),t=r_(),r=ms(),n=t_(),a=cg(),s=_c(),o=1,i=2,l="[object Boolean]",u="[object Date]",p="[object Error]",d="[object Map]",f="[object Number]",h="[object RegExp]",m="[object Set]",_="[object String]",b="[object Symbol]",T="[object ArrayBuffer]",y="[object DataView]",A=e?e.prototype:void 0,w=A?A.valueOf:void 0;function I(S,L,g,E,k,v,$){switch(g){case y:if(S.byteLength!=L.byteLength||S.byteOffset!=L.byteOffset)return!1;S=S.buffer,L=L.buffer;case T:return!(S.byteLength!=L.byteLength||!v(new t(S),new t(L)));case l:case u:case f:return r(+S,+L);case p:return S.name==L.name&&S.message==L.message;case h:case _:return S==L+"";case d:var q=a;case m:var ee=E&o;if(q||(q=s),S.size!=L.size&&!ee)return!1;var de=$.get(S);if(de)return de==L;E|=i,$.set(S,L);var Te=n(q(S),q(L),E,k,v,$);return $.delete(S),Te;case b:if(w)return w.call(S)==w.call(L)}return!1}return Jo=I,Jo}var ei,Rd;function n_(){if(Rd)return ei;Rd=1;var e=dc(),t=Qe();function r(n,a,s){var o=a(n);return t(n)?o:e(o,s(n))}return ei=r,ei}var ti,kd;function a_(){if(kd)return ti;kd=1;function e(t,r){for(var n=-1,a=t==null?0:t.length,s=0,o=[];++n<a;){var i=t[n];r(i,n,t)&&(o[s++]=i)}return o}return ti=e,ti}var ri,vd;function s_(){if(vd)return ri;vd=1;function e(){return[]}return ri=e,ri}var ni,Pd;function yc(){if(Pd)return ni;Pd=1;var e=a_(),t=s_(),r=Object.prototype,n=r.propertyIsEnumerable,a=Object.getOwnPropertySymbols,s=a?function(o){return o==null?[]:(o=Object(o),e(a(o),function(i){return n.call(o,i)}))}:t;return ni=s,ni}var ai,Cd;function o_(){if(Cd)return ai;Cd=1;function e(t,r){for(var n=-1,a=Array(t);++n<t;)a[n]=r(n);return a}return ai=e,ai}var ca={exports:{}},si,Nd;function dg(){if(Nd)return si;Nd=1;function e(){return!1}return si=e,si}ca.exports;var Dd;function Ts(){return Dd||(Dd=1,(function(e,t){var r=Ht(),n=dg(),a=t&&!t.nodeType&&t,s=a&&!0&&e&&!e.nodeType&&e,o=s&&s.exports===a,i=o?r.Buffer:void 0,l=i?i.isBuffer:void 0,u=l||n;e.exports=u})(ca,ca.exports)),ca.exports}var oi,Md;function gs(){if(Md)return oi;Md=1;var e=9007199254740991,t=/^(?:0|[1-9]\d*)$/;function r(n,a){var s=typeof n;return a=a??e,!!a&&(s=="number"||s!="symbol"&&t.test(n))&&n>-1&&n%1==0&&n<a}return oi=r,oi}var ii,Fd;function bc(){if(Fd)return ii;Fd=1;var e=9007199254740991;function t(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=e}return ii=t,ii}var li,Ud;function fg(){if(Ud)return li;Ud=1;var e=vn(),t=bc(),r=nr(),n="[object Arguments]",a="[object Array]",s="[object Boolean]",o="[object Date]",i="[object Error]",l="[object Function]",u="[object Map]",p="[object Number]",d="[object Object]",f="[object RegExp]",h="[object Set]",m="[object String]",_="[object WeakMap]",b="[object ArrayBuffer]",T="[object DataView]",y="[object Float32Array]",A="[object Float64Array]",w="[object Int8Array]",I="[object Int16Array]",S="[object Int32Array]",L="[object Uint8Array]",g="[object Uint8ClampedArray]",E="[object Uint16Array]",k="[object Uint32Array]",v={};v[y]=v[A]=v[w]=v[I]=v[S]=v[L]=v[g]=v[E]=v[k]=!0,v[n]=v[a]=v[b]=v[s]=v[T]=v[o]=v[i]=v[l]=v[u]=v[p]=v[d]=v[f]=v[h]=v[m]=v[_]=!1;function $(q){return r(q)&&t(q.length)&&!!v[e(q)]}return li=$,li}var ui,qd;function Tc(){if(qd)return ui;qd=1;function e(t){return function(r){return t(r)}}return ui=e,ui}var pa={exports:{}};pa.exports;var $d;function gc(){return $d||($d=1,(function(e,t){var r=Ph(),n=t&&!t.nodeType&&t,a=n&&!0&&e&&!e.nodeType&&e,s=a&&a.exports===n,o=s&&r.process,i=(function(){try{var l=a&&a.require&&a.require("util").types;return l||o&&o.binding&&o.binding("util")}catch{}})();e.exports=i})(pa,pa.exports)),pa.exports}var ci,Vd;function Ic(){if(Vd)return ci;Vd=1;var e=fg(),t=Tc(),r=gc(),n=r&&r.isTypedArray,a=n?t(n):e;return ci=a,ci}var pi,Bd;function i_(){if(Bd)return pi;Bd=1;var e=o_(),t=fs(),r=Qe(),n=Ts(),a=gs(),s=Ic(),o=Object.prototype,i=o.hasOwnProperty;function l(u,p){var d=r(u),f=!d&&t(u),h=!d&&!f&&n(u),m=!d&&!f&&!h&&s(u),_=d||f||h||m,b=_?e(u.length,String):[],T=b.length;for(var y in u)(p||i.call(u,y))&&!(_&&(y=="length"||h&&(y=="offset"||y=="parent")||m&&(y=="buffer"||y=="byteLength"||y=="byteOffset")||a(y,T)))&&b.push(y);return b}return pi=l,pi}var di,xd;function Is(){if(xd)return di;xd=1;var e=Object.prototype;function t(r){var n=r&&r.constructor,a=typeof n=="function"&&n.prototype||e;return r===a}return di=t,di}var fi,Hd;function l_(){if(Hd)return fi;Hd=1;function e(t,r){return function(n){return t(r(n))}}return fi=e,fi}var mi,zd;function mg(){if(zd)return mi;zd=1;var e=l_(),t=e(Object.keys,Object);return mi=t,mi}var hi,jd;function u_(){if(jd)return hi;jd=1;var e=Is(),t=mg(),r=Object.prototype,n=r.hasOwnProperty;function a(s){if(!e(s))return t(s);var o=[];for(var i in Object(s))n.call(s,i)&&i!="constructor"&&o.push(i);return o}return hi=a,hi}var _i,Gd;function xr(){if(Gd)return _i;Gd=1;var e=Xh(),t=bc();function r(n){return n!=null&&t(n.length)&&!e(n)}return _i=r,_i}var yi,Wd;function Pa(){if(Wd)return yi;Wd=1;var e=i_(),t=u_(),r=xr();function n(a){return r(a)?e(a):t(a)}return yi=n,yi}var bi,Yd;function c_(){if(Yd)return bi;Yd=1;var e=n_(),t=yc(),r=Pa();function n(a){return e(a,r,t)}return bi=n,bi}var Ti,Kd;function hg(){if(Kd)return Ti;Kd=1;var e=c_(),t=1,r=Object.prototype,n=r.hasOwnProperty;function a(s,o,i,l,u,p){var d=i&t,f=e(s),h=f.length,m=e(o),_=m.length;if(h!=_&&!d)return!1;for(var b=h;b--;){var T=f[b];if(!(d?T in o:n.call(o,T)))return!1}var y=p.get(s),A=p.get(o);if(y&&A)return y==o&&A==s;var w=!0;p.set(s,o),p.set(o,s);for(var I=d;++b<h;){T=f[b];var S=s[T],L=o[T];if(l)var g=d?l(L,S,T,o,s,p):l(S,L,T,s,o,p);if(!(g===void 0?S===L||u(S,L,i,l,p):g)){w=!1;break}I||(I=T=="constructor")}if(w&&!I){var E=s.constructor,k=o.constructor;E!=k&&"constructor"in s&&"constructor"in o&&!(typeof E=="function"&&E instanceof E&&typeof k=="function"&&k instanceof k)&&(w=!1)}return p.delete(s),p.delete(o),w}return Ti=a,Ti}var gi,Xd;function _g(){if(Xd)return gi;Xd=1;var e=Br(),t=Ht(),r=e(t,"DataView");return gi=r,gi}var Ii,Zd;function yg(){if(Zd)return Ii;Zd=1;var e=Br(),t=Ht(),r=e(t,"Promise");return Ii=r,Ii}var Ei,Qd;function p_(){if(Qd)return Ei;Qd=1;var e=Br(),t=Ht(),r=e(t,"Set");return Ei=r,Ei}var wi,Jd;function bg(){if(Jd)return wi;Jd=1;var e=Br(),t=Ht(),r=e(t,"WeakMap");return wi=r,wi}var Si,ef;function Ca(){if(ef)return Si;ef=1;var e=_g(),t=fc(),r=yg(),n=p_(),a=bg(),s=vn(),o=Zh(),i="[object Map]",l="[object Object]",u="[object Promise]",p="[object Set]",d="[object WeakMap]",f="[object DataView]",h=o(e),m=o(t),_=o(r),b=o(n),T=o(a),y=s;return(e&&y(new e(new ArrayBuffer(1)))!=f||t&&y(new t)!=i||r&&y(r.resolve())!=u||n&&y(new n)!=p||a&&y(new a)!=d)&&(y=function(A){var w=s(A),I=w==l?A.constructor:void 0,S=I?o(I):"";if(S)switch(S){case h:return f;case m:return i;case _:return u;case b:return p;case T:return d}return w}),Si=y,Si}var Ai,tf;function Tg(){if(tf)return Ai;tf=1;var e=hc(),t=t_(),r=pg(),n=hg(),a=Ca(),s=Qe(),o=Ts(),i=Ic(),l=1,u="[object Arguments]",p="[object Array]",d="[object Object]",f=Object.prototype,h=f.hasOwnProperty;function m(_,b,T,y,A,w){var I=s(_),S=s(b),L=I?p:a(_),g=S?p:a(b);L=L==u?d:L,g=g==u?d:g;var E=L==d,k=g==d,v=L==g;if(v&&o(_)){if(!o(b))return!1;I=!0,E=!1}if(v&&!E)return w||(w=new e),I||i(_)?t(_,b,T,y,A,w):r(_,b,L,T,y,A,w);if(!(T&l)){var $=E&&h.call(_,"__wrapped__"),q=k&&h.call(b,"__wrapped__");if($||q){var ee=$?_.value():_,de=q?b.value():b;return w||(w=new e),A(ee,de,T,y,w)}}return v?(w||(w=new e),n(_,b,T,y,A,w)):!1}return Ai=m,Ai}var Li,rf;function Ec(){if(rf)return Li;rf=1;var e=Tg(),t=nr();function r(n,a,s,o,i){return n===a?!0:n==null||a==null||!t(n)&&!t(a)?n!==n&&a!==a:e(n,a,s,o,r,i)}return Li=r,Li}var Oi,nf;function gg(){if(nf)return Oi;nf=1;var e=hc(),t=Ec(),r=1,n=2;function a(s,o,i,l){var u=i.length,p=u,d=!l;if(s==null)return!p;for(s=Object(s);u--;){var f=i[u];if(d&&f[2]?f[1]!==s[f[0]]:!(f[0]in s))return!1}for(;++u<p;){f=i[u];var h=f[0],m=s[h],_=f[1];if(d&&f[2]){if(m===void 0&&!(h in s))return!1}else{var b=new e;if(l)var T=l(m,_,h,s,o,b);if(!(T===void 0?t(_,m,r|n,l,b):T))return!1}}return!0}return Oi=a,Oi}var Ri,af;function d_(){if(af)return Ri;af=1;var e=ar();function t(r){return r===r&&!e(r)}return Ri=t,Ri}var ki,sf;function Ig(){if(sf)return ki;sf=1;var e=d_(),t=Pa();function r(n){for(var a=t(n),s=a.length;s--;){var o=a[s],i=n[o];a[s]=[o,i,e(i)]}return a}return ki=r,ki}var vi,of;function f_(){if(of)return vi;of=1;function e(t,r){return function(n){return n==null?!1:n[t]===r&&(r!==void 0||t in Object(n))}}return vi=e,vi}var Pi,lf;function Eg(){if(lf)return Pi;lf=1;var e=gg(),t=Ig(),r=f_();function n(a){var s=t(a);return s.length==1&&s[0][2]?r(s[0][0],s[0][1]):function(o){return o===a||e(o,a,s)}}return Pi=n,Pi}var Ci,uf;function wc(){if(uf)return Ci;uf=1;var e=Qe(),t=Aa(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;function a(s,o){if(e(s))return!1;var i=typeof s;return i=="number"||i=="symbol"||i=="boolean"||s==null||t(s)?!0:n.test(s)||!r.test(s)||o!=null&&s in Object(o)}return Ci=a,Ci}var Ni,cf;function wg(){if(cf)return Ni;cf=1;var e=mc(),t="Expected a function";function r(n,a){if(typeof n!="function"||a!=null&&typeof a!="function")throw new TypeError(t);var s=function(){var o=arguments,i=a?a.apply(this,o):o[0],l=s.cache;if(l.has(i))return l.get(i);var u=n.apply(this,o);return s.cache=l.set(i,u)||l,u};return s.cache=new(r.Cache||e),s}return r.Cache=e,Ni=r,Ni}var Di,pf;function Sg(){if(pf)return Di;pf=1;var e=wg(),t=500;function r(n){var a=e(n,function(o){return s.size===t&&s.clear(),o}),s=a.cache;return a}return Di=r,Di}var Mi,df;function Ag(){if(df)return Mi;df=1;var e=Sg(),t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,r=/\\(\\)?/g,n=e(function(a){var s=[];return a.charCodeAt(0)===46&&s.push(""),a.replace(t,function(o,i,l,u){s.push(l?u.replace(r,"$1"):i||o)}),s});return Mi=n,Mi}var Fi,ff;function Lg(){if(ff)return Fi;ff=1;var e=kn(),t=va(),r=Qe(),n=Aa(),a=e?e.prototype:void 0,s=a?a.toString:void 0;function o(i){if(typeof i=="string")return i;if(r(i))return t(i,o)+"";if(n(i))return s?s.call(i):"";var l=i+"";return l=="0"&&1/i==-1/0?"-0":l}return Fi=o,Fi}var Ui,mf;function Og(){if(mf)return Ui;mf=1;var e=Lg();function t(r){return r==null?"":e(r)}return Ui=t,Ui}var qi,hf;function Pn(){if(hf)return qi;hf=1;var e=Qe(),t=wc(),r=Ag(),n=Og();function a(s,o){return e(s)?s:t(s,o)?[s]:r(n(s))}return qi=a,qi}var $i,_f;function Cn(){if(_f)return $i;_f=1;var e=Aa();function t(r){if(typeof r=="string"||e(r))return r;var n=r+"";return n=="0"&&1/r==-1/0?"-0":n}return $i=t,$i}var Vi,yf;function Es(){if(yf)return Vi;yf=1;var e=Pn(),t=Cn();function r(n,a){a=e(a,n);for(var s=0,o=a.length;n!=null&&s<o;)n=n[t(a[s++])];return s&&s==o?n:void 0}return Vi=r,Vi}var Bi,bf;function Rg(){if(bf)return Bi;bf=1;var e=Es();function t(r,n,a){var s=r==null?void 0:e(r,n);return s===void 0?a:s}return Bi=t,Bi}var xi,Tf;function kg(){if(Tf)return xi;Tf=1;function e(t,r){return t!=null&&r in Object(t)}return xi=e,xi}var Hi,gf;function vg(){if(gf)return Hi;gf=1;var e=Pn(),t=fs(),r=Qe(),n=gs(),a=bc(),s=Cn();function o(i,l,u){l=e(l,i);for(var p=-1,d=l.length,f=!1;++p<d;){var h=s(l[p]);if(!(f=i!=null&&u(i,h)))break;i=i[h]}return f||++p!=d?f:(d=i==null?0:i.length,!!d&&a(d)&&n(h,d)&&(r(i)||t(i)))}return Hi=o,Hi}var zi,If;function Pg(){if(If)return zi;If=1;var e=kg(),t=vg();function r(n,a){return n!=null&&t(n,a,e)}return zi=r,zi}var ji,Ef;function Cg(){if(Ef)return ji;Ef=1;var e=Ec(),t=Rg(),r=Pg(),n=wc(),a=d_(),s=f_(),o=Cn(),i=1,l=2;function u(p,d){return n(p)&&a(d)?s(o(p),d):function(f){var h=t(f,p);return h===void 0&&h===d?r(f,p):e(d,h,i|l)}}return ji=u,ji}var Gi,wf;function m_(){if(wf)return Gi;wf=1;function e(t){return function(r){return r?.[t]}}return Gi=e,Gi}var Wi,Sf;function Ng(){if(Sf)return Wi;Sf=1;var e=Es();function t(r){return function(n){return e(n,r)}}return Wi=t,Wi}var Yi,Af;function Dg(){if(Af)return Yi;Af=1;var e=m_(),t=Ng(),r=wc(),n=Cn();function a(s){return r(s)?e(n(s)):t(s)}return Yi=a,Yi}var Ki,Lf;function Nn(){if(Lf)return Ki;Lf=1;var e=Eg(),t=Cg(),r=La(),n=Qe(),a=Dg();function s(o){return typeof o=="function"?o:o==null?r:typeof o=="object"?n(o)?t(o[0],o[1]):e(o):a(o)}return Ki=s,Ki}var Xi,Of;function Mg(){if(Of)return Xi;Of=1;function e(t){return function(r,n,a){for(var s=-1,o=Object(r),i=a(r),l=i.length;l--;){var u=i[t?l:++s];if(n(o[u],u,o)===!1)break}return r}}return Xi=e,Xi}var Zi,Rf;function Fg(){if(Rf)return Zi;Rf=1;var e=Mg(),t=e();return Zi=t,Zi}var Qi,kf;function h_(){if(kf)return Qi;kf=1;var e=Fg(),t=Pa();function r(n,a){return n&&e(n,a,t)}return Qi=r,Qi}var Ji,vf;function Ug(){if(vf)return Ji;vf=1;var e=xr();function t(r,n){return function(a,s){if(a==null)return a;if(!e(a))return r(a,s);for(var o=a.length,i=n?o:-1,l=Object(a);(n?i--:++i<o)&&s(l[i],i,l)!==!1;);return a}}return Ji=t,Ji}var el,Pf;function Sc(){if(Pf)return el;Pf=1;var e=h_(),t=Ug(),r=t(e);return el=r,el}var tl,Cf;function qg(){if(Cf)return tl;Cf=1;var e=Sc(),t=xr();function r(n,a){var s=-1,o=t(n)?Array(n.length):[];return e(n,function(i,l,u){o[++s]=a(i,l,u)}),o}return tl=r,tl}var rl,Nf;function $g(){if(Nf)return rl;Nf=1;var e=va(),t=Nn(),r=qg(),n=Qe();function a(s,o){var i=n(s)?e:r;return i(s,t(o,3))}return rl=a,rl}var nl,Df;function Vg(){if(Df)return nl;Df=1;var e=Kh(),t=$g();function r(n,a){return e(t(n,a),1)}return nl=r,nl}var Bg=Vg();const Sn=xe(Bg);var al,Mf;function __(){if(Mf)return al;Mf=1;var e=Br(),t=(function(){try{var r=e(Object,"defineProperty");return r({},"",{}),r}catch{}})();return al=t,al}var sl,Ff;function Ac(){if(Ff)return sl;Ff=1;var e=__();function t(r,n,a){n=="__proto__"&&e?e(r,n,{configurable:!0,enumerable:!0,value:a,writable:!0}):r[n]=a}return sl=t,sl}var ol,Uf;function xg(){if(Uf)return ol;Uf=1;var e=Ac(),t=h_(),r=Nn();function n(a,s){var o={};return s=r(s,3),t(a,function(i,l,u){e(o,l,s(i,l,u))}),o}return ol=n,ol}var Hg=xg();const rr=xe(Hg);var il,qf;function zg(){if(qf)return il;qf=1;var e=Math.ceil,t=Math.max;function r(n,a,s,o){for(var i=-1,l=t(e((a-n)/(s||1)),0),u=Array(l);l--;)u[o?l:++i]=n,n+=s;return u}return il=r,il}var ll,$f;function Lc(){if($f)return ll;$f=1;var e=ms(),t=xr(),r=gs(),n=ar();function a(s,o,i){if(!n(i))return!1;var l=typeof o;return(l=="number"?t(i)&&r(o,i.length):l=="string"&&o in i)?e(i[o],s):!1}return ll=a,ll}var ul,Vf;function jg(){if(Vf)return ul;Vf=1;var e=/\s/;function t(r){for(var n=r.length;n--&&e.test(r.charAt(n)););return n}return ul=t,ul}var cl,Bf;function Gg(){if(Bf)return cl;Bf=1;var e=jg(),t=/^\s+/;function r(n){return n&&n.slice(0,e(n)+1).replace(t,"")}return cl=r,cl}var pl,xf;function Wg(){if(xf)return pl;xf=1;var e=Gg(),t=ar(),r=Aa(),n=NaN,a=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,o=/^0o[0-7]+$/i,i=parseInt;function l(u){if(typeof u=="number")return u;if(r(u))return n;if(t(u)){var p=typeof u.valueOf=="function"?u.valueOf():u;u=t(p)?p+"":p}if(typeof u!="string")return u===0?u:+u;u=e(u);var d=s.test(u);return d||o.test(u)?i(u.slice(2),d?2:8):a.test(u)?n:+u}return pl=l,pl}var dl,Hf;function y_(){if(Hf)return dl;Hf=1;var e=Wg(),t=1/0,r=17976931348623157e292;function n(a){if(!a)return a===0?a:0;if(a=e(a),a===t||a===-t){var s=a<0?-1:1;return s*r}return a===a?a:0}return dl=n,dl}var fl,zf;function Yg(){if(zf)return fl;zf=1;var e=zg(),t=Lc(),r=y_();function n(a){return function(s,o,i){return i&&typeof i!="number"&&t(s,o,i)&&(o=i=void 0),s=r(s),o===void 0?(o=s,s=0):o=r(o),i=i===void 0?s<o?1:-1:r(i),e(s,o,i,a)}}return fl=n,fl}var ml,jf;function Kg(){if(jf)return ml;jf=1;var e=Yg(),t=e();return ml=t,ml}var Xg=Kg();const bn=xe(Xg);var hl,Gf;function Zg(){if(Gf)return hl;Gf=1;function e(t,r,n,a){var s=-1,o=t==null?0:t.length;for(a&&o&&(n=t[++s]);++s<o;)n=r(n,t[s],s,t);return n}return hl=e,hl}var _l,Wf;function Qg(){if(Wf)return _l;Wf=1;function e(t,r,n,a,s){return s(t,function(o,i,l){n=a?(a=!1,o):r(n,o,i,l)}),n}return _l=e,_l}var yl,Yf;function Jg(){if(Yf)return yl;Yf=1;var e=Zg(),t=Sc(),r=Nn(),n=Qg(),a=Qe();function s(o,i,l){var u=a(o)?e:n,p=arguments.length<3;return u(o,r(i,4),l,p,t)}return yl=s,yl}var eI=Jg();const ut=xe(eI),ws=(e,t,r)=>{const{gripperEntities:n,moduleEntities:a}=t,s=zn(r,e.moduleId),o=Object.keys(n).length>0,i=[];if((e.moduleId==null||s==null)&&i.push(Q()),o||i.push(Ah()),i.length>0)return{errors:i};const l=a[e.moduleId].pythonName;return{commands:[{commandType:"absorbanceReader/closeLid",key:D(),params:{moduleId:e.moduleId}}],python:`${l}.close_lid()`}},b_=(e,t,r)=>{const{moduleId:n,sampleWavelengths:a,measureMode:s,referenceWavelength:o}=e,i=t.moduleEntities[n].pythonName,l=o!=null?`, reference_wavelength=${o}`:"";return{commands:[{commandType:"absorbanceReader/initialize",key:D(),params:{moduleId:n,measureMode:s,sampleWavelengths:a,...o!=null?{referenceWavelength:o}:{}}}],python:`${i}.initialize(${N(s)}, ${Ls(a)}${l})`}},T_=(e,t,r)=>{const{gripperEntities:n,moduleEntities:a}=t,s=zn(r,e.moduleId),o=Object.keys(n).length>0,i=[];if((e.moduleId==null||s==null)&&i.push(Q()),o||i.push(Ah()),i.length>0)return{errors:i};const l=a[e.moduleId].pythonName;return{commands:[{commandType:"absorbanceReader/openLid",key:D(),params:{moduleId:e.moduleId}}],python:`${l}.open_lid()`}},g_=(e,t,r)=>{const{moduleId:n,fileName:a}=e,s=[],o=zn(r,n);if(o==null)return{errors:[Q()]};o.initialization===null&&s.push(Mr());const i=t.moduleEntities[n].pythonName,l=a!=null?`export_filename=${N(a)}`:"";return s.length>0?{errors:s}:{commands:[{commandType:"absorbanceReader/read",key:D(),params:{moduleId:n,...a!=null?{fileName:a}:{}}}],python:`${i}.read(${l})`}},At=(e,t,r)=>{const{flowRate:n,pipetteId:a,volume:s,correctionVolume:o}=e,i=[];t.pipetteEntities[a]?.spec||i.push(ct({pipette:a}));const u=t.pipetteEntities[a].pythonName;return{commands:[{commandType:"airGapInPlace",key:D(),params:{flowRate:n,pipetteId:a,volume:s,...o!=null?{correctionVolume:o}:{}}}],python:`${u}.air_gap(${[`volume=${s}`,"in_place=True",`flow_rate=${n}`].join(", ")})`}},tI=(e,t,r)=>{const{pipetteId:n,volume:a,labwareId:s,wellName:o,flowRate:i,isAirGap:l,tipRack:u,wellLocation:p,primaryNozzle:d,nozzles:f}=e,h="aspirate",m=r.labware,_=[],b=t.pipetteEntities[n]?.spec,T=(b?.displayCategory==="FLEX"||b?.channels===96)??!1,y=qn(s,r.labware);if(b||_.push(ct({pipette:n})),!s||!r.labware[s]?_.push(pt({actionName:h,labware:s})):G(r.labware[s].stack)==="offDeck"&&_.push(wn()),ve.includes(y))_.push(Vt({typeOfStep:h}));else if(m[y]!=null){const k=G(m[y].stack);ve.includes(k)&&_.push(Vt({typeOfStep:h}))}Vn({pipette:n,labware:s,invariantContext:t,prevRobotState:r})&&_.push(Ta()),r.tipState.pipettes[n]?.hasTip||_.push(xt({actionName:h,pipette:n,labware:s,well:o}));const A=t.pipetteEntities[n]?.spec.channels!==1,w=ft({robotState:r,invariantContext:t,pipetteId:n,labwareId:s,wellLocationOffset:p?.offset??{x:0,y:0,z:0},wellTargetName:o,primaryNozzle:d,nozzleConfiguration:f});if(A&&b&&!w.isSafe&&_.push($t({unsafePipetteMovementReason:w.reason})),Va(r.modules,r.labware,s)&&_.push(In()),Ua(r.modules,r.labware,s)&&_.push(Mr()),Ha(r.modules,r.labware,s)&&_.push(ps()),za(r.modules,r.labware,s)&&_.push(En()),Hn(r.modules,y,T?c.FLEX_ROBOT_TYPE:c.OT2_ROBOT_TYPE)&&_.push(Ia()),T||(Bn(r.modules,y)&&_.push(ga()),xn(r.modules,y,b)&&_.push(Ea()),xa(r.modules,y,b,t.labwareEntities[s])&&_.push(ds())),_.length===0&&b&&b.liquids.default.maxVolume<a&&_.push(os({actionName:h,volume:a,maxVolume:b.liquids.default.maxVolume})),_.length===0&&b){const k=Us(n,t,u);k<a&&_.push(Ub({actionName:h,volume:a,maxVolume:k}))}if(_.length>0)return{errors:_};const I=[{commandType:"aspirate",key:D(),params:{pipetteId:n,volume:a,labwareId:s,wellName:o,wellLocation:p,flowRate:i},...l&&{meta:{isAirGap:l}}}],S=t.pipetteEntities[n].pythonName,L=t.labwareEntities[s].pythonName,g=[`volume=${a}`,`location=${L}[${N(o)}]${Bt(p)}`,`flow_rate=${i}`],E=`${S}.aspirate(
2
+ ${K(g.join(`,
3
3
  `))},
4
- )`;return{commands:g,python:E}},Ra=(e,t,r)=>{const{pipetteId:n,volume:a,flowRate:s,correctionVolume:o}=e,i=[{commandType:"aspirateInPlace",key:D(),params:{pipetteId:n,volume:a,flowRate:s,...o!=null?{correctionVolume:o}:{}}}],l=[];r.tipState.pipettes[n]?.hasTip||l.push(Bt({actionName:"aspirate",pipette:n}));const u=t.pipetteEntities[n].pythonName,p=[`volume=${a}`,`flow_rate=${s}`],d=`${u}.aspirate(${p.join(", ")})`;return l.length>0?{errors:l}:{commands:i,python:d}},Rn=(e,t,r)=>{const{pipetteId:n,flowRate:a}=e,s=[];if(r.tipState.pipettes[n]?.hasTip||s.push(Bt({actionName:"blowout",pipette:n})),s.length>0)return{errors:s};const o=t.pipetteEntities[n].pythonName;return{commands:[{commandType:"blowOutInPlace",key:D(),params:{pipetteId:n,flowRate:a}}],python:`${o}.flow_rate.blow_out = ${a}
5
- ${o}.blow_out()`}},Ic=(e,t,r)=>{const{pipetteId:n,labwareId:a,wellName:s,wellLocation:o,flowRate:i}=e,{pipetteEntities:l,labwareEntities:u}=t,p=l[n],d="blowout",f=[],_=p?.spec,m=(_?.displayCategory==="FLEX"||_?.channels===96)??!1,h=r.pipettes[n],b=r.labware,T=Cn(a,r.labware);if(h||f.push(ut({pipette:n})),_==null&&f.push(ut({pipette:n})),r.tipState.pipettes[n]?.hasTip||f.push(Bt({actionName:d,pipette:n,labware:a,well:s})),!a||!r.labware[a]?f.push(ct({actionName:d,labware:a})):G(r.labware[a].stack)==="offDeck"&&f.push(bn()),Me.includes(T))f.push($t({typeOfStep:d}));else if(b[T]!=null){const g=G(b[T].stack);Me.includes(g)&&f.push($t({typeOfStep:d}))}if(Dn({pipette:n,labware:a,invariantContext:t,prevRobotState:r})&&f.push(ma()),Ma(r.modules,r.labware,a)&&f.push(_n()),Ca(r.modules,r.labware,a)&&f.push(Fr()),Ua(r.modules,r.labware,a)&&f.push(is()),$a(r.modules,r.labware,a)&&f.push(yn()),qn(r.modules,T,m?c.FLEX_ROBOT_TYPE:c.OT2_ROBOT_TYPE)&&f.push(_a()),!m&&_!=null&&(Mn(r.modules,T)&&f.push(ha()),Fn(r.modules,T,_)&&f.push(ya()),qa(r.modules,T,_,t.labwareEntities[a])&&f.push(ls())),f.length>0)return{errors:f};const y=p.pythonName,A=u[a].pythonName;return{commands:[{commandType:"blowout",key:D(),params:{pipetteId:n,labwareId:a,wellName:s,flowRate:i,wellLocation:o}}],python:`${y}.flow_rate.blow_out = ${i}
6
- ${y}.blow_out(${A}[${N(s)}]${Vt(o)})`}},d_=(e,t,r)=>{const n={commandType:"captureImage",key:D(),params:{homeBefore:e.homeBefore,fileName:e.fileName,resolution:e.resolution,zoom:e.zoom,contrast:e.contrast,brightness:e.brightness,saturation:e.saturation}},a=`${be}.capture_image()`;return{commands:[n],python:a}},f_=(e,t,r)=>{const{message:n}=e,a=[{commandType:"comment",key:D(),params:{message:n}}],s=`${be}.comment(${N(n)})`;return{commands:a,python:s}},gn=(e,t,r)=>{const{pipetteId:n,volume:a}=e,s=t.pipetteEntities[n];return s?{commands:[{commandType:"configureForVolume",key:D(),params:{pipetteId:n,volume:a}}],python:`${s.pythonName}.configure_for_volume(${a})`}:{commands:[]}},m_=(e,t,r)=>{const{pipetteId:n,configurationParams:a}=e,{style:s,primaryNozzle:o}=a,i=[{commandType:"configureNozzleLayout",key:D(),params:{pipetteId:n,configurationParams:a}}],l=t.pipetteEntities[n].pythonName;let u;return s===c.PARTIAL_COLUMN?u=[`protocol_api.${s}`,...o!=null?[`start=${N(o)}, end=${N(c.H1_NOZZLE)}`]:[]]:u=[`protocol_api.${s}`,...o!=null?[`start=${N(o)}`]:[]],{commands:i,python:`${l}.configure_nozzle_layout(
4
+ )`;return{commands:I,python:E}},Na=(e,t,r)=>{const{pipetteId:n,volume:a,flowRate:s,correctionVolume:o}=e,i=[{commandType:"aspirateInPlace",key:D(),params:{pipetteId:n,volume:a,flowRate:s,...o!=null?{correctionVolume:o}:{}}}],l=[];r.tipState.pipettes[n]?.hasTip||l.push(xt({actionName:"aspirate",pipette:n}));const u=t.pipetteEntities[n].pythonName,p=[`volume=${a}`,`flow_rate=${s}`],d=`${u}.aspirate(${p.join(", ")})`;return l.length>0?{errors:l}:{commands:i,python:d}},Dn=(e,t,r)=>{const{pipetteId:n,flowRate:a}=e,s=[];if(r.tipState.pipettes[n]?.hasTip||s.push(xt({actionName:"blowout",pipette:n})),s.length>0)return{errors:s};const o=t.pipetteEntities[n].pythonName;return{commands:[{commandType:"blowOutInPlace",key:D(),params:{pipetteId:n,flowRate:a}}],python:`${o}.flow_rate.blow_out = ${a}
5
+ ${o}.blow_out()`}},Oc=(e,t,r)=>{const{pipetteId:n,labwareId:a,wellName:s,wellLocation:o,flowRate:i}=e,{pipetteEntities:l,labwareEntities:u}=t,p=l[n],d="blowout",f=[],h=p?.spec,m=(h?.displayCategory==="FLEX"||h?.channels===96)??!1,_=r.pipettes[n],b=r.labware,T=qn(a,r.labware);if(_||f.push(ct({pipette:n})),h==null&&f.push(ct({pipette:n})),r.tipState.pipettes[n]?.hasTip||f.push(xt({actionName:d,pipette:n,labware:a,well:s})),!a||!r.labware[a]?f.push(pt({actionName:d,labware:a})):G(r.labware[a].stack)==="offDeck"&&f.push(wn()),ve.includes(T))f.push(Vt({typeOfStep:d}));else if(b[T]!=null){const I=G(b[T].stack);ve.includes(I)&&f.push(Vt({typeOfStep:d}))}if(Vn({pipette:n,labware:a,invariantContext:t,prevRobotState:r})&&f.push(Ta()),Va(r.modules,r.labware,a)&&f.push(In()),Ua(r.modules,r.labware,a)&&f.push(Mr()),Ha(r.modules,r.labware,a)&&f.push(ps()),za(r.modules,r.labware,a)&&f.push(En()),Hn(r.modules,T,m?c.FLEX_ROBOT_TYPE:c.OT2_ROBOT_TYPE)&&f.push(Ia()),!m&&h!=null&&(Bn(r.modules,T)&&f.push(ga()),xn(r.modules,T,h)&&f.push(Ea()),xa(r.modules,T,h,t.labwareEntities[a])&&f.push(ds())),f.length>0)return{errors:f};const y=p.pythonName,A=u[a].pythonName;return{commands:[{commandType:"blowout",key:D(),params:{pipetteId:n,labwareId:a,wellName:s,flowRate:i,wellLocation:o}}],python:`${y}.flow_rate.blow_out = ${i}
6
+ ${y}.blow_out(${A}[${N(s)}]${Bt(o)})`}},I_=(e,t,r)=>{const n={commandType:"captureImage",key:D(),params:{homeBefore:e.homeBefore,fileName:e.fileName,resolution:e.resolution,zoom:e.zoom,contrast:e.contrast,brightness:e.brightness,saturation:e.saturation}},a=`${be}.capture_image()`;return{commands:[n],python:a}},E_=(e,t,r)=>{const{message:n}=e,a=[{commandType:"comment",key:D(),params:{message:n}}],s=`${be}.comment(${N(n)})`;return{commands:a,python:s}},An=(e,t,r)=>{const{pipetteId:n,volume:a}=e,s=t.pipetteEntities[n];return s?{commands:[{commandType:"configureForVolume",key:D(),params:{pipetteId:n,volume:a}}],python:`${s.pythonName}.configure_for_volume(${a})`}:{commands:[]}},w_=(e,t,r)=>{const{pipetteId:n,configurationParams:a}=e,{style:s,primaryNozzle:o}=a,i=[{commandType:"configureNozzleLayout",key:D(),params:{pipetteId:n,configurationParams:a}}],l=t.pipetteEntities[n].pythonName;let u;return s===c.PARTIAL_COLUMN?u=[`protocol_api.${s}`,...o!=null?[`start=${N(c.H1_NOZZLE)}, end=${N(o)}`]:[]]:u=[`protocol_api.${s}`,...o!=null?[`start=${N(o)}`]:[]],{commands:i,python:`${l}.configure_nozzle_layout(
7
7
  ${K(u.join(`,
8
8
  `))},
9
- )`}},h_=(e,t,r)=>{const{moduleId:n}=e;if(n===null)return{errors:[Z()]};const a=t.moduleEntities[n],s=a?.type,o=a?.pythonName,i={moduleId:n};return s===c.TEMPERATURE_MODULE_TYPE?{commands:[{commandType:"temperatureModule/deactivate",key:D(),params:i}],python:`${o}.deactivate()`}:s===c.THERMOCYCLER_MODULE_TYPE?{commands:[{commandType:"thermocycler/deactivateLid",key:D(),params:i},{commandType:"thermocycler/deactivateBlock",key:D(),params:i}],python:`${o}.deactivate_lid()
10
- ${o}.deactivate_block()`}:s===c.HEATERSHAKER_MODULE_TYPE?{commands:[{commandType:"heaterShaker/deactivateHeater",key:D(),params:i}],python:`${o}.deactivate_heater()`}:(console.error(`setTemperature expected module ${n} to be ${c.TEMPERATURE_MODULE_TYPE}, ${c.THERMOCYCLER_MODULE_TYPE} or ${c.HEATERSHAKER_MODULE_TYPE}, got ${s}`),{errors:[Z()]})},fe=(e,t,r)=>{const{message:n}=e;let a,s;if("seconds"in e){a={commandType:"waitForDuration",key:D(),params:{seconds:e.seconds,message:n}};const o=[`seconds=${e.seconds}`,...n?[`msg=${N(n)}`]:[]];s=`${be}.delay(${o.join(", ")})`}else a={commandType:"waitForResume",key:D(),params:{message:n}},s=`${be}.pause(${n?N(n):""})`;return{commands:[a],python:s}},__=(e,t,r)=>{const{moduleId:n}=e,{moduleEntities:a}=t,s="magneticModule/disengage";if(n===null)return{errors:[Z()]};if(a[n]?.type!==c.MAGNETIC_MODULE_TYPE)throw new Error(`expected module ${n} to be magdeck, got ${a[n]?.type}`);const o=a[n].pythonName;return{commands:[{commandType:s,key:D(),params:{moduleId:n}}],python:`${o}.disengage()`}},Ec=(e,t,r)=>{const{pipetteId:n,volume:a,labwareId:s,wellName:o,flowRate:i,isAirGap:l,wellLocation:u,pushOut:p,primaryNozzle:d,nozzles:f}=e,_="dispense",m=r.labware,h=[],b=t.pipetteEntities[n]?.spec,T=(b?.displayCategory==="FLEX"||b?.channels===96)??!1,y=Cn(s,r.labware);if(b||h.push(ut({pipette:n})),Dn({pipette:n,labware:s,invariantContext:t,prevRobotState:r})&&h.push(ma()),r.tipState.pipettes[n]?.hasTip||h.push(Bt({actionName:_,pipette:n,labware:s,well:o})),!s||!r.labware[s]?h.push(ct({actionName:_,labware:s})):G(r.labware[s].stack)==="offDeck"&&h.push(bn()),Me.includes(y))h.push($t({typeOfStep:_}));else if(m[y]!=null){const v=G(m[y].stack);Me.includes(v)&&h.push($t({typeOfStep:_}))}const A=t.pipetteEntities[n]?.spec.channels!==1,S=dt({robotState:r,invariantContext:t,pipetteId:n,labwareId:s,wellLocationOffset:u?.offset??{x:0,y:0,z:0},wellTargetName:o,primaryNozzle:d,nozzleConfiguration:f});if(A&&!S.isSafe&&h.push(Ut({unsafePipetteMovementReason:S.reason})),Ma(r.modules,r.labware,s)&&h.push(_n()),Ca(r.modules,r.labware,s)&&h.push(Fr()),Ua(r.modules,r.labware,s)&&h.push(is()),$a(r.modules,r.labware,s)&&h.push(yn()),qn(r.modules,y,T?c.FLEX_ROBOT_TYPE:c.OT2_ROBOT_TYPE)&&h.push(_a()),T||(Mn(r.modules,y)&&h.push(ha()),Fn(r.modules,y,b)&&h.push(ya()),qa(r.modules,y,b,t.labwareEntities[s])&&h.push(ls())),h.length>0)return{errors:h};const g=[{commandType:"dispense",key:D(),params:{pipetteId:n,volume:a,labwareId:s,wellName:o,wellLocation:u,flowRate:i,...p!=null?{pushOut:p}:{}},...l&&{meta:{isAirGap:l}}}],I=t.pipetteEntities[n].pythonName,L=t.labwareEntities[s].pythonName,w=[`volume=${a}`,`location=${L}[${N(o)}]${Vt(u)}`,`flow_rate=${i}`,...p!=null?[`push_out=${p}`]:[]],E=`${I}.dispense(
11
- ${K(w.join(`,
9
+ )`}},S_=(e,t,r)=>{const{moduleId:n}=e;if(n===null)return{errors:[Q()]};const a=t.moduleEntities[n],s=a?.type,o=a?.pythonName,i={moduleId:n};return s===c.TEMPERATURE_MODULE_TYPE?{commands:[{commandType:"temperatureModule/deactivate",key:D(),params:i}],python:`${o}.deactivate()`}:s===c.THERMOCYCLER_MODULE_TYPE?{commands:[{commandType:"thermocycler/deactivateLid",key:D(),params:i},{commandType:"thermocycler/deactivateBlock",key:D(),params:i}],python:`${o}.deactivate_lid()
10
+ ${o}.deactivate_block()`}:s===c.HEATERSHAKER_MODULE_TYPE?{commands:[{commandType:"heaterShaker/deactivateHeater",key:D(),params:i}],python:`${o}.deactivate_heater()`}:(console.error(`setTemperature expected module ${n} to be ${c.TEMPERATURE_MODULE_TYPE}, ${c.THERMOCYCLER_MODULE_TYPE} or ${c.HEATERSHAKER_MODULE_TYPE}, got ${s}`),{errors:[Q()]})},me=(e,t,r)=>{const{message:n}=e;let a,s;if("seconds"in e){a={commandType:"waitForDuration",key:D(),params:{seconds:e.seconds,message:n}};const o=[`seconds=${e.seconds}`,...n?[`msg=${N(n)}`]:[]];s=`${be}.delay(${o.join(", ")})`}else a={commandType:"waitForResume",key:D(),params:{message:n}},s=`${be}.pause(${n?N(n):""})`;return{commands:[a],python:s}},A_=(e,t,r)=>{const{moduleId:n}=e,{moduleEntities:a}=t,s="magneticModule/disengage";if(n===null)return{errors:[Q()]};if(a[n]?.type!==c.MAGNETIC_MODULE_TYPE)throw new Error(`expected module ${n} to be magdeck, got ${a[n]?.type}`);const o=a[n].pythonName;return{commands:[{commandType:s,key:D(),params:{moduleId:n}}],python:`${o}.disengage()`}},Rc=(e,t,r)=>{const{pipetteId:n,volume:a,labwareId:s,wellName:o,flowRate:i,isAirGap:l,wellLocation:u,pushOut:p,primaryNozzle:d,nozzles:f}=e,h="dispense",m=r.labware,_=[],b=t.pipetteEntities[n]?.spec,T=(b?.displayCategory==="FLEX"||b?.channels===96)??!1,y=qn(s,r.labware);if(b||_.push(ct({pipette:n})),Vn({pipette:n,labware:s,invariantContext:t,prevRobotState:r})&&_.push(Ta()),r.tipState.pipettes[n]?.hasTip||_.push(xt({actionName:h,pipette:n,labware:s,well:o})),!s||!r.labware[s]?_.push(pt({actionName:h,labware:s})):G(r.labware[s].stack)==="offDeck"&&_.push(wn()),ve.includes(y))_.push(Vt({typeOfStep:h}));else if(m[y]!=null){const k=G(m[y].stack);ve.includes(k)&&_.push(Vt({typeOfStep:h}))}const A=t.pipetteEntities[n]?.spec.channels!==1,w=ft({robotState:r,invariantContext:t,pipetteId:n,labwareId:s,wellLocationOffset:u?.offset??{x:0,y:0,z:0},wellTargetName:o,primaryNozzle:d,nozzleConfiguration:f});if(A&&!w.isSafe&&_.push($t({unsafePipetteMovementReason:w.reason})),Va(r.modules,r.labware,s)&&_.push(In()),Ua(r.modules,r.labware,s)&&_.push(Mr()),Ha(r.modules,r.labware,s)&&_.push(ps()),za(r.modules,r.labware,s)&&_.push(En()),Hn(r.modules,y,T?c.FLEX_ROBOT_TYPE:c.OT2_ROBOT_TYPE)&&_.push(Ia()),T||(Bn(r.modules,y)&&_.push(ga()),xn(r.modules,y,b)&&_.push(Ea()),xa(r.modules,y,b,t.labwareEntities[s])&&_.push(ds())),_.length>0)return{errors:_};const I=[{commandType:"dispense",key:D(),params:{pipetteId:n,volume:a,labwareId:s,wellName:o,wellLocation:u,flowRate:i,...p!=null?{pushOut:p}:{}},...l&&{meta:{isAirGap:l}}}],S=t.pipetteEntities[n].pythonName,L=t.labwareEntities[s].pythonName,g=[`volume=${a}`,`location=${L}[${N(o)}]${Bt(u)}`,`flow_rate=${i}`,...p!=null?[`push_out=${p}`]:[]],E=`${S}.dispense(
11
+ ${K(g.join(`,
12
12
  `))},
13
- )`;return{commands:g,python:E}},Xe=(e,t,r)=>{const{pipetteId:n,volume:a,flowRate:s,pushOut:o,correctionVolume:i,isAirGap:l}=e,u=[];r.tipState.pipettes[n]?.hasTip||u.push(Bt({actionName:"dispense",pipette:n}));const p=[{commandType:"dispenseInPlace",key:D(),params:{pipetteId:n,volume:a,flowRate:s,...o!=null?{pushOut:o}:{},...i!=null?{correctionVolume:i}:{}},...l?{meta:{isAirGap:l}}:{}}],d=t.pipetteEntities[n].pythonName,f=[`volume=${a}`,`flow_rate=${s}`,...o!=null?[`push_out=${o}`]:[]],_=`${d}.dispense(${f.join(", ")})`;return u.length>0?{errors:u}:{commands:p,python:_}},zr=(e,t,r)=>{const{pipette:n,dropTipLocation:a,wellName:s,isReturnTip:o}=e;if(!r.tipState.pipettes[n]?.hasTip)return{commands:[]};const i=r.pipettes[n].tiprackId,l=r.pipettes[n].tipWell,u=Object.values(t.labwareEntities).find(({id:_})=>_===i),p=u!=null&&l!=null;if(o&&!p)return{errors:[sp()]};let d=null;if(o&&p){const _=t.pipetteEntities[n].pythonName,h=`${u.pythonName}["${l}"]`;d=`${_}.drop_tip(location=${h})`}let f=[];if(o){if(i==null||l==null)return{errors:[sp()]};f=[{commandType:"dropTip",key:D(),params:{pipetteId:n,labwareId:i,wellName:l}}]}else{if(a==null||s==null)return{errors:[En()]};f=[{commandType:"dropTip",key:D(),params:{pipetteId:n,labwareId:a,wellName:s}}]}return{commands:f,...d!=null?{python:d}:{}}},gs=(e,t,r)=>{const{pipetteId:n}=e;return r.tipState.pipettes[n]?.hasTip?{commands:[{commandType:"dropTipInPlace",key:D(),params:{pipetteId:n}}]}:{commands:[]}},y_=(e,t,r)=>{const{moduleId:n,height:a}=e,{moduleEntities:s}=t,o="magneticModule/engage";if(n===null)return{errors:[Z()]};if(s[n]?.type!==c.MAGNETIC_MODULE_TYPE)throw new Error(`expected module ${n} to be magdeck, got ${s[n]?.type}`);const i=s[n].pythonName;return{commands:[{commandType:o,key:D(),params:{moduleId:n,height:a}}],python:`${i}.engage(height_from_base=${a})`}},b_=(e,t,r)=>{const{moduleEntities:n}=t,{moduleId:a,strategy:s,message:o,count:i}=e,l=ft(r,a);if(a==null||n[a]==null)return{errors:[Z()]};const u=[];if(l==null&&u.push(Z()),u.length>0)return{errors:u};const p=n[a].pythonName;return{commands:[{commandType:"flexStacker/empty",key:D(),params:{moduleId:a,strategy:s,message:o,count:i}}],python:`${p}.empty(${e.message?`message=${N(e.message)}`:""})`}},T_=(e,t,r)=>{const{moduleId:n,interventionMessage:a,fillLabwareIds:s}=e,{labwareEntities:o,moduleEntities:i}=t;if(n==null||i[n]==null)return{errors:[Z()]};const l=ft(r,n),u=$c(l,t.labwareEntities),p=i[n].pythonName,d=s.filter(T=>!c.getIsLid(o[T].def)).map(T=>o[T]?.pythonName),_=ws(d,4).map(T=>ka+T.join(", ")).join(`,
13
+ )`;return{commands:I,python:E}},Xe=(e,t,r)=>{const{pipetteId:n,volume:a,flowRate:s,pushOut:o,correctionVolume:i,isAirGap:l}=e,u=[];r.tipState.pipettes[n]?.hasTip||u.push(xt({actionName:"dispense",pipette:n}));const p=[{commandType:"dispenseInPlace",key:D(),params:{pipetteId:n,volume:a,flowRate:s,...o!=null?{pushOut:o}:{},...i!=null?{correctionVolume:i}:{}},...l?{meta:{isAirGap:l}}:{}}],d=t.pipetteEntities[n].pythonName,f=[`volume=${a}`,`flow_rate=${s}`,...o!=null?[`push_out=${o}`]:[]],h=`${d}.dispense(${f.join(", ")})`;return u.length>0?{errors:u}:{commands:p,python:h}},Hr=(e,t,r)=>{const{pipette:n,dropTipLocation:a,wellName:s,isReturnTip:o}=e;if(!r.tipState.pipettes[n]?.hasTip)return{commands:[]};const i=r.pipettes[n].tiprackId,l=r.pipettes[n].tipWell,u=Object.values(t.labwareEntities).find(({id:h})=>h===i),p=u!=null&&l!=null;if(o&&!p)return{errors:[fp()]};let d=null;if(o&&p){const h=t.pipetteEntities[n].pythonName,_=`${u.pythonName}["${l}"]`;d=`${h}.drop_tip(location=${_})`}let f=[];if(o){if(i==null||l==null)return{errors:[fp()]};f=[{commandType:"dropTip",key:D(),params:{pipetteId:n,labwareId:i,wellName:l}}]}else{if(a==null||s==null)return{errors:[Rn()]};f=[{commandType:"dropTip",key:D(),params:{pipetteId:n,labwareId:a,wellName:s}}]}return{commands:f,...d!=null?{python:d}:{}}},Ss=(e,t,r)=>{const{pipetteId:n}=e;return r.tipState.pipettes[n]?.hasTip?{commands:[{commandType:"dropTipInPlace",key:D(),params:{pipetteId:n}}]}:{commands:[]}},L_=(e,t,r)=>{const{moduleId:n,height:a}=e,{moduleEntities:s}=t,o="magneticModule/engage";if(n===null)return{errors:[Q()]};if(s[n]?.type!==c.MAGNETIC_MODULE_TYPE)throw new Error(`expected module ${n} to be magdeck, got ${s[n]?.type}`);const i=s[n].pythonName;return{commands:[{commandType:o,key:D(),params:{moduleId:n,height:a}}],python:`${i}.engage(height_from_base=${a})`}},O_=(e,t,r)=>{const{moduleEntities:n}=t,{moduleId:a,strategy:s,message:o,count:i}=e,l=mt(r,a);if(a==null||n[a]==null)return{errors:[Q()]};const u=[];if(l==null&&u.push(Q()),u.length>0)return{errors:u};const p=n[a].pythonName;return{commands:[{commandType:"flexStacker/empty",key:D(),params:{moduleId:a,strategy:s,message:o,count:i}}],python:`${p}.empty(${e.message?`message=${N(e.message)}`:""})`}},R_=(e,t,r)=>{const{moduleId:n,interventionMessage:a,fillLabwareIds:s}=e,{labwareEntities:o,moduleEntities:i}=t;if(n==null||i[n]==null)return{errors:[Q()]};const l=mt(r,n),u=Wc(l,t.labwareEntities),p=i[n].pythonName,d=s.filter(T=>!c.getIsLid(o[T].def)).map(T=>o[T]?.pythonName),h=Os(d,4).map(T=>Ma+T.join(", ")).join(`,
14
14
  `),m=d.length<4?d.join(", "):`
15
- ${_}
16
- `;if(l!=null&&l.storedLabwareDetails===null&&l.labwareInHopper==null)return{errors:[Ab()]};if(u){if(s.length>0&&!s.every(y=>Uc(y,t,l)))return{errors:[Th()]}}else return{errors:[gh()]};const b=[...s.filter(T=>!c.getIsLid(o[T].def)).length>0?`labware=[${m}],
15
+ ${h}
16
+ `;if(l!=null&&l.storedLabwareDetails===null&&l.labwareInHopper==null)return{errors:[zb()]};if(u){if(s.length>0&&!s.every(y=>Gc(y,t,l)))return{errors:[Lh()]}}else return{errors:[Oh()]};const b=[...s.filter(T=>!c.getIsLid(o[T].def)).length>0?`labware=[${m}],
17
17
  `:[],...a!=null?[`message=${N(a)},
18
18
  `]:[]].join("");return{commands:[{commandType:"flexStacker/fillItems",key:D(),params:{moduleId:n,labware:s,message:a??void 0}}],python:`${p}.fill_items(
19
- ${K(b)})`}},g_=(e,t,r)=>{const{moduleId:n}=e,{moduleEntities:a}=t;if(n==null||a[n]==null)return{errors:[Z()]};const s=a[n].pythonName,o=ft(r,n),i=o?.labwareInHopper!=null&&o.labwareInHopper.length>0;return o!==null&&qc(o)?{errors:[wb()]}:i?{commands:[{commandType:"flexStacker/retrieve",key:D(),params:{moduleId:n}}],python:`${s}.retrieve()`}:{errors:[Eb()]}},I_=(e,t,r)=>{const{moduleId:n}=e,{labwareEntities:a,moduleEntities:s}=t;if(n==null||s[n]==null)return{errors:[Z()]};const o=s[n].pythonName,i=ft(r,n),l=i?.labwareOnShuttle?.primaryLabwareId??null,u=$c(i,a);return i!==null&&!qc(i)?{errors:[Sb()]}:l!==null&&!Uc(l,t,i)?{errors:[Th()]}:u?{commands:[{commandType:"flexStacker/store",key:D(),params:{moduleId:n,strategy:"automatic"}}],python:`${o}.store()`}:{errors:[gh()]}};function ml(){return{type:"ASPIRATE_MORE_THAN_WELL_CONTENTS",message:"Not enough liquid"}}function hl(){return{type:"ASPIRATE_FROM_PRISTINE_WELL",message:"This step tries to aspirate from an empty well."}}function Ug(){return{type:"LABWARE_IN_WASTE_CHUTE_HAS_LIQUID",message:"Disposing of a labware with liquid"}}function $g(){return{type:"TIPRACK_IN_WASTE_CHUTE_HAS_TIPS",message:"Disposing unused tips"}}function Vg(){return{type:"TEMPERATURE_IS_POTENTIALLY_UNREACHABLE",message:"The module set temperature is potentially unreachable."}}function Bg(){return{type:"WAITING_FOR_NONEXISTENT_TASK",message:"This step is waiting for a task that was never started."}}const xg="opentrons_flex_tiprack_lid",E_=(e,t,r)=>{const{labwareId:n,strategy:a,newLocation:s}=e,o=a==="usingGripper",{gripperEntities:i,trashBinEntities:l,wasteChuteEntities:u,labwareEntities:p,moduleEntities:d}=t,f=Object.keys(i).length>0,_=Object.values(u).length>0,m=r.tipState!=null?D_(r.tipState,n):!1,h=r.liquidState!=null?M_(r.liquidState,n):!1,b=Object.values(r.tipState.pipettes).some(({hasTip:C})=>C),T="moveToLabware",y=[],A=[],S=c.locationIsOnAddressableArea(s)&&s.addressableAreaName==="gripperWasteChute";!n||!r.labware[n]?y.push(ct({actionName:T,labware:n})):G(r.labware[n].stack)==="offDeck"&&o?y.push(bn()):r.labware[n].stack.includes(je)&&y.push(Bb());const g=p[n]?.def.metadata.displayCategory==="aluminumBlock";o&&g&&y.push(vb()),(S&&f&&!o||!f&&o)&&y.push(Rb()),b&&o&&y.push(_b());const I=r.labware[n]!=null?G(r.labware[n].stack):null;(_&&I==="gripperWasteChute"||c.MOVABLE_TRASH_ADDRESSABLE_AREAS.includes(I)||I==="fixedTrash")&&y.push(ba());const L=I!=null&&r.labware[I]!=null?G(r.labware[I].stack):null,w=L??I,E=C=>C==null?null:C in r.modules?r.modules[C].moduleState:Object.values(r.modules).find(({slot:P})=>P===C)?.moduleState??null,v=Object.entries(r.labware).filter(([C,P])=>P.stack.includes("offDeck")).map(([C])=>C),k=Object.values(s);v.some(C=>k.includes(C))&&o&&y.push(Tb());const $=E(w);$!=null&&($.type===c.THERMOCYCLER_MODULE_TYPE&&$.lidOpen!==!0?y.push(_n()):$.type===c.HEATERSHAKER_MODULE_TYPE?$.latchOpen!==!0?y.push(ap()):$.targetSpeed!==null&&y.push(yn()):$.type===c.ABSORBANCE_READER_TYPE&&$.lidOpen!==!0&&y.push(Fr()));const q=c.locationIsOnModule(s)&&"moduleId"in s?s.moduleId:null,ee=c.locationIsOnLabware(s)?s.labwareId:null,pe=ee!=null?r.labware[ee].stack[1]:null,_e=pe??q;s==="offDeck"&&o&&y.push(bn()),m&&S&&_?A.push($g()):h&&S&&_&&A.push(Ug());const le=E(_e);le!=null&&(le.type===c.THERMOCYCLER_MODULE_TYPE&&le.lidOpen!==!0?y.push(_n()):le.type===c.HEATERSHAKER_MODULE_TYPE?(le.latchOpen!==!0&&y.push(ap()),le.targetSpeed!==null&&y.push(yn())):le.type===c.ABSORBANCE_READER_TYPE&&le.lidOpen!==!0&&y.push(Fr())),p[n]?.def.parameters.loadName===xg&&s!=null&&c.locationIsOnDeck(s)&&("slotName"in s||"addressableAreaName"in s&&c.FLEX_STAGING_AREA_SLOT_ADDRESSABLE_AREAS.includes(s.addressableAreaName))&&y.push(Fb());const ke={labwareId:n,strategy:a,newLocation:s},He=[{commandType:"moveLabware",key:D(),params:ke}],$e=p[n]?.pythonName;let te="",Ee=null;if(s==="offDeck")te=la;else if(s==="systemLocation")te="system_location";else if(s==="wasteChuteLocation")te=la;else if("labwareId"in s){te=p[s.labwareId].pythonName;const C=r.labware[s.labwareId].stack;Ee=C[C.length-1]}else if("moduleId"in s)Ee=r.modules[s.moduleId].slot,te=d[s.moduleId].pythonName;else if("slotName"in s){const{slotName:C}=s;if(C in p){const P=G(r.labware[C].stack);te=c.getIsLid(p[C].def)?N(P):p[C].pythonName;const M=r.labware[C].stack;Ee=M[M.length-1]}else te=N(C),Ee=C}else if("addressableAreaName"in s){const C=Me.includes(s.addressableAreaName),P=c.WASTE_CHUTE_ADDRESSABLE_AREAS.includes(s.addressableAreaName),V=s.addressableAreaName==="fixedTrash",ae=c.MOVABLE_TRASH_ADDRESSABLE_AREAS.includes(s.addressableAreaName)||V?Object.values(l)?.map(F=>F.location):[],U=!P&&!C&&!ua(s.addressableAreaName)?L_(s.addressableAreaName,V?"fixedTrashSlot":"trashBinAdapter",V?c.OT2_ROBOT_TYPE:c.FLEX_ROBOT_TYPE):null,H=ae.find(F=>F===U),z=H!=null?Object.values(l).find(F=>F.location===H)?.id:null;if(C)te=N(s.addressableAreaName);else if(z!=null&&!P)te=l[z]?.pythonName??"";else if(z==null&&P)te=Object.values(u)[0]?.pythonName??"";else if(ua(s.addressableAreaName)){const[F]=Object.entries(r.modules).find(([,x])=>x.moduleState.type===c.VACUUM_MODULE_TYPE)??[];if(F!=null&&d[F]!=null){const{pythonName:x}=d[F];te=`${x}.manifold_dock`}}else te=""}if(Ee!=null){const C=fn(r.labware,Ee),P=G(C),{isCompatible:V,isAboveStackLimit:M}=$_(n,C,p,d);V||y.push(Ob()),M&&y.push(Ub({slot:P}))}if(y.length>0)return{errors:y};te===""&&console.error("expected to find a python new location but could not");const ze=o?", use_gripper=True":"",Pe=c.getIsLid(p[n].def),ge=r.labware[n].stack;let X="";if(Pe){const C=F_(ge);if(C==null)console.error("expected to find a parent for labware to move but could not");else{const P=p[C]!=null,V=P&&c.getIsLid(p[C].def);ge.length===2||P&&V?X=N(G(ge)):(P||!c.getIsLid(p[C].def))&&(X=p[C].pythonName)}}Pe&&X===""&&console.error("expected to find a valid lid move location but could not");const W=Pe?`${be}.move_lid(${X}, ${te}${ze})`:`${be}.move_labware(${$e}, ${te}${ze})`;return{commands:He,...A.length>0?{warnings:A}:{},python:W}},Fe=(e,t,r)=>{const{pipetteId:n,fixtureId:a,offset:s}=e,{pipetteEntities:o,trashBinEntities:i,wasteChuteEntities:l}=t,u=o[n],p=u.spec.channels,d=u.pythonName,f=i[a]??l[a],_=f.pythonName;let m=O_(p);return i[a]!=null&&(m=kc(f.location)),{commands:[{commandType:"moveToAddressableArea",key:D(),params:{pipetteId:n,addressableAreaName:m,offset:s}}],python:`${d}.move_to(${_})`}},wc=(e,t,r)=>{const{pipetteId:n,addressableAreaName:a}=e;return{commands:[{commandType:"moveToAddressableAreaForDropTip",key:D(),params:{pipetteId:n,addressableAreaName:a,offset:{x:0,y:0,z:0},alternateDropLocation:!0}}]}},B=(e,t,r)=>{const{pipetteId:n,labwareId:a,wellName:s,wellLocation:o,minimumZHeight:i,forceDirect:l,speed:u}=e,p="moveToWell",d=[],f=r.labware,{pipetteEntities:_,labwareEntities:m}=t,h=_[n]?.spec,b=r.pipettes[n]?.nozzles??c.ALL,T=r.pipettes[n]?.primaryNozzle??os({nozzles:b,channels:h?.channels}),y=(h?.displayCategory==="FLEX"||h?.channels===96)??!1,A=Cn(a,r.labware);if(h||d.push(ut({pipette:n})),!a||!r.labware[a]?d.push(ct({actionName:p,labware:a})):G(r.labware[a].stack)==="offDeck"&&d.push(bn()),Me.includes(A))d.push($t({typeOfStep:"move to well"}));else if(f[A]!=null){const k=G(f[A].stack);Me.includes(k)&&d.push($t({typeOfStep:p}))}Dn({pipette:n,labware:a,invariantContext:t,prevRobotState:r})&&d.push(ma()),Ma(r.modules,r.labware,a)&&d.push(_n()),Ua(r.modules,r.labware,a)&&d.push(is()),Ca(r.modules,r.labware,a)&&d.push(Fr()),$a(r.modules,r.labware,a)&&d.push(yn()),qn(r.modules,A,y?c.FLEX_ROBOT_TYPE:c.OT2_ROBOT_TYPE)&&d.push(_a()),y||(Mn(r.modules,A)&&d.push(ha()),Fn(r.modules,A,h)&&d.push(ya()),qa(r.modules,A,h,m[a])&&d.push(ls()));const S=t.pipetteEntities[n]?.spec.channels!==1,g=t.pipetteEntities[n]?.spec,I=dt({robotState:r,invariantContext:t,pipetteId:n,labwareId:a,wellLocationOffset:o?.offset??{x:0,y:0,z:0},wellTargetName:s,nozzleConfiguration:b,primaryNozzle:T});if(S&&g&&!I.isSafe&&d.push(Ut({unsafePipetteMovementReason:I.reason})),d.length>0)return{errors:d};const L=_[n].pythonName,w=m[a].pythonName,E=[{commandType:"moveToWell",key:D(),params:{pipetteId:n,labwareId:a,wellName:s,wellLocation:o,...l!=null?{forceDirect:l}:{},...i!=null?{minimumZHeight:i}:{},...u!=null?{speed:u}:null}}],v=[`${w}[${N(s)}]${Vt(o)}`,...l?["force_direct=True"]:[],...i?[`minimum_z_height=${i}`]:[],...u?[`speed=${u}`]:[]];return{commands:E,python:`${L}.move_to(${v.join(", ")})`}},ts=(e,t,r)=>{const{pipetteId:n,labwareId:a,wellName:s,tipTrackingOption:o=nc,nozzles:i,primaryNozzle:l}=e,u=[],p=t.pipetteEntities[n].spec.channels,d=dt({robotState:r,invariantContext:t,pipetteId:n,labwareId:a,wellLocationOffset:{x:0,y:0},wellTargetName:s,nozzleConfiguration:i,primaryNozzle:l}),f=ep({tipState:r.tipState.tipracks[a],primaryNozzle:l,channels:p,nozzleConfiguration:i,wellName:s,tiprackDef:t.labwareEntities[a].def});d.isSafe||u.push(Ut({unsafePipetteMovementReason:d.reason})),f.isSafe||u.push($b()),f.isComplete!==!0&&u.push(Vb());const _=G(r.labware[a].stack);if(Me.includes(_))u.push($t({typeOfStep:"pick up tip"}));else if(r.labware[_]!=null){const T=G(r.labware[_].stack);Me.includes(T)&&u.push($t({typeOfStep:"pick up tip"}))}const m=t.pipetteEntities[n].pythonName,h=t.labwareEntities[a].pythonName,b=`${m}.pick_up_tip(location=${h}${o===St?`[${N(s)}]`:""})`;return u.length>0?{errors:u}:{commands:[{commandType:"pickUpTip",key:D(),params:{pipetteId:n,labwareId:a,wellName:s}}],python:b}},Hg=(e,t,r)=>{const{moduleId:n,taskId:a,profileElements:s,blockMaxVolumeUl:o}=e,i=t.moduleEntities[n].pythonName,l=Fy(e.profileElements),u=l.repeatingProfileSteps.map(m=>`{${N("temperature")}: ${m.celsius}, ${N("hold_time_seconds")}: ${m.holdSeconds}},`).join(`
19
+ ${K(b)})`}},k_=(e,t,r)=>{const{moduleId:n}=e,{moduleEntities:a}=t;if(n==null||a[n]==null)return{errors:[Q()]};const s=a[n].pythonName,o=mt(r,n),i=o?.labwareInHopper!=null&&o.labwareInHopper.length>0;return o!==null&&jc(o)?{errors:[xb()]}:i?{commands:[{commandType:"flexStacker/retrieve",key:D(),params:{moduleId:n}}],python:`${s}.retrieve()`}:{errors:[Bb()]}},v_=(e,t,r)=>{const{moduleId:n}=e,{labwareEntities:a,moduleEntities:s}=t;if(n==null||s[n]==null)return{errors:[Q()]};const o=s[n].pythonName,i=mt(r,n),l=i?.labwareOnShuttle?.primaryLabwareId??null,u=Wc(i,a);return i!==null&&!jc(i)?{errors:[Hb()]}:l!==null&&!Gc(l,t,i)?{errors:[Lh()]}:u?{commands:[{commandType:"flexStacker/store",key:D(),params:{moduleId:n,strategy:"automatic"}}],python:`${o}.store()`}:{errors:[Oh()]}};function bl(){return{type:"ASPIRATE_MORE_THAN_WELL_CONTENTS",message:"Not enough liquid"}}function Tl(){return{type:"ASPIRATE_FROM_PRISTINE_WELL",message:"This step tries to aspirate from an empty well."}}function rI(){return{type:"LABWARE_IN_WASTE_CHUTE_HAS_LIQUID",message:"Disposing of a labware with liquid"}}function nI(){return{type:"TIPRACK_IN_WASTE_CHUTE_HAS_TIPS",message:"Disposing unused tips"}}function aI(){return{type:"TEMPERATURE_IS_POTENTIALLY_UNREACHABLE",message:"The module set temperature is potentially unreachable."}}function sI(){return{type:"WAITING_FOR_NONEXISTENT_TASK",message:"This step is waiting for a task that was never started."}}const oI="opentrons_flex_tiprack_lid",P_=(e,t,r)=>{const{labwareId:n,strategy:a,newLocation:s}=e,o=a==="usingGripper",{gripperEntities:i,trashBinEntities:l,wasteChuteEntities:u,labwareEntities:p,moduleEntities:d}=t,f=Object.keys(i).length>0,h=Object.values(u).length>0,m=r.tipState!=null?Q_(r.tipState,n):!1,_=r.liquidState!=null?J_(r.liquidState,n):!1,b=Object.values(r.tipState.pipettes).some(({hasTip:C})=>C),T="moveToLabware",y=[],A=[],w=c.locationIsOnAddressableArea(s)&&s.addressableAreaName==="gripperWasteChute";!n||!r.labware[n]?y.push(pt({actionName:T,labware:n})):G(r.labware[n].stack)==="offDeck"&&o?y.push(wn()):r.labware[n].stack.includes(Ze)&&y.push(oT());const I=p[n]?.def.metadata.displayCategory==="aluminumBlock";o&&I&&y.push(Yb()),(w&&f&&!o||!f&&o)&&y.push(Wb()),b&&o&&y.push(Mb());const S=r.labware[n]!=null?G(r.labware[n].stack):null;(h&&S==="gripperWasteChute"||c.MOVABLE_TRASH_ADDRESSABLE_AREAS.includes(S)||S==="fixedTrash")&&y.push(wa());const L=S!=null&&r.labware[S]!=null?G(r.labware[S].stack):null,g=L??S,E=C=>C==null?null:C in r.modules?r.modules[C].moduleState:Object.values(r.modules).find(({slot:P})=>P===C)?.moduleState??null,k=Object.entries(r.labware).filter(([C,P])=>P.stack.includes("offDeck")).map(([C])=>C),v=Object.values(s);k.some(C=>v.includes(C))&&o&&y.push(qb());const $=E(g);$!=null&&($.type===c.THERMOCYCLER_MODULE_TYPE&&$.lidOpen!==!0?y.push(In()):$.type===c.HEATERSHAKER_MODULE_TYPE?$.latchOpen!==!0?y.push(dp()):$.targetSpeed!==null&&y.push(En()):$.type===c.ABSORBANCE_READER_TYPE&&$.lidOpen!==!0?y.push(Mr()):$.type===c.VACUUM_MODULE_TYPE&&$.currentPumpActivity.type!=="pumpDeactivated"&&y.push(mp()));const q=c.locationIsOnModule(s)&&"moduleId"in s?s.moduleId:null,ee=c.locationIsOnLabware(s)?s.labwareId:null,de=ee!=null?r.labware[ee].stack[1]:null,Te=de??q;s==="offDeck"&&o&&y.push(wn()),m&&w&&h?A.push(nI()):_&&w&&h&&A.push(rI());const se=E(Te);se!=null&&(se.type===c.THERMOCYCLER_MODULE_TYPE&&se.lidOpen!==!0?y.push(In()):se.type===c.HEATERSHAKER_MODULE_TYPE?(se.latchOpen!==!0&&y.push(dp()),se.targetSpeed!==null&&y.push(En())):se.type===c.ABSORBANCE_READER_TYPE?se.lidOpen!==!0&&y.push(Mr()):se.type===c.VACUUM_MODULE_TYPE&&se.currentPumpActivity.type!=="pumpDeactivated"&&y.push(mp())),p[n]?.def.parameters.loadName===oI&&s!=null&&c.locationIsOnDeck(s)&&("slotName"in s||"addressableAreaName"in s&&c.FLEX_STAGING_AREA_SLOT_ADDRESSABLE_AREAS.includes(s.addressableAreaName))&&y.push(tT());const Pe={labwareId:n,strategy:a,newLocation:s},He=[{commandType:"moveLabware",key:D(),params:Pe}],Ve=p[n]?.pythonName;let te="",Se=null;if(s==="offDeck")te=Ln;else if(s==="systemLocation")te="system_location";else if(s==="wasteChuteLocation")te=Ln;else if("labwareId"in s){te=p[s.labwareId].pythonName;const C=r.labware[s.labwareId].stack;Se=C[C.length-1]}else if("moduleId"in s)Se=r.modules[s.moduleId].slot,te=d[s.moduleId].pythonName;else if("slotName"in s){const{slotName:C}=s;if(C in p){const P=G(r.labware[C].stack);te=c.getIsLid(p[C].def)?N(P):p[C].pythonName;const M=r.labware[C].stack;Se=M[M.length-1]}else te=N(C),Se=C}else if("addressableAreaName"in s){const C=ve.includes(s.addressableAreaName),P=c.WASTE_CHUTE_ADDRESSABLE_AREAS.includes(s.addressableAreaName),V=s.addressableAreaName==="fixedTrash",oe=c.MOVABLE_TRASH_ADDRESSABLE_AREAS.includes(s.addressableAreaName)||V?Object.values(l)?.map(F=>F.location):[],U=!P&&!C&&!ma(s.addressableAreaName)?z_(s.addressableAreaName,V?"fixedTrashSlot":"trashBinAdapter",V?c.OT2_ROBOT_TYPE:c.FLEX_ROBOT_TYPE):null,z=oe.find(F=>F===U),x=z!=null?Object.values(l).find(F=>F.location===z)?.id:null;if(C)te=N(s.addressableAreaName);else if(x!=null&&!P)te=l[x]?.pythonName??"";else if(x==null&&P)te=Object.values(u)[0]?.pythonName??"";else if(ma(s.addressableAreaName)){const[F]=Object.entries(r.modules).find(([,H])=>H.moduleState.type===c.VACUUM_MODULE_TYPE)??[];if(F!=null&&d[F]!=null){const{pythonName:H}=d[F];te=`${H}.manifold_dock`}}else te=""}if(Se!=null){const C=fa({slot:Se,labwareState:r.labware,modulesState:r.modules}),P=G(C),{isCompatible:V,isAboveStackLimit:M}=ny(n,C,p,d);V||y.push(Gb()),M&&y.push(nT({slot:P}))}if(y.length>0)return{errors:y};te===""&&console.error("expected to find a python new location but could not");const ze=o?", use_gripper=True":"",Ce=c.getIsLid(p[n].def),Ee=r.labware[n].stack;let X="";if(Ce){const C=ey(Ee);if(C==null)console.error("expected to find a parent for labware to move but could not");else{const P=p[C]!=null,V=P&&c.getIsLid(p[C].def);Ee.length===2||P&&V?X=N(G(Ee)):(P||!c.getIsLid(p[C].def))&&(X=p[C].pythonName)}}Ce&&X===""&&console.error("expected to find a valid lid move location but could not");const W=Ce?`${be}.move_lid(${X}, ${te}${ze})`:`${be}.move_labware(${Ve}, ${te}${ze})`;return{commands:He,...A.length>0?{warnings:A}:{},python:W}},Fe=(e,t,r)=>{const{pipetteId:n,fixtureId:a,offset:s}=e,{pipetteEntities:o,trashBinEntities:i,wasteChuteEntities:l}=t,u=o[n],p=u.spec.channels,d=u.pythonName,f=i[a]??l[a],h=f.pythonName;let m=j_(p);return i[a]!=null&&(m=qc(f.location)),{commands:[{commandType:"moveToAddressableArea",key:D(),params:{pipetteId:n,addressableAreaName:m,offset:s}}],python:`${d}.move_to(${h})`}},kc=(e,t,r)=>{const{pipetteId:n,addressableAreaName:a}=e;return{commands:[{commandType:"moveToAddressableAreaForDropTip",key:D(),params:{pipetteId:n,addressableAreaName:a,offset:{x:0,y:0,z:0},alternateDropLocation:!0}}]}},B=(e,t,r)=>{const{pipetteId:n,labwareId:a,wellName:s,wellLocation:o,minimumZHeight:i,forceDirect:l,speed:u}=e,p="moveToWell",d=[],f=r.labware,{pipetteEntities:h,labwareEntities:m}=t,_=h[n]?.spec,b=r.pipettes[n]?.nozzles??c.ALL,T=r.pipettes[n]?.primaryNozzle??cs({nozzles:b,channels:_?.channels}),y=(_?.displayCategory==="FLEX"||_?.channels===96)??!1,A=qn(a,r.labware);if(_||d.push(ct({pipette:n})),!a||!r.labware[a]?d.push(pt({actionName:p,labware:a})):G(r.labware[a].stack)==="offDeck"&&d.push(wn()),ve.includes(A))d.push(Vt({typeOfStep:"move to well"}));else if(f[A]!=null){const v=G(f[A].stack);ve.includes(v)&&d.push(Vt({typeOfStep:p}))}Vn({pipette:n,labware:a,invariantContext:t,prevRobotState:r})&&d.push(Ta()),Va(r.modules,r.labware,a)&&d.push(In()),Ha(r.modules,r.labware,a)&&d.push(ps()),Ua(r.modules,r.labware,a)&&d.push(Mr()),za(r.modules,r.labware,a)&&d.push(En()),Hn(r.modules,A,y?c.FLEX_ROBOT_TYPE:c.OT2_ROBOT_TYPE)&&d.push(Ia()),y||(Bn(r.modules,A)&&d.push(ga()),xn(r.modules,A,_)&&d.push(Ea()),xa(r.modules,A,_,m[a])&&d.push(ds()));const w=t.pipetteEntities[n]?.spec.channels!==1,I=t.pipetteEntities[n]?.spec,S=ft({robotState:r,invariantContext:t,pipetteId:n,labwareId:a,wellLocationOffset:o?.offset??{x:0,y:0,z:0},wellTargetName:s,nozzleConfiguration:b,primaryNozzle:T});if(w&&I&&!S.isSafe&&d.push($t({unsafePipetteMovementReason:S.reason})),d.length>0)return{errors:d};const L=h[n].pythonName,g=m[a].pythonName,E=[{commandType:"moveToWell",key:D(),params:{pipetteId:n,labwareId:a,wellName:s,wellLocation:o,...l!=null?{forceDirect:l}:{},...i!=null?{minimumZHeight:i}:{},...u!=null?{speed:u}:null}}],k=[`${g}[${N(s)}]${Bt(o)}`,...l?["force_direct=True"]:[],...i?[`minimum_z_height=${i}`]:[],...u?[`speed=${u}`]:[]];return{commands:E,python:`${L}.move_to(${k.join(", ")})`}},ss=(e,t,r)=>{const{pipetteId:n,labwareId:a,wellName:s,tipTrackingOption:o=uc,nozzles:i,primaryNozzle:l}=e,u=[],p=t.pipetteEntities[n].spec.channels,d=ft({robotState:r,invariantContext:t,pipetteId:n,labwareId:a,wellLocationOffset:{x:0,y:0},wellTargetName:s,nozzleConfiguration:i,primaryNozzle:l}),f=lp({tipState:r.tipState.tipracks[a],primaryNozzle:l,channels:p,nozzleConfiguration:i,wellName:s,tiprackDef:t.labwareEntities[a].def});d.isSafe||u.push($t({unsafePipetteMovementReason:d.reason})),f.isSafe||u.push(aT()),f.isComplete!==!0&&u.push(sT());const h=G(r.labware[a].stack);if(ve.includes(h))u.push(Vt({typeOfStep:"pick up tip"}));else if(r.labware[h]!=null){const T=G(r.labware[h].stack);ve.includes(T)&&u.push(Vt({typeOfStep:"pick up tip"}))}const m=t.pipetteEntities[n].pythonName,_=t.labwareEntities[a].pythonName,b=`${m}.pick_up_tip(location=${_}${o===St?`[${N(s)}]`:""})`;return u.length>0?{errors:u}:{commands:[{commandType:"pickUpTip",key:D(),params:{pipetteId:n,labwareId:a,wellName:s}}],python:b}},C_=(e,t,r)=>{const{moduleId:n,taskId:a,profileElements:s,blockMaxVolumeUl:o}=e,i=t.moduleEntities[n].pythonName,l=nb(e.profileElements),u=l.repeatingProfileSteps.map(m=>`{${N("temperature")}: ${m.celsius}, ${N("hold_time_seconds")}: ${m.holdSeconds}},`).join(`
20
20
  `),d=`${`[
21
21
  ${K(u)}
22
22
  ],`}
23
23
  ${l.numRepetitions},
24
- `+(e.blockMaxVolumeUl!==void 0?`block_max_volume=${e.blockMaxVolumeUl},`:""),_=(a!=null?`${a} = `:"")+`${i}.start_execute_profile(
24
+ `+(e.blockMaxVolumeUl!==void 0?`block_max_volume=${e.blockMaxVolumeUl},`:""),h=(a!=null?`${a} = `:"")+`${i}.start_execute_profile(
25
25
  ${K(d)}
26
- )`;return{commands:[{commandType:"thermocycler/startRunExtendedProfile",key:D(),params:{moduleId:n,taskId:a,profileElements:s,blockMaxVolumeUl:o}}],python:_}},Lt=(e,t,r)=>{const{pipetteId:n}=e,a=t.pipetteEntities[n].pythonName;return{commands:[{commandType:"prepareToAspirate",key:D(),params:{pipetteId:n}}],python:`${a}.prepare_to_aspirate()`}},Sc=(e,t,r)=>{const{moduleId:n,celsius:a}=e;if(n===null)return{errors:[Z()]};const s=t.moduleEntities[n],o=s?.type;return o===c.TEMPERATURE_MODULE_TYPE?{commands:[{commandType:"temperatureModule/setTargetTemperature",key:D(),params:{moduleId:n,celsius:a}}],python:`${s?.pythonName}.start_set_temperature(${a})`}:o===c.THERMOCYCLER_MODULE_TYPE?(console.error("Thermocycler set temp not implemented!"),{commands:[]}):o===c.HEATERSHAKER_MODULE_TYPE?{commands:[{commandType:"heaterShaker/setTargetTemperature",key:D(),params:{moduleId:n,celsius:a}}],python:`${s?.pythonName}.set_target_temperature(${a})`}:(console.error(`setTemperature expected module ${n} to be ${c.TEMPERATURE_MODULE_TYPE}, ${c.THERMOCYCLER_MODULE_TYPE} or ${c.HEATERSHAKER_MODULE_TYPE}, got ${o}`),{errors:[Z()]})},Et=(e,t,r)=>{const n="touchTip",{pipetteId:a,labwareId:s,wellName:o,zOffsetFromTop:i,speed:l,mmFromEdge:u}=e,p=r.pipettes[a],d=[];if(p||d.push(ut({pipette:a})),r.tipState.pipettes[a]?.hasTip||d.push(Bt({actionName:n,pipette:a,labware:s,well:o})),d.length>0)return{errors:d};const f=t.pipetteEntities[a].pythonName,m=[`${t.labwareEntities[s].pythonName}[${N(o)}]`,`v_offset=${i}`,...l!=null?[`speed=${l}`]:[],...u!=null?[`mm_from_edge=${u}`]:[]],h=`${f}.touch_tip(${m.join(", ")})`;return{commands:[{commandType:"touchTip",key:D(),params:{pipetteId:a,labwareId:s,wellName:o,wellLocation:{origin:c.WELL_ORIGIN_TOP,offset:{z:i}},speed:l,mmFromEdge:u}}],python:h}},va=(e,t,r)=>{const{moduleId:n}=e,a=t.moduleEntities[n],s=st(r,n);if(a==null||s==null)return{errors:[Z()]};if(Nn(s))return{errors:[Ta()]};const i=`${a.pythonName}.close_vent()`;return{commands:[{commandType:"vacuumModule/closeVent",key:D(),params:{moduleId:n}}],python:i}},w_=(e,t,r)=>{const{moduleId:n}=e,a=t.moduleEntities[n],s=st(r,n);if(a==null||s==null)return{errors:[Z()]};if(Nn(s))return{errors:[Ta()]};const i=`${a.pythonName}.open_vent()`;return{commands:[{commandType:"vacuumModule/openVent",key:D(),params:{moduleId:n}}],python:i}},be="protocol",la="protocol_api.OFF_DECK",Is="CUSTOM_LABWARE",ka=" ";function K(e){return e.split(`
27
- `).map(t=>t&&ka+t).join(`
28
- `)}function pt(e){switch(typeof e){case"undefined":return"None";case"boolean":return e?"True":"False";case"number":return Number.isFinite(e)?`${e}`:`float("${e}")`;case"string":return N(e);case"object":return e===null?"None":Array.isArray(e)?Es(e):qr(e);default:throw Error("Cannot render value as Python",{cause:e})}}function N(e){return JSON.stringify(e)}function Ac(e){return`(${e.map(t=>pt(t)).join(", ")})`}function Es(e){return e.every(t=>Array.isArray(t)&&t.length===2&&t.every(r=>typeof r=="number"))?`[${e.map(t=>Ac(t)).join(", ")}]`:`[${e.map(t=>pt(t)).join(", ")}]`}function zg(e){return["undefined","boolean","number","string"].includes(typeof e)||e===null}function qr(e){const t=Object.entries(e),r=t.every(([n,a])=>zg(a));if(t.length<=1||r){const n=`{${t.map(([a,s])=>`${N(a)}: ${pt(s)}`).join(", ")}}`;if(t.length<=1||n.length<64)return n}return`{
29
- ${K(t.map(([n,a])=>`${N(n)}: ${pt(a)}`).join(`,
26
+ )`;return{commands:[{commandType:"thermocycler/startRunExtendedProfile",key:D(),params:{moduleId:n,taskId:a,profileElements:s,blockMaxVolumeUl:o}}],python:h}},Lt=(e,t,r)=>{const{pipetteId:n}=e,a=t.pipetteEntities[n].pythonName;return{commands:[{commandType:"prepareToAspirate",key:D(),params:{pipetteId:n}}],python:`${a}.prepare_to_aspirate()`}},vc=(e,t,r)=>{const{moduleId:n,celsius:a}=e;if(n===null)return{errors:[Q()]};const s=t.moduleEntities[n],o=s?.type;return o===c.TEMPERATURE_MODULE_TYPE?{commands:[{commandType:"temperatureModule/setTargetTemperature",key:D(),params:{moduleId:n,celsius:a}}],python:`${s?.pythonName}.start_set_temperature(${a})`}:o===c.THERMOCYCLER_MODULE_TYPE?(console.error("Thermocycler set temp not implemented!"),{commands:[]}):o===c.HEATERSHAKER_MODULE_TYPE?{commands:[{commandType:"heaterShaker/setTargetTemperature",key:D(),params:{moduleId:n,celsius:a}}],python:`${s?.pythonName}.set_target_temperature(${a})`}:(console.error(`setTemperature expected module ${n} to be ${c.TEMPERATURE_MODULE_TYPE}, ${c.THERMOCYCLER_MODULE_TYPE} or ${c.HEATERSHAKER_MODULE_TYPE}, got ${o}`),{errors:[Q()]})},Et=(e,t,r)=>{const n="touchTip",{pipetteId:a,labwareId:s,wellName:o,zOffsetFromTop:i,speed:l,mmFromEdge:u}=e,p=r.pipettes[a],d=[];if(p||d.push(ct({pipette:a})),r.tipState.pipettes[a]?.hasTip||d.push(xt({actionName:n,pipette:a,labware:s,well:o})),d.length>0)return{errors:d};const f=t.pipetteEntities[a].pythonName,m=[`${t.labwareEntities[s].pythonName}[${N(o)}]`,`v_offset=${i}`,...l!=null?[`speed=${l}`]:[],...u!=null?[`mm_from_edge=${u}`]:[]],_=`${f}.touch_tip(${m.join(", ")})`;return{commands:[{commandType:"touchTip",key:D(),params:{pipetteId:a,labwareId:s,wellName:o,wellLocation:{origin:c.WELL_ORIGIN_TOP,offset:{z:i}},speed:l,mmFromEdge:u}}],python:_}},Da=(e,t,r)=>{const{moduleId:n}=e,a=t.moduleEntities[n],s=ot(r,n);if(a==null||s==null)return{errors:[Q()]};if($n(s))return{errors:[Sa()]};const i=`${a.pythonName}.close_vent()`;return{commands:[{commandType:"vacuumModule/closeVent",key:D(),params:{moduleId:n}}],python:i}},N_=(e,t,r)=>{const{moduleId:n}=e,a=t.moduleEntities[n],s=ot(r,n);if(a==null||s==null)return{errors:[Q()]};if($n(s))return{errors:[Sa()]};const i=`${a.pythonName}.open_vent()`;return{commands:[{commandType:"vacuumModule/openVent",key:D(),params:{moduleId:n}}],python:i}},be="protocol",Ln="protocol_api.OFF_DECK",As="CUSTOM_LABWARE",Ma=" ";function K(e){return e.split(`
27
+ `).map(t=>t&&Ma+t).join(`
28
+ `)}function dt(e){switch(typeof e){case"undefined":return"None";case"boolean":return e?"True":"False";case"number":return Number.isFinite(e)?`${e}`:`float("${e}")`;case"string":return N(e);case"object":return e===null?"None":Array.isArray(e)?Ls(e):Fr(e);default:throw Error("Cannot render value as Python",{cause:e})}}function N(e){return JSON.stringify(e)}function Pc(e){return`(${e.map(t=>dt(t)).join(", ")})`}function Ls(e){return e.every(t=>Array.isArray(t)&&t.length===2&&t.every(r=>typeof r=="number"))?`[${e.map(t=>Pc(t)).join(", ")}]`:`[${e.map(t=>dt(t)).join(", ")}]`}function iI(e){return["undefined","boolean","number","string"].includes(typeof e)||e===null}function Fr(e){const t=Object.entries(e),r=t.every(([n,a])=>iI(a));if(t.length<=1||r){const n=`{${t.map(([a,s])=>`${N(a)}: ${dt(s)}`).join(", ")}}`;if(t.length<=1||n.length<64)return n}return`{
29
+ ${K(t.map(([n,a])=>`${N(n)}: ${dt(a)}`).join(`,
30
30
  `))},
31
- }`}function Vt(e){const{x:t,y:r,z:n}=e?.offset||{};let a=!!n,s=e?.origin;!s&&(t||r||n)&&(s="top");let o="";if(s&&(o+=(()=>{switch(s){case"top":return a=!1,`.top(${n?`z=${n}`:""})`;case"bottom":return a=!1,`.bottom(${n?`z=${n}`:""})`;case"center":return".center()";case"meniscus":return a=!1,`.meniscus(${n?`z=${n}`:""})`}})()),t||r||a){const i=[...t?[`x=${t}`]:[],...r?[`y=${r}`]:[],...a?[`z=${n}`]:[]];o+=`.move(types.Point(${i.join(", ")}))`}return o}function ws(e,t){const r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}const S_=(e,t)=>[`duration=${pt(e)}`,...typeof t=="boolean"?[`vent_after=${pt(t)}`]:[]],Lc=(e,t,r)=>{const{moduleId:n,percentPower:a,duration:s,ventAfter:o}=e,i=t.moduleEntities[n],l=st(r,n);if(l==null||i==null)return{errors:[Z()]};if(Nn(l))return{errors:[Ta()]};const p=s!=null,d=p?`${i.pythonName}_task_${l.numPumpActivitiesStarted+1}`:null,f=p?{duration:s,ventAfter:o,taskId:d}:null,_=d==null?"":`${d} = `,m=`percent_power=${pt(a)}`,h=p?S_(s,o):[],b=[m,...h],T=`${_}${i.pythonName}.start_set_vacuum_power(
32
- ${K(b.join(`,
31
+ }`}function Bt(e){const{x:t,y:r,z:n}=e?.offset||{};let a=!!n,s=e?.origin;!s&&(t||r||n)&&(s="top");let o="";if(s&&(o+=(()=>{switch(s){case"top":return a=!1,`.top(${n?`z=${n}`:""})`;case"bottom":return a=!1,`.bottom(${n?`z=${n}`:""})`;case"center":return".center()";case"meniscus":return a=!1,`.meniscus(${n?`z=${n}`:""})`}})()),t||r||a){const i=[...t?[`x=${t}`]:[],...r?[`y=${r}`]:[],...a?[`z=${n}`]:[]];o+=`.move(types.Point(${i.join(", ")}))`}return o}function Os(e,t){const r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}const D_=(e,t)=>[`duration_s=${dt(e)}`,...typeof t=="boolean"?[`vent_after=${dt(t)}`]:[]],Cc=(e,t,r)=>{const{moduleId:n,percentPower:a,duration:s,ventAfter:o}=e,i=t.moduleEntities[n],l=ot(r,n);if(l==null||i==null)return{errors:[Q()]};if($n(l))return{errors:[Sa()]};const p=s!=null,d=p?`${i.pythonName}_task_${l.numPumpActivitiesStarted+1}`:null,f=p?{duration:s,ventAfter:o,taskId:d}:null,h=`percent_power=${dt(a)}`,m=p?D_(s,o):[],_=[h,...m],T=`${p?`${d} = `:""}${i.pythonName}.start_set_vacuum_power(
32
+ ${K(_.join(`,
33
33
  `))}
34
- )`;return{commands:[{commandType:"vacuumModule/startSetVacuumPower",key:D(),params:{moduleId:n,percentPower:a,...f??{}}}],python:T}},Oc=(e,t,r)=>{const{moduleId:n,gaugePressure:a,duration:s,ventAfter:o}=e,i=t.moduleEntities[n],l=st(r,n);if(l==null||i==null)return{errors:[Z()]};if(Nn(l))return{errors:[Ta()]};const p=s!=null,d=p?`${i.pythonName}_task_${l.numPumpActivitiesStarted+1}`:null,f=p?{duration:s,ventAfter:o,taskId:d}:null,_=d==null?"":`${d} = `,m=`gauge_pressure_mbar=${pt(a)}`,h=p?S_(s,o):[],b=[m,...h],T=`${_}${i.pythonName}.start_set_vacuum_pressure(
35
- ${K(b.join(`,
34
+ )`;return{commands:[{commandType:"vacuumModule/startSetVacuumPower",key:D(),params:{moduleId:n,percentPower:a,...f??{}}}],python:T}},Nc=(e,t,r)=>{const{moduleId:n,gaugePressure:a,duration:s,ventAfter:o}=e,i=t.moduleEntities[n],l=ot(r,n);if(l==null||i==null)return{errors:[Q()]};if($n(l))return{errors:[Sa()]};const p=s!=null,d=p?`${i.pythonName}_task_${l.numPumpActivitiesStarted+1}`:null,f=p?{duration:s,ventAfter:o,taskId:d}:null,h=`gauge_pressure_mbar=${dt(a)}`,m=p?D_(s,o):[],_=[h,...m],T=`${p?`${d} = `:""}${i.pythonName}.start_set_vacuum_pressure(
35
+ ${K(_.join(`,
36
36
  `))}
37
- )`;return{commands:[{commandType:"vacuumModule/startSetVacuumPressure",key:D(),params:{moduleId:n,gaugePressure:a,...f??{}}}],python:T}},jg=e=>{const{steps:t,repetitions:r}=e;return Array.from({length:r}).flatMap(()=>t)},Gg=e=>e.reduce((t,r)=>{if("repetitions"in r){const n=jg(r);return[...t,...n]}return[...t,r]},[]),Xa=e=>{const{holdSeconds:t,ventAfter:r}=e,n={hold_time_seconds:t,...r!=null?{vent_after:r}:{}};if("gaugePressureMbar"in e){const{gaugePressureMbar:s}=e;return qr({gauge_pressure_mbar:s,...n,vent_after:r})}const{percentPower:a}=e;return qr({percent_power:Number(a),...n,vent_after:r})},Wg=e=>{let t,r;if(e.length===1&&"repetitions"in e[0]){const{steps:a,repetitions:s}=e[0];return t=`profile=[
38
- ${K(a.map((o,i)=>(i===a.length-1,Xa(o))).join(`,
37
+ )`;return{commands:[{commandType:"vacuumModule/startSetVacuumPressure",key:D(),params:{moduleId:n,gaugePressure:a,...f??{}}}],python:T}},lI=e=>{const{steps:t,repetitions:r}=e;return Array.from({length:r}).flatMap(()=>t)},uI=e=>e.reduce((t,r)=>{if("repetitions"in r){const n=lI(r);return[...t,...n]}return[...t,r]},[]),es=e=>{const{holdSeconds:t,ventAfter:r}=e,n={enable_pump:!0,hold_time_seconds:t,...r!=null?{vent_after:r}:{}};if("gaugePressureMbar"in e){const{gaugePressureMbar:s}=e;return Fr({gauge_pressure_mbar:s,...n,vent_after:r})}const{percentPower:a}=e;return Fr({percent_power:Number(a),...n})},cI=e=>{let t,r;if(e.length===1&&"repetitions"in e[0]){const{steps:a,repetitions:s}=e[0];return t=`steps=[
38
+ ${K(a.map((o,i)=>(i===a.length-1,es(o))).join(`,
39
39
  `))}
40
- ]`,r=`repetitions=${pt(s)}`,[t,r]}const n=Gg(e);return t=`profile=[
41
- ${K(n.map((a,s)=>(s===n.length-1,Xa(a))).join(`,
40
+ ]`,r=`repetitions=${dt(s)}`,[t,r]}const n=uI(e);return t=`steps=[
41
+ ${K(n.map((a,s)=>(s===n.length-1,es(a))).join(`,
42
42
  `))}
43
- ]`,r=`repetitions=${pt(1)}`,[t,r]},Rc=(e,t,r)=>{const{moduleId:n,profile:a,ventAfter:s}=e,o=st(r,n);if(o===null)return{errors:[Z()]};if(Nn(o))return{errors:[Ta()]};const l=t.moduleEntities[n].pythonName,u=`${l}_task_${o.numPumpActivitiesStarted+1}`,p=Wg(a),d=`vent_after=${pt(s)}`,f=a.map((m,h)=>h===a.length-1?{...m,ventAfter:s}:m),_=`${u} = ${l}.start_execute_profile(
43
+ ]`,r=`repetitions=${dt(1)}`,[t,r]},Dc=(e,t,r)=>{const{moduleId:n,profile:a,ventAfter:s}=e,o=ot(r,n);if(o===null)return{errors:[Q()]};if($n(o))return{errors:[Sa()]};const l=t.moduleEntities[n].pythonName,u=`${l}_task_${o.numPumpActivitiesStarted+1}`,p=cI(a),d=`vent_after=${dt(s)}`,f=a.map((m,_)=>_===a.length-1?{...m,ventAfter:s}:m),h=`${u} = ${l}.start_execute_profile(
44
44
  ${K([...p,d].join(`,
45
45
  `))}
46
- )`;return{commands:[{commandType:"vacuumModule/startRunProfile",key:D(),params:{moduleId:n,profile:f,ventAfter:s,taskId:u}}],python:_}},A_=(e,t,r)=>{const{moduleId:n}=e,a=t.moduleEntities[n];if(a==null)return{errors:[Z()]};const s=`${a.pythonName}.stop_vacuum_pump()`;return{commands:[{commandType:"vacuumModule/stopVacuum",key:D(),params:{moduleId:n}}],python:s}},vc=(e,t,r)=>{const{moduleId:n,celsius:a}=e,s=n?Ot(r,n):null,o=[];if(n===null||!s)return{errors:[Z()]};if(s.type!==c.TEMPERATURE_MODULE_TYPE&&s.type!==c.HEATERSHAKER_MODULE_TYPE)return console.error(`expected module to be ${c.TEMPERATURE_MODULE_TYPE} but got ${s.type}`),{errors:[Z()]};const i="status"in s&&s.status===tc&&s.targetTemperature!==a,l="status"in s&&s.status===rc&&s.targetTemperature!==a;if(i||"status"in s&&s.status===Ea||"targetTemp"in s&&s.targetTemp==null)return{errors:[yb()]};l&&o.push(Vg());const u=t.moduleEntities[n],p=u?.type;switch(p){case c.TEMPERATURE_MODULE_TYPE:return{commands:[{commandType:"temperatureModule/waitForTemperature",key:D(),params:{moduleId:n,celsius:a}}],warnings:o.length>0?o:void 0,python:`${u?.pythonName}.await_temperature(${a})`};case c.HEATERSHAKER_MODULE_TYPE:return{commands:[{commandType:"heaterShaker/waitForTemperature",key:D(),params:{moduleId:n,celsius:a}}],warnings:o.length>0?o:void 0,python:`${u?.pythonName}.wait_for_temperature()`};default:return console.error(`awaitTemperature expected module ${n} to be ${c.TEMPERATURE_MODULE_TYPE} or ${c.HEATERSHAKER_MODULE_TYPE}, got ${p}`),{errors:[Z()]}}},Yg=(e,t,r)=>{const{pipetteId:n,volume:a,flowRate:s,labwareId:o,wellName:i,trackFromLocation:l,trackToLocation:u}=e,p=[{commandType:"aspirateWhileTracking",key:D(),params:{pipetteId:n,volume:a,flowRate:s,labwareId:o,wellName:i,trackFromLocation:l,trackToLocation:u}}],d=t.pipetteEntities[n].pythonName,_=`${t.labwareEntities[o].pythonName}[${N(i)}]`,m=[`volume=${a}`,`location=${_}${Vt(l)}`,`flow_rate=${s}`,`end_location=${_}${Vt(u)}`],h=`${d}.aspirate(
46
+ )`;return{commands:[{commandType:"vacuumModule/startRunProfile",key:D(),params:{moduleId:n,steps:f,ventAfter:s,taskId:u}}],python:h}},M_=(e,t,r)=>{const{moduleId:n}=e,a=t.moduleEntities[n];if(a==null)return{errors:[Q()]};const s=`${a.pythonName}.stop_vacuum_pump()`;return{commands:[{commandType:"vacuumModule/stopVacuum",key:D(),params:{moduleId:n}}],python:s}},Mc=(e,t,r)=>{const{moduleId:n,celsius:a}=e,s=n?Ot(r,n):null,o=[];if(n===null||!s)return{errors:[Q()]};if(s.type!==c.TEMPERATURE_MODULE_TYPE&&s.type!==c.HEATERSHAKER_MODULE_TYPE)return console.error(`expected module to be ${c.TEMPERATURE_MODULE_TYPE} but got ${s.type}`),{errors:[Q()]};const i="status"in s&&s.status===ic&&s.targetTemperature!==a,l="status"in s&&s.status===lc&&s.targetTemperature!==a;if(i||"status"in s&&s.status===Oa||"targetTemp"in s&&s.targetTemp==null)return{errors:[Fb()]};l&&o.push(aI());const u=t.moduleEntities[n],p=u?.type;switch(p){case c.TEMPERATURE_MODULE_TYPE:return{commands:[{commandType:"temperatureModule/waitForTemperature",key:D(),params:{moduleId:n,celsius:a}}],warnings:o.length>0?o:void 0,python:`${u?.pythonName}.await_temperature(${a})`};case c.HEATERSHAKER_MODULE_TYPE:return{commands:[{commandType:"heaterShaker/waitForTemperature",key:D(),params:{moduleId:n,celsius:a}}],warnings:o.length>0?o:void 0,python:`${u?.pythonName}.wait_for_temperature()`};default:return console.error(`awaitTemperature expected module ${n} to be ${c.TEMPERATURE_MODULE_TYPE} or ${c.HEATERSHAKER_MODULE_TYPE}, got ${p}`),{errors:[Q()]}}},pI=(e,t,r)=>{const{pipetteId:n,volume:a,flowRate:s,labwareId:o,wellName:i,trackFromLocation:l,trackToLocation:u}=e,p=[{commandType:"aspirateWhileTracking",key:D(),params:{pipetteId:n,volume:a,flowRate:s,labwareId:o,wellName:i,trackFromLocation:l,trackToLocation:u}}],d=t.pipetteEntities[n].pythonName,h=`${t.labwareEntities[o].pythonName}[${N(i)}]`,m=[`volume=${a}`,`location=${h}${Bt(l)}`,`flow_rate=${s}`,`end_location=${h}${Bt(u)}`],_=`${d}.aspirate(
47
47
  ${K(m.join(`,
48
48
  `))},
49
- )`;return{commands:p,python:h}},Kg=(e,t,r)=>{const{pipetteId:n,volume:a,flowRate:s,labwareId:o,wellName:i,trackFromLocation:l,trackToLocation:u}=e,p=[{commandType:"dispenseWhileTracking",key:D(),params:{pipetteId:n,volume:a,flowRate:s,labwareId:o,wellName:i,trackFromLocation:l,trackToLocation:u}}],d=t.pipetteEntities[n].pythonName,_=`${t.labwareEntities[o].pythonName}[${N(i)}]`,m=[`volume=${a}`,`location=${_}${Vt(l)}`,`flow_rate=${s}`,`end_location=${_}${Vt(u)}`],h=`${d}.dispense(
49
+ )`;return{commands:p,python:_}},dI=(e,t,r)=>{const{pipetteId:n,volume:a,flowRate:s,labwareId:o,wellName:i,trackFromLocation:l,trackToLocation:u}=e,p=[{commandType:"dispenseWhileTracking",key:D(),params:{pipetteId:n,volume:a,flowRate:s,labwareId:o,wellName:i,trackFromLocation:l,trackToLocation:u}}],d=t.pipetteEntities[n].pythonName,h=`${t.labwareEntities[o].pythonName}[${N(i)}]`,m=[`volume=${a}`,`location=${h}${Bt(l)}`,`flow_rate=${s}`,`end_location=${h}${Bt(u)}`],_=`${d}.dispense(
50
50
  ${K(m.join(`,
51
51
  `))},
52
- )`;return{commands:p,python:h}},Xg=(e,t,r)=>{const{axes:n,skipIfMountPositionOk:a}=e,s={commandType:"home",key:D(),params:{axes:n,skipIfMountPositionOk:a}},o=[...n!=null?[`axes=${Es(n)},
52
+ )`;return{commands:p,python:_}},fI=(e,t,r)=>{const{axes:n,skipIfMountPositionOk:a}=e,s={commandType:"home",key:D(),params:{axes:n,skipIfMountPositionOk:a}},o=[...n!=null?[`axes=${Ls(n)},
53
53
  `]:[],...a!=null?[`skipIfMountPositionOk=${N(a)},
54
- `]:[]],i=`${be}.home(${o.join(", ")})`;return{commands:[s],python:i}},Zg=(e,t,r)=>{const{pipetteId:n,axis:a,distance:s}=e,{pipetteEntities:o}=t,i=o[n].pythonName,l=[{commandType:"moveRelative",key:D(),params:{pipetteId:n,axis:a,distance:s}}],u=[`axis=${N(a)}`,`distance=${s}`];return{commands:l,python:`${i}.move_axes_relative(${u.join(", ")})`}},Qg=(e,t,r)=>{const{pipetteId:n,coordinates:a,minimumZHeight:s,forceDirect:o}=e,{pipetteEntities:i}=t,l=i[n].pythonName,u=[{commandType:"moveToCoordinates",key:D(),params:{pipetteId:n,coordinates:a,minimumZHeight:s,forceDirect:o}}],p=[`coordinates=${Ac([a.x,a.y,a.z])}`,...o?["force_direct=True"]:[],...s?[`minimum_z_height=${s}`]:[]];return{commands:u,python:`${l}.move_axes_to(${p.join(", ")})`}},Jg=(e,t,r)=>{const{pipetteId:n,labwareId:a,wellName:s,wellLocation:o}=e,{pipetteEntities:i}=t,l=i[n].pythonName,u=t.labwareEntities[a].pythonName;return{commands:[{commandType:"tryLiquidProbe",key:D(),params:{pipetteId:n,labwareId:a,wellName:s,wellLocation:o}}],python:`${l}.detect_liquid_presence(${u}[${N(s)}])`}};function R(e,t){return(r,n)=>e(t,r,n)}function O(e,t){return(r,n)=>{const a=e(t,r,n);if("python"in a){const{python:s,...o}=a;return o}return a}}const Ge="__air__",jr="source_well",vn="dest_well",L_=(e,t,r)=>{const s=c.getDeckDefFromRobotType(r).cutoutFixtures.find(l=>l.id.includes(t))?.providesAddressableAreas,i=(l=>{if(s!=null){for(const u in s)if(s[u].includes(l))return u}return null})(e);if(i==null)throw Error(`expected to find cutoutId from addressableAreaName ${e} but could not`);return i};function O_(e){switch(e){case 1:return c.ONE_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA;case 8:return c.EIGHT_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA;case 96:return c.NINETY_SIX_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA}}function kc(e){const t=c.getDeckDefFromRobotType(e==="cutout12"?c.OT2_ROBOT_TYPE:c.FLEX_ROBOT_TYPE);let r=null;return t.robot.model===c.FLEX_ROBOT_TYPE&&(r=t.cutoutFixtures.find(n=>n.id==="trashBinAdapter")?.providesAddressableAreas??null),t.robot.model===c.FLEX_ROBOT_TYPE&&r==null&&console.error(`expected to find a list of cutouts for the Flex but could not with trashLocation ${e}`),r!=null?r[e]?.[0]:"fixedTrash"}function R_(e){if(e==="fixedTrash")return"cutout12";const r=c.getDeckDefFromRobotType(c.FLEX_ROBOT_TYPE).cutoutFixtures.find(n=>n.id==="trashBinAdapter")?.providesAddressableAreas??null;if(r==null)return console.error("Could not find trashBinAdapter cutouts for Flex"),null;for(const[n,a]of Object.entries(r))if(a.includes(e))return n;return console.error(`Could not find trashLocation for addressableAreaName ${e}`),null}function kn(e,t,r,n){return e[n]!=null?"labware":t[n]!=null?"wasteChute":r[n]!=null?"trashBin":(console.error(`expected to determine if dest labware is a labware or waste chute with destLabware ${n} but could not`),null)}function v_(e,t){return Tn(dn(t),r=>e)}function fr(e){return lt(e,(t,r,n)=>n===Ge?t:t+r.volume,0)}function Qt(e,t){const r=fr(t);if(r===0)return{source:t,dest:{[Ge]:{volume:e}}};if(e>r)return{source:Jt(t,()=>({volume:0})),dest:{...t,[Ge]:{volume:e-r}}};const n=lt(t,(a,s,o)=>({...a,[o]:s.volume/r}),{});return Object.keys(t).reduce((a,s)=>{const o=n[s]*e;return{source:{...a.source,[s]:{volume:t[s].volume-o}},dest:{...a.dest,[s]:{volume:o}}}},{source:{},dest:{}})}function mr(e,t){return{...t,...lt(e,(r,n,a)=>{const o=a in t?n.volume+t[a].volume:n.volume;return{...r,[a]:{volume:o}}},{})}}function Pc(e,t,r){const n=e===1?[r]:c.getWellNamePerMultiTip(t,r,e);if(!n)return console.warn(e===1?`Invalid well: ${r}`:`For labware def (URI ${c.getLabwareDefURI(t)}), with primary well ${r}, no wells are accessible by 8-channel's 1st tip`),{wellsForTips:[],allWellsShared:!1};const a=n.every(s=>s&&s===n[0]);return{wellsForTips:n,allWellsShared:a}}const k_=e=>{const{pipette:t,sourceLabwareId:r,sourceWell:n,destLabwareId:a,destWell:s,blowoutLocation:o,flowRate:i,offsetFromTopMm:l,invariantContext:u}=e;if(!o)return[];const{trashBinEntities:p,wasteChuteEntities:d}=u;let f=null,_=null;return o===jr?(f=r,_=n):o===vn&&(f=a,_=s),_!=null&&f!=null?[R(Ic,{pipetteId:t,labwareId:f,wellName:_,flowRate:i,wellLocation:{origin:"top",offset:{z:l}}})]:d[o]!=null?[R(xy,{pipetteId:t,flowRate:i,wasteChuteId:Object.keys(d)[0]})]:[R(By,{pipetteId:t,trashId:Object.keys(p)[0],flowRate:i})]};function P_(e){const{labwareEntities:t,pipetteEntities:r,wasteChuteEntities:n,trashBinEntities:a}=e;return{pipettes:lt(r,(s,o,i)=>{const l=o.spec;return{...s,[i]:C_(l.channels,{})}},{}),labware:lt(t,(s,o,i)=>({...s,[i]:Jt(o.def.wells,()=>({}))}),{}),trashBins:lt(a,(s,o,i)=>({...s,[i]:{}}),{}),wasteChute:lt(n,(s,o,i)=>({...s,[i]:{}}),{})}}function C_(e,t){return dn(e).reduce((r,n)=>({...r,[n]:t}),{})}const N_=e=>{const{blowoutLocation:t,sourceLabware:r,destLabware:n,sourceWell:a,destWell:s}=e;return t===jr&&r!=null&&a!=null?{dispenseAirGapLabware:r,dispenseAirGapWell:a}:{dispenseAirGapLabware:n,dispenseAirGapWell:s}};function Cc(e){const{invariantContext:t,labwareLocations:r,moduleLocations:n={},pipetteLocations:a}=e;return{labware:r,modules:n,pipettes:a,liquidState:P_(t),tipState:{pipettes:lt(a,(s,o,i)=>o.mount?{...s,[i]:{hasTip:!1,tiprackURI:null}}:s,{}),tipracks:lt(r,(s,o,i)=>{const l=t.labwareEntities[i].def;if(!c.getIsTiprack(l))return s;const u=Jt(l.wells,()=>wa);return{...s,[i]:u}},{})}}}const D_=(e,t)=>e.tipracks[t]!=null?Object.values(e.tipracks[t]).some(r=>r!==ie):!1,M_=(e,t)=>e.labware[t]!=null?Object.values(e.labware[t]).some(r=>Object.values(r).some(n=>n.volume>0)):!1,eI=(e,t,r)=>{const{destinationId:n,pipetteId:a,volume:s,flowRate:o,offsetFromBottomMm:i,well:l,xOffset:u,yOffset:p,tipRack:d,primaryNozzle:f,nozzles:_}=e,{labwareEntities:m,trashBinEntities:h,wasteChuteEntities:b}=t,T=kn(m,b,h,n);let y=[];return T==="labware"&&i!=null&&l!=null?y=[R(Ec,{pipetteId:a,volume:s,labwareId:n,wellName:l,flowRate:o,wellLocation:{origin:"bottom",offset:{z:i,x:u,y:p}},tipRack:d,primaryNozzle:f,nozzles:_})]:T==="wasteChute"?y=[R(xS,{pipetteId:a,volume:s,flowRate:o,wasteChuteId:b[n].id})]:y=[R(BS,{pipetteId:a,volume:s,flowRate:o,trashId:h[n].id})],ne(y,t,r)},tI=(e,t,r)=>{const{destinationId:n,pipetteId:a,zOffset:s,well:o}=e,{labwareEntities:i,wasteChuteEntities:l,trashBinEntities:u}=t,p=kn(i,l,u,n);let d=[];return p==="labware"&&o!=null?d=[R(B,{pipetteId:a,labwareId:n,wellName:o,wellLocation:{origin:"bottom",offset:{x:0,y:0,z:s}}})]:p==="wasteChute"?d=[R(Fe,{pipetteId:a,fixtureId:l[n].id,offset:{x:0,y:0,z:0}})]:d=[R(Fe,{pipetteId:a,fixtureId:u[n].id,offset:wt})],ne(d,t,r)},rI=(e,t,r)=>{const{blowOutLocation:n,destinationId:a,destWell:s,flowRate:o,pipetteId:i,sourceId:l,sourceWell:u,volume:p}=e,{labwareEntities:d,trashBinEntities:f,wasteChuteEntities:_}=t,m=kn(d,_,f,a);let h=[];if(m==="labware"&&s!=null){const{dispenseAirGapLabware:b,dispenseAirGapWell:T}=N_({blowoutLocation:n,sourceLabware:l,destLabware:a,sourceWell:u,destWell:s});h=[R(FS,{flowRate:o,pipetteId:i,labwareId:b,wellName:T,volume:p,type:"dispense"})]}else m==="wasteChute"?h=[R(MS,{pipetteId:i,volume:p,flowRate:o,wasteChuteId:_[a].id})]:h=[R(DS,{pipetteId:i,volume:p,flowRate:o,trashId:f[a].id})];return ne(h,t,r)},nI=(e,t,r)=>{const{pipetteId:n,destinationId:a,well:s,zOffset:o,seconds:i}=e,{labwareEntities:l,trashBinEntities:u,wasteChuteEntities:p}=t,d=kn(l,p,u,a);let f=[];return s!=null&&d==="labware"?f=[R(B,{pipetteId:n,labwareId:a,wellName:s,wellLocation:{origin:"bottom",offset:{x:0,y:0,z:o}}}),R(fe,{seconds:i})]:d==="wasteChute"?f=[R(Fe,{pipetteId:n,fixtureId:a,offset:wt}),R(fe,{seconds:i})]:f=[R(Fe,{pipetteId:n,fixtureId:a,offset:wt}),R(fe,{seconds:i})],ne(f,t,r)},G=(e,t=!1)=>{if(e==null)return console.error("expected to find stack but could not"),"unknown slot";{const r=e[e.length-1];return t?`STACKER ${r.slice(-2,-1)}`:r}},Nc=e=>e==null?(console.error("expected to find stack but could not"),"unknown top location"):e[0],F_=e=>e.length>=2?e[1]:null,fn=(e,t)=>Object.values(e).reduce((r,{stack:n})=>(n[n.length-1]===t&&n.length>r.length&&(r=n),r),[]),Dc=e=>c.FLEX_SINGLE_SLOT_BY_CUTOUT_ID[c.FLEX_CUTOUT_BY_SLOT_ID[e]],q_=e=>{const t=c.FLEX_STACKER_ADDRESSABLE_AREAS.indexOf(e);return t===-1?null:Me[t]},aI=e=>{const t=q_(e);return t!=null?Dc(t):null},U_=(e,t,r)=>{if(e==null)return null;if(Me.includes(e)){const n=Dc(e);return Object.entries(t).some(([s,o])=>r[s]?.type===c.FLEX_STACKER_MODULE_TYPE&&o.slot===n)?n:e}return e},Ss=e=>{const t=c.getDeckDefFromRobotType(c.FLEX_ROBOT_TYPE),r=`${e[0]}3`,n=c.FLEX_CUTOUT_BY_SLOT_ID[r],a=t.cutoutFixtures.find(({id:s})=>s===c.FLEX_STACKER_V1_FIXTURE)?.providesAddressableAreas[n];return c.FLEX_STACKER_ADDRESSABLE_AREAS.find(s=>a?.includes(s))??null},$_=(e,t,r,n)=>{if(t.length===0)return{isCompatible:!0,isAboveStackLimit:!1};let a=!1;const s=t.find(u=>u in n);s!=null&&(a=n[s].type===c.FLEX_STACKER_MODULE_TYPE&&t.includes(je));const o=Nc(t);let i=!0,l=!1;if(o in r){const u=r[e],p=r[o],d=t.filter(I=>r[I]!=null),f=d.filter(I=>r[I]?.def?.allowedRoles?.includes("lid"))[0],_=d.filter(I=>r[I]?.def?.allowedRoles?.includes("adapter"))[0],m=p.def.parameters.loadName,h=d.filter(I=>!r[I]?.def?.allowedRoles?.includes("adapter")&&!r[I]?.def?.allowedRoles?.includes("lid"))[0];if(a){const I=c.getMaxPoolCount({labwareDefinitions:{primary:r[h]?.def??null,adapter:r[_]?.def??null,lid:r[f]?.def??null},model:c.FLEX_STACKER_MODULE_V1});l=t.length>I}else{const I=p.def.stackLimit??1,L=m===u.def.parameters.loadName,w=t.filter(E=>r[E]?.def.parameters.loadName===m)?.length;l=L&&w>=I}const b=u.def.parameters.loadName==="opentrons_tough_universal_lid",T=p.def.metadata.displayCategory==="tubeRack",y=p.def.metadata.displayCategory==="aluminumBlock",A=p.def.parameters.isTiprack,g=(p.def.allowedRoles??[]).includes("lid");i=u.def.compatibleParentLabware?.some(I=>I===m)||Object.keys(u.def.stackingOffsetWithLabware??{}).some(I=>I===m)||b&&!T&&!y&&!A&&(p.def.parameters.loadName==="opentrons_tough_universal_lid"||!g)}else if(o in n){const u=n[o],{model:p}=u;i=Object.keys(r[e].def.stackingOffsetWithModule??{}).some(d=>p===d)}return{isCompatible:i,isAboveStackLimit:l}},Pa=(e,t)=>t?.find(r=>e[r]!=null)??null,sI=(e,t,r)=>t?e:r?$h[e]:e,Mc=(e,t,r)=>{if(t==="offDeck"&&r==null)return console.error("offDeck slot is not allowed to be used without an offDeckOverrideId"),[];const n=ua(t),a=V_(t),s=sI(t,n,a),o=Object.values(e).filter(i=>i.stack.includes(s)&&(r==null||i.stack.includes(r))&&i.stack.includes(je)===a&&i.stack.includes(ac)===n);return o.length===0?[]:a?o.at(-1)?.stack??[]:n?o.at(-1)?.stack??[]:o.toSorted((i,l)=>l.stack.length-i.stack.length)[0]?.stack??[]},oI=(e,t)=>Object.values(t).filter(r=>r.stack.includes(e)).sort((r,n)=>n.stack.length-r.stack.length)[0]?.stack[0],aa=(e,t,r,n=!0)=>{const a=c.linearInterpolate(e,t)??0,s=c.linearInterpolate(e,r)??0;return e+(n?a:0)+s},Fc=e=>{const{path:t,volume:r,pipetteSpecs:n,tiprackDefinition:a,conditioningByVolume:s,disposalByVolume:o,numDispenseWells:i,numAspirateWells:l,aspirateAirGapByVolume:u}=e,{liquids:p}=n,f=r<p.default.minVolume&&"lowVolumeDefault"in p?p.lowVolumeDefault.maxVolume:p.default.maxVolume,_=a?.wells.A1.totalLiquidVolume,m=_==null?f:Math.min(f,_),h=r*2,b=s!=null?c.linearInterpolate(h,s)??0:0,y=a?.namespace!=="opentrons"||s!=null&&o!=null&&m>=h+b+(c.linearInterpolate(h,o)??0)+(b===0?c.linearInterpolate(h,u)??0:0),A=m>=h;if(t==="multiAspirate"&&l<=i?console.warn("Invalid combination of source and destination wells for multiAspirate path"):t==="multiDispense"&&l>=i?console.warn("Invalid combination of source and destination wells for multiDispense path"):t==="single"&&l!==i&&console.warn("Invalid combination of source and destination wells for single path"),t==="single"||t==="multiDispense"&&!y||t==="multiAspirate"&&!A){const L=c.linearInterpolate(r,u)??0,w=Math.ceil((r+L)/m),E=r/w;return{referenceVolumes:{airGap:{aspirate:E,dispense:0},correction:{aspirate:E,dispense:E},pushOut:E,flowRate:{aspirate:E,dispense:E}},multiWellHandling:{isSupported:!1}}}if(t==="multiDispense"){let L=0,w=0;for(let E=0;E<i&&!(aa((E+1)*r,s??[],o??[])>m);E++)L=(E+1)*r,w+=1;return{referenceVolumes:{airGap:{aspirate:aa(L,s??[],o??[],!1),dispense:aa((w-1)*r,s??[],o??[],!1)},correction:{aspirate:aa(L,s??[],o??[]),dispense:r},flowRate:{aspirate:aa(L,s??[],o??[]),dispense:r},pushOut:r,conditioning:L,disposal:L},multiWellHandling:{isSupported:!0,numWellsToFitInTip:w}}}const S=Math.floor(m/r),g=Math.min(S,l),I=g*r;return{referenceVolumes:{airGap:{aspirate:I,dispense:0},pushOut:I,correction:{aspirate:I,dispense:I},flowRate:{aspirate:r,dispense:I}},multiWellHandling:{isSupported:!0,numWellsToFitInTip:g}}},Ur=e=>{const{retractZOffset:t,retractPositionReference:r,labwareId:n,labwareEntities:a,well:s}=e;if(s==null)return!1;const o=a[n]?.def.wells[s]?.depth;if(o==null)return!1;const i=c.getMmFromBottom(t,r,o);return i==null?!1:i-o>=c.SAFE_MOVE_TO_WELL_OFFSET_FROM_TOP_MM},Bu=e=>e.reduce((t,r)=>{const{kind:n}=r;return n==="onCutoutFixture"?t:n==="onLabware"?[...t,r.labwareId]:n==="onModule"||n==="inStackerHopper"?[...t,r.moduleId]:n==="onAddressableArea"?[...t,r.addressableAreaName]:[...t,r.logicalLocationName]},[]),iI={A4:"cutoutA3",B4:"cutoutB3",C4:"cutoutC3",D4:"cutoutD3"};function xu(e){if(e.location!=="offDeck"&&e.location!=="systemLocation"&&e.location!=="wasteChuteLocation"&&"addressableAreaName"in e.location&&qh.includes(e.location.addressableAreaName)){const t=D(),r=e.location.addressableAreaName,n=iI[r]??r;return{[t]:{id:t,location:n}}}return{}}const lI=(e,t)=>{const r=fn(e,t),n=r.indexOf(je);return r[n-1]},V_=e=>Uh.includes(e),ua=e=>e===c.VACUUM_MODULE_DOCK_A4_ADDRESSABLE_AREA,qc=e=>e.labwareOnShuttle?.primaryLabwareId??null,Uc=(e,t,r)=>{if(r?.storedLabwareDetails==null)return!0;const n=Object.values(r?.storedLabwareDetails??{}).reduce((s,o)=>o!=null?[...s,o]:s,[]),a=t.labwareEntities[e];return n.some(s=>a?.labwareDefURI===s)},$c=(e,t)=>{const{storedLabwareDetails:r}=e??{};if(r==null)return!0;const{primaryLabwareURI:n,adapterLabwareURI:a,lidLabwareURI:s}=r,o=Object.values(t).find(({labwareDefURI:f})=>f===n),i=Object.values(t).find(({labwareDefURI:f})=>f===a),l=Object.values(t).find(({labwareDefURI:f})=>f===s);if(o==null)return console.error("Primary labware entity not found"),!1;const u=c.getMaxPoolCount({labwareDefinitions:{primary:o.def,adapter:i?.def??null,lid:l?.def??null},model:c.FLEX_STACKER_MODULE_V1}),d=e?.labwareInHopper?.length??0;return u>d},Ca=(e,t,r)=>{const n=t[r]?.stack,a=Pa(e,n),s=a!=null?e[a].moduleState:null;return!!(s&&s.type===c.ABSORBANCE_READER_TYPE&&s.lidOpen!==!0)};var _l,Vf;function B_(){if(Vf)return _l;Vf=1;function e(t){var r=t==null?0:t.length;return r?t[r-1]:void 0}return _l=e,_l}var uI=B_();const Vc=xe(uI);var x_=Symbol.for("immer-nothing"),Bf=Symbol.for("immer-draftable"),at=Symbol.for("immer-state"),cI=process.env.NODE_ENV!=="production"?[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},"This object has been frozen and should not be mutated",function(e){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+e},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(e){return`'original' expects a draft, got: ${e}`}]:[];function Ke(e,...t){if(process.env.NODE_ENV!=="production"){const r=cI[e],n=typeof r=="function"?r.apply(null,t):r;throw new Error(`[Immer] ${n}`)}throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var ca=Object.getPrototypeOf;function In(e){return!!e&&!!e[at]}function $r(e){return e?H_(e)||Array.isArray(e)||!!e[Bf]||!!e.constructor?.[Bf]||Na(e)||Ls(e):!1}var pI=Object.prototype.constructor.toString(),xf=new WeakMap;function H_(e){if(!e||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);if(t===null||t===Object.prototype)return!0;const r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;if(r===Object)return!0;if(typeof r!="function")return!1;let n=xf.get(r);return n===void 0&&(n=Function.toString.call(r),xf.set(r,n)),n===pI}function ns(e,t,r=!0){As(e)===0?(r?Reflect.ownKeys(e):Object.keys(e)).forEach(a=>{t(a,e[a],e)}):e.forEach((n,a)=>t(a,n,e))}function As(e){const t=e[at];return t?t.type_:Array.isArray(e)?1:Na(e)?2:Ls(e)?3:0}function Hu(e,t){return As(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function z_(e,t,r){const n=As(e);n===2?e.set(t,r):n===3?e.add(r):e[t]=r}function dI(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}function Na(e){return e instanceof Map}function Ls(e){return e instanceof Set}function Dr(e){return e.copy_||e.base_}function zu(e,t){if(Na(e))return new Map(e);if(Ls(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const r=H_(e);if(t===!0||t==="class_only"&&!r){const n=Object.getOwnPropertyDescriptors(e);delete n[at];let a=Reflect.ownKeys(n);for(let s=0;s<a.length;s++){const o=a[s],i=n[o];i.writable===!1&&(i.writable=!0,i.configurable=!0),(i.get||i.set)&&(n[o]={configurable:!0,writable:!0,enumerable:i.enumerable,value:e[o]})}return Object.create(ca(e),n)}else{const n=ca(e);if(n!==null&&r)return{...e};const a=Object.create(n);return Object.assign(a,e)}}function Bc(e,t=!1){return Os(e)||In(e)||!$r(e)||(As(e)>1&&Object.defineProperties(e,{set:Za,add:Za,clear:Za,delete:Za}),Object.freeze(e),t&&Object.values(e).forEach(r=>Bc(r,!0))),e}function fI(){Ke(2)}var Za={value:fI};function Os(e){return e===null||typeof e!="object"?!0:Object.isFrozen(e)}var mI={};function Vr(e){const t=mI[e];return t||Ke(0,e),t}var pa;function j_(){return pa}function hI(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function Hf(e,t){t&&(Vr("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function ju(e){Gu(e),e.drafts_.forEach(_I),e.drafts_=null}function Gu(e){e===pa&&(pa=e.parent_)}function zf(e){return pa=hI(pa,e)}function _I(e){const t=e[at];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function jf(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];return e!==void 0&&e!==r?(r[at].modified_&&(ju(t),Ke(4)),$r(e)&&(e=as(t,e),t.parent_||ss(t,e)),t.patches_&&Vr("Patches").generateReplacementPatches_(r[at].base_,e,t.patches_,t.inversePatches_)):e=as(t,r,[]),ju(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==x_?e:void 0}function as(e,t,r){if(Os(t))return t;const n=e.immer_.shouldUseStrictIteration(),a=t[at];if(!a)return ns(t,(s,o)=>Gf(e,a,t,s,o,r),n),t;if(a.scope_!==e)return t;if(!a.modified_)return ss(e,a.base_,!0),a.base_;if(!a.finalized_){a.finalized_=!0,a.scope_.unfinalizedDrafts_--;const s=a.copy_;let o=s,i=!1;a.type_===3&&(o=new Set(s),s.clear(),i=!0),ns(o,(l,u)=>Gf(e,a,s,l,u,r,i),n),ss(e,s,!1),r&&e.patches_&&Vr("Patches").generatePatches_(a,r,e.patches_,e.inversePatches_)}return a.copy_}function Gf(e,t,r,n,a,s,o){if(a==null||typeof a!="object"&&!o)return;const i=Os(a);if(!(i&&!o)){if(process.env.NODE_ENV!=="production"&&a===r&&Ke(5),In(a)){const l=s&&t&&t.type_!==3&&!Hu(t.assigned_,n)?s.concat(n):void 0,u=as(e,a,l);if(z_(r,n,u),In(u))e.canAutoFreeze_=!1;else return}else o&&r.add(a);if($r(a)&&!i){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1||t&&t.base_&&t.base_[n]===a&&i)return;as(e,a),(!t||!t.scope_.parent_)&&typeof n!="symbol"&&(Na(r)?r.has(n):Object.prototype.propertyIsEnumerable.call(r,n))&&ss(e,a)}}}function ss(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Bc(t,r)}function yI(e,t){const r=Array.isArray(e),n={type_:r?1:0,scope_:t?t.scope_:j_(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let a=n,s=xc;r&&(a=[n],s=da);const{revoke:o,proxy:i}=Proxy.revocable(a,s);return n.draft_=i,n.revoke_=o,i}var xc={get(e,t){if(t===at)return e;const r=Dr(e);if(!Hu(r,t))return bI(e,r,t);const n=r[t];return e.finalized_||!$r(n)?n:n===yl(e.base_,t)?(bl(e),e.copy_[t]=Yu(n,e)):n},has(e,t){return t in Dr(e)},ownKeys(e){return Reflect.ownKeys(Dr(e))},set(e,t,r){const n=G_(Dr(e),t);if(n?.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){const a=yl(Dr(e),t),s=a?.[at];if(s&&s.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(dI(r,a)&&(r!==void 0||Hu(e.base_,t)))return!0;bl(e),Wu(e)}return e.copy_[t]===r&&(r!==void 0||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_[t]=!0),!0},deleteProperty(e,t){return yl(e.base_,t)!==void 0||t in e.base_?(e.assigned_[t]=!1,bl(e),Wu(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){const r=Dr(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{writable:!0,configurable:e.type_!==1||t!=="length",enumerable:n.enumerable,value:r[t]}},defineProperty(){Ke(11)},getPrototypeOf(e){return ca(e.base_)},setPrototypeOf(){Ke(12)}},da={};ns(xc,(e,t)=>{da[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}});da.deleteProperty=function(e,t){return process.env.NODE_ENV!=="production"&&isNaN(parseInt(t))&&Ke(13),da.set.call(this,e,t,void 0)};da.set=function(e,t,r){return process.env.NODE_ENV!=="production"&&t!=="length"&&isNaN(parseInt(t))&&Ke(14),xc.set.call(this,e[0],t,r,e[0])};function yl(e,t){const r=e[at];return(r?Dr(r):e)[t]}function bI(e,t,r){const n=G_(t,r);return n?"value"in n?n.value:n.get?.call(e.draft_):void 0}function G_(e,t){if(!(t in e))return;let r=ca(e);for(;r;){const n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=ca(r)}}function Wu(e){e.modified_||(e.modified_=!0,e.parent_&&Wu(e.parent_))}function bl(e){e.copy_||(e.copy_=zu(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var TI=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(t,r,n)=>{if(typeof t=="function"&&typeof r!="function"){const s=r;r=t;const o=this;return function(l=s,...u){return o.produce(l,p=>r.call(this,p,...u))}}typeof r!="function"&&Ke(6),n!==void 0&&typeof n!="function"&&Ke(7);let a;if($r(t)){const s=zf(this),o=Yu(t,void 0);let i=!0;try{a=r(o),i=!1}finally{i?ju(s):Gu(s)}return Hf(s,n),jf(a,s)}else if(!t||typeof t!="object"){if(a=r(t),a===void 0&&(a=t),a===x_&&(a=void 0),this.autoFreeze_&&Bc(a,!0),n){const s=[],o=[];Vr("Patches").generateReplacementPatches_(t,a,s,o),n(s,o)}return a}else Ke(1,t)},this.produceWithPatches=(t,r)=>{if(typeof t=="function")return(o,...i)=>this.produceWithPatches(o,l=>t(l,...i));let n,a;return[this.produce(t,r,(o,i)=>{n=o,a=i}),n,a]},typeof e?.autoFreeze=="boolean"&&this.setAutoFreeze(e.autoFreeze),typeof e?.useStrictShallowCopy=="boolean"&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),typeof e?.useStrictIteration=="boolean"&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){$r(e)||Ke(8),In(e)&&(e=gI(e));const t=zf(this),r=Yu(e,void 0);return r[at].isManual_=!0,Gu(t),r}finishDraft(e,t){const r=e&&e[at];(!r||!r.isManual_)&&Ke(9);const{scope_:n}=r;return Hf(n,t),jf(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const a=t[r];if(a.path.length===0&&a.op==="replace"){e=a.value;break}}r>-1&&(t=t.slice(r+1));const n=Vr("Patches").applyPatches_;return In(e)?n(e,t):this.produce(e,a=>n(a,t))}};function Yu(e,t){const r=Na(e)?Vr("MapSet").proxyMap_(e,t):Ls(e)?Vr("MapSet").proxySet_(e,t):yI(e,t);return(t?t.scope_:j_()).drafts_.push(r),r}function gI(e){return In(e)||Ke(10,e),W_(e)}function W_(e){if(!$r(e)||Os(e))return e;const t=e[at];let r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=zu(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=zu(e,!0);return ns(r,(a,s)=>{z_(r,a,W_(s))},n),t&&(t.finalized_=!1),r}var II=new TI,Y_=II.produce;function EI(e,t){let n=0;const a=[];for(;n+1<e.length;){const s=e[n],o=e[n+1];if(t(s,o)){n+=2;continue}else a.push(s),n+=1}return n+1===e.length&&a.push(e[n]),a}const wI=(e,t)=>["pipetteId","volume","labwareId","wellName"].every(n=>e[n]===t[n]),SI=e=>EI(e,(t,r)=>t.commandType==="aspirate"&&r.commandType==="dispense"&&wI(t.params,r.params)),K_=e=>SI(e),Hc=(e,t)=>{const r=Ot(e,t);return r.type===c.ABSORBANCE_READER_TYPE?r:(console.error(`Absorbance reader state updater expected ${t} moduleState to be absorbanceReader, but it was ${r.type}`),null)},AI=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Hc(n,a);s!=null&&(s.lidOpen=!0)},LI=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Hc(n,a);s!=null&&(s.lidOpen=!1)},OI=(e,t,r)=>{const{robotState:n}=r,{moduleId:a,measureMode:s,sampleWavelengths:o,referenceWavelength:i}=e,l=Hc(n,a);l!=null&&(l.initialization={mode:s,wavelengths:o,referenceWavelength:i},l.lidOpen=!1)};function RI(e,t,r){const{pipetteId:n,volume:a}=e,{robotState:s}=r,o=s.pipettes[n].nozzles;let l=t.pipetteEntities[n].spec.channels;o===c.COLUMN?l=8:o===c.SINGLE&&(l=1),dn(l).forEach(u=>{const p=s.liquidState.pipettes[n][u]??{},d=p[Ge]?.volume??0;s.liquidState.pipettes[n][u]={...p,[Ge]:{volume:d+a}}})}var Tl,Wf;function vI(){if(Wf)return Tl;Wf=1;var e=e_(),t=Oa(),r=us(),n=Ze(),a=Hr(),s=hs(),o=ys(),i=hc(),l="[object Map]",u="[object Set]",p=Object.prototype,d=p.hasOwnProperty;function f(_){if(_==null)return!0;if(a(_)&&(n(_)||typeof _=="string"||typeof _.splice=="function"||s(_)||i(_)||r(_)))return!_.length;var m=t(_);if(m==l||m==u)return!_.size;if(o(_))return!e(_).length;for(var h in _)if(d.call(_,h))return!1;return!0}return Tl=f,Tl}var kI=vI();const gl=xe(kI);var Il,Yf;function PI(){if(Yf)return Il;Yf=1;function e(t,r,n,a){for(var s=t.length,o=n+(a?1:-1);a?o--:++o<s;)if(r(t[o],o,t))return o;return-1}return Il=e,Il}var El,Kf;function CI(){if(Kf)return El;Kf=1;function e(t){return t!==t}return El=e,El}var wl,Xf;function NI(){if(Xf)return wl;Xf=1;function e(t,r,n){for(var a=n-1,s=t.length;++a<s;)if(t[a]===r)return a;return-1}return wl=e,wl}var Sl,Zf;function DI(){if(Zf)return Sl;Zf=1;var e=PI(),t=CI(),r=NI();function n(a,s,o){return s===s?r(a,s,o):e(a,t,o)}return Sl=n,Sl}var Al,Qf;function MI(){if(Qf)return Al;Qf=1;var e=DI();function t(r,n){var a=r==null?0:r.length;return!!a&&e(r,n,0)>-1}return Al=t,Al}var Ll,Jf;function FI(){if(Jf)return Ll;Jf=1;function e(t,r,n){for(var a=-1,s=t==null?0:t.length;++a<s;)if(n(r,t[a]))return!0;return!1}return Ll=e,Ll}var Ol,em;function qI(){if(em)return Ol;em=1;function e(){}return Ol=e,Ol}var Rl,tm;function UI(){if(tm)return Rl;tm=1;var e=r_(),t=qI(),r=cc(),n=1/0,a=e&&1/r(new e([,-0]))[1]==n?function(s){return new e(s)}:t;return Rl=a,Rl}var vl,rm;function $I(){if(rm)return vl;rm=1;var e=Hh(),t=MI(),r=FI(),n=jh(),a=UI(),s=cc(),o=200;function i(l,u,p){var d=-1,f=t,_=l.length,m=!0,h=[],b=h;if(p)m=!1,f=r;else if(_>=o){var T=u?null:a(l);if(T)return s(T);m=!1,f=n,b=new e}else b=u?[]:h;e:for(;++d<_;){var y=l[d],A=u?u(y):y;if(y=p||y!==0?y:0,m&&A===A){for(var S=b.length;S--;)if(b[S]===A)continue e;u&&b.push(A),h.push(y)}else f(b,A,p)||(b!==h&&b.push(A),h.push(y))}return h}return vl=i,vl}var kl,nm;function VI(){if(nm)return kl;nm=1;var e=$I();function t(r){return r&&r.length?e(r):[]}return kl=t,kl}var BI=VI();const xI=xe(BI),zc=e=>{const{nozzles:t,pipetteSpec:r,primaryNozzle:n}=e,a=r.channels;if(t==null)return a;switch(t){case c.ROW:return 12;case c.COLUMN:return 8;case c.SINGLE:return 1;case c.ALL:return a;case c.PARTIAL_COLUMN:return c.PARTIAL_NOZZLE_MAP[n];default:return a}};function HI(e,t,r){const{pipetteId:n,volume:a}=e,{robotState:s,warnings:o}=r,i="labwareId"in e?e.labwareId:s.pipettes[n].entityId??"",l="wellName"in e?e.wellName:s.pipettes[n].wellName??"",{liquidState:u}=s,p=s.pipettes[n].nozzles,d=r.robotState.pipettes[n].primaryNozzle,f=t.pipetteEntities[n].spec,_=t.labwareEntities[i].def,m=_.metadata.displayCategory==="reservoir",h=zc({pipetteSpec:f,nozzles:p,primaryNozzle:d}),{allWellsShared:b,wellsForTips:T}=Pc(h,_,l);if(console.assert(xI(T).length===b?1:T.length,`expected all wells to be shared, or no wells to be shared. Got: ${JSON.stringify(T)}`),h>1&&b){const A=T[0],S=u.labware[i][A],g=a*h>fr(S);gl(S)?o.push(hl()):g&&o.push(ml());const I=g?fr(S)/h:a,L=Qt(I,S).dest;dn(h).forEach(w=>{const E=u.pipettes[n],v=w.toString(),k=E[v],$=g?mr(k,{...L,[Ge]:{volume:a-I}}):mr(k,L);E[v]=$}),u.labware[i][A]=Qt(a*h,u.labware[i][A]).source;return}if(h===96&&m){T.forEach(A=>{const S=u.labware[i][A],g=a*8>fr(S);gl(S)?o.push(hl()):g&&o.push(ml());const I=g?fr(S)/8:a,L=Qt(I,S).dest;dn(h).forEach(w=>{const E=u.pipettes[n],v=w.toString(),k=E[v],$=g?mr(k,{...L,[Ge]:{volume:a-I}}):mr(k,L);E[v]=$}),u.labware[i][A]=Qt(I*8,u.labware[i][A]).source});return}dn(h).forEach(A=>{const S=A.toString(),g=u.pipettes[n],I=g[S],L=u.labware[i][T[A]],w=Qt(a,L).dest;gl(L)?o.push(hl()):a>fr(L)&&o.push(ml()),g[S]=mr(I,w)});const y=u.labware[i];T.forEach(A=>{y[A]=Qt(a,y[A]).source}),"labwareId"in e&&(s.pipettes[n]={...s.pipettes[n],entityId:e.labwareId,wellName:l})}function Rs(e){const{robotStateAndWarnings:t,invariantContext:r,entityId:n,pipetteId:a,prevLiquidState:s,useFullVolume:o,volume:i,wellName:l}=e,u=r.pipetteEntities[a].spec,p=t.robotState.pipettes[a].nozzles,d=t.robotState.pipettes[a].primaryNozzle,f=zc({pipetteSpec:u,nozzles:p,primaryNozzle:d}),_=l??null,m=r.labwareEntities[n]!=null?r.labwareEntities[n].def:null;console.assert(!(o&&typeof i=="number"),"dispenseUpdateLiquidState takes either `volume` or `useFullVolume`, but got both"),console.assert(typeof i=="number"||o,"in dispenseUpdateLiquidState, either volume or useFullVolume are required");const{wellsForTips:h,allWellsShared:b}=m!=null&&l!=null?Pc(f,m,l):{wellsForTips:null,allWellsShared:!0},T=s.labware[n]!=null?s.labware[n]:null;let y=null;s.trashBins[n]!=null?y=s.trashBins[n]:s.wasteChute[n]!=null&&(y=s.wasteChute[n]);const A=Jt(s.pipettes[a],L=>{const{...w}=L;if(o){const E=fr(w);return E>0?Qt(E,w):{source:{},dest:{}}}return Qt(i||0,w)});let S=null;if(_!=null&&T!=null)S={[_]:lt(A,(L,w)=>mr(L,w.dest),T[_])};else if(y!=null){const L=Object.values(s.pipettes[a]).reduce((w,E)=>w+(E[0]?.volume??0),0);y[0]={volume:L}}S==null&&y==null&&console.assert(!1,`expected to merge liquid to a single well with sourceId ${n}`);const g=_!=null&&T!=null&&h!=null?h.reduce((L,w,E)=>({...L,[w]:mr(A[`${E}`].dest,T[w]||{})}),{}):{},I=b?S:g;s.pipettes[a]=Jt(A,"source"),s.trashBins[n]!=null&&y!=null?Object.assign(s.trashBins[n],y):s.wasteChute[n]!=null&&y!=null?Object.assign(s.wasteChute[n],y):s.labware[n]!=null&&I!=null&&(s.labware[n]=Object.assign(T??{},I))}function zI(e,t,r){const{pipetteId:n,labwareId:a,wellName:s}=e,{robotState:o}=r;Rs({pipetteId:n,entityId:a,useFullVolume:!0,wellName:s,prevLiquidState:o.liquidState,invariantContext:t,robotStateAndWarnings:r})}function jI(e,t,r){const{pipetteId:n,configurationParams:a}=e,{robotState:s}=r;s.pipettes[n].nozzles=a.style,s.pipettes[n].primaryNozzle=a.primaryNozzle}function GI(e,t,r){const{pipetteId:n,volume:a}=e,{robotState:s}=r,o="labwareId"in e?e.labwareId:s.pipettes[n].entityId??"",i="wellName"in e?e.wellName:s.pipettes[n].wellName??"",l=s.liquidState.pipettes[n],p=Object.values(l)[0]?.[Ge]?.volume??0,d=r.robotState.pipettes[n].primaryNozzle;if(Rs({invariantContext:t,entityId:o,pipetteId:n,prevLiquidState:s.liquidState,useFullVolume:!1,volume:a,wellName:i,robotStateAndWarnings:r}),p>0){const f=r.robotState.pipettes[n].nozzles,_=t.pipetteEntities[n].spec,m=zc({pipetteSpec:_,nozzles:f,primaryNozzle:d});Object.keys(l).slice(0,m).forEach(b=>{const T=l[b]??{};l[b]={...T,[Ge]:{volume:0}}})}"labwareId"in e&&(s.pipettes[n]={...s.pipettes[n],entityId:e.labwareId})}function WI(e,t,r){const{pipetteId:n,wellName:a,labwareId:s}=e,{robotState:o}=r;o.tipState.pipettes[n].hasTip=!1,o.tipState.pipettes[n].tiprackURI=null,o.pipettes[n].tiprackId=void 0;const i=o.tipState,l=t.pipetteEntities[n].spec,u=o.pipettes[n].nozzles,p=Jc(u,l),d=(_,m)=>_.find(h=>h.includes(m)),f=t.labwareEntities[s]?.def;f==null||!c.getIsTiprack(f)?console.warn(`forDropTip expected ${s} to have definition and to be a tiprack`):(p===c.SINGLE?i.tipracks[s][a]=Xt:p===c.COLUMN?(d(f.ordering,a)??[]).forEach(m=>i.tipracks[s][m]=Xt):p===c.ALL?l.channels===96?f.ordering.reduce((m,h)=>m.concat(h),[]).forEach(function(m){i.tipracks[s][m]=Xt}):(d(f.ordering,a)??[]).forEach(m=>i.tipracks[s][m]=Xt):l.channels===1?i.tipracks[s][a]=Xt:l.channels===96?f.ordering.reduce((m,h)=>m.concat(h),[]).forEach(function(m){i.tipracks[s][m]=Xt}):(d(f.ordering,a)??[]).forEach(m=>i.tipracks[s][m]=Xt),o.pipettes[n].entityId=s,o.pipettes[n].wellName=a)}function YI(e,t,r){const{labwareId:n,liquidId:a,volumeByWell:s}=e;Object.entries(s).forEach(([o,i])=>{r.robotState.liquidState.labware[n][o][a]={volume:i}})}var Pl,am;function KI(){if(am)return Pl;am=1;function e(t,r){for(var n=-1,a=t==null?0:t.length;++n<a&&r(t[n],n,t)!==!1;);return t}return Pl=e,Pl}var Cl,sm;function jc(){if(sm)return Cl;sm=1;var e=Tc(),t=cs(),r=Object.prototype,n=r.hasOwnProperty;function a(s,o,i){var l=s[o];(!(n.call(s,o)&&t(l,i))||i===void 0&&!(o in s))&&e(s,o,i)}return Cl=a,Cl}var Nl,om;function Da(){if(om)return Nl;om=1;var e=jc(),t=Tc();function r(n,a,s,o){var i=!s;s||(s={});for(var l=-1,u=a.length;++l<u;){var p=a[l],d=o?o(s[p],n[p],p,s,n):void 0;d===void 0&&(d=n[p]),i?t(s,p,d):e(s,p,d)}return s}return Nl=r,Nl}var Dl,im;function XI(){if(im)return Dl;im=1;var e=Da(),t=La();function r(n,a){return n&&e(a,t(a),n)}return Dl=r,Dl}var Ml,lm;function ZI(){if(lm)return Ml;lm=1;function e(t){var r=[];if(t!=null)for(var n in Object(t))r.push(n);return r}return Ml=e,Ml}var Fl,um;function QI(){if(um)return Fl;um=1;var e=tr(),t=ys(),r=ZI(),n=Object.prototype,a=n.hasOwnProperty;function s(o){if(!e(o))return r(o);var i=t(o),l=[];for(var u in o)u=="constructor"&&(i||!a.call(o,u))||l.push(u);return l}return Fl=s,Fl}var ql,cm;function Gc(){if(cm)return ql;cm=1;var e=Qh(),t=QI(),r=Hr();function n(a){return r(a)?e(a,!0):t(a)}return ql=n,ql}var Ul,pm;function JI(){if(pm)return Ul;pm=1;var e=Da(),t=Gc();function r(n,a){return n&&e(a,t(a),n)}return Ul=r,Ul}var ia={exports:{}};ia.exports;var dm;function eE(){return dm||(dm=1,(function(e,t){var r=xt(),n=t&&!t.nodeType&&t,a=n&&!0&&e&&!e.nodeType&&e,s=a&&a.exports===n,o=s?r.Buffer:void 0,i=o?o.allocUnsafe:void 0;function l(u,p){if(p)return u.slice();var d=u.length,f=i?i(d):new u.constructor(d);return u.copy(f),f}e.exports=l})(ia,ia.exports)),ia.exports}var $l,fm;function tE(){if(fm)return $l;fm=1;function e(t,r){var n=-1,a=t.length;for(r||(r=Array(a));++n<a;)r[n]=t[n];return r}return $l=e,$l}var Vl,mm;function rE(){if(mm)return Vl;mm=1;var e=Da(),t=pc();function r(n,a){return e(n,t(n),a)}return Vl=r,Vl}var Bl,hm;function Wc(){if(hm)return Bl;hm=1;var e=Jh(),t=e(Object.getPrototypeOf,Object);return Bl=t,Bl}var xl,_m;function X_(){if(_m)return xl;_m=1;var e=oc(),t=Wc(),r=pc(),n=Xh(),a=Object.getOwnPropertySymbols,s=a?function(o){for(var i=[];o;)e(i,r(o)),o=t(o);return i}:n;return xl=s,xl}var Hl,ym;function nE(){if(ym)return Hl;ym=1;var e=Da(),t=X_();function r(n,a){return e(n,t(n),a)}return Hl=r,Hl}var zl,bm;function Yc(){if(bm)return zl;bm=1;var e=Yh(),t=X_(),r=Gc();function n(a){return e(a,r,t)}return zl=n,zl}var jl,Tm;function aE(){if(Tm)return jl;Tm=1;var e=Object.prototype,t=e.hasOwnProperty;function r(n){var a=n.length,s=new n.constructor(a);return a&&typeof n[0]=="string"&&t.call(n,"index")&&(s.index=n.index,s.input=n.input),s}return jl=r,jl}var Gl,gm;function Kc(){if(gm)return Gl;gm=1;var e=Wh();function t(r){var n=new r.constructor(r.byteLength);return new e(n).set(new e(r)),n}return Gl=t,Gl}var Wl,Im;function sE(){if(Im)return Wl;Im=1;var e=Kc();function t(r,n){var a=n?e(r.buffer):r.buffer;return new r.constructor(a,r.byteOffset,r.byteLength)}return Wl=t,Wl}var Yl,Em;function oE(){if(Em)return Yl;Em=1;var e=/\w*$/;function t(r){var n=new r.constructor(r.source,e.exec(r));return n.lastIndex=r.lastIndex,n}return Yl=t,Yl}var Kl,wm;function iE(){if(wm)return Kl;wm=1;var e=wn(),t=e?e.prototype:void 0,r=t?t.valueOf:void 0;function n(a){return r?Object(r.call(a)):{}}return Kl=n,Kl}var Xl,Sm;function lE(){if(Sm)return Xl;Sm=1;var e=Kc();function t(r,n){var a=n?e(r.buffer):r.buffer;return new r.constructor(a,r.byteOffset,r.length)}return Xl=t,Xl}var Zl,Am;function uE(){if(Am)return Zl;Am=1;var e=Kc(),t=sE(),r=oE(),n=iE(),a=lE(),s="[object Boolean]",o="[object Date]",i="[object Map]",l="[object Number]",u="[object RegExp]",p="[object Set]",d="[object String]",f="[object Symbol]",_="[object ArrayBuffer]",m="[object DataView]",h="[object Float32Array]",b="[object Float64Array]",T="[object Int8Array]",y="[object Int16Array]",A="[object Int32Array]",S="[object Uint8Array]",g="[object Uint8ClampedArray]",I="[object Uint16Array]",L="[object Uint32Array]";function w(E,v,k){var $=E.constructor;switch(v){case _:return e(E);case s:case o:return new $(+E);case m:return t(E,k);case h:case b:case T:case y:case A:case S:case g:case I:case L:return a(E,k);case i:return new $;case l:case d:return new $(E);case u:return r(E);case p:return new $;case f:return n(E)}}return Zl=w,Zl}var Ql,Lm;function cE(){if(Lm)return Ql;Lm=1;var e=tr(),t=Object.create,r=(function(){function n(){}return function(a){if(!e(a))return{};if(t)return t(a);n.prototype=a;var s=new n;return n.prototype=void 0,s}})();return Ql=r,Ql}var Jl,Om;function pE(){if(Om)return Jl;Om=1;var e=cE(),t=Wc(),r=ys();function n(a){return typeof a.constructor=="function"&&!r(a)?e(t(a)):{}}return Jl=n,Jl}var eu,Rm;function dE(){if(Rm)return eu;Rm=1;var e=Oa(),t=er(),r="[object Map]";function n(a){return t(a)&&e(a)==r}return eu=n,eu}var tu,vm;function fE(){if(vm)return tu;vm=1;var e=dE(),t=fc(),r=mc(),n=r&&r.isMap,a=n?t(n):e;return tu=a,tu}var ru,km;function mE(){if(km)return ru;km=1;var e=Oa(),t=er(),r="[object Set]";function n(a){return t(a)&&e(a)==r}return ru=n,ru}var nu,Pm;function hE(){if(Pm)return nu;Pm=1;var e=mE(),t=fc(),r=mc(),n=r&&r.isSet,a=n?t(n):e;return nu=a,nu}var au,Cm;function Z_(){if(Cm)return au;Cm=1;var e=uc(),t=KI(),r=jc(),n=XI(),a=JI(),s=eE(),o=tE(),i=rE(),l=nE(),u=t_(),p=Yc(),d=Oa(),f=aE(),_=uE(),m=pE(),h=Ze(),b=hs(),T=fE(),y=tr(),A=hE(),S=La(),g=Gc(),I=1,L=2,w=4,E="[object Arguments]",v="[object Array]",k="[object Boolean]",$="[object Date]",q="[object Error]",ee="[object Function]",pe="[object GeneratorFunction]",_e="[object Map]",le="[object Number]",Te="[object Object]",ke="[object RegExp]",He="[object Set]",$e="[object String]",te="[object Symbol]",Ee="[object WeakMap]",ze="[object ArrayBuffer]",Pe="[object DataView]",ge="[object Float32Array]",X="[object Float64Array]",W="[object Int8Array]",C="[object Int16Array]",P="[object Int32Array]",V="[object Uint8Array]",M="[object Uint8ClampedArray]",ae="[object Uint16Array]",U="[object Uint32Array]",H={};H[E]=H[v]=H[ze]=H[Pe]=H[k]=H[$]=H[ge]=H[X]=H[W]=H[C]=H[P]=H[_e]=H[le]=H[Te]=H[ke]=H[He]=H[$e]=H[te]=H[V]=H[M]=H[ae]=H[U]=!0,H[q]=H[ee]=H[Ee]=!1;function z(F,x,ye,Ve,Qe,Be){var ce,Je=x&I,mt=x&L,Rt=x&w;if(ye&&(ce=Qe?ye(F,Ve,Qe,Be):ye(F)),ce!==void 0)return ce;if(!y(F))return F;var ht=h(F);if(ht){if(ce=f(F),!Je)return o(F,ce)}else{var Oe=d(F),et=Oe==ee||Oe==pe;if(b(F))return s(F,Je);if(Oe==Te||Oe==E||et&&!Qe){if(ce=mt||et?{}:m(F),!Je)return mt?l(F,a(ce,F)):i(F,n(ce,F))}else{if(!H[Oe])return Qe?F:{};ce=_(F,Oe,Je)}}Be||(Be=new e);var Re=Be.get(F);if(Re)return Re;Be.set(F,ce),A(F)?F.forEach(function(ue){ce.add(z(ue,x,ye,ue,F,Be))}):T(F)&&F.forEach(function(ue,re){ce.set(re,z(ue,x,ye,re,F,Be))});var ve=Rt?mt?p:u:mt?g:S,Ce=ht?void 0:ve(F);return t(Ce||F,function(ue,re){Ce&&(re=ue,ue=F[re]),r(ce,re,z(ue,x,ye,re,F,Be))}),ce}return au=z,au}var su,Nm;function Q_(){if(Nm)return su;Nm=1;function e(t,r,n){var a=-1,s=t.length;r<0&&(r=-r>s?0:s+r),n=n>s?s:n,n<0&&(n+=s),s=r>n?0:n-r>>>0,r>>>=0;for(var o=Array(s);++a<s;)o[a]=t[a+r];return o}return su=e,su}var ou,Dm;function _E(){if(Dm)return ou;Dm=1;var e=bs(),t=Q_();function r(n,a){return a.length<2?n:e(n,t(a,0,-1))}return ou=r,ou}var iu,Mm;function yE(){if(Mm)return iu;Mm=1;var e=An(),t=B_(),r=_E(),n=Ln(),a=Object.prototype,s=a.hasOwnProperty;function o(i,l){l=e(l,i);var u=-1,p=l.length;if(!p)return!0;for(;++u<p;){var d=n(l[u]);if(d==="__proto__"&&!s.call(i,"__proto__")||(d==="constructor"||d==="prototype")&&u<p-1)return!1}var f=r(i,l);return f==null||delete f[n(t(l))]}return iu=o,iu}var lu,Fm;function bE(){if(Fm)return lu;Fm=1;var e=Sn(),t=Wc(),r=er(),n="[object Object]",a=Function.prototype,s=Object.prototype,o=a.toString,i=s.hasOwnProperty,l=o.call(Object);function u(p){if(!r(p)||e(p)!=n)return!1;var d=t(p);if(d===null)return!0;var f=i.call(d,"constructor")&&d.constructor;return typeof f=="function"&&f instanceof f&&o.call(f)==l}return lu=u,lu}var uu,qm;function TE(){if(qm)return uu;qm=1;var e=bE();function t(r){return e(r)?void 0:r}return uu=t,uu}var cu,Um;function gE(){if(Um)return cu;Um=1;var e=Vh();function t(r){var n=r==null?0:r.length;return n?e(r,1):[]}return cu=t,cu}var pu,$m;function IE(){if($m)return pu;$m=1;function e(t,r,n){switch(n.length){case 0:return t.call(r);case 1:return t.call(r,n[0]);case 2:return t.call(r,n[0],n[1]);case 3:return t.call(r,n[0],n[1],n[2])}return t.apply(r,n)}return pu=e,pu}var du,Vm;function J_(){if(Vm)return du;Vm=1;var e=IE(),t=Math.max;function r(n,a,s){return a=t(a===void 0?n.length-1:a,0),function(){for(var o=arguments,i=-1,l=t(o.length-a,0),u=Array(l);++i<l;)u[i]=o[a+i];i=-1;for(var p=Array(a+1);++i<a;)p[i]=o[i];return p[a]=s(u),e(n,this,p)}}return du=r,du}var fu,Bm;function EE(){if(Bm)return fu;Bm=1;function e(t){return function(){return t}}return fu=e,fu}var mu,xm;function wE(){if(xm)return mu;xm=1;var e=EE(),t=i_(),r=Ia(),n=t?function(a,s){return t(a,"toString",{configurable:!0,enumerable:!1,value:e(s),writable:!0})}:r;return mu=n,mu}var hu,Hm;function SE(){if(Hm)return hu;Hm=1;var e=800,t=16,r=Date.now;function n(a){var s=0,o=0;return function(){var i=r(),l=t-(i-o);if(o=i,l>0){if(++s>=e)return arguments[0]}else s=0;return a.apply(void 0,arguments)}}return hu=n,hu}var _u,zm;function ey(){if(zm)return _u;zm=1;var e=wE(),t=SE(),r=t(e);return _u=r,_u}var yu,jm;function AE(){if(jm)return yu;jm=1;var e=gE(),t=J_(),r=ey();function n(a){return r(t(a,void 0,e),a+"")}return yu=n,yu}var bu,Gm;function LE(){if(Gm)return bu;Gm=1;var e=Aa(),t=Z_(),r=yE(),n=An(),a=Da(),s=TE(),o=AE(),i=Yc(),l=1,u=2,p=4,d=o(function(f,_){var m={};if(f==null)return m;var h=!1;_=e(_,function(T){return T=n(T,f),h||(h=T.length>1),T}),a(f,i(f),m),h&&(m=t(m,l|u|p,s));for(var b=_.length;b--;)r(m,_[b]);return m});return bu=d,bu}var OE=LE();const RE=xe(OE),Ku="TOUCHED_PIPETTABLE_LABWARE";var Tu,Wm;function vE(){if(Wm)return Tu;Wm=1;var e=_c();function t(r,n){return e(r,n)}return Tu=t,Tu}var kE=vE();const PE=xe(kE),vs=e=>{const{node:t,stack:r=[],robotState:n,memo:a=new Map}=e;let s=r;if(!(typeof t=="object"&&"labwareId"in t))return s=[...r,t],a.set(t,s),{stack:s,memo:a};const{labwareId:o}=t,i=n.labware[o];if(i!=null&&i.stackedOnNode!=null){const{stack:l,memo:u}=vs({node:i.stackedOnNode,stack:[...r,t],robotState:n,memo:a});ty(a,u),s=l,a.set(t,s)}return{stack:s,memo:a}},CE=e=>{const{node:t,robotState:r,deckDef:n,deckConfiguration:a}=e,{stack:s}=vs({node:t,robotState:r}),{cutoutFixtures:o}=n,i=s.find(l=>typeof l=="object"&&"addressableAreaName"in l);if(i!=null&&typeof i=="object"&&"addressableAreaName"in i){const{addressableAreaName:l}=i;for(const{id:u,providesAddressableAreas:p}of o){const[d]=Object.entries(p).find(([f,_])=>_.includes(l))??[];if(d!=null){const f=a.find(({cutoutId:T})=>T===d),{cutoutFixtureId:_,cutoutId:m}=f,h=_===u&&m===d,b=Object.entries(r.modules).find(([T,{slot:y}])=>c.FLEX_CUTOUT_BY_SLOT_ID[y]===m);if(h&&b!=null)return b[0]}}}return null},ty=(e,t)=>{t.forEach((r,n)=>{e.set(n,r)})},NE=(e,t)=>e.some(r=>PE(r,t)),ry=e=>{const{labwareId:t,robotState:r}=e,n=new Map,a={labwareId:t};let s=[];for(const[o,{stackedOnNode:i}]of Object.entries(r.labware)){const l={labwareId:o};if(i==null)continue;let u;const p=n.get(l);if(p!=null)u=p;else{const{stack:d,memo:f}=vs({node:l,robotState:r,memo:n});if(ty(n,f),!NE(d,a))continue;n.set(l,d),u=d}u.length>s.length&&(s=u)}return s},ny=e=>{const t=[],r=new Set;for(const n of Object.keys(e.labware)){if(r.has(n))continue;const a=ry({labwareId:n,robotState:e});a.forEach(s=>{typeof s=="object"&&"labwareId"in s&&r.add(s.labwareId)}),t.push(a)}return t},Xc=e=>{const{moduleId:t,robotState:r,moduleEntities:n,deckDef:a}=e,s=r.modules[t],o=n[t];if(s==null||o==null)return null;const{slot:i}=s,{model:l}=o,u=c.getAddressableAreaNamesFromLoadedModule(l,i,a);return u.length===0?null:u[0]},DE=e=>{const{location:t,robotState:r,moduleEntities:n,deckDef:a}=e;if(t==="offDeck"||t==="systemLocation"||t==="wasteChuteLocation")return null;if("slotName"in t)return t.slotName;if("addressableAreaName"in t)return t.addressableAreaName;if("moduleId"in t){const{moduleId:s}=t;return Xc({moduleId:s,robotState:r,moduleEntities:n,deckDef:a})}return null},ay=e=>{const{deckConfiguration:t,deckDefinition:r}=e;return t.reduce((n,{cutoutFixtureId:a,cutoutId:s})=>((r.cutoutFixtures.find(({id:i})=>a===i)?.providesAddressableAreas[s]??[]).forEach(i=>{n.add(i)}),n),new Set)},ME=e=>{const{robotState:t,deckConfiguration:r,deckDefinition:n,moduleEntities:a}=e,s=ay({deckConfiguration:r,deckDefinition:n}),o=new Set(s),i=ny(t);for(const l of i){const u=Vc(l);if(typeof u=="object"&&"addressableAreaName"in u){const{addressableAreaName:p}=u;o.delete(p)}if(typeof u=="object"&&"slotName"in u){const{slotName:p}=u;o.delete(p)}if(typeof u=="object"&&"moduleId"in u){const{moduleId:p}=u,d=Xc({moduleId:p,robotState:t,moduleEntities:a,deckDef:n});d!=null&&o.delete(d)}}return o},FE=e=>{const t=e.toLowerCase();return t.includes("chute")||t.includes("waste")||t.startsWith("gripper")||t==="96channelwastechute"},sy=e=>{const{stack:t,subjectLabwareId:r,moduleEntities:n,labwareEntityIds:a,modules:s}=e;if(t.length===0||t[0]!==r||t.length<2)return;const o=t[1];if(o===je){const u=t[2];return u==null?void 0:{kind:"inStackerHopper",moduleId:u}}if(n[o]!=null)return{moduleId:o};if(a.has(o))return{labwareId:o};if(o==="offDeck")return"offDeck";if(o==="systemLocation")return"systemLocation";if(o==="wasteChuteLocation")return"wasteChuteLocation";if(FE(o))return{addressableAreaName:o};const i=U_(o,s,n)??o;if(Object.entries(s).some(([u,p])=>n[u]?.type===c.FLEX_STACKER_MODULE_TYPE&&p.slot===i)){const u=Ss(i);if(u!=null)return{addressableAreaName:u}}return{slotName:o}},qE=e=>typeof e=="object"&&e!==null&&"kind"in e&&e.kind==="inStackerHopper",UE=e=>typeof e!="object"||e===null?!1:!qE(e),$E=(e,t)=>{const{id:r,def:n}=e,{id:a,def:s}=t,o=n.dimensions.xDimension,i=n.dimensions.yDimension,l=s.dimensions.xDimension,u=s.dimensions.yDimension;return o>l&&i>u?{containerLabwareId:r,containedLabwareId:a}:l>o&&u>i?{containerLabwareId:a,containedLabwareId:r}:null},Zc=(e,t)=>{const r=new Map;for(const a of Object.keys(e)){const s=e[a].stackedOnNode;if(s==null||!UE(s))continue;const o=JSON.stringify(s),i=r.get(o)??[];i.push(a),r.set(o,i)}const n={};for(const a of r.values()){if(a.length!==2)continue;const[s,o]=a,i=t[s],l=t[o];if(i==null||l==null)continue;const u=$E(i,l);if(u==null)continue;const{containerLabwareId:p,containedLabwareId:d}=u;n[p]=d}return Object.keys(n).length===0?e:Jt(e,(a,s)=>n[s]!=null?{...a,contains:n[s]}:a)},VE=(e,t,r)=>{const n=Object.keys(e.labware),a=new Set(n);let s=Jt(e.labware,(o,i)=>{const l=o.stackedOnNode??sy({stack:o.stack,subjectLabwareId:i,moduleEntities:t,labwareEntityIds:a,modules:e.modules});return l!=null?{...o,stackedOnNode:l}:{...o}});return s=Zc(s,r),{...e,labware:s}};function BE(e,t,r){const{labwareId:n,newLocation:a}=e,{robotState:s}=r,{labwareEntities:o}=t,{modules:i,labware:l}=s;if(l[n]==null)return;const u=G(l[n].stack),p=Mc(l,u,n),d=p.indexOf(n),f=p.slice(0,d+1),_=c.getIsLid(o[n].def);let m=!1;const h=Object.entries(i).find(([w,{slot:E}])=>{const{type:v}=t.moduleEntities[w]??{};return v===c.FLEX_STACKER_MODULE_TYPE&&E===u})??null,b=h!=null&&h[1].moduleState.type===c.FLEX_STACKER_MODULE_TYPE?Zt.map(w=>h[1].moduleState.labwareOnShuttle?.[w]).filter(w=>w!=null):[],T=b.includes(n)?b.slice(0,b.indexOf(n)+1):[];if(h!=null&&h[1].moduleState.type===c.FLEX_STACKER_MODULE_TYPE){const w=h[1].moduleState,E=Zt.findIndex(v=>w.labwareOnShuttle?.[v]===n);if(E!==-1&&w.labwareOnShuttle!=null)for(const v of Zt.slice(E,Zt.length))if(v==="primaryLabwareId"){w.labwareOnShuttle=null;break}else w.labwareOnShuttle[v]=null}const y=Object.entries(i).find(([w,{slot:E}])=>{const{type:v}=t.moduleEntities[w]??{};return v===c.FLEX_STACKER_MODULE_TYPE&&typeof a=="object"&&("moduleId"in a&&a.moduleId===w||"slotName"in a&&E===a.slotName)})??null,[A,S]=y??[];if(A!=null&&S!=null){const w=T.length>0?T:fn(l,u),E=w.indexOf(n),v=S.moduleState;if(E!==-1){const k=w.slice(0,E+1).toReversed();if(v.labwareOnShuttle==null&&(v.labwareOnShuttle={primaryLabwareId:"",adapterLabwareId:null,lidLabwareId:null}),k.length===3)for(let $=0;$<Zt.length;$++){const q=Zt[$];v.labwareOnShuttle[q]=k[$]}else if(k.length===2){const $=k.some(q=>t.labwareEntities[q].def.allowedRoles?.some(ee=>ee==="lid"))?["primaryLabwareId","lidLabwareId"]:["adapterLabwareId","primaryLabwareId"];for(let q=0;q<$.length;q++){const ee=$[q];v.labwareOnShuttle[ee]=k[q]}}else k.length===1&&(v.labwareOnShuttle.primaryLabwareId=k[0])}}const g=[];if(c.locationIsOffDeck(a))g.push(a);else if("moduleId"in a)if(i[a.moduleId].moduleState.type===c.FLEX_STACKER_MODULE_TYPE)g.push(i[a.moduleId].slot);else if(t.moduleEntities[a.moduleId]?.type===c.VACUUM_MODULE_TYPE){const w=i[a.moduleId].slot,E=fn(l,w);E.length>0?g.push(...E):g.push(a.moduleId,w)}else g.push(a.moduleId,i[a.moduleId].slot);else if("slotName"in a){const{slotName:w}=a;w in l?(m=c.getIsPipettableLabware(o[w].def),g.push(...l[w].stack)):g.push(w)}else if("labwareId"in a){const w=a.labwareId;m=c.getIsPipettableLabware(o[w].def);const E=l[w].stack;g.push(...E)}else if("addressableAreaName"in a)if(ua(a.addressableAreaName)){const w=Object.entries(i).find(([E])=>t.moduleEntities[E]?.type===c.VACUUM_MODULE_TYPE)?.[0];g.push(ac),w!=null&&g.push(w),g.push(a.addressableAreaName)}else g.push(a.addressableAreaName);f.forEach((w,E)=>{if(l[w]!=null){const v=f.slice(E+1);s.labware[w]={...s.labware[w],stack:[w,...v,...g],..._&&m?{sterility:Ku}:{}}}});const I=typeof a=="object"&&"labwareId"in a&&c.getIsPipettableLabware(o[a.labwareId].def);let L=a;if(typeof a=="object"&&a!==null&&"moduleId"in a&&i[a.moduleId].moduleState.type===c.FLEX_STACKER_MODULE_TYPE){const w=Ss(i[a.moduleId].slot);w!=null&&(L={addressableAreaName:w})}else if(typeof a=="object"&&a!==null&&"moduleId"in a&&t.moduleEntities[a.moduleId]?.type===c.VACUUM_MODULE_TYPE){const w=i[a.moduleId].slot,E=fn(l,w),v=E.length>0?E[0]:null;v!=null&&v in o&&(L={labwareId:v})}s.labware[n].stackedOnNode=L,I&&(s.labware[n].sterility=Ku),s.labware=Zc(Jt(s.labware,w=>RE(w,"contains")),o)}function xE(e,t,r){const{pipetteId:n,addressableAreaName:a}=e,{wasteChuteEntities:s,trashBinEntities:o}=t,i=c.WASTE_CHUTE_ADDRESSABLE_AREAS.includes(a),l=Object.values(o).find(d=>d.location===R_(a))?.id,u=i?Object.values(s)[0].id:l,{robotState:p}=r;p.pipettes[n]={...p.pipettes[n],entityId:u}}function HE(e,t,r){const{pipetteId:n,labwareId:a,wellName:s}=e,{robotState:o}=r;o.pipettes[n]={...o.pipettes[n],entityId:a,wellName:s}}function zE(e,t,r){const{pipetteId:n,labwareId:a,wellName:s}=e,o=t.pipetteEntities[n].spec,i=t.labwareEntities[a].def;if(!c.getIsTiprack(i))throw new Error(`forPickUpTip expected ${a} to be a tiprack`);const l=r.robotState.tipState,u=r.robotState.pipettes[n].nozzles,p=r.robotState.pipettes[n].primaryNozzle,d=Jc(u,o),f=(h,b)=>h.find(T=>T.includes(b)),_=(h,b)=>{const T=h.findIndex(A=>A.includes(b));if(T===-1)return null;const y=h[T].indexOf(b);return h.map(A=>A[y])},m=(h,b)=>{const T=c.PARTIAL_NOZZLE_MAP[p],y=h.findIndex(L=>L.includes(b)),A=h[y].indexOf(b),S=h[y];if(S.length-A<T){const L=S.length-T;return S.slice(L,S.length)}const I=A+T;return S.slice(A,Math.min(I,S.length))};if(l.pipettes[n].hasTip=!0,l.pipettes[n].tiprackURI=a,d===c.SINGLE)l.tipracks[a][s]=ie;else if(d===c.PARTIAL_COLUMN&&p){const h=m(i.ordering,s);h==null?console.error(`Invalid primary well for tip pick up for partial config: ${s}`):h.forEach(function(b){l.tipracks[a][b]=ie})}else if(d===c.COLUMN){const h=f(i.ordering,s);h==null&&console.error(`Invalid primary well for tip pickup: ${s}`),h?.forEach(function(b){l.tipracks[a][b]=ie})}else if(d===c.ROW){const h=_(i.ordering,s);h==null&&console.error("Invalid primary well for tip pickup: "+s),h?.forEach(function(b){l.tipracks[a][b]=ie})}else if(d===c.ALL)if(o.channels===96)i.ordering.reduce((b,T)=>b.concat(T),[]).forEach(function(b){l.tipracks[a][b]=ie});else{const h=f(i.ordering,s);h==null&&console.error(`Invalid primary well for tip pickup: ${s}`),h?.forEach(function(b){l.tipracks[a][b]=ie})}else if(o.channels===1)l.tipracks[a][s]=ie;else if(o.channels===96)i.ordering.reduce((b,T)=>b.concat(T),[]).forEach(function(b){l.tipracks[a][b]=ie});else{const h=f(i.ordering,s);h==null&&console.error(`Invalid primary well for tip pickup: ${s}`),h?.forEach(function(b){l.tipracks[a][b]=ie})}r.robotState.pipettes[n].tiprackId=a,r.robotState.pipettes[n].tipWell=s}const jE={clean:wa,empty:ie,used:Xt};function GE(e,t,r){const{labwareId:n,wellNames:a,tipWellState:s="clean"}=e,o=jE[s],i=r.robotState.tipState.tipracks[n];i!=null&&a.forEach(l=>{i[l]=o})}const Gr=(e,t)=>{const r=Ot(e,t);return r.type===c.THERMOCYCLER_MODULE_TYPE?r:(console.error(`Thermocycler state updater expected ${t} moduleState to be thermocycler, but it was ${r.type}`),{})},WE=(e,t,r)=>{const{moduleId:n,celsius:a}=e,{robotState:s}=r,o=Gr(s,n);o.currentBlockActivity={type:"blockTargetTemp",blockTargetTemp:a}},YE=(e,t,r)=>{const{moduleId:n,celsius:a}=e,{robotState:s}=r,o=Gr(s,n);o.lidTargetTemp=a},KE=(e,t,r)=>{},XE=(e,t,r)=>{},ZE=(e,t,r)=>{},QE=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=Gr(a,n);s.currentBlockActivity={type:"blockDeactivated"}},JE=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=Gr(a,n);s.lidTargetTemp=null},ew=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=Gr(a,n);s.lidOpen=!1},tw=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=Gr(a,n);s.lidOpen=!0},rw=(e,t,r)=>{const{profile:n,...a}=e;oy({profileElements:n,...a},t,r)},oy=(e,t,r)=>{const n=NaN+D();iy({...e,taskId:n},t,r),ly(n,r,c.THERMOCYCLER_MODULE_TYPE)},iy=(e,t,r)=>{const{moduleId:n,taskId:a,profileElements:s}=e,{robotState:o}=r,i=Gr(o,n);i.currentBlockActivity={type:"profile",profileElements:s,taskId:a??null},i.numProfilesStarted++},nw=e=>{if(e.currentBlockActivity.type==="profile"){const t=aw(e.currentBlockActivity.profileElements);return e.currentBlockActivity=t!=null?{type:"blockTargetTemp",blockTargetTemp:t}:{type:"blockDeactivated"},!0}else return!1};function aw(e){const t=Vc(rp(e));return t!=null?t.celsius:null}const sw=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=st(a,n);s!=null&&(s.ventStatus=sc)},ow=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=st(a,n);s!=null&&(s.ventStatus=Sa)},iw=(e,t,r)=>{const{moduleId:n,gaugePressure:a,duration:s,ventAfter:o=!0,taskId:i}=e,{robotState:l}=r,u=st(l,n);u!=null&&(s==null||i==null?u.currentPumpActivity={type:"indefiniteHold",mode:Vu,targetPressure:a}:(u.currentPumpActivity={type:"timedHold",mode:Vu,targetPressure:a,durationSeconds:s,taskId:i,ventAfter:o},u.numPumpActivitiesStarted++),u.ventStatus=Sa)},lw=(e,t,r)=>{const{moduleId:n,percentPower:a,duration:s,ventAfter:o=!0,taskId:i}=e,{robotState:l}=r,u=st(l,n);u!=null&&(s==null||i==null?u.currentPumpActivity={type:"indefiniteHold",mode:$u,targetPower:a}:(u.currentPumpActivity={type:"timedHold",mode:$u,targetPower:a,durationSeconds:s,taskId:i,ventAfter:o},u.numPumpActivitiesStarted++),u.ventStatus=Sa)},uw=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=st(a,n);s!=null&&(s.currentPumpActivity={type:"pumpDeactivated"})},cw=(e,t,r)=>{const{moduleId:n,profile:a,taskId:s,ventAfter:o=!0}=e,{robotState:i}=r,l=st(i,n);l==null||s==null||(l.currentPumpActivity={type:"profile",profileElements:a,taskId:s,ventAfter:o},l.numPumpActivitiesStarted++)},pw=e=>{if(e.currentPumpActivity.type==="timedHold"||e.currentPumpActivity.type==="profile"){const t=e.currentPumpActivity.ventAfter;return e.currentPumpActivity={type:"pumpDeactivated"},e.ventStatus=t?sc:Sa,!0}return!1};function dw(e,t,r){for(const n of e.task_ids)ly(n,r)||r.warnings.push(Bg())}const ly=(e,t,r)=>{const{robotState:n}=t,a=Object.values(n.modules).find(s=>{if(r&&s.moduleState.type!==r)return!1;const o=s.moduleState.type==="thermocyclerModuleType"&&s.moduleState.currentBlockActivity.type==="profile"&&s.moduleState.currentBlockActivity.taskId===e,i=s.moduleState.type==="vacuumModuleType"&&(s.moduleState.currentPumpActivity.type==="timedHold"||s.moduleState.currentPumpActivity.type==="profile")&&s.moduleState.currentPumpActivity.taskId===e;return o||i});return a==null?!1:a.moduleState.type==="thermocyclerModuleType"?nw(a.moduleState):a.moduleState.type==="vacuumModuleType"?pw(a.moduleState):(console.log(`unexpected module type with task: ${a.moduleState.type}`),!1)},Pn=(e,t)=>{const r=Ot(e,t);return r.type===c.HEATERSHAKER_MODULE_TYPE?r:(console.error(`Heater-Shaker state updater expected ${t} moduleState to be heaterShaker, but it was ${r.type}`),{})},fw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a,celsius:s}=e,o=Pn(n,a);o.targetTemp=s},mw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Pn(n,a);s.targetTemp=null},hw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a,rpm:s}=e,o=Pn(n,a);o.targetSpeed=s},_w=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Pn(n,a);s.targetSpeed=null},yw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Pn(n,a);s.latchOpen=!0},bw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Pn(n,a);s.latchOpen=!1},Tw=(e,t,r)=>{const{pipetteId:n}=e,{robotState:a}=r,s=a.pipettes[n].entityId??"";Rs({invariantContext:t,pipetteId:n,prevLiquidState:a.liquidState,useFullVolume:!0,robotStateAndWarnings:r,entityId:s})},gw=(e,t,r)=>{const{pipetteId:n}=e,{robotState:a}=r,s=a.pipettes[n].entityId??"";a.tipState.pipettes[n]={hasTip:!1,tiprackURI:null},Rs({invariantContext:t,prevLiquidState:a.liquidState,pipetteId:n,useFullVolume:!0,robotStateAndWarnings:r,entityId:s}),a.pipettes[n].tiprackId=void 0};function uy(e,t){e.type===c.MAGNETIC_MODULE_TYPE&&(e.engaged=t)}function Iw(e,t,r){const{moduleId:n}=e,{robotState:a}=r,s=Ot(a,n);uy(s,!0)}function Ew(e,t,r){const{moduleId:n}=e,{robotState:a}=r,s=Ot(a,n);uy(s,!1)}const gu=(e,t)=>{if(t==null)return console.error("expected to find defURI but could not in getLabwareByDefURI"),null;const r=e.findIndex(a=>a.labwareDefURI===t);if(r===-1)return null;const[n]=e.splice(r,1);return n.id},cy=(e,t,r,n)=>{const a=e.labwareInHopper??[];t.forEach(s=>{const{primaryLabwareId:o,adapterLabwareId:i,lidLabwareId:l}=s;r.labware[o]={stack:[o,...l!=null?[l]:[],...n]},i!=null&&(r.labware[i]={stack:[i,o,...l!=null?[l]:[],...n]}),l!=null&&(r.labware[l]={stack:[l,...n]}),a.push({primaryLabwareId:o,adapterLabwareId:i??null,lidLabwareId:l??null})}),e.labwareInHopper=a},py=(e,t,r,n,a,s,o,i)=>{const u=Object.entries(e.labware).filter(([d,f])=>f[s]===t[s]).map(([d])=>d).map(d=>r[d]),p=[];for(let d=0;d<n;d++){const f=gu(u,t.storedLabwareDetails?.primaryLabwareURI),_=o!=null?gu(u,t.storedLabwareDetails?.adapterLabwareURI):null,m=i!=null?gu(u,t.storedLabwareDetails?.lidLabwareURI):null;f!=null&&(e.labware[f]={stack:[f,...m!=null?[m]:[],...a]},_!=null&&(e.labware[_]={stack:[_,f,...m!=null?[m]:[],...a]}),m!=null&&(e.labware[m]={stack:[m,...a]}),p.push({primaryLabwareId:f,adapterLabwareId:_,lidLabwareId:m})),t.labwareInHopper=p}},ww=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Object.entries(n.labware).filter(([,i])=>i.stack.includes(je)&&i.stack.includes(a)),o=ft(n,a);o!=null&&o.labwareInHopper!=null&&(e.count!=null?o.labwareInHopper=o.labwareInHopper.slice(0,e.count):o.labwareInHopper=[]),s.forEach(([i])=>{n.labware[i]={...n.labware[i],stack:[i,c.SYSTEM_LOCATION]}})},Sw=(e,t,r)=>{const{robotState:n}=r,{labwareEntities:a}=t,{moduleId:s,labware:o}=e,i=n.modules[s].slot,l=ft(n,s);if(l==null||l.storedLabwareDetails==null)return;const{primaryLabwareURI:u,adapterLabwareURI:p,lidLabwareURI:d}=l.storedLabwareDetails,f=[];for(const b of o){const T=a[b].labwareDefURI;if(T===u)f.push({primaryLabwareId:b,adapterLabwareId:null,lidLabwareId:null});else if(T===p){const y=f[f.length-1];y&&(y.adapterLabwareId=b)}else if(T===d){const y=f[f.length-1];y&&(y.lidLabwareId=b)}}const _=[je,s,i];for(const b of f){const T=[b.adapterLabwareId,b.primaryLabwareId,b.lidLabwareId,..._].filter(A=>A!=null);n.labware[b.primaryLabwareId]={...n.labware[b.primaryLabwareId],stack:T.slice(T.indexOf(b.primaryLabwareId))},b.adapterLabwareId!=null&&(n.labware[b.adapterLabwareId]={...n.labware[b.adapterLabwareId],stack:T.slice(T.indexOf(b.adapterLabwareId))}),b.lidLabwareId!=null&&(n.labware[b.lidLabwareId]={...n.labware[b.lidLabwareId],stack:T.slice(T.indexOf(b.lidLabwareId))});let y=null;for(const A of T)a[A]!=null&&(y==null?n.labware[A].stackedOnNode={kind:"inStackerHopper",moduleId:s}:n.labware[A].stackedOnNode={labwareId:y},y=A)}const m=l.labwareInHopper??[],h=f.map(({primaryLabwareId:b,adapterLabwareId:T,lidLabwareId:y})=>({primaryLabwareId:b,adapterLabwareId:T,lidLabwareId:y}));l.labwareInHopper=[...m,...h]},Aw=(e,t,r)=>{const{robotState:n}=r,{labwareEntities:a}=t,{moduleId:s,primaryLabware:o,initialCount:i,adapterLabware:l,lidLabware:u,initialStoredLabware:p}=e,d=n.modules[s].slot,f=ft(n,s),_=[je,s,d];f!=null&&(f.storedLabwareDetails={primaryLabwareURI:`${o.namespace}/${o.loadName}/${o.version}`,adapterLabwareURI:l!=null?`${l.namespace}/${l.loadName}/${l.version}`:null,lidLabwareURI:u!=null?`${u.namespace}/${u.loadName}/${u.version}`:null},i!=null?py(n,f,a,i,_,"setStoredLabwareCount",l?.loadName,u?.loadName):p!=null&&cy(f,p,n,_),f.setStoredLabwareCount=(f?.setStoredLabwareCount??0)+1)},Lw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a,labware:s}=e,{labwareEntities:o}=t,i=n.modules[a].slot,l=ft(n,a);if(l==null)return;const u=s.map(g=>g.split(":")[1]),p=new Set(u),d=Array.from(p),f=d.find(g=>Object.values(o).find(I=>I.labwareDefURI===g&&!I.def.allowedRoles?.includes("lid")&&!I.def.allowedRoles?.includes("adapter"))),_=d.find(g=>Object.values(o).find(I=>I.labwareDefURI===g&&I.def.allowedRoles?.includes("adapter"))),m=d.find(g=>Object.values(o).find(I=>I.labwareDefURI===g&&I.def.allowedRoles?.includes("lid")));if(f==null)throw new Error(`expected to find primaryLabwareURI for storedLabwareDetails but could not with labware ${s}`);l.storedLabwareDetails={primaryLabwareURI:f,adapterLabwareURI:_??null,lidLabwareURI:m??null};const h=[];for(const g of s){const I=o[g].labwareDefURI;if(I===f)h.push({primary:g,adapter:null,lid:null});else if(I===_){const L=h[h.length-1];L&&(L.adapter=g)}else if(I===m){const L=h[h.length-1];L&&(L.lid=g)}}const b=[je,a,i];for(const g of h){const I=[g.adapter,g.primary,g.lid,...b].filter(L=>L!=null);n.labware[g.primary]={...n.labware[g.primary],stack:I.slice(I.indexOf(g.primary))},g.adapter!=null&&(n.labware[g.adapter]={...n.labware[g.adapter],stack:I.slice(I.indexOf(g.adapter))}),g.lid!=null&&(n.labware[g.lid]={...n.labware[g.lid],stack:I.slice(I.indexOf(g.lid))})}const T=l.labwareInHopper??[],y=h.map(g=>({primaryLabwareId:g.primary,adapterLabwareId:g.adapter,lidLabwareId:g.lid})),A=new Map(T.map(g=>[g.primaryLabwareId,g])),S=[];for(const g of y)S.push(g),A.delete(g.primaryLabwareId);for(const g of T)A.has(g.primaryLabwareId)&&S.push(g);l.labwareInHopper=S},Ow=(e,t,r)=>{const{robotState:n}=r,{moduleId:a,count:s,labwareToStore:o}=e,{labwareEntities:i}=t,l=n.modules[a].slot,u=ft(n,a),p=[je,a,l];if(u!=null){const d=u.storedLabwareDetails?.adapterLabwareURI,f=u.storedLabwareDetails?.lidLabwareURI;s!=null?py(n,u,i,s,p,"fillCount",d,f):o!=null&&cy(u,o,n,p),u.fillCount=(u?.fillCount??0)+1}},Rw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=ft(n,a),o=n.modules[a].slot;if(s!=null){const{labwareInHopper:i,labwareOnShuttle:l}=s;if(i!=null&&i.length>0&&l==null){const u=i[0];s.labwareOnShuttle=u,i.shift();const p=[o];let d=null;for(const f of Zt){const _=u[f];if(_!=null){if(p.unshift(_),n.labware[_].stack=[...p],d==null){const m=Ss(o);m!=null?n.labware[_].stackedOnNode={addressableAreaName:m}:console.warn(`Could not find an addressable area for retrieved labware in stacker module ${a} at slot ${o}`)}else n.labware[_].stackedOnNode={labwareId:d};d=_}}}}},vw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=ft(n,a),o=n.modules[a].slot;if(s!=null){const{labwareOnShuttle:i}=s;if(i!=null){s.labwareInHopper=[i,...s.labwareInHopper??[]],s.labwareOnShuttle=null;let l=null;for(const u of Zt){const p=i[u];p!=null&&(n.labware[p].stack=[p,je,a,o],l==null?(n.labware[p].stackedOnNode={kind:"inStackerHopper",moduleId:a},l=p):n.labware[p].stackedOnNode={labwareId:l})}s.storedLabwareDetails==null&&(s.storedLabwareDetails={primaryLabwareURI:t.labwareEntities[i.primaryLabwareId].labwareDefURI,adapterLabwareURI:i.adapterLabwareId!=null?t.labwareEntities[i.adapterLabwareId].labwareDefURI:null,lidLabwareURI:i.lidLabwareId!=null?t.labwareEntities[i.lidLabwareId].labwareDefURI:null})}}};function dy(e,t,r){e.type===c.TEMPERATURE_MODULE_TYPE&&(e.targetTemperature=t,e.status=r)}function kw(e,t,r){const{robotState:n}=r,{moduleId:a,celsius:s}=e,o=Ot(n,a);dy(o,s,rc)}function Pw(e,t,r){const{robotState:n}=r,{moduleId:a,celsius:s}=e,o=Ot(n,a);o.type===c.TEMPERATURE_MODULE_TYPE&&s===o.targetTemperature&&(o.status=tc)}function Cw(e,t,r){const{robotState:n}=r,{moduleId:a}=e,s=Ot(n,a);dy(s,null,Ea)}function fy(e,t,r){if(!e)throw new Error("undefined command passed to getNextRobotStateAndWarning");switch(e.commandType){case"aspirateWhileTracking":case"aspirate":case"aspirateInPlace":if(e.meta?.isAirGap===!0)break;HI(e.params,t,r);break;case"airGapInPlace":RI(e.params,t,r);break;case"dispenseWhileTracking":case"dispense":case"dispenseInPlace":if(e.meta?.isAirGap===!0)break;GI(e.params,t,r);break;case"blowout":zI(e.params,t,r);break;case"dropTip":WI(e.params,t,r);break;case"pickUpTip":zE(e.params,t,r);break;case"setTipState":GE(e.params,t,r);break;case"magneticModule/engage":Iw(e.params,t,r);break;case"magneticModule/disengage":Ew(e.params,t,r);break;case"moveLabware":BE(e.params,t,r);break;case"waitForTasks":dw(e.params,t,r);break;case"flexStacker/setStoredLabware":Aw(e.params,t,r);break;case"flexStacker/setStoredLabwareItems":Lw(e.params,t,r);break;case"flexStacker/prepareShuttle":case"flexStacker/closeLatch":case"flexStacker/openLatch":break;case"flexStacker/empty":ww(e.params,t,r);break;case"flexStacker/fill":Ow(e.params,t,r);break;case"flexStacker/fillItems":Sw(e.params,t,r);break;case"flexStacker/retrieve":Rw(e.params,t,r);break;case"flexStacker/store":vw(e.params,t,r);break;case"touchTip":case"configureForVolume":case"loadPipette":case"loadLabware":case"loadModule":case"home":case"moveRelative":case"moveToSlot":case"moveToCoordinates":case"savePosition":case"waitForResume":case"waitForDuration":case"pause":case"delay":case"custom":case"comment":case"captureImage":case"prepareToAspirate":case"liquidProbe":case"loadLiquidClass":case"loadLidStack":case"loadLid":case"getTipPresence":case"identifyModule":case"getNextTip":case"retractAxis":case"sealPipetteToTip":case"tryLiquidProbe":case"unsealPipetteFromTip":case"verifyTipPresence":case"pressureDispense":case"createTimer":break;case"moveToAddressableArea":case"moveToAddressableAreaForDropTip":xE(e.params,t,r);break;case"moveToWell":HE(e.params,t,r);break;case"loadLiquid":YI(e.params,t,r);break;case"dropTipInPlace":gw(e.params,t,r);break;case"blowOutInPlace":Tw(e.params,t,r);break;case"configureNozzleLayout":jI(e.params,t,r);break;case"temperatureModule/setTargetTemperature":kw(e.params,t,r);break;case"temperatureModule/deactivate":Cw(e.params,t,r);break;case"temperatureModule/waitForTemperature":Pw(e.params,t,r);break;case"thermocycler/setTargetBlockTemperature":WE(e.params,t,r);break;case"thermocycler/setTargetLidTemperature":YE(e.params,t,r);break;case"thermocycler/waitForBlockTemperature":KE(e.params);break;case"thermocycler/waitForLidTemperature":XE(e.params);break;case"thermocycler/deactivateBlock":QE(e.params,t,r);break;case"thermocycler/deactivateLid":JE(e.params,t,r);break;case"thermocycler/closeLid":ew(e.params,t,r);break;case"thermocycler/openLid":tw(e.params,t,r);break;case"thermocycler/runProfile":rw(e.params,t,r);break;case"thermocycler/runExtendedProfile":oy(e.params,t,r);break;case"thermocycler/startRunExtendedProfile":iy(e.params,t,r);break;case"thermocycler/awaitProfileComplete":ZE(e.params);break;case"heaterShaker/deactivateHeater":mw(e.params,t,r);break;case"heaterShaker/setTargetTemperature":fw(e.params,t,r);break;case"heaterShaker/setAndWaitForShakeSpeed":hw(e.params,t,r);break;case"heaterShaker/deactivateShaker":_w(e.params,t,r);break;case"heaterShaker/openLabwareLatch":yw(e.params,t,r);break;case"heaterShaker/closeLabwareLatch":bw(e.params,t,r);break;case"heaterShaker/waitForTemperature":break;case"absorbanceReader/openLid":AI(e.params,t,r);break;case"absorbanceReader/closeLid":LI(e.params,t,r);break;case"absorbanceReader/initialize":OI(e.params,t,r);break;case"absorbanceReader/read":break;case"vacuumModule/startSetVacuumPressure":iw(e.params,t,r);break;case"vacuumModule/startSetVacuumPower":lw(e.params,t,r);break;case"vacuumModule/openVent":sw(e.params,t,r);break;case"vacuumModule/closeVent":ow(e.params,t,r);break;case"vacuumModule/stopVacuum":uw(e.params,t,r);break;case"vacuumModule/startRunProfile":cw(e.params,t,r);break;default:console.error(`unknown command: ${e.commandType} passed to getNextRobotStateAndWarning`)}}function my(e,t,r){return Y_({warnings:[],robotState:r},a=>{fy(e,t,a)})}function Qc(e,t,r){const n=K_(e);return Y_({warnings:[],robotState:r},s=>{n.forEach(o=>{fy(o,t,s)})})}const Nw=(e,t,r)=>{const n=e.reduce((a,s,o)=>{const i=a.timeline.length===0?r:Vc(a.timeline).robotState;if(a.errors!=null)return a;const l=s(t,i);if("errors"in l)return{timeline:a.timeline,errors:l.errors};const p=K_(l.commands).reduce((f,_)=>my(_,t,f.robotState),{robotState:i,warnings:[]}),d={commands:l.commands,robotState:p.robotState,warnings:l.warnings,stepInfo:{stepNumber:l.stepNumber,name:l.name,description:l.description},python:l.python};return{timeline:[...a.timeline,d],errors:null}},{timeline:[],errors:null});return{timeline:n.timeline,errors:n.errors}},Cn=(e,t)=>{const r=t[e]?.stack;return r!=null?G(r):""},Nn=e=>{if(e.type===c.VACUUM_MODULE_TYPE){const t=e;return t.currentPumpActivity.type==="timedHold"||t.currentPumpActivity.type==="profile"}if(e.type===c.THERMOCYCLER_MODULE_TYPE){const t=e;return t.currentBlockActivity.type==="profile"||t.currentBlockActivity.type==="blockTargetTemp"}return!1},Dn=e=>{const{pipette:t,labware:r,invariantContext:n,prevRobotState:a}=e;if(n.config.OT_PD_DISABLE_MODULE_RESTRICTIONS)return!1;const s=t?n.pipetteEntities[t]:null,o=r?G(a.labware[r]?.stack):null;if(!t||!r||!s||!o)return!1;const i=Object.keys(n.moduleEntities).some(l=>{const u=n.moduleEntities[l].model;if(Lh.includes(u)){const p=a.modules[l]?.slot;return p==="1"&&o==="4"||p==="3"&&o==="6"}else return!1});return c.GEN_ONE_MULTI_PIPETTES.includes(s.name)&&i},ne=(e,t,r)=>{const n=e.reduce((a,s)=>{if(a.errors.length>0)return a;const o=s(t,a.robotState);if("errors"in o)return{robotState:a.robotState,commands:a.commands,errors:o.errors,warnings:a.warnings};const i=[...a.commands,...o.commands],l=[...a.python?[a.python]:[],...o.python?[o.python]:[]].join(`
55
- `),u=Qc(o.commands,t,a.robotState);return{...a,robotState:u.robotState,commands:i,warnings:[...a.warnings||[],...o.warnings||[],...u.warnings],...l&&{python:l}}},{robotState:r,commands:[],errors:[],warnings:[]});return n.errors.length>0?{errors:n.errors}:{commands:n.commands,warnings:n.warnings,...n.python&&{python:n.python}}},Ma=(e,t,r)=>{const n=Pa(e,t[r]?.stack),a=n&&e[n].moduleState;return!!(a&&a.type===c.THERMOCYCLER_MODULE_TYPE&&a.lidOpen!==!0)},Dw=e=>e.commandCreatorFnName!=="delay"&&e.commandCreatorFnName!=="engageMagnet"&&e.commandCreatorFnName!=="disengageMagnet"&&e.commandCreatorFnName!=="setTemperature"&&e.commandCreatorFnName!=="deactivateTemperature"&&"pipette"in e?e.pipette:null,Mw=e=>e.commandCreatorFnName==="delay"||e.commandCreatorFnName==="engageMagnet"||e.commandCreatorFnName==="disengageMagnet"||e.commandCreatorFnName==="setTemperature"||e.commandCreatorFnName==="deactivateTemperature",Fw=new Date("2025-03-19T00:00:00Z"),qw=2,Uw=22;function $w(e,t,r){const{labware:n,modules:a,pipettes:s,commands:o,liquids:i}=e,l=t.protocolType==="python"?t.apiVersion:null,u=l!=null&&l[0]>=qw&&l[1]>=Uw,p=t.protocolType==="json"&&r>=Fw,d=c.getLabwareDefinitionsByURIForProtocol(o),f=i.reduce((y,A)=>{const{id:S,description:g,displayName:I,displayColor:L}=A;return{...y,[S]:{description:g,displayName:I??"Unknown Liquid",pythonName:"n/a",displayColor:L??"#B7B8B9",liquidGroupId:S}}},{}),_=a.reduce((y,A)=>{const{id:S,model:g}=A;return{...y,[S]:{id:S,type:c.getModuleType(g),model:g,pythonName:"n/a"}}},{}),m=n.reduce((y,A)=>{const{id:S,definitionUri:g}=A,I=d[g];return I==null||I.schemaVersion===3?y:{...y,[S]:{id:S,labwareDefURI:g,def:I,pythonName:"n/a"}}},{}),h=o.reduce((y,A)=>{if(A.commandType==="loadLidStack"&&A.result!=null){const{stackLabwareId:S,lidStackDefinition:g}=A.result;if(S!=null&&g!=null&&y[S]==null&&g.schemaVersion!==3)return{...y,[S]:{id:S,labwareDefURI:c.getLabwareDefURI(g),def:g,pythonName:"n/a"}}}return y},m),b=s.reduce((y,A)=>{const{id:S,pipetteName:g}=A,I=c.getPipetteSpecsV2(g),w=o.filter(k=>k.commandType==="pickUpTip"&&k.params.pipetteId===S).map(k=>h[k.params.labwareId]),E=Array.from(new Set(w.map(k=>k.labwareDefURI))),v=Array.from(new Set(w.map(k=>k.def)));return I==null||(y[S]={name:g,id:S,tiprackLabwareDef:v,tiprackDefURI:E,spec:I,pythonName:"n/a"}),y},{}),T=o.reduce((y,A)=>{if(A.commandType==="loadLidStack"&&A.result!=null){const{params:S}=A,g=xu(S);return{...y,stagingAreaEntities:{...y.stagingAreaEntities,...g}}}else if((A.commandType==="loadLabware"||A.commandType==="loadLid")&&A.result!=null){const{params:S}=A,g=xu(S);return{...y,stagingAreaEntities:{...y.stagingAreaEntities,...g}}}else if(A.commandType==="moveToAddressableArea"||A.commandType==="moveToAddressableAreaForDropTip"){const S=A.params.addressableAreaName,g=`${D()}:${S}`;let I=Fh;S==="fixedTrash"?I="cutout12":S.includes("WasteChute")?I="cutoutD3":S.includes("movableTrash")&&(I=`cutout${S.split("movableTrash")[1]}`);let L=y.trashBinEntities;Object.values(y.trashBinEntities).some(E=>E.location===I)||(S.includes("movableTrash")?L={...y.trashBinEntities,[g]:{pythonName:"trash_bin_1",id:g,location:I}}:S==="fixedTrash"&&(L={...y.trashBinEntities,[g]:{pythonName:"trash_bin_1",id:g,location:I}}));let w=y.wasteChuteEntities;return S.includes("WasteChute")&&(w={[g]:{pythonName:"waste_chute",id:g,location:I}}),{...y,trashBinEntities:L,wasteChuteEntities:w}}return y},{wasteChuteEntities:{},trashBinEntities:{},stagingAreaEntities:{},gripperEntities:{},config:{OT_PD_DISABLE_MODULE_RESTRICTIONS:!0}});return{labwareEntities:h,pipetteEntities:b,moduleEntities:_,liquidEntities:u||p?f:{},...T}}const Vw={A3:"A4",B3:"B4",C3:"C4",D3:"D4"};function Bw(e,t){const r=e.reduce((o,i)=>i.commandType==="loadPipette"&&i.result!=null?{...o,[i.result.pipetteId]:{mount:i.params.mount}}:o,{}),n=e.reduce((o,i)=>{if(i.commandType==="loadModule"&&i.result!=null){const l=c.getModuleDef(i.params.model).moduleType;return{...o,[i.result.moduleId]:{slot:l===c.FLEX_STACKER_MODULE_TYPE?Vw[i.params.location.slotName]:i.params.location.slotName,moduleState:Mh[l]}}}return o},{}),a=e.reduce((o,i)=>{if(i.commandType==="loadLidStack"&&i.result!=null){const{result:l}=i,u=l.locationSequences,p=l.labwareIds,d=l.stackLabwareId,f=l.stackLocationSequence,_=m=>{if(c.locationIsOffDeck(m))return[m];if("slotName"in m)return[m.slotName];if("moduleId"in m){const h=n[m.moduleId]?.slot??"offDeck";return[m.moduleId,h]}else if("addressableAreaName"in m)return[m.addressableAreaName];return["offDeck"]};if(u!=null){const m=u.reduce((T,y)=>{const A=y.find(S=>S.kind==="onLabware");return A!=null&&(T[A.labwareId]=y),T},{}),h=p.reduce((T,y,A)=>{const S=m[y]??u[A];if(S!=null){const g=Bu(S);T[y]={stack:g[0]===y?g:[y,...g]}}else{const g=i.params.location;c.locationIsOffDeck(g)?T[y]={stack:[y,g]}:"slotName"in g?T[y]={stack:[y,g.slotName]}:T[y]={stack:[y,"offDeck"]}}return T},{}),b=d!=null&&f!=null?[d,...Bu(f)]:null;return{...o,...h,...d!=null&&b!=null?{[d]:{stack:b}}:{}}}else{const m=i.params.location,h=p.reduce((T,y)=>{if(c.locationIsOffDeck(m))T[y]={stack:[y,m]};else if("slotName"in m)T[y]={stack:[y,m.slotName]};else if("moduleId"in m){const A=m.moduleId;T[y]={stack:[y,A,n[A].slot]}}else T[y]={stack:[y,"offDeck"]};return T},{}),b=d!=null?[d,..._(m)]:null;return{...o,...h,...d!=null&&b!=null?{[d]:{stack:b}}:{}}}}else if((i.commandType==="loadLabware"||i.commandType==="loadLid")&&i.result!=null){const l=[i.result.labwareId];if(c.locationIsOffDeck(i.params.location))l.push(i.params.location);else if("slotName"in i.params.location)l.push(i.params.location.slotName);else if("moduleId"in i.params.location){const u=i.params.location.moduleId;if(n[u]==null)return console.warn(`Module ${u} not found when processing loadLabware/loadLid command. `),o;l.push(i.params.location.moduleId,n[i.params.location.moduleId].slot)}else if("labwareId"in i.params.location){const u=i.params.location.labwareId;o[u]==null&&(console.warn(`Parent labware ${u} not found when processing loadLabware/loadLid command. `),o[u]={stack:[u,"offDeck"]});const p=o[u].stack;l.push(u,...p)}else l.push(i.params.location.addressableAreaName);return{...o,[i.result.labwareId]:{stack:l}}}else{if(i.commandType==="flexStacker/setStoredLabware")return Km(i).forEach(u=>{Ym(o,u,"setStoredLabwareCount")}),o;if(i.commandType==="flexStacker/fill")return Km(i).forEach(u=>{Ym(o,u,"fillCount")}),o}return o},{}),s=Cc({invariantContext:t,labwareLocations:a,moduleLocations:n,pipetteLocations:r});return{frame:{...Qc(e,t,s),command:e[e.length-1]},invariantContext:t}}const Ym=(e,t,r)=>{const n=e[t]??{stack:[t,"offDeck"]};e[t]={...n,[r]:(n[r]??0)+1}},Km=e=>e.result?.storedLabware?.flatMap(r=>[r.primaryLabwareId,r.adapterLabwareId,r.lidLabwareId].filter(n=>n!=null))??[],Jc=(e,t)=>e??(t.channels===1?c.SINGLE:t.channels===96?c.ALL:c.COLUMN);var Iu,Xm;function xw(){if(Xm)return Iu;Xm=1;var e=bc();function t(r,n){var a;return e(r,function(s,o,i){return a=n(s,o,i),!a}),!!a}return Iu=t,Iu}var Eu,Zm;function Hw(){if(Zm)return Eu;Zm=1;var e=zh(),t=On(),r=xw(),n=Ze(),a=gc();function s(o,i,l){var u=n(o)?e:r;return l&&a(o,i,l)&&(i=void 0),u(o,t(i,3))}return Eu=s,Eu}var zw=Hw();const Fa=xe(zw),Mn=(e,t)=>Fa(e,r=>r.moduleState.type===c.HEATERSHAKER_MODULE_TYPE&&r.moduleState.latchOpen!==!1&&c.getAreSlotsHorizontallyAdjacent(r.slot,t)),Fn=(e,t,r)=>r.channels!==1&&Fa(e,n=>n.moduleState.type===c.HEATERSHAKER_MODULE_TYPE&&c.getAreSlotsHorizontallyAdjacent(n.slot,t)),qa=(e,t,r,n)=>r.channels!==1&&!n.def.parameters.isTiprack&&Fa(e,a=>a.moduleState.type===c.HEATERSHAKER_MODULE_TYPE&&c.getAreSlotsVerticallyAdjacent(a.slot,t)),hy=(e,t,r)=>Fa(e,(a,s)=>c.getAreSlotsHorizontallyAdjacent(r,G(a.stack))&&c.getIsLabwareAboveHeight(t[s].def,c.MAX_LABWARE_HEIGHT_EAST_WEST_HEATER_SHAKER_MM)),Ua=(e,t,r)=>{const n=Pa(e,t[r]?.stack),a=n!=null?e[n].moduleState:null;return!!(a&&a.type===c.HEATERSHAKER_MODULE_TYPE&&a.latchOpen!==!1)},qn=(e,t,r)=>Fa(e,n=>n.moduleState.type===c.HEATERSHAKER_MODULE_TYPE&&n.moduleState.targetSpeed!=null&&n.moduleState.targetSpeed>0&&(r===c.OT2_ROBOT_TYPE?c.getAreSlotsAdjacent(n.slot,t):c.getAreFlexSlotsAdjacent(n.slot,t))),$a=(e,t,r)=>{const n=Pa(e,t[r]?.stack),a=n!=null?e[n].moduleState:null;return!!(a&&a.type===c.HEATERSHAKER_MODULE_TYPE&&a.targetSpeed!==null)},ks=e=>{const{args:t,pipetteName:r,tiprackUri:n,liquidClassValuesForTip:a}=e;let s=null;"mixBeforeAspirate"in t?s=t.mixBeforeAspirate:"mixFirstAspirate"in t&&(s=t.mixFirstAspirate);const o=jw(t),i={dispense_position:{offset:{x:t.dispenseXOffset,y:t.dispenseYOffset,z:t.dispenseZOffset},position_reference:t.dispensePositionReference},flow_rate_by_volume:[[0,t.dispenseFlowRateUlSec??0]],delay:{enabled:!!t.dispenseDelay?.seconds,...t.dispenseDelay?.seconds?{duration:t.dispenseDelay?.seconds}:{}},submerge:{delay:{enabled:!!t.dispenseSubmergeDelay?.seconds,...t.dispenseSubmergeDelay?.seconds?{duration:t.dispenseSubmergeDelay?.seconds}:{}},speed:t.dispenseSubmergeSpeed??void 0,start_position:{offset:{x:t.dispenseSubmergeXOffset,y:t.dispenseSubmergeYOffset,z:t.dispenseSubmergeZOffset},position_reference:t.dispenseSubmergePositionReference}},retract:{air_gap_by_volume:[[0,t.dispenseAirGapVolume??0]],delay:{enabled:!!t.dispenseRetractDelay?.seconds,...t.dispenseRetractDelay?.seconds?{duration:t.dispenseRetractDelay?.seconds}:{}},end_position:{offset:{x:t.dispenseRetractXOffset,y:t.dispenseRetractYOffset,z:t.dispenseRetractZOffset},position_reference:t.dispenseRetractPositionReference},speed:t.dispenseRetractSpeed??void 0,touch_tip:{enabled:t.touchTipAfterDispense,z_offset:t.touchTipAfterDispense?t.touchTipAfterDispenseOffsetMmFromTop:void 0,mm_from_edge:t.touchTipAfterDispense&&t.touchTipAfterDispenseMmFromEdge!=null?t.touchTipAfterDispenseMmFromEdge:void 0,speed:t.touchTipAfterDispense?t.touchTipAfterDispenseSpeed:void 0},blowout:{enabled:t.blowoutLocation!=null,location:_y(t.blowoutLocation),flow_rate:t.blowoutLocation!=null?t.blowoutFlowRateUlSec:void 0,...o!=null?{blowout_position:o}:{}}}},l={[r]:{[n]:{aspirate:{aspirate_position:{offset:{x:t.aspirateXOffset,y:t.aspirateYOffset,z:t.aspirateZOffset},position_reference:t.aspiratePositionReference},flow_rate_by_volume:[[0,t.aspirateFlowRateUlSec]],pre_wet:t.preWetTip,correction_by_volume:a?.aspirate.correctionByVolume??[[0,0]],delay:{enabled:!!t.aspirateDelay?.seconds,...t.aspirateDelay?.seconds?{duration:t.aspirateDelay?.seconds}:{}},mix:{enabled:!!s?.volume,...s?.times?{repetitions:s.times}:{},...s?.volume?{volume:s.volume}:{}},submerge:{delay:{enabled:!!t.aspirateSubmergeDelay?.seconds,...t.aspirateSubmergeDelay?.seconds?{duration:t.aspirateSubmergeDelay?.seconds}:{}},speed:t.aspirateSubmergeSpeed??void 0,start_position:{offset:{x:t.aspirateSubmergeXOffset,y:t.aspirateSubmergeYOffset,z:t.aspirateSubmergeZOffset},position_reference:t.aspirateSubmergePositionReference}},retract:{air_gap_by_volume:[[0,t.aspirateAirGapVolume??0]],delay:{enabled:!!t.aspirateRetractDelay?.seconds,...t.aspirateRetractDelay?.seconds?{duration:t.aspirateRetractDelay?.seconds}:{}},end_position:{offset:{x:t.aspirateRetractXOffset,y:t.aspirateRetractYOffset,z:t.aspirateRetractZOffset},position_reference:t.aspirateRetractPositionReference},speed:t.aspirateRetractSpeed??void 0,touch_tip:{enabled:t.touchTipAfterAspirate,z_offset:t.touchTipAfterAspirate?t.touchTipAfterAspirateOffsetMmFromTop:void 0,mm_from_edge:t.touchTipAfterAspirate&&t.touchTipAfterAspirateMmFromEdge!=null?t.touchTipAfterAspirateMmFromEdge:void 0,speed:t.touchTipAfterAspirate?t.touchTipAfterAspirateSpeed:void 0}}},dispense:{...i,correction_by_volume:a?.singleDispense.correctionByVolume??[[0,0]],push_out_by_volume:[[0,t.pushOut??0]],mix:{enabled:"mixInDestination"in t?t.mixInDestination!=null:!1,repetitions:"mixInDestination"in t?t.mixInDestination?.times??void 0:void 0,volume:"mixInDestination"in t?t.mixInDestination?.volume??void 0:void 0}},...t.commandCreatorFnName==="distribute"?{multi_dispense:{...i,correction_by_volume:a?.multiDispense?.correctionByVolume??[[0,0]],..."conditioningVolume"in t?{conditioning_by_volume:[[0,t.conditioningVolume??0]]}:{},..."disposalVolume"in t?{disposal_by_volume:[[0,t.disposalVolume??0]]}:{}}}:{}}}},u=JSON.parse(JSON.stringify(l));return qr(u)},Va=(e,t)=>`${c.getAllLiquidClassDefs()[e].liquidClassName}${t?"_base_class":""}`,_y=e=>{if(e!=null)return e===jr?"source":e===vn?"destination":"trash"},jw=e=>{const t=_y(e.blowoutLocation);return!t||t==="trash"?null:{offset:{x:e.blowoutXPosition??0,y:e.blowoutYPosition??0,z:e.blowoutOffsetFromTopMm??1},position_reference:e.blowoutPositionReference??c.POSITION_REFERENCE_TOP}},Ps=e=>{const{labwareEntities:t,tiprackIds:r}=e;return`tip_racks=[${r.map(a=>t[a].pythonName).join(", ")}]`};var wu,Qm;function Gw(){if(Qm)return wu;Qm=1;var e="Expected a function";function t(r){if(typeof r!="function")throw new TypeError(e);return function(){var n=arguments;switch(n.length){case 0:return!r.call(this);case 1:return!r.call(this,n[0]);case 2:return!r.call(this,n[0],n[1]);case 3:return!r.call(this,n[0],n[1],n[2])}return!r.apply(this,n)}}return wu=t,wu}var Su,Jm;function Ww(){if(Jm)return Su;Jm=1;var e=jc(),t=An(),r=_s(),n=tr(),a=Ln();function s(o,i,l,u){if(!n(o))return o;i=t(i,o);for(var p=-1,d=i.length,f=d-1,_=o;_!=null&&++p<d;){var m=a(i[p]),h=l;if(m==="__proto__"||m==="constructor"||m==="prototype")return o;if(p!=f){var b=_[m];h=u?u(b,m,_):void 0,h===void 0&&(h=n(b)?b:r(i[p+1])?[]:{})}e(_,m,h),_=_[m]}return o}return Su=s,Su}var Au,eh;function Yw(){if(eh)return Au;eh=1;var e=bs(),t=Ww(),r=An();function n(a,s,o){for(var i=-1,l=s.length,u={};++i<l;){var p=s[i],d=e(a,p);o(d,p)&&t(u,r(p,a),d)}return u}return Au=n,Au}var Lu,th;function Kw(){if(th)return Lu;th=1;var e=Aa(),t=On(),r=Yw(),n=Yc();function a(s,o){if(s==null)return{};var i=e(n(s),function(l){return[l]});return o=t(o),r(s,i,function(l,u){return o(l,u[0])})}return Lu=a,Lu}var Ou,rh;function Xw(){if(rh)return Ou;rh=1;var e=On(),t=Gw(),r=Kw();function n(a,s){return r(a,t(e(s)))}return Ou=n,Ou}var Zw=Xw();const Qw=xe(Zw);function yy(e){return Object.keys(e.wells)}const Jw=(e,t)=>{const r=Object.keys(e||{}).filter(n=>e[n]&&e[n].volume>0);return{wellName:t,groupIds:r,ingreds:Qw(e,n=>!n||n.volume<=0)}},eS=(e,t)=>{const r=yy(t);return lt(r,(n,a)=>{const s=e&&e[a];return{...n,[a]:s?Jw(e[a],a):{}}},{})},tS=(e,t)=>{const r={};return t.forEach(n=>{const a=e!=null?Object.values(e).reduce((s,o)=>{if(o.groupIds.indexOf(n)!==-1){const l=o.ingreds[n];l?.volume!=null&&(s[o.wellName??"A1"]=l.volume)}return s},{}):{};r[n]=a}),r},rS=e=>{const t=e.flatMap(r=>r==null?[]:Object.values(r).flatMap(n=>n.groupIds.filter(a=>a!==Ge)));return Array.from(new Set(t))},nS=e=>{const t=e!=null?Object.values(e).flatMap(r=>r.groupIds)?.filter(r=>r!==Ge):[];return Array.from(new Set(t))},by="#737578",Ty=e=>{const t=Number(e);return Number.isInteger(t)?c.DEFAULT_LIQUID_COLORS[t%c.DEFAULT_LIQUID_COLORS.length]:(e!==Ge&&console.warn(`swatchColors expected an integer or ${Ge}, got ${e}`),"transparent")},aS=(e,t)=>{const r=e.filter(n=>n!==Ge);return r.length===0?null:r.length===1?t[r[0]]??Ty(r[0]):by},sS=(e,t)=>lt(e,(r,n,a)=>{const s=aS(n.groupIds,t);return s?{...r,[a]:s}:r},{});var Ru,nh;function oS(){if(nh)return Ru;nh=1;function e(t,r){return t>r}return Ru=e,Ru}var vu,ah;function iS(){if(ah)return vu;ah=1;var e=Ah(),t=oS(),r=Ia();function n(a){return a&&a.length?e(a,r,t):void 0}return vu=n,vu}var lS=iS();const uS=xe(lS),gy="2.28",cS="8.11.0";function pS(){return["import json","from opentrons import protocol_api, types"].join(`
56
- `)}function dS(e){function t(n){return n?new Date(n).toISOString():""}const r=Object.fromEntries(Object.entries({protocolName:e.protocolName,author:e.author,description:e.description,created:t(e.created),internalAppBuildDate:e.internalAppBuildDate,lastModified:t(e.lastModified),category:e.category,subcategory:e.subcategory,tags:e.tags?.length&&e.tags.join(", "),protocolDesigner:e.protocolDesigner,source:e.source}).filter(([n,a])=>a));return`metadata = ${qr(r)}`}function fS(e){const r={robotType:{[c.OT2_ROBOT_TYPE]:"OT-2",[c.FLEX_ROBOT_TYPE]:"Flex"}[e],apiLevel:gy};return`requirements = ${qr(r)}`}function Iy(e,t){const r=Object.keys(e).length>0,n=r?Object.values(e).map(a=>`${a.pythonName} = ${be}.load_module(${N(a.model)}, ${N(t[a.id].slot)})`).join(`
54
+ `]:[]],i=`${be}.home(${o.join(", ")})`;return{commands:[s],python:i}},mI=(e,t,r)=>{const{pipetteId:n,axis:a,distance:s}=e,{pipetteEntities:o}=t,i=o[n].pythonName,l=[{commandType:"moveRelative",key:D(),params:{pipetteId:n,axis:a,distance:s}}],u=[`axis=${N(a)}`,`distance=${s}`];return{commands:l,python:`${i}.move_axes_relative(${u.join(", ")})`}},hI=(e,t,r)=>{const{pipetteId:n,coordinates:a,minimumZHeight:s,forceDirect:o}=e,{pipetteEntities:i}=t,l=i[n].pythonName,u=[{commandType:"moveToCoordinates",key:D(),params:{pipetteId:n,coordinates:a,minimumZHeight:s,forceDirect:o}}],p=[`coordinates=${Pc([a.x,a.y,a.z])}`,...o?["force_direct=True"]:[],...s?[`minimum_z_height=${s}`]:[]];return{commands:u,python:`${l}.move_axes_to(${p.join(", ")})`}},_I=(e,t,r)=>{const{pipetteId:n,labwareId:a,wellName:s,wellLocation:o}=e,{pipetteEntities:i}=t,l=i[n].pythonName,u=t.labwareEntities[a].pythonName;return{commands:[{commandType:"tryLiquidProbe",key:D(),params:{pipetteId:n,labwareId:a,wellName:s,wellLocation:o}}],python:`${l}.detect_liquid_presence(${u}[${N(s)}])`}},F_=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"heaterShaker/closeLabwareLatch",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.close_labware_latch()`}},ju=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"heaterShaker/deactivateHeater",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.deactivate_heater()`}},yI=["1","4","7","10"],U_=(e,t,r)=>{const{pipetteEntities:n,labwareEntities:a,moduleEntities:s}=t,o=r.modules[e.moduleId].slot,i=Object.keys(n)[0],l=n[i]?.spec;if(!((l?.displayCategory==="FLEX"||l?.channels===96)??!1)&&My(r.labware,a,o)){const d=yI.includes(o)?"right":"left";return{errors:[jb(d)]}}const p=s[e.moduleId].pythonName;return{commands:[{commandType:"heaterShaker/openLabwareLatch",key:D(),params:{moduleId:e.moduleId}}],python:`${p}.open_labware_latch()`}},q_=(e,t,r)=>{const{moduleEntities:n}=t,{moduleId:a,rpm:s}=e;if(a===null)return{errors:[Q()]};if(n[a]?.type!==c.HEATERSHAKER_MODULE_TYPE)throw new Error(`expected module ${a} to be heaterShaker, got ${n[a]?.type}`);const o=n[a].pythonName;return{commands:[{commandType:"heaterShaker/setAndWaitForShakeSpeed",key:D(),params:{moduleId:a,rpm:s}}],python:`${o}.set_and_wait_for_shake_speed(${s})`}},Gu=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"heaterShaker/deactivateShaker",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.deactivate_shaker()`}},Fc=(e,t,r)=>{const{moduleId:n}=e,{moduleEntities:a,labwareEntities:s}=t,o=[],i=a[n].pythonName,u=Object.values(r.labware).filter(f=>f.stack.includes(n)).find(f=>f.stack.find(h=>s[h]?.def.allowedRoles?.includes("lid")&&s[h]?.def.parameters.loadName!=="opentrons_tough_pcr_auto_sealing_lid")),p=u!=null?Bc(u.stack):null,d=p!=null?s[p].def.metadata.displayName:null;return d!=null&&o.push(eT({lidDisplayName:d})),o.length>0?{errors:o}:{commands:[{commandType:"thermocycler/closeLid",key:D(),params:{moduleId:n}}],python:`${i}.close_lid()`}},$_=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"thermocycler/deactivateBlock",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.deactivate_block()`}},V_=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"thermocycler/deactivateLid",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.deactivate_lid()`}},B_=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"thermocycler/openLid",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.open_lid()`}},x_=(e,t,r)=>{e.celsius!==void 0&&console.warn("'volume' param not implemented for thermocycler/setTargetBlockTemperature, should not be set!");const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"thermocycler/setTargetBlockTemperature",key:D(),params:{moduleId:e.moduleId,celsius:e.celsius}}],python:`${n}.set_block_temperature(${e.celsius})`}},Uc=(e,t,r)=>{const{moduleId:n,celsius:a}=e,s=t.moduleEntities[n].pythonName;return{commands:[{commandType:"thermocycler/setTargetLidTemperature",key:D(),params:{moduleId:n,celsius:a}}],python:`${s}.set_lid_temperature(${a})`}};function O(e,t){return(r,n)=>e(t,r,n)}function R(e,t){return(r,n)=>{const a=e(t,r,n);if("python"in a){const{python:s,...o}=a;return o}return a}}const je="__air__",zr="source_well",Mn="dest_well";function H_(e){return Yh.includes(e.parameters.loadName)}const z_=(e,t,r)=>{const s=c.getDeckDefFromRobotType(r).cutoutFixtures.find(l=>l.id.includes(t))?.providesAddressableAreas,i=(l=>{if(s!=null){for(const u in s)if(s[u].includes(l))return u}return null})(e);if(i==null)throw Error(`expected to find cutoutId from addressableAreaName ${e} but could not`);return i};function j_(e){switch(e){case 1:return c.ONE_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA;case 8:return c.EIGHT_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA;case 96:return c.NINETY_SIX_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA}}function qc(e){const t=c.getDeckDefFromRobotType(e==="cutout12"?c.OT2_ROBOT_TYPE:c.FLEX_ROBOT_TYPE);let r=null;return t.robot.model===c.FLEX_ROBOT_TYPE&&(r=t.cutoutFixtures.find(n=>n.id==="trashBinAdapter")?.providesAddressableAreas??null),t.robot.model===c.FLEX_ROBOT_TYPE&&r==null&&console.error(`expected to find a list of cutouts for the Flex but could not with trashLocation ${e}`),r!=null?r[e]?.[0]:"fixedTrash"}function G_(e){if(e==="fixedTrash")return"cutout12";const r=c.getDeckDefFromRobotType(c.FLEX_ROBOT_TYPE).cutoutFixtures.find(n=>n.id==="trashBinAdapter")?.providesAddressableAreas??null;if(r==null)return console.error("Could not find trashBinAdapter cutouts for Flex"),null;for(const[n,a]of Object.entries(r))if(a.includes(e))return n;return console.error(`Could not find trashLocation for addressableAreaName ${e}`),null}function Fn(e,t,r,n){return e[n]!=null?"labware":t[n]!=null?"wasteChute":r[n]!=null?"trashBin":(console.error(`expected to determine if dest labware is a labware or waste chute with destLabware ${n} but could not`),null)}function W_(e,t){return Sn(bn(t),r=>e)}function mr(e){return ut(e,(t,r,n)=>n===je?t:t+r.volume,0)}function er(e,t){const r=mr(t);if(r===0)return{source:t,dest:{[je]:{volume:e}}};if(e>r)return{source:rr(t,()=>({volume:0})),dest:{...t,[je]:{volume:e-r}}};const n=ut(t,(a,s,o)=>({...a,[o]:s.volume/r}),{});return Object.keys(t).reduce((a,s)=>{const o=n[s]*e;return{source:{...a.source,[s]:{volume:t[s].volume-o}},dest:{...a.dest,[s]:{volume:o}}}},{source:{},dest:{}})}function hr(e,t){return{...t,...ut(e,(r,n,a)=>{const o=a in t?n.volume+t[a].volume:n.volume;return{...r,[a]:{volume:o}}},{})}}function $c(e,t,r){const n=e===1?[r]:c.getWellNamePerMultiTip(t,r,e);if(!n)return console.warn(e===1?`Invalid well: ${r}`:`For labware def (URI ${c.getLabwareDefURI(t)}), with primary well ${r}, no wells are accessible by 8-channel's 1st tip`),{wellsForTips:[],allWellsShared:!1};const a=n.every(s=>s&&s===n[0]);return{wellsForTips:n,allWellsShared:a}}const Y_=e=>{const{pipette:t,sourceLabwareId:r,sourceWell:n,destLabwareId:a,destWell:s,blowoutLocation:o,flowRate:i,offsetFromTopMm:l,invariantContext:u}=e;if(!o)return[];const{trashBinEntities:p,wasteChuteEntities:d}=u;let f=null,h=null;return o===zr?(f=r,h=n):o===Mn&&(f=a,h=s),h!=null&&f!=null?[O(Oc,{pipetteId:t,labwareId:f,wellName:h,flowRate:i,wellLocation:{origin:"top",offset:{z:l}}})]:d[o]!=null?[O(ub,{pipetteId:t,flowRate:i,wasteChuteId:Object.keys(d)[0]})]:[O(lb,{pipetteId:t,trashId:Object.keys(p)[0],flowRate:i})]};function K_(e){const{labwareEntities:t,pipetteEntities:r,wasteChuteEntities:n,trashBinEntities:a}=e;return{pipettes:ut(r,(s,o,i)=>{const l=o.spec;return{...s,[i]:X_(l.channels,{})}},{}),labware:ut(t,(s,o,i)=>({...s,[i]:rr(o.def.wells,()=>({}))}),{}),trashBins:ut(a,(s,o,i)=>({...s,[i]:{}}),{}),wasteChute:ut(n,(s,o,i)=>({...s,[i]:{}}),{})}}function X_(e,t){return bn(e).reduce((r,n)=>({...r,[n]:t}),{})}const Z_=e=>{const{blowoutLocation:t,sourceLabware:r,destLabware:n,sourceWell:a,destWell:s}=e;return t===zr&&r!=null&&a!=null?{dispenseAirGapLabware:r,dispenseAirGapWell:a}:{dispenseAirGapLabware:n,dispenseAirGapWell:s}};function Vc(e){const{invariantContext:t,labwareLocations:r,moduleLocations:n={},pipetteLocations:a}=e;return{labware:r,modules:n,pipettes:a,liquidState:K_(t),tipState:{pipettes:ut(a,(s,o,i)=>o.mount?{...s,[i]:{hasTip:!1,tiprackURI:null}}:s,{}),tipracks:ut(r,(s,o,i)=>{const l=t.labwareEntities[i].def;if(!c.getIsTiprack(l))return s;const u=rr(l.wells,()=>Ra);return{...s,[i]:u}},{})}}}const Q_=(e,t)=>e.tipracks[t]!=null?Object.values(e.tipracks[t]).some(r=>r!==ue):!1,J_=(e,t)=>e.labware[t]!=null?Object.values(e.labware[t]).some(r=>Object.values(r).some(n=>n.volume>0)):!1,bI=(e,t,r)=>{const{destinationId:n,pipetteId:a,volume:s,flowRate:o,offsetFromBottomMm:i,well:l,xOffset:u,yOffset:p,tipRack:d,primaryNozzle:f,nozzles:h}=e,{labwareEntities:m,trashBinEntities:_,wasteChuteEntities:b}=t,T=Fn(m,b,_,n);let y=[];return T==="labware"&&i!=null&&l!=null?y=[O(Rc,{pipetteId:a,volume:s,labwareId:n,wellName:l,flowRate:o,wellLocation:{origin:"bottom",offset:{z:i,x:u,y:p}},tipRack:d,primaryNozzle:f,nozzles:h})]:T==="wasteChute"?y=[O(sA,{pipetteId:a,volume:s,flowRate:o,wasteChuteId:b[n].id})]:y=[O(aA,{pipetteId:a,volume:s,flowRate:o,trashId:_[n].id})],ae(y,t,r)},TI=(e,t,r)=>{const{destinationId:n,pipetteId:a,zOffset:s,well:o}=e,{labwareEntities:i,wasteChuteEntities:l,trashBinEntities:u}=t,p=Fn(i,l,u,n);let d=[];return p==="labware"&&o!=null?d=[O(B,{pipetteId:a,labwareId:n,wellName:o,wellLocation:{origin:"bottom",offset:{x:0,y:0,z:s}}})]:p==="wasteChute"?d=[O(Fe,{pipetteId:a,fixtureId:l[n].id,offset:{x:0,y:0,z:0}})]:d=[O(Fe,{pipetteId:a,fixtureId:u[n].id,offset:wt})],ae(d,t,r)},gI=(e,t,r)=>{const{blowOutLocation:n,destinationId:a,destWell:s,flowRate:o,pipetteId:i,sourceId:l,sourceWell:u,volume:p}=e,{labwareEntities:d,trashBinEntities:f,wasteChuteEntities:h}=t,m=Fn(d,h,f,a);let _=[];if(m==="labware"&&s!=null){const{dispenseAirGapLabware:b,dispenseAirGapWell:T}=Z_({blowoutLocation:n,sourceLabware:l,destLabware:a,sourceWell:u,destWell:s});_=[O(JS,{flowRate:o,pipetteId:i,labwareId:b,wellName:T,volume:p,type:"dispense"})]}else m==="wasteChute"?_=[O(QS,{pipetteId:i,volume:p,flowRate:o,wasteChuteId:h[a].id})]:_=[O(ZS,{pipetteId:i,volume:p,flowRate:o,trashId:f[a].id})];return ae(_,t,r)},II=(e,t,r)=>{const{pipetteId:n,destinationId:a,well:s,zOffset:o,seconds:i}=e,{labwareEntities:l,trashBinEntities:u,wasteChuteEntities:p}=t,d=Fn(l,p,u,a);let f=[];return s!=null&&d==="labware"?f=[O(B,{pipetteId:n,labwareId:a,wellName:s,wellLocation:{origin:"bottom",offset:{x:0,y:0,z:o}}}),O(me,{seconds:i})]:d==="wasteChute"?f=[O(Fe,{pipetteId:n,fixtureId:a,offset:wt}),O(me,{seconds:i})]:f=[O(Fe,{pipetteId:n,fixtureId:a,offset:wt}),O(me,{seconds:i})],ae(f,t,r)},G=(e,t=!1)=>{if(e==null)return console.error("expected to find stack but could not"),"unknown slot";{const r=e[e.length-1];return t?`STACKER ${r.slice(-2,-1)}`:r}},Bc=e=>e==null?(console.error("expected to find stack but could not"),"unknown top location"):e[0],ey=e=>e.length>=2?e[1]:null,fa=e=>{const{slot:t,labwareState:r,modulesState:n}=e,a=Object.values(n).find(({slot:s,moduleState:o})=>s===t&&o.type===c.FLEX_STACKER_MODULE_TYPE);if(a!=null){const s=a.moduleState.labwareOnShuttle;return s==null?[]:[s.lidLabwareId,s.primaryLabwareId,s.adapterLabwareId].filter(i=>i!=null)}return Object.values(r).reduce((s,{stack:o})=>(o[o.length-1]===t&&o.length>s.length&&(s=o),s),[])},xc=e=>c.FLEX_SINGLE_SLOT_BY_CUTOUT_ID[c.FLEX_CUTOUT_BY_SLOT_ID[e]],ty=e=>{const t=c.FLEX_STACKER_ADDRESSABLE_AREAS.indexOf(e);return t===-1?null:ve[t]},EI=e=>{const t=ty(e);return t!=null?xc(t):null},ry=(e,t,r)=>{if(e==null)return null;if(ve.includes(e)){const n=xc(e);return Object.entries(t).some(([s,o])=>r[s]?.type===c.FLEX_STACKER_MODULE_TYPE&&o.slot===n)?n:e}return e},Rs=e=>{const t=c.getDeckDefFromRobotType(c.FLEX_ROBOT_TYPE),r=`${e[0]}3`,n=c.FLEX_CUTOUT_BY_SLOT_ID[r],a=t.cutoutFixtures.find(({id:s})=>s===c.FLEX_STACKER_V1_FIXTURE)?.providesAddressableAreas[n];return c.FLEX_STACKER_ADDRESSABLE_AREAS.find(s=>a?.includes(s))??null},ny=(e,t,r,n)=>{if(t.length===0)return{isCompatible:!0,isAboveStackLimit:!1};let a=!1;const s=t.find(u=>u in n);s!=null&&(a=n[s].type===c.FLEX_STACKER_MODULE_TYPE&&t.includes(Ze));const o=Bc(t);let i=!0,l=!1;if(o in r){const u=r[e],p=r[o],d=t.filter(g=>r[g]!=null),f=d.filter(g=>r[g]?.def?.allowedRoles?.includes("lid"))[0],h=d.filter(g=>r[g]?.def?.allowedRoles?.includes("adapter"))[0],m=p.def.parameters.loadName,_=d.filter(g=>!r[g]?.def?.allowedRoles?.includes("adapter")&&!r[g]?.def?.allowedRoles?.includes("lid"))[0];if(a){const g=c.getMaxPoolCount({labwareDefinitions:{primary:r[_]?.def??null,adapter:r[h]?.def??null,lid:r[f]?.def??null},model:c.FLEX_STACKER_MODULE_V1});l=t.length>g}else{const g=p.def.stackLimit??1,E=m===u.def.parameters.loadName,k=t.filter(v=>r[v]?.def.parameters.loadName===m)?.length;l=E&&k>=g}const b=u.def.parameters.loadName==="opentrons_tough_universal_lid",T=p.def.metadata.displayCategory==="tubeRack",y=p.def.metadata.displayCategory==="aluminumBlock",A=p.def.parameters.isTiprack,I=(p.def.allowedRoles??[]).includes("lid"),S=H_(p.def),L=u.def.parameters.quirks?.includes("vacuumModuleDock")??!1;i=(u.def.parameters.quirks?.includes("filterPlate")??!1)&&!I&&!A&&!(p.def.parameters.quirks?.includes("filterPlate")??!1)||S&&L||(p.def.parameters.quirks?.includes("providesStackingDefault")??!1)&&!S||u.def.compatibleParentLabware?.some(g=>g===m)||Object.keys(u.def.stackingOffsetWithLabware??{}).some(g=>g===m)||b&&!T&&!y&&!A&&(p.def.parameters.loadName==="opentrons_tough_universal_lid"||!I)}else if(o in n){const u=n[o],{model:p}=u;i=Object.keys(r[e].def.stackingOffsetWithModule??{}).some(d=>p===d)}return{isCompatible:i,isAboveStackLimit:l}},Fa=(e,t)=>t?.find(r=>e[r]!=null)??null,wI=(e,t,r)=>t?e:r?Gh[e]:e,Hc=(e,t,r)=>{if(t==="offDeck"&&r==null)return console.error("offDeck slot is not allowed to be used without an offDeckOverrideId"),[];const n=ma(t),a=ay(t),s=wI(t,n,a),o=Object.values(e).filter(i=>i.stack.includes(s)&&(r==null||i.stack.includes(r))&&i.stack.includes(Ze)===a&&i.stack.includes(cc)===n);return o.length===0?[]:a?o.at(-1)?.stack??[]:n?o.at(-1)?.stack??[]:o.toSorted((i,l)=>l.stack.length-i.stack.length)[0]?.stack??[]},SI=(e,t)=>Object.values(t).filter(r=>r.stack.includes(e)).sort((r,n)=>n.stack.length-r.stack.length)[0]?.stack[0],ua=(e,t,r,n=!0)=>{const a=c.linearInterpolate(e,t)??0,s=c.linearInterpolate(e,r)??0;return e+(n?a:0)+s},zc=e=>{const{path:t,volume:r,pipetteSpecs:n,tiprackDefinition:a,conditioningByVolume:s,disposalByVolume:o,numDispenseWells:i,numAspirateWells:l,aspirateAirGapByVolume:u}=e,{liquids:p}=n,f=r<p.default.minVolume&&"lowVolumeDefault"in p?p.lowVolumeDefault.maxVolume:p.default.maxVolume,h=a?.wells.A1.totalLiquidVolume,m=h==null?f:Math.min(f,h),_=r*2,b=s!=null?c.linearInterpolate(_,s)??0:0,y=a?.namespace!=="opentrons"||s!=null&&o!=null&&m>=_+b+(c.linearInterpolate(_,o)??0)+(b===0?c.linearInterpolate(_,u)??0:0),A=m>=_;if(t==="multiAspirate"&&l<=i?console.warn("Invalid combination of source and destination wells for multiAspirate path"):t==="multiDispense"&&l>=i?console.warn("Invalid combination of source and destination wells for multiDispense path"):t==="single"&&l!==i&&console.warn("Invalid combination of source and destination wells for single path"),t==="single"||t==="multiDispense"&&!y||t==="multiAspirate"&&!A){const L=c.linearInterpolate(r,u)??0,g=Math.ceil((r+L)/m),E=r/g;return{referenceVolumes:{airGap:{aspirate:E,dispense:0},correction:{aspirate:E,dispense:E},pushOut:E,flowRate:{aspirate:E,dispense:E}},multiWellHandling:{isSupported:!1}}}if(t==="multiDispense"){let L=0,g=0;for(let E=0;E<i&&!(ua((E+1)*r,s??[],o??[])>m);E++)L=(E+1)*r,g+=1;return{referenceVolumes:{airGap:{aspirate:ua(L,s??[],o??[],!1),dispense:ua((g-1)*r,s??[],o??[],!1)},correction:{aspirate:ua(L,s??[],o??[]),dispense:r},flowRate:{aspirate:ua(L,s??[],o??[]),dispense:r},pushOut:r,conditioning:L,disposal:L},multiWellHandling:{isSupported:!0,numWellsToFitInTip:g}}}const w=Math.floor(m/r),I=Math.min(w,l),S=I*r;return{referenceVolumes:{airGap:{aspirate:S,dispense:0},pushOut:S,correction:{aspirate:S,dispense:S},flowRate:{aspirate:r,dispense:S}},multiWellHandling:{isSupported:!0,numWellsToFitInTip:I}}},Ur=e=>{const{retractZOffset:t,retractPositionReference:r,labwareId:n,labwareEntities:a,well:s}=e;if(s==null)return!1;const o=a[n]?.def.wells[s]?.depth;if(o==null)return!1;const i=c.getMmFromBottom(t,r,o);return i==null?!1:i-o>=c.SAFE_MOVE_TO_WELL_OFFSET_FROM_TOP_MM},Wu=e=>e.reduce((t,r)=>{const{kind:n}=r;return n==="onCutoutFixture"?t:n==="onLabware"?[...t,r.labwareId]:n==="onModule"||n==="inStackerHopper"?[...t,r.moduleId]:n==="onAddressableArea"?[...t,r.addressableAreaName]:[...t,r.logicalLocationName]},[]),AI={A4:"cutoutA3",B4:"cutoutB3",C4:"cutoutC3",D4:"cutoutD3"};function Yu(e){if(e.location!=="offDeck"&&e.location!=="systemLocation"&&e.location!=="wasteChuteLocation"&&"addressableAreaName"in e.location&&zh.includes(e.location.addressableAreaName)){const t=D(),r=e.location.addressableAreaName,n=AI[r]??r;return{[t]:{id:t,location:n}}}return{}}const ay=e=>jh.includes(e),ma=e=>e===c.VACUUM_MODULE_DOCK_A4_ADDRESSABLE_AREA,jc=e=>e.labwareOnShuttle?.primaryLabwareId??null,Gc=(e,t,r)=>{if(r?.storedLabwareDetails==null)return!0;const n=Object.values(r?.storedLabwareDetails??{}).reduce((s,o)=>o!=null?[...s,o]:s,[]),a=t.labwareEntities[e];return n.some(s=>a?.labwareDefURI===s)},Wc=(e,t)=>{const{storedLabwareDetails:r}=e??{};if(r==null)return!0;const{primaryLabwareURI:n,adapterLabwareURI:a,lidLabwareURI:s}=r,o=Object.values(t).find(({labwareDefURI:f})=>f===n),i=Object.values(t).find(({labwareDefURI:f})=>f===a),l=Object.values(t).find(({labwareDefURI:f})=>f===s);if(o==null)return console.error("Primary labware entity not found"),!1;const u=c.getMaxPoolCount({labwareDefinitions:{primary:o.def,adapter:i?.def??null,lid:l?.def??null},model:c.FLEX_STACKER_MODULE_V1}),d=e?.labwareInHopper?.length??0;return u>d},sy=e=>{const{labwareId:t,labwareRobotState:r,labwareEntities:n}=e;return Object.entries(r).some(([a,{stackedOnNode:s}])=>typeof s=="object"&&"labwareId"in s&&s.labwareId===t&&c.getIsLid(n[a].def))},oy=e=>![Ln,c.GRIPPER_WASTE_CHUTE_ADDRESSABLE_AREA,...ve].some(t=>e===t),Ua=(e,t,r)=>{const n=t[r]?.stack,a=Fa(e,n),s=a!=null?e[a].moduleState:null;return!!(s&&s.type===c.ABSORBANCE_READER_TYPE&&s.lidOpen!==!0)};var gl,Kf;function iy(){if(Kf)return gl;Kf=1;function e(t){var r=t==null?0:t.length;return r?t[r-1]:void 0}return gl=e,gl}var LI=iy();const Yc=xe(LI);var ly=Symbol.for("immer-nothing"),Xf=Symbol.for("immer-draftable"),st=Symbol.for("immer-state"),OI=process.env.NODE_ENV!=="production"?[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},"This object has been frozen and should not be mutated",function(e){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+e},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(e){return`'original' expects a draft, got: ${e}`}]:[];function Ke(e,...t){if(process.env.NODE_ENV!=="production"){const r=OI[e],n=typeof r=="function"?r.apply(null,t):r;throw new Error(`[Immer] ${n}`)}throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var ha=Object.getPrototypeOf;function On(e){return!!e&&!!e[st]}function qr(e){return e?uy(e)||Array.isArray(e)||!!e[Xf]||!!e.constructor?.[Xf]||qa(e)||vs(e):!1}var RI=Object.prototype.constructor.toString(),Zf=new WeakMap;function uy(e){if(!e||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);if(t===null||t===Object.prototype)return!0;const r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;if(r===Object)return!0;if(typeof r!="function")return!1;let n=Zf.get(r);return n===void 0&&(n=Function.toString.call(r),Zf.set(r,n)),n===RI}function is(e,t,r=!0){ks(e)===0?(r?Reflect.ownKeys(e):Object.keys(e)).forEach(a=>{t(a,e[a],e)}):e.forEach((n,a)=>t(a,n,e))}function ks(e){const t=e[st];return t?t.type_:Array.isArray(e)?1:qa(e)?2:vs(e)?3:0}function Ku(e,t){return ks(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function cy(e,t,r){const n=ks(e);n===2?e.set(t,r):n===3?e.add(r):e[t]=r}function kI(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}function qa(e){return e instanceof Map}function vs(e){return e instanceof Set}function Nr(e){return e.copy_||e.base_}function Xu(e,t){if(qa(e))return new Map(e);if(vs(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const r=uy(e);if(t===!0||t==="class_only"&&!r){const n=Object.getOwnPropertyDescriptors(e);delete n[st];let a=Reflect.ownKeys(n);for(let s=0;s<a.length;s++){const o=a[s],i=n[o];i.writable===!1&&(i.writable=!0,i.configurable=!0),(i.get||i.set)&&(n[o]={configurable:!0,writable:!0,enumerable:i.enumerable,value:e[o]})}return Object.create(ha(e),n)}else{const n=ha(e);if(n!==null&&r)return{...e};const a=Object.create(n);return Object.assign(a,e)}}function Kc(e,t=!1){return Ps(e)||On(e)||!qr(e)||(ks(e)>1&&Object.defineProperties(e,{set:ts,add:ts,clear:ts,delete:ts}),Object.freeze(e),t&&Object.values(e).forEach(r=>Kc(r,!0))),e}function vI(){Ke(2)}var ts={value:vI};function Ps(e){return e===null||typeof e!="object"?!0:Object.isFrozen(e)}var PI={};function $r(e){const t=PI[e];return t||Ke(0,e),t}var _a;function py(){return _a}function CI(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function Qf(e,t){t&&($r("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Zu(e){Qu(e),e.drafts_.forEach(NI),e.drafts_=null}function Qu(e){e===_a&&(_a=e.parent_)}function Jf(e){return _a=CI(_a,e)}function NI(e){const t=e[st];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function em(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];return e!==void 0&&e!==r?(r[st].modified_&&(Zu(t),Ke(4)),qr(e)&&(e=ls(t,e),t.parent_||us(t,e)),t.patches_&&$r("Patches").generateReplacementPatches_(r[st].base_,e,t.patches_,t.inversePatches_)):e=ls(t,r,[]),Zu(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==ly?e:void 0}function ls(e,t,r){if(Ps(t))return t;const n=e.immer_.shouldUseStrictIteration(),a=t[st];if(!a)return is(t,(s,o)=>tm(e,a,t,s,o,r),n),t;if(a.scope_!==e)return t;if(!a.modified_)return us(e,a.base_,!0),a.base_;if(!a.finalized_){a.finalized_=!0,a.scope_.unfinalizedDrafts_--;const s=a.copy_;let o=s,i=!1;a.type_===3&&(o=new Set(s),s.clear(),i=!0),is(o,(l,u)=>tm(e,a,s,l,u,r,i),n),us(e,s,!1),r&&e.patches_&&$r("Patches").generatePatches_(a,r,e.patches_,e.inversePatches_)}return a.copy_}function tm(e,t,r,n,a,s,o){if(a==null||typeof a!="object"&&!o)return;const i=Ps(a);if(!(i&&!o)){if(process.env.NODE_ENV!=="production"&&a===r&&Ke(5),On(a)){const l=s&&t&&t.type_!==3&&!Ku(t.assigned_,n)?s.concat(n):void 0,u=ls(e,a,l);if(cy(r,n,u),On(u))e.canAutoFreeze_=!1;else return}else o&&r.add(a);if(qr(a)&&!i){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1||t&&t.base_&&t.base_[n]===a&&i)return;ls(e,a),(!t||!t.scope_.parent_)&&typeof n!="symbol"&&(qa(r)?r.has(n):Object.prototype.propertyIsEnumerable.call(r,n))&&us(e,a)}}}function us(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Kc(t,r)}function DI(e,t){const r=Array.isArray(e),n={type_:r?1:0,scope_:t?t.scope_:py(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let a=n,s=Xc;r&&(a=[n],s=ya);const{revoke:o,proxy:i}=Proxy.revocable(a,s);return n.draft_=i,n.revoke_=o,i}var Xc={get(e,t){if(t===st)return e;const r=Nr(e);if(!Ku(r,t))return MI(e,r,t);const n=r[t];return e.finalized_||!qr(n)?n:n===Il(e.base_,t)?(El(e),e.copy_[t]=ec(n,e)):n},has(e,t){return t in Nr(e)},ownKeys(e){return Reflect.ownKeys(Nr(e))},set(e,t,r){const n=dy(Nr(e),t);if(n?.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){const a=Il(Nr(e),t),s=a?.[st];if(s&&s.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(kI(r,a)&&(r!==void 0||Ku(e.base_,t)))return!0;El(e),Ju(e)}return e.copy_[t]===r&&(r!==void 0||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_[t]=!0),!0},deleteProperty(e,t){return Il(e.base_,t)!==void 0||t in e.base_?(e.assigned_[t]=!1,El(e),Ju(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){const r=Nr(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{writable:!0,configurable:e.type_!==1||t!=="length",enumerable:n.enumerable,value:r[t]}},defineProperty(){Ke(11)},getPrototypeOf(e){return ha(e.base_)},setPrototypeOf(){Ke(12)}},ya={};is(Xc,(e,t)=>{ya[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}});ya.deleteProperty=function(e,t){return process.env.NODE_ENV!=="production"&&isNaN(parseInt(t))&&Ke(13),ya.set.call(this,e,t,void 0)};ya.set=function(e,t,r){return process.env.NODE_ENV!=="production"&&t!=="length"&&isNaN(parseInt(t))&&Ke(14),Xc.set.call(this,e[0],t,r,e[0])};function Il(e,t){const r=e[st];return(r?Nr(r):e)[t]}function MI(e,t,r){const n=dy(t,r);return n?"value"in n?n.value:n.get?.call(e.draft_):void 0}function dy(e,t){if(!(t in e))return;let r=ha(e);for(;r;){const n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=ha(r)}}function Ju(e){e.modified_||(e.modified_=!0,e.parent_&&Ju(e.parent_))}function El(e){e.copy_||(e.copy_=Xu(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var FI=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(t,r,n)=>{if(typeof t=="function"&&typeof r!="function"){const s=r;r=t;const o=this;return function(l=s,...u){return o.produce(l,p=>r.call(this,p,...u))}}typeof r!="function"&&Ke(6),n!==void 0&&typeof n!="function"&&Ke(7);let a;if(qr(t)){const s=Jf(this),o=ec(t,void 0);let i=!0;try{a=r(o),i=!1}finally{i?Zu(s):Qu(s)}return Qf(s,n),em(a,s)}else if(!t||typeof t!="object"){if(a=r(t),a===void 0&&(a=t),a===ly&&(a=void 0),this.autoFreeze_&&Kc(a,!0),n){const s=[],o=[];$r("Patches").generateReplacementPatches_(t,a,s,o),n(s,o)}return a}else Ke(1,t)},this.produceWithPatches=(t,r)=>{if(typeof t=="function")return(o,...i)=>this.produceWithPatches(o,l=>t(l,...i));let n,a;return[this.produce(t,r,(o,i)=>{n=o,a=i}),n,a]},typeof e?.autoFreeze=="boolean"&&this.setAutoFreeze(e.autoFreeze),typeof e?.useStrictShallowCopy=="boolean"&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),typeof e?.useStrictIteration=="boolean"&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){qr(e)||Ke(8),On(e)&&(e=UI(e));const t=Jf(this),r=ec(e,void 0);return r[st].isManual_=!0,Qu(t),r}finishDraft(e,t){const r=e&&e[st];(!r||!r.isManual_)&&Ke(9);const{scope_:n}=r;return Qf(n,t),em(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const a=t[r];if(a.path.length===0&&a.op==="replace"){e=a.value;break}}r>-1&&(t=t.slice(r+1));const n=$r("Patches").applyPatches_;return On(e)?n(e,t):this.produce(e,a=>n(a,t))}};function ec(e,t){const r=qa(e)?$r("MapSet").proxyMap_(e,t):vs(e)?$r("MapSet").proxySet_(e,t):DI(e,t);return(t?t.scope_:py()).drafts_.push(r),r}function UI(e){return On(e)||Ke(10,e),fy(e)}function fy(e){if(!qr(e)||Ps(e))return e;const t=e[st];let r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=Xu(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=Xu(e,!0);return is(r,(a,s)=>{cy(r,a,fy(s))},n),t&&(t.finalized_=!1),r}var qI=new FI,my=qI.produce;function $I(e,t){let n=0;const a=[];for(;n+1<e.length;){const s=e[n],o=e[n+1];if(t(s,o)){n+=2;continue}else a.push(s),n+=1}return n+1===e.length&&a.push(e[n]),a}const VI=(e,t)=>["pipetteId","volume","labwareId","wellName"].every(n=>e[n]===t[n]),BI=e=>$I(e,(t,r)=>t.commandType==="aspirate"&&r.commandType==="dispense"&&VI(t.params,r.params)),hy=e=>BI(e),Zc=(e,t)=>{const r=Ot(e,t);return r.type===c.ABSORBANCE_READER_TYPE?r:(console.error(`Absorbance reader state updater expected ${t} moduleState to be absorbanceReader, but it was ${r.type}`),null)},xI=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Zc(n,a);s!=null&&(s.lidOpen=!0)},HI=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Zc(n,a);s!=null&&(s.lidOpen=!1)},zI=(e,t,r)=>{const{robotState:n}=r,{moduleId:a,measureMode:s,sampleWavelengths:o,referenceWavelength:i}=e,l=Zc(n,a);l!=null&&(l.initialization={mode:s,wavelengths:o,referenceWavelength:i},l.lidOpen=!1)};function jI(e,t,r){const{pipetteId:n,volume:a}=e,{robotState:s}=r,o=s.pipettes[n].nozzles;let l=t.pipetteEntities[n].spec.channels;o===c.COLUMN?l=8:o===c.SINGLE&&(l=1),bn(l).forEach(u=>{const p=s.liquidState.pipettes[n][u]??{},d=p[je]?.volume??0;s.liquidState.pipettes[n][u]={...p,[je]:{volume:d+a}}})}var wl,rm;function GI(){if(rm)return wl;rm=1;var e=u_(),t=Ca(),r=fs(),n=Qe(),a=xr(),s=Ts(),o=Is(),i=Ic(),l="[object Map]",u="[object Set]",p=Object.prototype,d=p.hasOwnProperty;function f(h){if(h==null)return!0;if(a(h)&&(n(h)||typeof h=="string"||typeof h.splice=="function"||s(h)||i(h)||r(h)))return!h.length;var m=t(h);if(m==l||m==u)return!h.size;if(o(h))return!e(h).length;for(var _ in h)if(d.call(h,_))return!1;return!0}return wl=f,wl}var WI=GI();const Sl=xe(WI);var Al,nm;function YI(){if(nm)return Al;nm=1;function e(t,r,n,a){for(var s=t.length,o=n+(a?1:-1);a?o--:++o<s;)if(r(t[o],o,t))return o;return-1}return Al=e,Al}var Ll,am;function KI(){if(am)return Ll;am=1;function e(t){return t!==t}return Ll=e,Ll}var Ol,sm;function XI(){if(sm)return Ol;sm=1;function e(t,r,n){for(var a=n-1,s=t.length;++a<s;)if(t[a]===r)return a;return-1}return Ol=e,Ol}var Rl,om;function ZI(){if(om)return Rl;om=1;var e=YI(),t=KI(),r=XI();function n(a,s,o){return s===s?r(a,s,o):e(a,t,o)}return Rl=n,Rl}var kl,im;function QI(){if(im)return kl;im=1;var e=ZI();function t(r,n){var a=r==null?0:r.length;return!!a&&e(r,n,0)>-1}return kl=t,kl}var vl,lm;function JI(){if(lm)return vl;lm=1;function e(t,r,n){for(var a=-1,s=t==null?0:t.length;++a<s;)if(n(r,t[a]))return!0;return!1}return vl=e,vl}var Pl,um;function eE(){if(um)return Pl;um=1;function e(){}return Pl=e,Pl}var Cl,cm;function tE(){if(cm)return Cl;cm=1;var e=p_(),t=eE(),r=_c(),n=1/0,a=e&&1/r(new e([,-0]))[1]==n?function(s){return new e(s)}:t;return Cl=a,Cl}var Nl,pm;function rE(){if(pm)return Nl;pm=1;var e=Qh(),t=QI(),r=JI(),n=e_(),a=tE(),s=_c(),o=200;function i(l,u,p){var d=-1,f=t,h=l.length,m=!0,_=[],b=_;if(p)m=!1,f=r;else if(h>=o){var T=u?null:a(l);if(T)return s(T);m=!1,f=n,b=new e}else b=u?[]:_;e:for(;++d<h;){var y=l[d],A=u?u(y):y;if(y=p||y!==0?y:0,m&&A===A){for(var w=b.length;w--;)if(b[w]===A)continue e;u&&b.push(A),_.push(y)}else f(b,A,p)||(b!==_&&b.push(A),_.push(y))}return _}return Nl=i,Nl}var Dl,dm;function nE(){if(dm)return Dl;dm=1;var e=rE();function t(r){return r&&r.length?e(r):[]}return Dl=t,Dl}var aE=nE();const sE=xe(aE),Qc=e=>{const{nozzles:t,pipetteSpec:r,primaryNozzle:n}=e,a=r.channels;if(t==null)return a;switch(t){case c.ROW:return 12;case c.COLUMN:return 8;case c.SINGLE:return 1;case c.ALL:return a;case c.PARTIAL_COLUMN:return c.PARTIAL_NOZZLE_MAP[n];default:return a}};function oE(e,t,r){const{pipetteId:n,volume:a}=e,{robotState:s,warnings:o}=r,i="labwareId"in e?e.labwareId:s.pipettes[n].entityId??"",l="wellName"in e?e.wellName:s.pipettes[n].wellName??"",{liquidState:u}=s,p=s.pipettes[n].nozzles,d=r.robotState.pipettes[n].primaryNozzle,f=t.pipetteEntities[n].spec,h=t.labwareEntities[i].def,m=h.metadata.displayCategory==="reservoir",_=Qc({pipetteSpec:f,nozzles:p,primaryNozzle:d}),{allWellsShared:b,wellsForTips:T}=$c(_,h,l);if(console.assert(sE(T).length===b?1:T.length,`expected all wells to be shared, or no wells to be shared. Got: ${JSON.stringify(T)}`),_>1&&b){const A=T[0],w=u.labware[i][A],I=a*_>mr(w);Sl(w)?o.push(Tl()):I&&o.push(bl());const S=I?mr(w)/_:a,L=er(S,w).dest;bn(_).forEach(g=>{const E=u.pipettes[n],k=g.toString(),v=E[k],$=I?hr(v,{...L,[je]:{volume:a-S}}):hr(v,L);E[k]=$}),u.labware[i][A]=er(a*_,u.labware[i][A]).source;return}if(_===96&&m){T.forEach(A=>{const w=u.labware[i][A],I=a*8>mr(w);Sl(w)?o.push(Tl()):I&&o.push(bl());const S=I?mr(w)/8:a,L=er(S,w).dest;bn(_).forEach(g=>{const E=u.pipettes[n],k=g.toString(),v=E[k],$=I?hr(v,{...L,[je]:{volume:a-S}}):hr(v,L);E[k]=$}),u.labware[i][A]=er(S*8,u.labware[i][A]).source});return}bn(_).forEach(A=>{const w=A.toString(),I=u.pipettes[n],S=I[w],L=u.labware[i][T[A]],g=er(a,L).dest;Sl(L)?o.push(Tl()):a>mr(L)&&o.push(bl()),I[w]=hr(S,g)});const y=u.labware[i];T.forEach(A=>{y[A]=er(a,y[A]).source}),"labwareId"in e&&(s.pipettes[n]={...s.pipettes[n],entityId:e.labwareId,wellName:l})}function Cs(e){const{robotStateAndWarnings:t,invariantContext:r,entityId:n,pipetteId:a,prevLiquidState:s,useFullVolume:o,volume:i,wellName:l}=e,u=r.pipetteEntities[a].spec,p=t.robotState.pipettes[a].nozzles,d=t.robotState.pipettes[a].primaryNozzle,f=Qc({pipetteSpec:u,nozzles:p,primaryNozzle:d}),h=l??null,m=r.labwareEntities[n]!=null?r.labwareEntities[n].def:null;console.assert(!(o&&typeof i=="number"),"dispenseUpdateLiquidState takes either `volume` or `useFullVolume`, but got both"),console.assert(typeof i=="number"||o,"in dispenseUpdateLiquidState, either volume or useFullVolume are required");const{wellsForTips:_,allWellsShared:b}=m!=null&&l!=null?$c(f,m,l):{wellsForTips:null,allWellsShared:!0},T=s.labware[n]!=null?s.labware[n]:null;let y=null;s.trashBins[n]!=null?y=s.trashBins[n]:s.wasteChute[n]!=null&&(y=s.wasteChute[n]);const A=rr(s.pipettes[a],L=>{const{...g}=L;if(o){const E=mr(g);return E>0?er(E,g):{source:{},dest:{}}}return er(i||0,g)});let w=null;if(h!=null&&T!=null)w={[h]:ut(A,(L,g)=>hr(L,g.dest),T[h])};else if(y!=null){const L=Object.values(s.pipettes[a]).reduce((g,E)=>g+(E[0]?.volume??0),0);y[0]={volume:L}}w==null&&y==null&&console.assert(!1,`expected to merge liquid to a single well with sourceId ${n}`);const I=h!=null&&T!=null&&_!=null?_.reduce((L,g,E)=>({...L,[g]:hr(A[`${E}`].dest,T[g]||{})}),{}):{},S=b?w:I;s.pipettes[a]=rr(A,"source"),s.trashBins[n]!=null&&y!=null?Object.assign(s.trashBins[n],y):s.wasteChute[n]!=null&&y!=null?Object.assign(s.wasteChute[n],y):s.labware[n]!=null&&S!=null&&(s.labware[n]=Object.assign(T??{},S))}function iE(e,t,r){const{pipetteId:n,labwareId:a,wellName:s}=e,{robotState:o}=r;Cs({pipetteId:n,entityId:a,useFullVolume:!0,wellName:s,prevLiquidState:o.liquidState,invariantContext:t,robotStateAndWarnings:r})}function lE(e,t,r){const{pipetteId:n,configurationParams:a}=e,{robotState:s}=r;s.pipettes[n].nozzles=a.style,s.pipettes[n].primaryNozzle=a.primaryNozzle}function uE(e,t,r){const{pipetteId:n,volume:a}=e,{robotState:s}=r,o="labwareId"in e?e.labwareId:s.pipettes[n].entityId??"",i="wellName"in e?e.wellName:s.pipettes[n].wellName??"",l=s.liquidState.pipettes[n],p=Object.values(l)[0]?.[je]?.volume??0,d=r.robotState.pipettes[n].primaryNozzle;if(Cs({invariantContext:t,entityId:o,pipetteId:n,prevLiquidState:s.liquidState,useFullVolume:!1,volume:a,wellName:i,robotStateAndWarnings:r}),p>0){const f=r.robotState.pipettes[n].nozzles,h=t.pipetteEntities[n].spec,m=Qc({pipetteSpec:h,nozzles:f,primaryNozzle:d});Object.keys(l).slice(0,m).forEach(b=>{const T=l[b]??{};l[b]={...T,[je]:{volume:0}}})}"labwareId"in e&&(s.pipettes[n]={...s.pipettes[n],entityId:e.labwareId})}function cE(e,t,r){const{pipetteId:n,wellName:a,labwareId:s}=e,{robotState:o}=r;o.tipState.pipettes[n].hasTip=!1,o.tipState.pipettes[n].tiprackURI=null,o.pipettes[n].tiprackId=void 0;const i=o.tipState,l=t.pipetteEntities[n].spec,u=o.pipettes[n].nozzles,p=ip(u,l),d=(h,m)=>h.find(_=>_.includes(m)),f=t.labwareEntities[s]?.def;f==null||!c.getIsTiprack(f)?console.warn(`forDropTip expected ${s} to have definition and to be a tiprack`):(p===c.SINGLE?i.tipracks[s][a]=Qt:p===c.COLUMN?(d(f.ordering,a)??[]).forEach(m=>i.tipracks[s][m]=Qt):p===c.ALL?l.channels===96?f.ordering.reduce((m,_)=>m.concat(_),[]).forEach(function(m){i.tipracks[s][m]=Qt}):(d(f.ordering,a)??[]).forEach(m=>i.tipracks[s][m]=Qt):l.channels===1?i.tipracks[s][a]=Qt:l.channels===96?f.ordering.reduce((m,_)=>m.concat(_),[]).forEach(function(m){i.tipracks[s][m]=Qt}):(d(f.ordering,a)??[]).forEach(m=>i.tipracks[s][m]=Qt),o.pipettes[n].entityId=s,o.pipettes[n].wellName=a)}function pE(e,t,r){const{labwareId:n,liquidId:a,volumeByWell:s}=e;Object.entries(s).forEach(([o,i])=>{r.robotState.liquidState.labware[n][o][a]={volume:i}})}var Ml,fm;function dE(){if(fm)return Ml;fm=1;function e(t,r){for(var n=-1,a=t==null?0:t.length;++n<a&&r(t[n],n,t)!==!1;);return t}return Ml=e,Ml}var Fl,mm;function Jc(){if(mm)return Fl;mm=1;var e=Ac(),t=ms(),r=Object.prototype,n=r.hasOwnProperty;function a(s,o,i){var l=s[o];(!(n.call(s,o)&&t(l,i))||i===void 0&&!(o in s))&&e(s,o,i)}return Fl=a,Fl}var Ul,hm;function $a(){if(hm)return Ul;hm=1;var e=Jc(),t=Ac();function r(n,a,s,o){var i=!s;s||(s={});for(var l=-1,u=a.length;++l<u;){var p=a[l],d=o?o(s[p],n[p],p,s,n):void 0;d===void 0&&(d=n[p]),i?t(s,p,d):e(s,p,d)}return s}return Ul=r,Ul}var ql,_m;function fE(){if(_m)return ql;_m=1;var e=$a(),t=Pa();function r(n,a){return n&&e(a,t(a),n)}return ql=r,ql}var $l,ym;function mE(){if(ym)return $l;ym=1;function e(t){var r=[];if(t!=null)for(var n in Object(t))r.push(n);return r}return $l=e,$l}var Vl,bm;function hE(){if(bm)return Vl;bm=1;var e=ar(),t=Is(),r=mE(),n=Object.prototype,a=n.hasOwnProperty;function s(o){if(!e(o))return r(o);var i=t(o),l=[];for(var u in o)u=="constructor"&&(i||!a.call(o,u))||l.push(u);return l}return Vl=s,Vl}var Bl,Tm;function ep(){if(Tm)return Bl;Tm=1;var e=i_(),t=hE(),r=xr();function n(a){return r(a)?e(a,!0):t(a)}return Bl=n,Bl}var xl,gm;function _E(){if(gm)return xl;gm=1;var e=$a(),t=ep();function r(n,a){return n&&e(a,t(a),n)}return xl=r,xl}var da={exports:{}};da.exports;var Im;function yE(){return Im||(Im=1,(function(e,t){var r=Ht(),n=t&&!t.nodeType&&t,a=n&&!0&&e&&!e.nodeType&&e,s=a&&a.exports===n,o=s?r.Buffer:void 0,i=o?o.allocUnsafe:void 0;function l(u,p){if(p)return u.slice();var d=u.length,f=i?i(d):new u.constructor(d);return u.copy(f),f}e.exports=l})(da,da.exports)),da.exports}var Hl,Em;function bE(){if(Em)return Hl;Em=1;function e(t,r){var n=-1,a=t.length;for(r||(r=Array(a));++n<a;)r[n]=t[n];return r}return Hl=e,Hl}var zl,wm;function TE(){if(wm)return zl;wm=1;var e=$a(),t=yc();function r(n,a){return e(n,t(n),a)}return zl=r,zl}var jl,Sm;function tp(){if(Sm)return jl;Sm=1;var e=l_(),t=e(Object.getPrototypeOf,Object);return jl=t,jl}var Gl,Am;function _y(){if(Am)return Gl;Am=1;var e=dc(),t=tp(),r=yc(),n=s_(),a=Object.getOwnPropertySymbols,s=a?function(o){for(var i=[];o;)e(i,r(o)),o=t(o);return i}:n;return Gl=s,Gl}var Wl,Lm;function gE(){if(Lm)return Wl;Lm=1;var e=$a(),t=_y();function r(n,a){return e(n,t(n),a)}return Wl=r,Wl}var Yl,Om;function rp(){if(Om)return Yl;Om=1;var e=n_(),t=_y(),r=ep();function n(a){return e(a,r,t)}return Yl=n,Yl}var Kl,Rm;function IE(){if(Rm)return Kl;Rm=1;var e=Object.prototype,t=e.hasOwnProperty;function r(n){var a=n.length,s=new n.constructor(a);return a&&typeof n[0]=="string"&&t.call(n,"index")&&(s.index=n.index,s.input=n.input),s}return Kl=r,Kl}var Xl,km;function np(){if(km)return Xl;km=1;var e=r_();function t(r){var n=new r.constructor(r.byteLength);return new e(n).set(new e(r)),n}return Xl=t,Xl}var Zl,vm;function EE(){if(vm)return Zl;vm=1;var e=np();function t(r,n){var a=n?e(r.buffer):r.buffer;return new r.constructor(a,r.byteOffset,r.byteLength)}return Zl=t,Zl}var Ql,Pm;function wE(){if(Pm)return Ql;Pm=1;var e=/\w*$/;function t(r){var n=new r.constructor(r.source,e.exec(r));return n.lastIndex=r.lastIndex,n}return Ql=t,Ql}var Jl,Cm;function SE(){if(Cm)return Jl;Cm=1;var e=kn(),t=e?e.prototype:void 0,r=t?t.valueOf:void 0;function n(a){return r?Object(r.call(a)):{}}return Jl=n,Jl}var eu,Nm;function AE(){if(Nm)return eu;Nm=1;var e=np();function t(r,n){var a=n?e(r.buffer):r.buffer;return new r.constructor(a,r.byteOffset,r.length)}return eu=t,eu}var tu,Dm;function LE(){if(Dm)return tu;Dm=1;var e=np(),t=EE(),r=wE(),n=SE(),a=AE(),s="[object Boolean]",o="[object Date]",i="[object Map]",l="[object Number]",u="[object RegExp]",p="[object Set]",d="[object String]",f="[object Symbol]",h="[object ArrayBuffer]",m="[object DataView]",_="[object Float32Array]",b="[object Float64Array]",T="[object Int8Array]",y="[object Int16Array]",A="[object Int32Array]",w="[object Uint8Array]",I="[object Uint8ClampedArray]",S="[object Uint16Array]",L="[object Uint32Array]";function g(E,k,v){var $=E.constructor;switch(k){case h:return e(E);case s:case o:return new $(+E);case m:return t(E,v);case _:case b:case T:case y:case A:case w:case I:case S:case L:return a(E,v);case i:return new $;case l:case d:return new $(E);case u:return r(E);case p:return new $;case f:return n(E)}}return tu=g,tu}var ru,Mm;function OE(){if(Mm)return ru;Mm=1;var e=ar(),t=Object.create,r=(function(){function n(){}return function(a){if(!e(a))return{};if(t)return t(a);n.prototype=a;var s=new n;return n.prototype=void 0,s}})();return ru=r,ru}var nu,Fm;function RE(){if(Fm)return nu;Fm=1;var e=OE(),t=tp(),r=Is();function n(a){return typeof a.constructor=="function"&&!r(a)?e(t(a)):{}}return nu=n,nu}var au,Um;function kE(){if(Um)return au;Um=1;var e=Ca(),t=nr(),r="[object Map]";function n(a){return t(a)&&e(a)==r}return au=n,au}var su,qm;function vE(){if(qm)return su;qm=1;var e=kE(),t=Tc(),r=gc(),n=r&&r.isMap,a=n?t(n):e;return su=a,su}var ou,$m;function PE(){if($m)return ou;$m=1;var e=Ca(),t=nr(),r="[object Set]";function n(a){return t(a)&&e(a)==r}return ou=n,ou}var iu,Vm;function CE(){if(Vm)return iu;Vm=1;var e=PE(),t=Tc(),r=gc(),n=r&&r.isSet,a=n?t(n):e;return iu=a,iu}var lu,Bm;function yy(){if(Bm)return lu;Bm=1;var e=hc(),t=dE(),r=Jc(),n=fE(),a=_E(),s=yE(),o=bE(),i=TE(),l=gE(),u=c_(),p=rp(),d=Ca(),f=IE(),h=LE(),m=RE(),_=Qe(),b=Ts(),T=vE(),y=ar(),A=CE(),w=Pa(),I=ep(),S=1,L=2,g=4,E="[object Arguments]",k="[object Array]",v="[object Boolean]",$="[object Date]",q="[object Error]",ee="[object Function]",de="[object GeneratorFunction]",Te="[object Map]",se="[object Number]",Ie="[object Object]",Pe="[object RegExp]",He="[object Set]",Ve="[object String]",te="[object Symbol]",Se="[object WeakMap]",ze="[object ArrayBuffer]",Ce="[object DataView]",Ee="[object Float32Array]",X="[object Float64Array]",W="[object Int8Array]",C="[object Int16Array]",P="[object Int32Array]",V="[object Uint8Array]",M="[object Uint8ClampedArray]",oe="[object Uint16Array]",U="[object Uint32Array]",z={};z[E]=z[k]=z[ze]=z[Ce]=z[v]=z[$]=z[Ee]=z[X]=z[W]=z[C]=z[P]=z[Te]=z[se]=z[Ie]=z[Pe]=z[He]=z[Ve]=z[te]=z[V]=z[M]=z[oe]=z[U]=!0,z[q]=z[ee]=z[Se]=!1;function x(F,H,ce,Ue,Je,Be){var pe,et=H&S,ht=H&L,Rt=H&g;if(ce&&(pe=Je?ce(F,Ue,Je,Be):ce(F)),pe!==void 0)return pe;if(!y(F))return F;var _t=_(F);if(_t){if(pe=f(F),!et)return o(F,pe)}else{var Re=d(F),tt=Re==ee||Re==de;if(b(F))return s(F,et);if(Re==Ie||Re==E||tt&&!Je){if(pe=ht||tt?{}:m(F),!et)return ht?l(F,a(pe,F)):i(F,n(pe,F))}else{if(!z[Re])return Je?F:{};pe=h(F,Re,et)}}Be||(Be=new e);var ge=Be.get(F);if(ge)return ge;Be.set(F,pe),A(F)?F.forEach(function(re){pe.add(x(re,H,ce,re,F,Be))}):T(F)&&F.forEach(function(re,ne){pe.set(ne,x(re,H,ce,ne,F,Be))});var ke=Rt?ht?p:u:ht?I:w,Ne=_t?void 0:ke(F);return t(Ne||F,function(re,ne){Ne&&(ne=re,re=F[ne]),r(pe,ne,x(re,H,ce,ne,F,Be))}),pe}return lu=x,lu}var uu,xm;function by(){if(xm)return uu;xm=1;function e(t,r,n){var a=-1,s=t.length;r<0&&(r=-r>s?0:s+r),n=n>s?s:n,n<0&&(n+=s),s=r>n?0:n-r>>>0,r>>>=0;for(var o=Array(s);++a<s;)o[a]=t[a+r];return o}return uu=e,uu}var cu,Hm;function NE(){if(Hm)return cu;Hm=1;var e=Es(),t=by();function r(n,a){return a.length<2?n:e(n,t(a,0,-1))}return cu=r,cu}var pu,zm;function DE(){if(zm)return pu;zm=1;var e=Pn(),t=iy(),r=NE(),n=Cn(),a=Object.prototype,s=a.hasOwnProperty;function o(i,l){l=e(l,i);var u=-1,p=l.length;if(!p)return!0;for(;++u<p;){var d=n(l[u]);if(d==="__proto__"&&!s.call(i,"__proto__")||(d==="constructor"||d==="prototype")&&u<p-1)return!1}var f=r(i,l);return f==null||delete f[n(t(l))]}return pu=o,pu}var du,jm;function ME(){if(jm)return du;jm=1;var e=vn(),t=tp(),r=nr(),n="[object Object]",a=Function.prototype,s=Object.prototype,o=a.toString,i=s.hasOwnProperty,l=o.call(Object);function u(p){if(!r(p)||e(p)!=n)return!1;var d=t(p);if(d===null)return!0;var f=i.call(d,"constructor")&&d.constructor;return typeof f=="function"&&f instanceof f&&o.call(f)==l}return du=u,du}var fu,Gm;function FE(){if(Gm)return fu;Gm=1;var e=ME();function t(r){return e(r)?void 0:r}return fu=t,fu}var mu,Wm;function UE(){if(Wm)return mu;Wm=1;var e=Kh();function t(r){var n=r==null?0:r.length;return n?e(r,1):[]}return mu=t,mu}var hu,Ym;function qE(){if(Ym)return hu;Ym=1;function e(t,r,n){switch(n.length){case 0:return t.call(r);case 1:return t.call(r,n[0]);case 2:return t.call(r,n[0],n[1]);case 3:return t.call(r,n[0],n[1],n[2])}return t.apply(r,n)}return hu=e,hu}var _u,Km;function Ty(){if(Km)return _u;Km=1;var e=qE(),t=Math.max;function r(n,a,s){return a=t(a===void 0?n.length-1:a,0),function(){for(var o=arguments,i=-1,l=t(o.length-a,0),u=Array(l);++i<l;)u[i]=o[a+i];i=-1;for(var p=Array(a+1);++i<a;)p[i]=o[i];return p[a]=s(u),e(n,this,p)}}return _u=r,_u}var yu,Xm;function $E(){if(Xm)return yu;Xm=1;function e(t){return function(){return t}}return yu=e,yu}var bu,Zm;function VE(){if(Zm)return bu;Zm=1;var e=$E(),t=__(),r=La(),n=t?function(a,s){return t(a,"toString",{configurable:!0,enumerable:!1,value:e(s),writable:!0})}:r;return bu=n,bu}var Tu,Qm;function BE(){if(Qm)return Tu;Qm=1;var e=800,t=16,r=Date.now;function n(a){var s=0,o=0;return function(){var i=r(),l=t-(i-o);if(o=i,l>0){if(++s>=e)return arguments[0]}else s=0;return a.apply(void 0,arguments)}}return Tu=n,Tu}var gu,Jm;function gy(){if(Jm)return gu;Jm=1;var e=VE(),t=BE(),r=t(e);return gu=r,gu}var Iu,eh;function xE(){if(eh)return Iu;eh=1;var e=UE(),t=Ty(),r=gy();function n(a){return r(t(a,void 0,e),a+"")}return Iu=n,Iu}var Eu,th;function HE(){if(th)return Eu;th=1;var e=va(),t=yy(),r=DE(),n=Pn(),a=$a(),s=FE(),o=xE(),i=rp(),l=1,u=2,p=4,d=o(function(f,h){var m={};if(f==null)return m;var _=!1;h=e(h,function(T){return T=n(T,f),_||(_=T.length>1),T}),a(f,i(f),m),_&&(m=t(m,l|u|p,s));for(var b=h.length;b--;)r(m,h[b]);return m});return Eu=d,Eu}var zE=HE();const jE=xe(zE),tc="TOUCHED_PIPETTABLE_LABWARE";var wu,rh;function GE(){if(rh)return wu;rh=1;var e=Ec();function t(r,n){return e(r,n)}return wu=t,wu}var WE=GE();const YE=xe(WE),Ns=e=>{const{node:t,stack:r=[],robotState:n,memo:a=new Map}=e;let s=r;if(!(typeof t=="object"&&"labwareId"in t))return s=[...r,t],a.set(t,s),{stack:s,memo:a};const{labwareId:o}=t,i=n.labware[o];if(i!=null&&i.stackedOnNode!=null){const{stack:l,memo:u}=Ns({node:i.stackedOnNode,stack:[...r,t],robotState:n,memo:a});Iy(a,u),s=l,a.set(t,s)}return{stack:s,memo:a}},KE=e=>{const{node:t,robotState:r,deckDef:n,deckConfiguration:a}=e,{stack:s}=Ns({node:t,robotState:r}),{cutoutFixtures:o}=n,i=s.find(l=>typeof l=="object"&&"addressableAreaName"in l);if(i!=null&&typeof i=="object"&&"addressableAreaName"in i){const{addressableAreaName:l}=i;for(const{id:u,providesAddressableAreas:p}of o){const[d]=Object.entries(p).find(([f,h])=>h.includes(l))??[];if(d!=null){const f=a.find(({cutoutId:T})=>T===d),{cutoutFixtureId:h,cutoutId:m}=f,_=h===u&&m===d,b=Object.entries(r.modules).find(([T,{slot:y}])=>c.FLEX_CUTOUT_BY_SLOT_ID[y]===m);if(_&&b!=null)return b[0]}}}return null},Iy=(e,t)=>{t.forEach((r,n)=>{e.set(n,r)})},XE=(e,t)=>e.some(r=>YE(r,t)),Ey=e=>{const{labwareId:t,robotState:r}=e,n=new Map,a={labwareId:t};let s=[];for(const[o,{stackedOnNode:i}]of Object.entries(r.labware)){const l={labwareId:o};if(i==null)continue;let u;const p=n.get(l);if(p!=null)u=p;else{const{stack:d,memo:f}=Ns({node:l,robotState:r,memo:n});if(Iy(n,f),!XE(d,a))continue;n.set(l,d),u=d}u.length>s.length&&(s=u)}return s},wy=e=>{const t=[],r=new Set;for(const n of Object.keys(e.labware)){if(r.has(n))continue;const a=Ey({labwareId:n,robotState:e});a.forEach(s=>{typeof s=="object"&&"labwareId"in s&&r.add(s.labwareId)}),t.push(a)}return t},ap=e=>{const{moduleId:t,robotState:r,moduleEntities:n,deckDef:a}=e,s=r.modules[t],o=n[t];if(s==null||o==null)return null;const{slot:i}=s,{model:l}=o,u=c.getAddressableAreaNamesFromLoadedModule(l,i,a);return u.length===0?null:u[0]},ZE=e=>{const{location:t,robotState:r,moduleEntities:n,deckDef:a}=e;if(t==="offDeck"||t==="systemLocation"||t==="wasteChuteLocation")return null;if("slotName"in t)return t.slotName;if("addressableAreaName"in t)return t.addressableAreaName;if("moduleId"in t){const{moduleId:s}=t;return ap({moduleId:s,robotState:r,moduleEntities:n,deckDef:a})}return null},Sy=e=>{const{deckConfiguration:t,deckDefinition:r}=e;return t.reduce((n,{cutoutFixtureId:a,cutoutId:s})=>((r.cutoutFixtures.find(({id:i})=>a===i)?.providesAddressableAreas[s]??[]).forEach(i=>{n.add(i)}),n),new Set)},QE=e=>{const{robotState:t,deckConfiguration:r,deckDefinition:n,moduleEntities:a}=e,s=Sy({deckConfiguration:r,deckDefinition:n}),o=new Set(s),i=wy(t);for(const l of i){const u=Yc(l);if(typeof u=="object"&&"addressableAreaName"in u){const{addressableAreaName:p}=u;o.delete(p)}if(typeof u=="object"&&"slotName"in u){const{slotName:p}=u;o.delete(p)}if(typeof u=="object"&&"moduleId"in u){const{moduleId:p}=u,d=ap({moduleId:p,robotState:t,moduleEntities:a,deckDef:n});d!=null&&o.delete(d)}}return o},JE=e=>{const t=e.toLowerCase();return t.includes("chute")||t.includes("waste")||t.startsWith("gripper")||t==="96channelwastechute"},Ay=e=>{const{stack:t,subjectLabwareId:r,moduleEntities:n,labwareEntityIds:a,modules:s}=e;if(t.length===0||t[0]!==r||t.length<2)return;const o=t[1];if(o===Ze){const u=t[2];return u==null?void 0:{kind:"inStackerHopper",moduleId:u}}if(n[o]!=null)return{moduleId:o};if(a.has(o))return{labwareId:o};if(o==="offDeck")return"offDeck";if(o==="systemLocation")return"systemLocation";if(o==="wasteChuteLocation")return"wasteChuteLocation";if(JE(o))return{addressableAreaName:o};const i=ry(o,s,n)??o;if(Object.entries(s).some(([u,p])=>n[u]?.type===c.FLEX_STACKER_MODULE_TYPE&&p.slot===i)){const u=Rs(i);if(u!=null)return{addressableAreaName:u}}return{slotName:o}},ew=e=>typeof e=="object"&&e!==null&&"kind"in e&&e.kind==="inStackerHopper",tw=e=>typeof e!="object"||e===null?!1:!ew(e),rw=(e,t)=>{const{id:r,def:n}=e,{id:a,def:s}=t,o=n.dimensions.xDimension,i=n.dimensions.yDimension,l=s.dimensions.xDimension,u=s.dimensions.yDimension;return o>l&&i>u?{containerLabwareId:r,containedLabwareId:a}:l>o&&u>i?{containerLabwareId:a,containedLabwareId:r}:null},sp=(e,t)=>{const r=new Map;for(const a of Object.keys(e)){const s=e[a].stackedOnNode;if(s==null||!tw(s))continue;const o=JSON.stringify(s),i=r.get(o)??[];i.push(a),r.set(o,i)}const n={};for(const a of r.values()){if(a.length!==2)continue;const[s,o]=a,i=t[s],l=t[o];if(i==null||l==null)continue;const u=rw(i,l);if(u==null)continue;const{containerLabwareId:p,containedLabwareId:d}=u;n[p]=d}return Object.keys(n).length===0?e:rr(e,(a,s)=>n[s]!=null?{...a,contains:n[s]}:a)},nw=(e,t,r)=>{const n=Object.keys(e.labware),a=new Set(n);let s=rr(e.labware,(o,i)=>{const l=o.stackedOnNode??Ay({stack:o.stack,subjectLabwareId:i,moduleEntities:t,labwareEntityIds:a,modules:e.modules});return l!=null?{...o,stackedOnNode:l}:{...o}});return s=sp(s,r),{...e,labware:s}};function aw(e,t,r){const{labwareId:n,newLocation:a}=e,{robotState:s}=r,{labwareEntities:o}=t,{modules:i,labware:l}=s;if(l[n]==null)return;const u=G(l[n].stack),p=Hc(l,u,n),d=p.indexOf(n),f=p.slice(0,d+1),h=c.getIsLid(o[n].def);let m=!1;const _=Object.entries(i).find(([g,{slot:E}])=>{const{type:k}=t.moduleEntities[g]??{};return k===c.FLEX_STACKER_MODULE_TYPE&&E===u})??null,b=_!=null&&_[1].moduleState.type===c.FLEX_STACKER_MODULE_TYPE?Jt.map(g=>_[1].moduleState.labwareOnShuttle?.[g]).filter(g=>g!=null):[],T=b.includes(n)?b.slice(0,b.indexOf(n)+1):[];if(_!=null&&_[1].moduleState.type===c.FLEX_STACKER_MODULE_TYPE){const g=_[1].moduleState,E=Jt.findIndex(k=>g.labwareOnShuttle?.[k]===n);if(E!==-1&&g.labwareOnShuttle!=null)for(const k of Jt.slice(E,Jt.length))if(k==="primaryLabwareId"){g.labwareOnShuttle=null;break}else g.labwareOnShuttle[k]=null}const y=Object.entries(i).find(([g,{slot:E}])=>{const{type:k}=t.moduleEntities[g]??{};return k===c.FLEX_STACKER_MODULE_TYPE&&typeof a=="object"&&("moduleId"in a&&a.moduleId===g||"slotName"in a&&E===a.slotName)})??null,[A,w]=y??[];if(A!=null&&w!=null){const g=T.length>0?T:fa({slot:u,labwareState:l,modulesState:i}),E=g.indexOf(n),k=w.moduleState;if(E!==-1){const v=g.slice(0,E+1).toReversed();if(k.labwareOnShuttle==null&&(k.labwareOnShuttle={primaryLabwareId:"",adapterLabwareId:null,lidLabwareId:null}),v.length===3)for(let $=0;$<Jt.length;$++){const q=Jt[$];k.labwareOnShuttle[q]=v[$]}else if(v.length===2){const $=v.some(q=>t.labwareEntities[q].def.allowedRoles?.some(ee=>ee==="lid"))?["primaryLabwareId","lidLabwareId"]:["adapterLabwareId","primaryLabwareId"];for(let q=0;q<$.length;q++){const ee=$[q];k.labwareOnShuttle[ee]=v[q]}}else v.length===1&&(k.labwareOnShuttle.primaryLabwareId=v[0])}}const I=[];if(c.locationIsOffDeck(a))I.push(a);else if("moduleId"in a)if(i[a.moduleId].moduleState.type===c.FLEX_STACKER_MODULE_TYPE)I.push(i[a.moduleId].slot);else if(t.moduleEntities[a.moduleId]?.type===c.VACUUM_MODULE_TYPE){const g=i[a.moduleId].slot,E=fa({slot:g,labwareState:l,modulesState:i});E.length>0?I.push(...E):I.push(a.moduleId,g)}else I.push(a.moduleId,i[a.moduleId].slot);else if("slotName"in a){const{slotName:g}=a;g in l?(m=c.getIsPipettableLabware(o[g].def),I.push(...l[g].stack)):I.push(g)}else if("labwareId"in a){const g=a.labwareId;m=c.getIsPipettableLabware(o[g].def);const E=l[g].stack;I.push(...E)}else if("addressableAreaName"in a)if(ma(a.addressableAreaName)){const g=Object.entries(i).find(([E])=>t.moduleEntities[E]?.type===c.VACUUM_MODULE_TYPE)?.[0];I.push(cc),g!=null&&I.push(g),I.push(a.addressableAreaName)}else I.push(a.addressableAreaName);f.forEach((g,E)=>{if(l[g]!=null){const k=f.slice(E+1);s.labware[g]={...s.labware[g],stack:[g,...k,...I],...h&&m?{sterility:tc}:{}}}});const S=typeof a=="object"&&"labwareId"in a&&c.getIsPipettableLabware(o[a.labwareId].def);let L=a;if(typeof a=="object"&&a!==null&&"moduleId"in a&&i[a.moduleId].moduleState.type===c.FLEX_STACKER_MODULE_TYPE){const g=Rs(i[a.moduleId].slot);g!=null&&(L={addressableAreaName:g})}else if(typeof a=="object"&&a!==null&&"moduleId"in a&&t.moduleEntities[a.moduleId]?.type===c.VACUUM_MODULE_TYPE){const g=i[a.moduleId].slot,E=fa({slot:g,labwareState:l,modulesState:i}),k=E.length>0?E[0]:null;k!=null&&k in o&&(L={labwareId:k})}s.labware[n].stackedOnNode=L,S&&(s.labware[n].sterility=tc),s.labware=sp(rr(s.labware,g=>jE(g,"contains")),o)}function sw(e,t,r){const{pipetteId:n,addressableAreaName:a}=e,{wasteChuteEntities:s,trashBinEntities:o}=t,i=c.WASTE_CHUTE_ADDRESSABLE_AREAS.includes(a),l=Object.values(o).find(d=>d.location===G_(a))?.id,u=i?Object.values(s)[0].id:l,{robotState:p}=r;p.pipettes[n]={...p.pipettes[n],entityId:u}}function ow(e,t,r){const{pipetteId:n,labwareId:a,wellName:s}=e,{robotState:o}=r;o.pipettes[n]={...o.pipettes[n],entityId:a,wellName:s}}function iw(e,t,r){const{pipetteId:n,labwareId:a,wellName:s}=e,o=t.pipetteEntities[n].spec,i=t.labwareEntities[a].def;if(!c.getIsTiprack(i))throw new Error(`forPickUpTip expected ${a} to be a tiprack`);const l=r.robotState.tipState,u=r.robotState.pipettes[n].nozzles,p=r.robotState.pipettes[n].primaryNozzle,d=ip(u,o),f=(_,b)=>_.find(T=>T.includes(b)),h=(_,b)=>{const T=_.findIndex(A=>A.includes(b));if(T===-1)return null;const y=_[T].indexOf(b);return _.map(A=>A[y])},m=(_,b)=>{const T=c.PARTIAL_NOZZLE_MAP[p],y=_.findIndex(L=>L.includes(b)),A=_[y].indexOf(b),w=_[y];if(w.length-A<T){const L=w.length-T;return w.slice(L,w.length)}const S=A+T;return w.slice(A,Math.min(S,w.length))};if(l.pipettes[n].hasTip=!0,l.pipettes[n].tiprackURI=a,d===c.SINGLE)l.tipracks[a][s]=ue;else if(d===c.PARTIAL_COLUMN&&p){const _=m(i.ordering,s);_==null?console.error(`Invalid primary well for tip pick up for partial config: ${s}`):_.forEach(function(b){l.tipracks[a][b]=ue})}else if(d===c.COLUMN){const _=f(i.ordering,s);_==null&&console.error(`Invalid primary well for tip pickup: ${s}`),_?.forEach(function(b){l.tipracks[a][b]=ue})}else if(d===c.ROW){const _=h(i.ordering,s);_==null&&console.error("Invalid primary well for tip pickup: "+s),_?.forEach(function(b){l.tipracks[a][b]=ue})}else if(d===c.ALL)if(o.channels===96)i.ordering.reduce((b,T)=>b.concat(T),[]).forEach(function(b){l.tipracks[a][b]=ue});else{const _=f(i.ordering,s);_==null&&console.error(`Invalid primary well for tip pickup: ${s}`),_?.forEach(function(b){l.tipracks[a][b]=ue})}else if(o.channels===1)l.tipracks[a][s]=ue;else if(o.channels===96)i.ordering.reduce((b,T)=>b.concat(T),[]).forEach(function(b){l.tipracks[a][b]=ue});else{const _=f(i.ordering,s);_==null&&console.error(`Invalid primary well for tip pickup: ${s}`),_?.forEach(function(b){l.tipracks[a][b]=ue})}r.robotState.pipettes[n].tiprackId=a,r.robotState.pipettes[n].tipWell=s}const lw={clean:Ra,empty:ue,used:Qt};function uw(e,t,r){const{labwareId:n,wellNames:a,tipWellState:s="clean"}=e,o=lw[s],i=r.robotState.tipState.tipracks[n];i!=null&&a.forEach(l=>{i[l]=o})}const jr=(e,t)=>{const r=Ot(e,t);return r.type===c.THERMOCYCLER_MODULE_TYPE?r:(console.error(`Thermocycler state updater expected ${t} moduleState to be thermocycler, but it was ${r.type}`),{})},cw=(e,t,r)=>{const{moduleId:n,celsius:a}=e,{robotState:s}=r,o=jr(s,n);o.currentBlockActivity={type:"blockTargetTemp",blockTargetTemp:a}},pw=(e,t,r)=>{const{moduleId:n,celsius:a}=e,{robotState:s}=r,o=jr(s,n);o.lidTargetTemp=a},dw=(e,t,r)=>{},fw=(e,t,r)=>{},mw=(e,t,r)=>{},hw=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=jr(a,n);s.currentBlockActivity={type:"blockDeactivated"}},_w=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=jr(a,n);s.lidTargetTemp=null},yw=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=jr(a,n);s.lidOpen=!1},bw=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=jr(a,n);s.lidOpen=!0},Tw=(e,t,r)=>{const{profile:n,...a}=e;Ly({profileElements:n,...a},t,r)},Ly=(e,t,r)=>{const n=NaN+D();Oy({...e,taskId:n},t,r),Ry(n,r,c.THERMOCYCLER_MODULE_TYPE)},Oy=(e,t,r)=>{const{moduleId:n,taskId:a,profileElements:s}=e,{robotState:o}=r,i=jr(o,n);i.currentBlockActivity={type:"profile",profileElements:s,taskId:a??null},i.numProfilesStarted++},gw=e=>{if(e.currentBlockActivity.type==="profile"){const t=Iw(e.currentBlockActivity.profileElements);return e.currentBlockActivity=t!=null?{type:"blockTargetTemp",blockTargetTemp:t}:{type:"blockDeactivated"},!0}else return!1};function Iw(e){const t=Yc(cp(e));return t!=null?t.celsius:null}const Ew=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=ot(a,n);s!=null&&(s.ventStatus=pc)},ww=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=ot(a,n);s!=null&&(s.ventStatus=ka)},Sw=(e,t,r)=>{const{moduleId:n,gaugePressure:a,duration:s,ventAfter:o=!0,taskId:i}=e,{robotState:l}=r,u=ot(l,n);u!=null&&(s==null||i==null?u.currentPumpActivity={type:"indefiniteHold",mode:zu,targetPressure:a}:(u.currentPumpActivity={type:"timedHold",mode:zu,targetPressure:a,durationSeconds:s,taskId:i,ventAfter:o},u.numPumpActivitiesStarted++),u.ventStatus=ka)},Aw=(e,t,r)=>{const{moduleId:n,percentPower:a,duration:s,ventAfter:o=!0,taskId:i}=e,{robotState:l}=r,u=ot(l,n);u!=null&&(s==null||i==null?u.currentPumpActivity={type:"indefiniteHold",mode:Hu,targetPower:a}:(u.currentPumpActivity={type:"timedHold",mode:Hu,targetPower:a,durationSeconds:s,taskId:i,ventAfter:o},u.numPumpActivitiesStarted++),u.ventStatus=ka)},Lw=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=ot(a,n);s!=null&&(s.currentPumpActivity={type:"pumpDeactivated"})},Ow=(e,t,r)=>{const{moduleId:n,steps:a,taskId:s,ventAfter:o=!0}=e,{robotState:i}=r,l=ot(i,n);l==null||s==null||(l.currentPumpActivity={type:"profile",profileElements:a,taskId:s,ventAfter:o},l.numPumpActivitiesStarted++)},Rw=e=>{if(e.currentPumpActivity.type==="timedHold"||e.currentPumpActivity.type==="profile"){const t=e.currentPumpActivity.ventAfter;return e.currentPumpActivity={type:"pumpDeactivated"},e.ventStatus=t?pc:ka,!0}return!1};function kw(e,t,r){for(const n of e.task_ids)Ry(n,r)||r.warnings.push(sI())}const Ry=(e,t,r)=>{const{robotState:n}=t,a=Object.values(n.modules).find(s=>{if(r&&s.moduleState.type!==r)return!1;const o=s.moduleState.type==="thermocyclerModuleType"&&s.moduleState.currentBlockActivity.type==="profile"&&s.moduleState.currentBlockActivity.taskId===e,i=s.moduleState.type==="vacuumModuleType"&&(s.moduleState.currentPumpActivity.type==="timedHold"||s.moduleState.currentPumpActivity.type==="profile")&&s.moduleState.currentPumpActivity.taskId===e;return o||i});return a==null?!1:a.moduleState.type==="thermocyclerModuleType"?gw(a.moduleState):a.moduleState.type==="vacuumModuleType"?Rw(a.moduleState):(console.log(`unexpected module type with task: ${a.moduleState.type}`),!1)},Un=(e,t)=>{const r=Ot(e,t);return r.type===c.HEATERSHAKER_MODULE_TYPE?r:(console.error(`Heater-Shaker state updater expected ${t} moduleState to be heaterShaker, but it was ${r.type}`),{})},vw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a,celsius:s}=e,o=Un(n,a);o.targetTemp=s},Pw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Un(n,a);s.targetTemp=null},Cw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a,rpm:s}=e,o=Un(n,a);o.targetSpeed=s},Nw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Un(n,a);s.targetSpeed=null},Dw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Un(n,a);s.latchOpen=!0},Mw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Un(n,a);s.latchOpen=!1},Fw=(e,t,r)=>{const{pipetteId:n}=e,{robotState:a}=r,s=a.pipettes[n].entityId??"";Cs({invariantContext:t,pipetteId:n,prevLiquidState:a.liquidState,useFullVolume:!0,robotStateAndWarnings:r,entityId:s})},Uw=(e,t,r)=>{const{pipetteId:n}=e,{robotState:a}=r,s=a.pipettes[n].entityId??"";a.tipState.pipettes[n]={hasTip:!1,tiprackURI:null},Cs({invariantContext:t,prevLiquidState:a.liquidState,pipetteId:n,useFullVolume:!0,robotStateAndWarnings:r,entityId:s}),a.pipettes[n].tiprackId=void 0};function ky(e,t){e.type===c.MAGNETIC_MODULE_TYPE&&(e.engaged=t)}function qw(e,t,r){const{moduleId:n}=e,{robotState:a}=r,s=Ot(a,n);ky(s,!0)}function $w(e,t,r){const{moduleId:n}=e,{robotState:a}=r,s=Ot(a,n);ky(s,!1)}const Su=(e,t)=>{if(t==null)return console.error("expected to find defURI but could not in getLabwareByDefURI"),null;const r=e.findIndex(a=>a.labwareDefURI===t);if(r===-1)return null;const[n]=e.splice(r,1);return n.id},vy=(e,t,r,n)=>{const a=e.labwareInHopper??[];t.forEach(s=>{const{primaryLabwareId:o,adapterLabwareId:i,lidLabwareId:l}=s;r.labware[o]={stack:[o,...l!=null?[l]:[],...n]},i!=null&&(r.labware[i]={stack:[i,o,...l!=null?[l]:[],...n]}),l!=null&&(r.labware[l]={stack:[l,...n]}),a.push({primaryLabwareId:o,adapterLabwareId:i??null,lidLabwareId:l??null})}),e.labwareInHopper=a},Py=(e,t,r,n,a,s,o,i)=>{const u=Object.entries(e.labware).filter(([d,f])=>f[s]===t[s]).map(([d])=>d).map(d=>r[d]),p=[];for(let d=0;d<n;d++){const f=Su(u,t.storedLabwareDetails?.primaryLabwareURI),h=o!=null?Su(u,t.storedLabwareDetails?.adapterLabwareURI):null,m=i!=null?Su(u,t.storedLabwareDetails?.lidLabwareURI):null;f!=null&&(e.labware[f]={stack:[f,...m!=null?[m]:[],...a]},h!=null&&(e.labware[h]={stack:[h,f,...m!=null?[m]:[],...a]}),m!=null&&(e.labware[m]={stack:[m,...a]}),p.push({primaryLabwareId:f,adapterLabwareId:h,lidLabwareId:m})),t.labwareInHopper=p}},Vw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Object.entries(n.labware).filter(([,i])=>i.stack.includes(Ze)&&i.stack.includes(a)),o=mt(n,a);o!=null&&o.labwareInHopper!=null&&(e.count!=null?o.labwareInHopper=o.labwareInHopper.slice(0,e.count):o.labwareInHopper=[]),s.forEach(([i])=>{n.labware[i]={...n.labware[i],stack:[i,c.SYSTEM_LOCATION]}})},Bw=(e,t,r)=>{const{robotState:n}=r,{labwareEntities:a}=t,{moduleId:s,labware:o}=e,i=n.modules[s].slot,l=mt(n,s);if(l==null||l.storedLabwareDetails==null)return;const{primaryLabwareURI:u,adapterLabwareURI:p,lidLabwareURI:d}=l.storedLabwareDetails,f=[];for(const b of o){const T=a[b].labwareDefURI;if(T===u)f.push({primaryLabwareId:b,adapterLabwareId:null,lidLabwareId:null});else if(T===p){const y=f[f.length-1];y&&(y.adapterLabwareId=b)}else if(T===d){const y=f[f.length-1];y&&(y.lidLabwareId=b)}}const h=[Ze,s,i];for(const b of f){const T=[b.adapterLabwareId,b.primaryLabwareId,b.lidLabwareId,...h].filter(A=>A!=null);n.labware[b.primaryLabwareId]={...n.labware[b.primaryLabwareId],stack:T.slice(T.indexOf(b.primaryLabwareId))},b.adapterLabwareId!=null&&(n.labware[b.adapterLabwareId]={...n.labware[b.adapterLabwareId],stack:T.slice(T.indexOf(b.adapterLabwareId))}),b.lidLabwareId!=null&&(n.labware[b.lidLabwareId]={...n.labware[b.lidLabwareId],stack:T.slice(T.indexOf(b.lidLabwareId))});let y=null;for(const A of T)a[A]!=null&&(y==null?n.labware[A].stackedOnNode={kind:"inStackerHopper",moduleId:s}:n.labware[A].stackedOnNode={labwareId:y},y=A)}const m=l.labwareInHopper??[],_=f.map(({primaryLabwareId:b,adapterLabwareId:T,lidLabwareId:y})=>({primaryLabwareId:b,adapterLabwareId:T,lidLabwareId:y}));l.labwareInHopper=[...m,..._]},xw=(e,t,r)=>{const{robotState:n}=r,{labwareEntities:a}=t,{moduleId:s,primaryLabware:o,initialCount:i,adapterLabware:l,lidLabware:u,initialStoredLabware:p}=e,d=n.modules[s].slot,f=mt(n,s),h=[Ze,s,d];f!=null&&(f.storedLabwareDetails={primaryLabwareURI:`${o.namespace}/${o.loadName}/${o.version}`,adapterLabwareURI:l!=null?`${l.namespace}/${l.loadName}/${l.version}`:null,lidLabwareURI:u!=null?`${u.namespace}/${u.loadName}/${u.version}`:null},i!=null?Py(n,f,a,i,h,"setStoredLabwareCount",l?.loadName,u?.loadName):p!=null&&vy(f,p,n,h),f.setStoredLabwareCount=(f?.setStoredLabwareCount??0)+1)},Hw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a,labware:s}=e,{labwareEntities:o}=t,i=n.modules[a].slot,l=mt(n,a);if(l==null)return;const u=s.map(I=>I.split(":")[1]),p=new Set(u),d=Array.from(p),f=d.find(I=>Object.values(o).find(S=>S.labwareDefURI===I&&!S.def.allowedRoles?.includes("lid")&&!S.def.allowedRoles?.includes("adapter"))),h=d.find(I=>Object.values(o).find(S=>S.labwareDefURI===I&&S.def.allowedRoles?.includes("adapter"))),m=d.find(I=>Object.values(o).find(S=>S.labwareDefURI===I&&S.def.allowedRoles?.includes("lid")));if(f==null)throw new Error(`expected to find primaryLabwareURI for storedLabwareDetails but could not with labware ${s}`);l.storedLabwareDetails={primaryLabwareURI:f,adapterLabwareURI:h??null,lidLabwareURI:m??null};const _=[];for(const I of s){const S=o[I].labwareDefURI;if(S===f)_.push({primary:I,adapter:null,lid:null});else if(S===h){const L=_[_.length-1];L&&(L.adapter=I)}else if(S===m){const L=_[_.length-1];L&&(L.lid=I)}}const b=[Ze,a,i];for(const I of _){const S=[I.adapter,I.primary,I.lid,...b].filter(L=>L!=null);n.labware[I.primary]={...n.labware[I.primary],stack:S.slice(S.indexOf(I.primary))},I.adapter!=null&&(n.labware[I.adapter]={...n.labware[I.adapter],stack:S.slice(S.indexOf(I.adapter))}),I.lid!=null&&(n.labware[I.lid]={...n.labware[I.lid],stack:S.slice(S.indexOf(I.lid))})}const T=l.labwareInHopper??[],y=_.map(I=>({primaryLabwareId:I.primary,adapterLabwareId:I.adapter,lidLabwareId:I.lid})),A=new Map(T.map(I=>[I.primaryLabwareId,I])),w=[];for(const I of y)w.push(I),A.delete(I.primaryLabwareId);for(const I of T)A.has(I.primaryLabwareId)&&w.push(I);l.labwareInHopper=w},zw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a,count:s,labwareToStore:o}=e,{labwareEntities:i}=t,l=n.modules[a].slot,u=mt(n,a),p=[Ze,a,l];if(u!=null){const d=u.storedLabwareDetails?.adapterLabwareURI,f=u.storedLabwareDetails?.lidLabwareURI;s!=null?Py(n,u,i,s,p,"fillCount",d,f):o!=null&&vy(u,o,n,p),u.fillCount=(u?.fillCount??0)+1}},jw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=mt(n,a),o=n.modules[a].slot;if(s!=null){const{labwareInHopper:i,labwareOnShuttle:l}=s;if(i!=null&&i.length>0&&l==null){const u=i[0];s.labwareOnShuttle=u,i.shift();const p=[o];let d=null;for(const f of Jt){const h=u[f];if(h!=null){if(p.unshift(h),n.labware[h].stack=[...p],d==null){const m=Rs(o);m!=null?n.labware[h].stackedOnNode={addressableAreaName:m}:console.warn(`Could not find an addressable area for retrieved labware in stacker module ${a} at slot ${o}`)}else n.labware[h].stackedOnNode={labwareId:d};d=h}}}}},Gw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=mt(n,a),o=n.modules[a].slot;if(s!=null){const{labwareOnShuttle:i}=s;if(i!=null){s.labwareInHopper=[i,...s.labwareInHopper??[]],s.labwareOnShuttle=null;let l=null;for(const u of Jt){const p=i[u];p!=null&&(n.labware[p].stack=[p,Ze,a,o],l==null?(n.labware[p].stackedOnNode={kind:"inStackerHopper",moduleId:a},l=p):n.labware[p].stackedOnNode={labwareId:l})}s.storedLabwareDetails==null&&(s.storedLabwareDetails={primaryLabwareURI:t.labwareEntities[i.primaryLabwareId].labwareDefURI,adapterLabwareURI:i.adapterLabwareId!=null?t.labwareEntities[i.adapterLabwareId].labwareDefURI:null,lidLabwareURI:i.lidLabwareId!=null?t.labwareEntities[i.lidLabwareId].labwareDefURI:null})}}};function Cy(e,t,r){e.type===c.TEMPERATURE_MODULE_TYPE&&(e.targetTemperature=t,e.status=r)}function Ww(e,t,r){const{robotState:n}=r,{moduleId:a,celsius:s}=e,o=Ot(n,a);Cy(o,s,lc)}function Yw(e,t,r){const{robotState:n}=r,{moduleId:a,celsius:s}=e,o=Ot(n,a);o.type===c.TEMPERATURE_MODULE_TYPE&&s===o.targetTemperature&&(o.status=ic)}function Kw(e,t,r){const{robotState:n}=r,{moduleId:a}=e,s=Ot(n,a);Cy(s,null,Oa)}function Ny(e,t,r){if(!e)throw new Error("undefined command passed to getNextRobotStateAndWarning");switch(e.commandType){case"aspirateWhileTracking":case"aspirate":case"aspirateInPlace":if(e.meta?.isAirGap===!0)break;oE(e.params,t,r);break;case"airGapInPlace":jI(e.params,t,r);break;case"dispenseWhileTracking":case"dispense":case"dispenseInPlace":if(e.meta?.isAirGap===!0)break;uE(e.params,t,r);break;case"blowout":iE(e.params,t,r);break;case"dropTip":cE(e.params,t,r);break;case"pickUpTip":iw(e.params,t,r);break;case"setTipState":uw(e.params,t,r);break;case"magneticModule/engage":qw(e.params,t,r);break;case"magneticModule/disengage":$w(e.params,t,r);break;case"moveLabware":aw(e.params,t,r);break;case"waitForTasks":kw(e.params,t,r);break;case"flexStacker/setStoredLabware":xw(e.params,t,r);break;case"flexStacker/setStoredLabwareItems":Hw(e.params,t,r);break;case"flexStacker/prepareShuttle":case"flexStacker/closeLatch":case"flexStacker/openLatch":break;case"flexStacker/empty":Vw(e.params,t,r);break;case"flexStacker/fill":zw(e.params,t,r);break;case"flexStacker/fillItems":Bw(e.params,t,r);break;case"flexStacker/retrieve":jw(e.params,t,r);break;case"flexStacker/store":Gw(e.params,t,r);break;case"touchTip":case"configureForVolume":case"loadPipette":case"loadLabware":case"loadModule":case"home":case"moveRelative":case"moveToSlot":case"moveToCoordinates":case"savePosition":case"waitForResume":case"waitForDuration":case"pause":case"delay":case"custom":case"comment":case"captureImage":case"prepareToAspirate":case"liquidProbe":case"loadLiquidClass":case"loadLidStack":case"loadLid":case"getTipPresence":case"identifyModule":case"getNextTip":case"retractAxis":case"sealPipetteToTip":case"tryLiquidProbe":case"unsealPipetteFromTip":case"verifyTipPresence":case"pressureDispense":case"createTimer":break;case"moveToAddressableArea":case"moveToAddressableAreaForDropTip":sw(e.params,t,r);break;case"moveToWell":ow(e.params,t,r);break;case"loadLiquid":pE(e.params,t,r);break;case"dropTipInPlace":Uw(e.params,t,r);break;case"blowOutInPlace":Fw(e.params,t,r);break;case"configureNozzleLayout":lE(e.params,t,r);break;case"temperatureModule/setTargetTemperature":Ww(e.params,t,r);break;case"temperatureModule/deactivate":Kw(e.params,t,r);break;case"temperatureModule/waitForTemperature":Yw(e.params,t,r);break;case"thermocycler/setTargetBlockTemperature":cw(e.params,t,r);break;case"thermocycler/setTargetLidTemperature":pw(e.params,t,r);break;case"thermocycler/waitForBlockTemperature":dw(e.params);break;case"thermocycler/waitForLidTemperature":fw(e.params);break;case"thermocycler/deactivateBlock":hw(e.params,t,r);break;case"thermocycler/deactivateLid":_w(e.params,t,r);break;case"thermocycler/closeLid":yw(e.params,t,r);break;case"thermocycler/openLid":bw(e.params,t,r);break;case"thermocycler/runProfile":Tw(e.params,t,r);break;case"thermocycler/runExtendedProfile":Ly(e.params,t,r);break;case"thermocycler/startRunExtendedProfile":Oy(e.params,t,r);break;case"thermocycler/awaitProfileComplete":mw(e.params);break;case"heaterShaker/deactivateHeater":Pw(e.params,t,r);break;case"heaterShaker/setTargetTemperature":vw(e.params,t,r);break;case"heaterShaker/setAndWaitForShakeSpeed":Cw(e.params,t,r);break;case"heaterShaker/deactivateShaker":Nw(e.params,t,r);break;case"heaterShaker/openLabwareLatch":Dw(e.params,t,r);break;case"heaterShaker/closeLabwareLatch":Mw(e.params,t,r);break;case"heaterShaker/waitForTemperature":break;case"absorbanceReader/openLid":xI(e.params,t,r);break;case"absorbanceReader/closeLid":HI(e.params,t,r);break;case"absorbanceReader/initialize":zI(e.params,t,r);break;case"absorbanceReader/read":break;case"vacuumModule/startSetVacuumPressure":Sw(e.params,t,r);break;case"vacuumModule/startSetVacuumPower":Aw(e.params,t,r);break;case"vacuumModule/openVent":Ew(e.params,t,r);break;case"vacuumModule/closeVent":ww(e.params,t,r);break;case"vacuumModule/stopVacuum":Lw(e.params,t,r);break;case"vacuumModule/startRunProfile":Ow(e.params,t,r);break;default:console.error(`unknown command: ${e.commandType} passed to getNextRobotStateAndWarning`)}}function Dy(e,t,r){return my({warnings:[],robotState:r},a=>{Ny(e,t,a)})}function op(e,t,r){const n=hy(e);return my({warnings:[],robotState:r},s=>{n.forEach(o=>{Ny(o,t,s)})})}const Xw=(e,t,r)=>{const n=e.reduce((a,s,o)=>{const i=a.timeline.length===0?r:Yc(a.timeline).robotState;if(a.errors!=null)return a;const l=s(t,i);if("errors"in l)return{timeline:a.timeline,errors:l.errors};const p=hy(l.commands).reduce((f,h)=>Dy(h,t,f.robotState),{robotState:i,warnings:[]}),d={commands:l.commands,robotState:p.robotState,warnings:l.warnings,stepInfo:{stepNumber:l.stepNumber,name:l.name,description:l.description},python:l.python};return{timeline:[...a.timeline,d],errors:null}},{timeline:[],errors:null});return{timeline:n.timeline,errors:n.errors}},qn=(e,t)=>{const r=t[e]?.stack;return r!=null?G(r):""},$n=e=>{if(e.type===c.VACUUM_MODULE_TYPE){const t=e;return t.currentPumpActivity.type==="timedHold"||t.currentPumpActivity.type==="profile"}if(e.type===c.THERMOCYCLER_MODULE_TYPE){const t=e;return t.currentBlockActivity.type==="profile"||t.currentBlockActivity.type==="blockTargetTemp"}return!1},Vn=e=>{const{pipette:t,labware:r,invariantContext:n,prevRobotState:a}=e;if(n.config.OT_PD_DISABLE_MODULE_RESTRICTIONS)return!1;const s=t?n.pipetteEntities[t]:null,o=r?G(a.labware[r]?.stack):null;if(!t||!r||!s||!o)return!1;const i=Object.keys(n.moduleEntities).some(l=>{const u=n.moduleEntities[l].model;if(Nh.includes(u)){const p=a.modules[l]?.slot;return p==="1"&&o==="4"||p==="3"&&o==="6"}else return!1});return c.GEN_ONE_MULTI_PIPETTES.includes(s.name)&&i},ae=(e,t,r)=>{const n=e.reduce((a,s)=>{if(a.errors.length>0)return a;const o=s(t,a.robotState);if("errors"in o)return{robotState:a.robotState,commands:a.commands,errors:o.errors,warnings:a.warnings};const i=[...a.commands,...o.commands],l=[...a.python?[a.python]:[],...o.python?[o.python]:[]].join(`
55
+ `),u=op(o.commands,t,a.robotState);return{...a,robotState:u.robotState,commands:i,warnings:[...a.warnings||[],...o.warnings||[],...u.warnings],...l&&{python:l}}},{robotState:r,commands:[],errors:[],warnings:[]});return n.errors.length>0?{errors:n.errors}:{commands:n.commands,warnings:n.warnings,...n.python&&{python:n.python}}},Va=(e,t,r)=>{const n=Fa(e,t[r]?.stack),a=n&&e[n].moduleState;return!!(a&&a.type===c.THERMOCYCLER_MODULE_TYPE&&a.lidOpen!==!0)},Zw=e=>e.commandCreatorFnName!=="delay"&&e.commandCreatorFnName!=="engageMagnet"&&e.commandCreatorFnName!=="disengageMagnet"&&e.commandCreatorFnName!=="setTemperature"&&e.commandCreatorFnName!=="deactivateTemperature"&&"pipette"in e?e.pipette:null,Qw=e=>e.commandCreatorFnName==="delay"||e.commandCreatorFnName==="engageMagnet"||e.commandCreatorFnName==="disengageMagnet"||e.commandCreatorFnName==="setTemperature"||e.commandCreatorFnName==="deactivateTemperature",Jw=new Date("2025-03-19T00:00:00Z"),eS=2,tS=22;function rS(e,t,r){const{labware:n,modules:a,pipettes:s,commands:o,liquids:i}=e,l=t.protocolType==="python"?t.apiVersion:null,u=l!=null&&l[0]>=eS&&l[1]>=tS,p=t.protocolType==="json"&&r>=Jw,d=c.getLabwareDefinitionsByURIForProtocol(o),f=i.reduce((y,A)=>{const{id:w,description:I,displayName:S,displayColor:L}=A;return{...y,[w]:{description:I,displayName:S??"Unknown Liquid",pythonName:"n/a",displayColor:L??"#B7B8B9",liquidGroupId:w}}},{}),h=a.reduce((y,A)=>{const{id:w,model:I}=A;return{...y,[w]:{id:w,type:c.getModuleType(I),model:I,pythonName:"n/a"}}},{}),m=n.reduce((y,A)=>{const{id:w,definitionUri:I}=A,S=d[I];return S==null||S.schemaVersion===3?y:{...y,[w]:{id:w,labwareDefURI:I,def:S,pythonName:"n/a"}}},{}),_=o.reduce((y,A)=>{if(A.commandType==="loadLidStack"&&A.result!=null){const{stackLabwareId:w,lidStackDefinition:I}=A.result;if(w!=null&&I!=null&&y[w]==null&&I.schemaVersion!==3)return{...y,[w]:{id:w,labwareDefURI:c.getLabwareDefURI(I),def:I,pythonName:"n/a"}}}return y},m),b=s.reduce((y,A)=>{const{id:w,pipetteName:I}=A,S=c.getPipetteSpecsV2(I),g=o.filter(v=>v.commandType==="pickUpTip"&&v.params.pipetteId===w).map(v=>_[v.params.labwareId]),E=Array.from(new Set(g.map(v=>v.labwareDefURI))),k=Array.from(new Set(g.map(v=>v.def)));return S==null||(y[w]={name:I,id:w,tiprackLabwareDef:k,tiprackDefURI:E,spec:S,pythonName:"n/a"}),y},{}),T=o.reduce((y,A)=>{if(A.commandType==="loadLidStack"&&A.result!=null){const{params:w}=A,I=Yu(w);return{...y,stagingAreaEntities:{...y.stagingAreaEntities,...I}}}else if((A.commandType==="loadLabware"||A.commandType==="loadLid")&&A.result!=null){const{params:w}=A,I=Yu(w);return{...y,stagingAreaEntities:{...y.stagingAreaEntities,...I}}}else if(A.commandType==="moveToAddressableArea"||A.commandType==="moveToAddressableAreaForDropTip"){const w=A.params.addressableAreaName,I=`${D()}:${w}`;let S=Hh;w==="fixedTrash"?S="cutout12":w.includes("WasteChute")?S="cutoutD3":w.includes("movableTrash")&&(S=`cutout${w.split("movableTrash")[1]}`);let L=y.trashBinEntities;Object.values(y.trashBinEntities).some(E=>E.location===S)||(w.includes("movableTrash")?L={...y.trashBinEntities,[I]:{pythonName:"trash_bin_1",id:I,location:S}}:w==="fixedTrash"&&(L={...y.trashBinEntities,[I]:{pythonName:"trash_bin_1",id:I,location:S}}));let g=y.wasteChuteEntities;return w.includes("WasteChute")&&(g={[I]:{pythonName:"waste_chute",id:I,location:S}}),{...y,trashBinEntities:L,wasteChuteEntities:g}}return y},{wasteChuteEntities:{},trashBinEntities:{},stagingAreaEntities:{},gripperEntities:{},config:{OT_PD_DISABLE_MODULE_RESTRICTIONS:!0}});return{labwareEntities:_,pipetteEntities:b,moduleEntities:h,liquidEntities:u||p?f:{},...T}}const nS={A3:"A4",B3:"B4",C3:"C4",D3:"D4"};function aS(e,t){const r=e.reduce((o,i)=>i.commandType==="loadPipette"&&i.result!=null?{...o,[i.result.pipetteId]:{mount:i.params.mount}}:o,{}),n=e.reduce((o,i)=>{if(i.commandType==="loadModule"&&i.result!=null){const l=c.getModuleDef(i.params.model).moduleType;return{...o,[i.result.moduleId]:{slot:l===c.FLEX_STACKER_MODULE_TYPE?nS[i.params.location.slotName]:i.params.location.slotName,moduleState:xh[l]}}}return o},{}),a=e.reduce((o,i)=>{if(i.commandType==="loadLidStack"&&i.result!=null){const{result:l}=i,u=l.locationSequences,p=l.labwareIds,d=l.stackLabwareId,f=l.stackLocationSequence,h=m=>{if(c.locationIsOffDeck(m))return[m];if("slotName"in m)return[m.slotName];if("moduleId"in m){const _=n[m.moduleId]?.slot??"offDeck";return[m.moduleId,_]}else if("addressableAreaName"in m)return[m.addressableAreaName];return["offDeck"]};if(u!=null){const m=u.reduce((T,y)=>{const A=y.find(w=>w.kind==="onLabware");return A!=null&&(T[A.labwareId]=y),T},{}),_=p.reduce((T,y,A)=>{const w=m[y]??u[A];if(w!=null){const I=Wu(w);T[y]={stack:I[0]===y?I:[y,...I]}}else{const I=i.params.location;c.locationIsOffDeck(I)?T[y]={stack:[y,I]}:"slotName"in I?T[y]={stack:[y,I.slotName]}:T[y]={stack:[y,"offDeck"]}}return T},{}),b=d!=null&&f!=null?[d,...Wu(f)]:null;return{...o,..._,...d!=null&&b!=null?{[d]:{stack:b}}:{}}}else{const m=i.params.location,_=p.reduce((T,y)=>{if(c.locationIsOffDeck(m))T[y]={stack:[y,m]};else if("slotName"in m)T[y]={stack:[y,m.slotName]};else if("moduleId"in m){const A=m.moduleId;T[y]={stack:[y,A,n[A].slot]}}else T[y]={stack:[y,"offDeck"]};return T},{}),b=d!=null?[d,...h(m)]:null;return{...o,..._,...d!=null&&b!=null?{[d]:{stack:b}}:{}}}}else if((i.commandType==="loadLabware"||i.commandType==="loadLid")&&i.result!=null){const l=[i.result.labwareId];if(c.locationIsOffDeck(i.params.location))l.push(i.params.location);else if("slotName"in i.params.location)l.push(i.params.location.slotName);else if("moduleId"in i.params.location){const u=i.params.location.moduleId;if(n[u]==null)return console.warn(`Module ${u} not found when processing loadLabware/loadLid command. `),o;l.push(i.params.location.moduleId,n[i.params.location.moduleId].slot)}else if("labwareId"in i.params.location){const u=i.params.location.labwareId;o[u]==null&&(console.warn(`Parent labware ${u} not found when processing loadLabware/loadLid command. `),o[u]={stack:[u,"offDeck"]});const p=o[u].stack;l.push(u,...p)}else l.push(i.params.location.addressableAreaName);return{...o,[i.result.labwareId]:{stack:l}}}else{if(i.commandType==="flexStacker/setStoredLabware")return ah(i).forEach(u=>{nh(o,u,"setStoredLabwareCount")}),o;if(i.commandType==="flexStacker/fill")return ah(i).forEach(u=>{nh(o,u,"fillCount")}),o}return o},{}),s=Vc({invariantContext:t,labwareLocations:a,moduleLocations:n,pipetteLocations:r});return{frame:{...op(e,t,s),command:e[e.length-1]},invariantContext:t}}const nh=(e,t,r)=>{const n=e[t]??{stack:[t,"offDeck"]};e[t]={...n,[r]:(n[r]??0)+1}},ah=e=>e.result?.storedLabware?.flatMap(r=>[r.primaryLabwareId,r.adapterLabwareId,r.lidLabwareId].filter(n=>n!=null))??[],ip=(e,t)=>e??(t.channels===1?c.SINGLE:t.channels===96?c.ALL:c.COLUMN);var Au,sh;function sS(){if(sh)return Au;sh=1;var e=Sc();function t(r,n){var a;return e(r,function(s,o,i){return a=n(s,o,i),!a}),!!a}return Au=t,Au}var Lu,oh;function oS(){if(oh)return Lu;oh=1;var e=Jh(),t=Nn(),r=sS(),n=Qe(),a=Lc();function s(o,i,l){var u=n(o)?e:r;return l&&a(o,i,l)&&(i=void 0),u(o,t(i,3))}return Lu=s,Lu}var iS=oS();const Ba=xe(iS),Bn=(e,t)=>Ba(e,r=>r.moduleState.type===c.HEATERSHAKER_MODULE_TYPE&&r.moduleState.latchOpen!==!1&&c.getAreSlotsHorizontallyAdjacent(r.slot,t)),xn=(e,t,r)=>r.channels!==1&&Ba(e,n=>n.moduleState.type===c.HEATERSHAKER_MODULE_TYPE&&c.getAreSlotsHorizontallyAdjacent(n.slot,t)),xa=(e,t,r,n)=>r.channels!==1&&!n.def.parameters.isTiprack&&Ba(e,a=>a.moduleState.type===c.HEATERSHAKER_MODULE_TYPE&&c.getAreSlotsVerticallyAdjacent(a.slot,t)),My=(e,t,r)=>Ba(e,(a,s)=>c.getAreSlotsHorizontallyAdjacent(r,G(a.stack))&&c.getIsLabwareAboveHeight(t[s].def,c.MAX_LABWARE_HEIGHT_EAST_WEST_HEATER_SHAKER_MM)),Ha=(e,t,r)=>{const n=Fa(e,t[r]?.stack),a=n!=null?e[n].moduleState:null;return!!(a&&a.type===c.HEATERSHAKER_MODULE_TYPE&&a.latchOpen!==!1)},Hn=(e,t,r)=>Ba(e,n=>n.moduleState.type===c.HEATERSHAKER_MODULE_TYPE&&n.moduleState.targetSpeed!=null&&n.moduleState.targetSpeed>0&&(r===c.OT2_ROBOT_TYPE?c.getAreSlotsAdjacent(n.slot,t):c.getAreFlexSlotsAdjacent(n.slot,t))),za=(e,t,r)=>{const n=Fa(e,t[r]?.stack),a=n!=null?e[n].moduleState:null;return!!(a&&a.type===c.HEATERSHAKER_MODULE_TYPE&&a.targetSpeed!==null)},Ds=e=>{const{args:t,pipetteName:r,tiprackUri:n,liquidClassValuesForTip:a}=e;let s=null;"mixBeforeAspirate"in t?s=t.mixBeforeAspirate:"mixFirstAspirate"in t&&(s=t.mixFirstAspirate);const o=lS(t),i={dispense_position:{offset:{x:t.dispenseXOffset,y:t.dispenseYOffset,z:t.dispenseZOffset},position_reference:t.dispensePositionReference},flow_rate_by_volume:[[0,t.dispenseFlowRateUlSec??0]],delay:{enabled:!!t.dispenseDelay?.seconds,...t.dispenseDelay?.seconds?{duration:t.dispenseDelay?.seconds}:{}},submerge:{delay:{enabled:!!t.dispenseSubmergeDelay?.seconds,...t.dispenseSubmergeDelay?.seconds?{duration:t.dispenseSubmergeDelay?.seconds}:{}},speed:t.dispenseSubmergeSpeed??void 0,start_position:{offset:{x:t.dispenseSubmergeXOffset,y:t.dispenseSubmergeYOffset,z:t.dispenseSubmergeZOffset},position_reference:t.dispenseSubmergePositionReference}},retract:{air_gap_by_volume:[[0,t.dispenseAirGapVolume??0]],delay:{enabled:!!t.dispenseRetractDelay?.seconds,...t.dispenseRetractDelay?.seconds?{duration:t.dispenseRetractDelay?.seconds}:{}},end_position:{offset:{x:t.dispenseRetractXOffset,y:t.dispenseRetractYOffset,z:t.dispenseRetractZOffset},position_reference:t.dispenseRetractPositionReference},speed:t.dispenseRetractSpeed??void 0,touch_tip:{enabled:t.touchTipAfterDispense,z_offset:t.touchTipAfterDispense?t.touchTipAfterDispenseOffsetMmFromTop:void 0,mm_from_edge:t.touchTipAfterDispense&&t.touchTipAfterDispenseMmFromEdge!=null?t.touchTipAfterDispenseMmFromEdge:void 0,speed:t.touchTipAfterDispense?t.touchTipAfterDispenseSpeed:void 0},blowout:{enabled:t.blowoutLocation!=null,location:Fy(t.blowoutLocation),flow_rate:t.blowoutLocation!=null?t.blowoutFlowRateUlSec:void 0,...o!=null?{blowout_position:o}:{}}}},l={[r]:{[n]:{aspirate:{aspirate_position:{offset:{x:t.aspirateXOffset,y:t.aspirateYOffset,z:t.aspirateZOffset},position_reference:t.aspiratePositionReference},flow_rate_by_volume:[[0,t.aspirateFlowRateUlSec]],pre_wet:t.preWetTip,correction_by_volume:a?.aspirate.correctionByVolume??[[0,0]],delay:{enabled:!!t.aspirateDelay?.seconds,...t.aspirateDelay?.seconds?{duration:t.aspirateDelay?.seconds}:{}},mix:{enabled:!!s?.volume,...s?.times?{repetitions:s.times}:{},...s?.volume?{volume:s.volume}:{}},submerge:{delay:{enabled:!!t.aspirateSubmergeDelay?.seconds,...t.aspirateSubmergeDelay?.seconds?{duration:t.aspirateSubmergeDelay?.seconds}:{}},speed:t.aspirateSubmergeSpeed??void 0,start_position:{offset:{x:t.aspirateSubmergeXOffset,y:t.aspirateSubmergeYOffset,z:t.aspirateSubmergeZOffset},position_reference:t.aspirateSubmergePositionReference}},retract:{air_gap_by_volume:[[0,t.aspirateAirGapVolume??0]],delay:{enabled:!!t.aspirateRetractDelay?.seconds,...t.aspirateRetractDelay?.seconds?{duration:t.aspirateRetractDelay?.seconds}:{}},end_position:{offset:{x:t.aspirateRetractXOffset,y:t.aspirateRetractYOffset,z:t.aspirateRetractZOffset},position_reference:t.aspirateRetractPositionReference},speed:t.aspirateRetractSpeed??void 0,touch_tip:{enabled:t.touchTipAfterAspirate,z_offset:t.touchTipAfterAspirate?t.touchTipAfterAspirateOffsetMmFromTop:void 0,mm_from_edge:t.touchTipAfterAspirate&&t.touchTipAfterAspirateMmFromEdge!=null?t.touchTipAfterAspirateMmFromEdge:void 0,speed:t.touchTipAfterAspirate?t.touchTipAfterAspirateSpeed:void 0}}},dispense:{...i,correction_by_volume:a?.singleDispense.correctionByVolume??[[0,0]],push_out_by_volume:[[0,t.pushOut??0]],mix:{enabled:"mixInDestination"in t?t.mixInDestination!=null:!1,repetitions:"mixInDestination"in t?t.mixInDestination?.times??void 0:void 0,volume:"mixInDestination"in t?t.mixInDestination?.volume??void 0:void 0}},...t.commandCreatorFnName==="distribute"?{multi_dispense:{...i,correction_by_volume:a?.multiDispense?.correctionByVolume??[[0,0]],..."conditioningVolume"in t?{conditioning_by_volume:[[0,t.conditioningVolume??0]]}:{},..."disposalVolume"in t?{disposal_by_volume:[[0,t.disposalVolume??0]]}:{}}}:{}}}},u=JSON.parse(JSON.stringify(l));return Fr(u)},ja=(e,t)=>`${c.getAllLiquidClassDefs()[e].liquidClassName}${t?"_base_class":""}`,Fy=e=>{if(e!=null)return e===zr?"source":e===Mn?"destination":"trash"},lS=e=>{const t=Fy(e.blowoutLocation);return!t||t==="trash"?null:{offset:{x:e.blowoutXPosition??0,y:e.blowoutYPosition??0,z:e.blowoutOffsetFromTopMm??1},position_reference:e.blowoutPositionReference??c.POSITION_REFERENCE_TOP}},Ms=e=>{const{labwareEntities:t,tiprackIds:r}=e;return`tip_racks=[${r.map(a=>t[a].pythonName).join(", ")}]`};var Ou,ih;function uS(){if(ih)return Ou;ih=1;var e="Expected a function";function t(r){if(typeof r!="function")throw new TypeError(e);return function(){var n=arguments;switch(n.length){case 0:return!r.call(this);case 1:return!r.call(this,n[0]);case 2:return!r.call(this,n[0],n[1]);case 3:return!r.call(this,n[0],n[1],n[2])}return!r.apply(this,n)}}return Ou=t,Ou}var Ru,lh;function cS(){if(lh)return Ru;lh=1;var e=Jc(),t=Pn(),r=gs(),n=ar(),a=Cn();function s(o,i,l,u){if(!n(o))return o;i=t(i,o);for(var p=-1,d=i.length,f=d-1,h=o;h!=null&&++p<d;){var m=a(i[p]),_=l;if(m==="__proto__"||m==="constructor"||m==="prototype")return o;if(p!=f){var b=h[m];_=u?u(b,m,h):void 0,_===void 0&&(_=n(b)?b:r(i[p+1])?[]:{})}e(h,m,_),h=h[m]}return o}return Ru=s,Ru}var ku,uh;function pS(){if(uh)return ku;uh=1;var e=Es(),t=cS(),r=Pn();function n(a,s,o){for(var i=-1,l=s.length,u={};++i<l;){var p=s[i],d=e(a,p);o(d,p)&&t(u,r(p,a),d)}return u}return ku=n,ku}var vu,ch;function dS(){if(ch)return vu;ch=1;var e=va(),t=Nn(),r=pS(),n=rp();function a(s,o){if(s==null)return{};var i=e(n(s),function(l){return[l]});return o=t(o),r(s,i,function(l,u){return o(l,u[0])})}return vu=a,vu}var Pu,ph;function fS(){if(ph)return Pu;ph=1;var e=Nn(),t=uS(),r=dS();function n(a,s){return r(a,t(e(s)))}return Pu=n,Pu}var mS=fS();const hS=xe(mS);function Uy(e){return Object.keys(e.wells)}const _S=(e,t)=>{const r=Object.keys(e||{}).filter(n=>e[n]&&e[n].volume>0);return{wellName:t,groupIds:r,ingreds:hS(e,n=>!n||n.volume<=0)}},yS=(e,t)=>{const r=Uy(t);return ut(r,(n,a)=>{const s=e&&e[a];return{...n,[a]:s?_S(e[a],a):{}}},{})},bS=(e,t)=>{const r={};return t.forEach(n=>{const a=e!=null?Object.values(e).reduce((s,o)=>{if(o.groupIds.indexOf(n)!==-1){const l=o.ingreds[n];l?.volume!=null&&(s[o.wellName??"A1"]=l.volume)}return s},{}):{};r[n]=a}),r},TS=e=>{const t=e.flatMap(r=>r==null?[]:Object.values(r).flatMap(n=>n.groupIds.filter(a=>a!==je)));return Array.from(new Set(t))},gS=e=>{const t=e!=null?Object.values(e).flatMap(r=>r.groupIds)?.filter(r=>r!==je):[];return Array.from(new Set(t))},qy="#737578",$y=e=>{const t=Number(e);return Number.isInteger(t)?c.DEFAULT_LIQUID_COLORS[t%c.DEFAULT_LIQUID_COLORS.length]:(e!==je&&console.warn(`swatchColors expected an integer or ${je}, got ${e}`),"transparent")},IS=(e,t)=>{const r=e.filter(n=>n!==je);return r.length===0?null:r.length===1?t[r[0]]??$y(r[0]):qy},ES=(e,t)=>ut(e,(r,n,a)=>{const s=IS(n.groupIds,t);return s?{...r,[a]:s}:r},{});var Cu,dh;function wS(){if(dh)return Cu;dh=1;function e(t,r){return t>r}return Cu=e,Cu}var Nu,fh;function SS(){if(fh)return Nu;fh=1;var e=Ch(),t=wS(),r=La();function n(a){return a&&a.length?e(a,r,t):void 0}return Nu=n,Nu}var AS=SS();const LS=xe(AS),Vy="2.30",OS="9.0.0";function RS(){return["import json","from opentrons import protocol_api, types"].join(`
56
+ `)}function kS(e){function t(n){return n?new Date(n).toISOString():""}const r=Object.fromEntries(Object.entries({protocolName:e.protocolName,author:e.author,description:e.description,created:t(e.created),internalAppBuildDate:e.internalAppBuildDate,lastModified:t(e.lastModified),category:e.category,subcategory:e.subcategory,tags:e.tags?.length&&e.tags.join(", "),protocolDesigner:e.protocolDesigner,source:e.source}).filter(([n,a])=>a));return`metadata = ${Fr(r)}`}function vS(e){const r={robotType:{[c.OT2_ROBOT_TYPE]:"OT-2",[c.FLEX_ROBOT_TYPE]:"Flex"}[e],apiLevel:Vy};return`requirements = ${Fr(r)}`}function By(e,t){const r=Object.keys(e).length>0,n=r?Object.values(e).map(a=>`${a.pythonName} = ${be}.load_module(${N(a.model)}, ${N(t[a.id].slot)})`).join(`
57
57
  `):"";return r?`# Load Modules:
58
- ${n}`:""}function Ey(e,t,r){const n=Object.values(t).filter(s=>s.def.allowedRoles?.includes("adapter")),a=Object.values(n).map(s=>{const{id:o,def:i,pythonName:l}=s,{parameters:u,namespace:p,version:d}=i,f=r[o].stack[1],_=e[f]!=null;let m,h;if(_?m=e[f].pythonName:(m=be,h=`location=${f==="offDeck"?la:N(f)}`),c.getLabwareDefIsStandard(i)){const T=[`${N(u.loadName)}`,...h?[h]:[],`namespace=${N(p)}`,`version=${d}`].join(`,
59
- `);return`${l} = ${m}.load_adapter(
60
- ${K(T)},
61
- )`}else{const T=[`${Is}[${N(c.getLabwareDefURI(i))}]`,...h?[h]:[]].join(`,
62
- `);return`${l} = ${m}.load_adapter_from_definition(
63
- ${K(T)},
58
+ ${n}`:""}function xy(e,t,r){const n=Object.values(t).filter(s=>s.def.allowedRoles?.includes("adapter")),a=Object.values(n).map(s=>{const{id:o,def:i,pythonName:l}=s,{parameters:u,namespace:p,version:d}=i,f=r[o].stack[1],h=r[o].stack.find(y=>y in e),m=r[o].stack.some(y=>y===Wh);let _,b=null;if(h!=null){const y=e[h];[_,b]=m?[be,`location=${y.pythonName}.manifold_dock`]:[y.pythonName,null]}else _=be,b=`location=${f==="offDeck"?Ln:N(f)}`;if(c.getLabwareDefIsStandard(i)){const y=[`${N(u.loadName)}`,...b?[b]:[],`namespace=${N(p)}`,`version=${d}`].join(`,
59
+ `);return`${l} = ${_}.load_adapter(
60
+ ${K(y)},
61
+ )`}else{const y=[`${As}[${N(c.getLabwareDefURI(i))}]`,...b?[b]:[]].join(`,
62
+ `);return`${l} = ${_}.load_adapter_from_definition(
63
+ ${K(y)},
64
64
  )`}}).join(`
65
65
  `);return a?`# Load Adapters:
66
- ${a}`:""}const mS=(e,t,r)=>e.reduce((n,{id:a,labwareDefURI:s,def:o})=>{const{stack:i}=r[a],l=i.length-1,u=i.slice(1,l),p=u.find(T=>t[T]?.def.parameters.loadName==="opentrons_flex_deck_riser"),d=u.every(T=>t[T]?.labwareDefURI===s)||p!=null,f=o.parameters.loadName;if(!d)return n;const _=p!=null?t[p]?.pythonName:G(i),m=i.length-(p!=null?2:1);if(!(_ in n))return{...n,[_]:{loadName:f,quantity:m}};const{quantity:h}=n[_],b=uS([h,m])??h;return{...n,[_]:{loadName:f,quantity:b}}},{}),wy=(e,t)=>{const r=Object.values(e).filter(s=>s.def.allowedRoles?.includes("lid")),n=mS(r,e,t),a=Object.entries(n).map(([s,{loadName:o,quantity:i}])=>{const l=Object.values(e).some(({pythonName:m})=>m===s),u=`load_name=${N(o)}`,p=`location=${l?s:N(s)}`,d=`quantity=${i}`,f=[u,p,d].join(`,
67
- `),_=K(f);return`lid_stack_${s} = ${be}.load_lid_stack(
68
- ${_},
66
+ ${a}`:""}const PS=(e,t,r)=>e.reduce((n,{id:a,labwareDefURI:s,def:o})=>{const{stack:i}=r[a],l=i.length-1,u=i.slice(1,l),p=u.find(T=>t[T]?.def.parameters.loadName==="opentrons_flex_deck_riser"),d=u.every(T=>t[T]?.labwareDefURI===s)||p!=null,f=o.parameters.loadName;if(!d)return n;const h=p!=null?t[p]?.pythonName:G(i),m=i.length-(p!=null?2:1);if(!(h in n))return{...n,[h]:{loadName:f,quantity:m}};const{quantity:_}=n[h],b=LS([_,m])??_;return{...n,[h]:{loadName:f,quantity:b}}},{}),Hy=(e,t)=>{const r=Object.values(e).filter(s=>s.def.allowedRoles?.includes("lid")),n=PS(r,e,t),a=Object.entries(n).map(([s,{loadName:o,quantity:i}])=>{const l=Object.values(e).some(({pythonName:m})=>m===s),u=`load_name=${N(o)}`,p=`location=${l?s:N(s)}`,d=`quantity=${i}`,f=[u,p,d].join(`,
67
+ `),h=K(f);return`lid_stack_${s} = ${be}.load_lid_stack(
68
+ ${h},
69
69
  )`}).join(`
70
70
  `);return a?`# Load Lid Stacks:
71
- ${a}`:""},hS=e=>{const{parameters:t,namespace:r,version:n}=e;return[`lid=${N(t.loadName)}`,`lid_namespace=${N(r)}`,`lid_version=${n}`]};function Sy(e,t,r,n,a){const s=Object.values(r).filter(l=>!l.def.allowedRoles?.includes("adapter")&&!l.def.allowedRoles?.includes("lid")),o=Object.values(r).filter(l=>l.def.allowedRoles?.includes("lid")),i=Object.values(s).reduce((l,u)=>{const{id:p,def:d,pythonName:f}=u,{metadata:_,parameters:m,namespace:h,version:b}=d,T=Object.values(o).find(q=>n[q.id].stack[1]===p),y=a[p]!=null&&a[p]!==_.displayName,A=n[p].stack.includes(je),S=n[p].stack[1],g=G(n[p].stack),I=Object.entries(e).find(([q,ee])=>ee.slot===g&&ee.moduleState.type===c.FLEX_STACKER_MODULE_TYPE),L=t[S]!=null||g===I?.[1].slot&&!A,w=r[S]!=null;let E,v;if(w&&!A)E=r[S].pythonName;else if(L){const q=I!=null?I?.[0]:S;E=t[q].pythonName}else E=be,v=`location=${S==="offDeck"||A?la:N(S)}`;const k=y?`label=${N(a[p])}`:void 0;if(c.getLabwareDefIsStandard(d)){const q=[`${N(m.loadName)}`,...v?[v]:[],...k?[k]:[],`namespace=${N(h)}`,`version=${b}`,...T!=null?hS(T.def):[]].join(`,
71
+ ${a}`:""},CS=e=>{const{parameters:t,namespace:r,version:n}=e;return[`lid=${N(t.loadName)}`,`lid_namespace=${N(r)}`,`lid_version=${n}`]};function zy(e,t,r,n,a){const s=Object.values(r).filter(l=>!l.def.allowedRoles?.includes("adapter")&&!l.def.allowedRoles?.includes("lid")),o=Object.values(r).filter(l=>l.def.allowedRoles?.includes("lid")),i=Object.values(s).reduce((l,u)=>{const{id:p,def:d,pythonName:f}=u,{metadata:h,parameters:m,namespace:_,version:b}=d,T=Object.values(o).find(q=>n[q.id].stack[1]===p),y=a[p]!=null&&a[p]!==h.displayName,A=n[p].stack.includes(Ze),w=n[p].stack[1],I=G(n[p].stack),S=Object.entries(e).find(([q,ee])=>ee.slot===I&&ee.moduleState.type===c.FLEX_STACKER_MODULE_TYPE),L=t[w]!=null||I===S?.[1].slot&&!A,g=r[w]!=null;let E,k;if(g&&!A)E=r[w].pythonName;else if(L){const q=S!=null?S?.[0]:w;E=t[q].pythonName}else E=be,k=`location=${w==="offDeck"||A?Ln:N(w)}`;const v=y?`label=${N(a[p])}`:void 0;if(c.getLabwareDefIsStandard(d)){const q=[`${N(m.loadName)}`,...k?[k]:[],...v?[v]:[],`namespace=${N(_)}`,`version=${b}`,...T!=null?CS(T.def):[]].join(`,
72
72
  `);return[...l,`${f} = ${E}.load_labware(
73
73
  ${K(q)},
74
- )`]}else{const q=[`${Is}[${N(c.getLabwareDefURI(d))}]`,...v?[v]:[],...k?[k]:[]].join(`,
74
+ )`]}else{const q=[`${As}[${N(c.getLabwareDefURI(d))}]`,...k?[k]:[],...v?[v]:[]].join(`,
75
75
  `);return[...l,`${f} = ${E}.load_labware_from_definition(
76
76
  ${K(q)},
77
77
  )`]}},[]).join(`
78
78
  `);return i?`# Load Labware:
79
- ${i}`:""}function Ay(e,t){const r=Object.values(e).map(n=>{const{name:a,id:s,spec:o,pythonName:i}=n,l=o.channels===96?"":N(t[s].mount),u=c.isFlexPipette(a)?c.getFlexNameConversion(o):a;return`${i} = ${be}.load_instrument(${[N(u),...l?[l]:[]].join(", ")})`}).join(`
79
+ ${i}`:""}function jy(e,t){const r=Object.values(e).map(n=>{const{name:a,id:s,spec:o,pythonName:i}=n,l=o.channels===96?"":N(t[s].mount),u=c.isFlexPipette(a)?c.getFlexNameConversion(o):a;return`${i} = ${be}.load_instrument(${[N(u),...l?[l]:[]].join(", ")})`}).join(`
80
80
  `);return r?`# Load Pipettes:
81
- ${r}`:""}function Ly(e){const t=Object.values(e).map(r=>{const{pythonName:n,displayColor:a,displayName:s,description:o}=r,i=[`${N(s)}`,...o?[`description=${N(o)}`]:[],`display_color=${N(a)}`].join(`,
81
+ ${r}`:""}function Gy(e){const t=Object.values(e).map(r=>{const{pythonName:n,displayColor:a,displayName:s,description:o}=r,i=[`${N(s)}`,...o?[`description=${N(o)}`]:[],`display_color=${N(a)}`].join(`,
82
82
  `);return`${n} = ${be}.define_liquid(
83
83
  ${K(i)},
84
84
  )`}).join(`
85
85
  `);return t?`# Define Liquids:
86
- ${t}`:""}function Oy(e,t,r){const n=Object.entries(e).reduce((s,[o,i])=>{const l=r[o].pythonName;return Object.entries(i).forEach(([u,p])=>{Object.entries(p).forEach(([d,f])=>{const _=t[d].pythonName,m=`${l}__${_}__${f.volume}`;s[m]||(s[m]={labwarePythonName:l,liquidPythonName:_,volume:f.volume,wells:[]}),s[m].wells.push(u)})}),s},{}),a=Object.values(n).map(({labwarePythonName:s,liquidPythonName:o,volume:i,wells:l})=>{const u=l.map(m=>N(m)),d=ws(u,8).map(m=>ka+m.join(", ")).join(`,
87
- `),_=[`wells=[${u.length<8?u.join(", "):`
86
+ ${t}`:""}function Wy(e,t,r){const n=Object.entries(e).reduce((s,[o,i])=>{const l=r[o].pythonName;return Object.entries(i).forEach(([u,p])=>{Object.entries(p).forEach(([d,f])=>{const h=t[d].pythonName,m=`${l}__${h}__${f.volume}`;s[m]||(s[m]={labwarePythonName:l,liquidPythonName:h,volume:f.volume,wells:[]}),s[m].wells.push(u)})}),s},{}),a=Object.values(n).map(({labwarePythonName:s,liquidPythonName:o,volume:i,wells:l})=>{const u=l.map(m=>N(m)),d=Os(u,8).map(m=>Ma+m.join(", ")).join(`,
87
+ `),h=[`wells=[${u.length<8?u.join(", "):`
88
88
  ${d}
89
89
  `}],
90
90
  liquid=${o},
91
91
  volume=${i},
92
92
  `].join();return`${s}.load_liquid(
93
- ${K(_)})`}).join(`
93
+ ${K(h)})`}).join(`
94
94
  `);return a?`# Load Liquids:
95
- ${a}`:""}function Ry(e){const t=c.getAllLiquidClassDefs(),r=e.map(n=>n==null?"":`${Va(n,!0)} = ${be}.get_liquid_class(${N(t[n].liquidClassName)})`).join(`
95
+ ${a}`:""}function Yy(e){const t=c.getAllLiquidClassDefs(),r=e.map(n=>n==null?"":`${ja(n,!0)} = ${be}.get_liquid_class(${N(t[n].liquidClassName)})`).join(`
96
96
  `);return e.length>0?`# Load Liquid Classes:
97
- ${r}`:""}function vy(e){const t=Object.values(e)?.map(r=>{const n=N(c.getCutoutDisplayName(r.location));return`${r.pythonName} = ${be}.load_trash_bin(${n})`}).join(`
97
+ ${r}`:""}function Ky(e){const t=Object.values(e)?.map(r=>{const n=N(c.getCutoutDisplayName(r.location));return`${r.pythonName} = ${be}.load_trash_bin(${n})`}).join(`
98
98
  `);return t?`# Load Trash Bins:
99
- ${t}`:""}function ky(e){const t=Object.values(e)?.map(r=>`${r.pythonName} = ${be}.load_waste_chute()`);return t.length>0?`# Load Waste Chute:
100
- ${t}`:""}const _S=e=>e?`
99
+ ${t}`:""}function Xy(e){const t=Object.values(e)?.map(r=>`${r.pythonName} = ${be}.load_waste_chute()`);return t.length>0?`# Load Waste Chute:
100
+ ${t}`:""}const NS=e=>e?`
101
101
  `+e.split(/\r\n|\r|\n/).map(t=>`# ${t}`).join(`
102
- `):"";function Py(e){return`# PROTOCOL STEPS
102
+ `):"";function Zy(e){return`# PROTOCOL STEPS
103
103
 
104
- `+e.timeline.map(t=>{const{stepInfo:r}=t,n=r?.description;return`# Step ${r?.stepNumber}: ${r?.name}${_S(n)}
104
+ `+e.timeline.map(t=>{const{stepInfo:r}=t,n=r?.description;return`# Step ${r?.stepNumber}: ${r?.name}${NS(n)}
105
105
  ${t.python||"pass"}`}).join(`
106
106
 
107
- `)}function yS(e,t,r,n,a,s,o){const{moduleEntities:i,labwareEntities:l,pipetteEntities:u,liquidEntities:p,wasteChuteEntities:d,trashBinEntities:f}=e,{modules:_,labware:m,pipettes:h}=t,T=[Iy(i,_),Ey(i,l,m),wy(l,m),Sy(_,i,l,m,a),Ay(u,h),...s===c.FLEX_ROBOT_TYPE?[vy(f),ky(d)]:[],Ly(p),Oy(n,p,l),Ry(o),Cy(i,l,m,_,r),Py(r)].filter(y=>y).join(`
107
+ `)}function DS(e,t,r,n,a,s,o){const{moduleEntities:i,labwareEntities:l,pipetteEntities:u,liquidEntities:p,wasteChuteEntities:d,trashBinEntities:f}=e,{modules:h,labware:m,pipettes:_}=t,T=[By(i,h),xy(i,l,m),Hy(l,m),zy(h,i,l,m,a),jy(u,_),...s===c.FLEX_ROBOT_TYPE?[Ky(f),Xy(d)]:[],Gy(p),Wy(n,p,l),Yy(o),Qy(i,l,m,h,r),Zy(r)].filter(y=>y).join(`
108
108
 
109
109
  `)||"pass";return`def run(${be}: protocol_api.ProtocolContext) -> None:
110
- ${K(T)}`}function bS(e){const t=Object.values(e).filter(r=>!c.getLabwareDefIsStandard(r.def)).map(r=>r.def);if(t.length>0){const r=Object.fromEntries(t.map(n=>[c.getLabwareDefURI(n),n]));return`${Is} = json.loads("""${JSON.stringify(r)}""")`}else return""}const Cs=e=>{switch(e){case"perDest":return"per destination";case"perSource":return"per source";default:return e}},Cy=(e,t,r,n,a)=>{const o=Object.values(e).map(i=>{const{id:l,type:u,pythonName:p}=i;if(u===c.FLEX_STACKER_MODULE_TYPE){const d=n[l].slot,f=a.timeline.map(h=>h.robotState.labware),_=Object.entries(r).filter(([h,b])=>b.stack.includes(l)&&b.stack.includes(je)),m=[...Object.entries(r),...f.flatMap(h=>Object.entries(h))].filter(([h,b])=>G(b.stack)===d&&!b.stack.includes(je));if(_.length===0){if(m.length===0)return"";const h=m.find(([y])=>t[y].def.allowedRoles?.includes("lid")),b=m.find(([y])=>!t[y].def.allowedRoles?.includes("lid"));if(b==null)return"";const T=[`load_name=${N(t[b[0]].def.parameters.loadName)}`,`namespace=${N(t[b[0]].def.namespace)}`,`version=${t[b[0]].def.version}`,"count=0",...h!=null?[`lid=${N(t[h[0]].def.parameters.loadName)}`]:[]].join(`,
110
+ ${K(T)}`}function MS(e){const t=Object.values(e).filter(r=>!c.getLabwareDefIsStandard(r.def)).map(r=>r.def);if(t.length>0){const r=Object.fromEntries(t.map(n=>[c.getLabwareDefURI(n),n]));return`${As} = json.loads("""${JSON.stringify(r)}""")`}else return""}const Fs=e=>{switch(e){case"perDest":return"per destination";case"perSource":return"per source";default:return e}},Qy=(e,t,r,n,a)=>{const o=Object.values(e).map(i=>{const{id:l,type:u,pythonName:p}=i;if(u===c.FLEX_STACKER_MODULE_TYPE){const d=n[l].slot,f=a.timeline.map(_=>_.robotState.labware),h=Object.entries(r).filter(([_,b])=>b.stack.includes(l)&&b.stack.includes(Ze)),m=[...Object.entries(r),...f.flatMap(_=>Object.entries(_))].filter(([_,b])=>G(b.stack)===d&&!b.stack.includes(Ze));if(h.length===0){if(m.length===0)return"";const _=m.find(([y])=>t[y].def.allowedRoles?.includes("lid")),b=m.find(([y])=>!t[y].def.allowedRoles?.includes("lid"));if(b==null)return"";const T=[`load_name=${N(t[b[0]].def.parameters.loadName)}`,`namespace=${N(t[b[0]].def.namespace)}`,`version=${t[b[0]].def.version}`,"count=0",..._!=null?[`lid=${N(t[_[0]].def.parameters.loadName)}`]:[]].join(`,
111
111
  `);return`${p}.set_stored_labware(
112
112
  ${K(T)}
113
- )`}else{const h=Object.values(_).filter(S=>!t[S[0]]?.def.allowedRoles?.includes("lid")).map(S=>t[S[0]].pythonName),T=ws(h,4).map(S=>ka+S.join(", ")).join(`,
114
- `),A=`labware=[${h.length<4?h.join(", "):`
113
+ )`}else{const _=Object.values(h).filter(w=>!t[w[0]]?.def.allowedRoles?.includes("lid")).map(w=>t[w[0]].pythonName),T=Os(_,4).map(w=>Ma+w.join(", ")).join(`,
114
+ `),A=`labware=[${_.length<4?_.join(", "):`
115
115
  ${T}
116
116
  `}],
117
117
  `;return`${p}.set_stored_labware_items(
118
118
  ${K(A)})`}}}).filter(Boolean);return o.length>0?`# Set Stored Labware:
119
119
  ${o.join(`
120
- `).trimStart()}`:""},TS=(e,t,r,n)=>{const{spec:a}=t,s=e===c.ROW,o=e===c.COLUMN||e===c.ALL&&a.channels===8,i=n.ordering[0].length===1;if((o||s)&&i){const u=o?`H${r.slice(1)}`:`${r.charAt(0)}12`,p=a.nozzleMap[u],d=a.nozzleMap[r],f=p.map((h,b)=>h-d[b]),_=[f[0]/2,f[1]/2,0],m=d.map((h,b)=>h+_[b]);return{x:m[0],y:m[1],z:m[2]}}const l=a.nozzleMap[r];return{x:l[0],y:l[1],z:l[2]}},mn={back_left:{x:-43.25,y:454.9,z:211.91},front_right:{x:128.75,y:402,z:211.91}},sh={x:mn.back_left.x,y:mn.back_left.y,z:mn.back_left.z},gS={x:mn.front_right.x,y:mn.front_right.y,z:mn.front_right.z},Ny=e=>{if(e.addressableArea?.areaType==="slot"){const t=`cutout${e.addressableArea?.id}`;if(t)return t}return null},IS=(e,t,r,n,a,s,o)=>{const{pipetteBoundingBoxOffsets:i}=e.spec,l=TS(s,e,a,n),u=i.backLeftCorner[0],p=i.frontRightCorner[0],d=i.backLeftCorner[1],f=i.frontRightCorner[1],_=r.x-(l.x-u),m=r.x+(p-l.x),h=r.y+(d-l.y),b=r.y-(l.y-f),T=(r.z??0)+t-o;return[{x:_,y:h,z:T},{x:m,y:b,z:T},{x:m,y:h,z:T},{x:_,y:b,z:T}]},Dy=(e,t)=>{const r=e[1].x<t[0].x,n=e[0].x>t[1].x,a=e[0].y<t[1].y,s=e[1].y>t[0].y;return!(r||n||a||s)},oh=(e,t)=>{if(t===c.FLEX_ROBOT_TYPE){const r=c.getDeckDefFromRobotType(t),{addressableAreas:n}=r.locations;return n.find(s=>s.id.includes(e))?.offsetFromCutoutFixture[2]??0}return c.getModuleDef(e).dimensions.bareOverallHeight},ES=e=>{const t=c.getDeckDefFromRobotType(e);return Object.values(t.cutoutFixtures).find(n=>c.WASTE_CHUTE_FIXTURES.includes(n.id))?.height??0},wS=(e,t,r,n)=>{const{modules:a,labware:s}=e,{moduleEntities:o,labwareEntities:i,wasteChuteEntities:l}=t;let u=0;const p=r?.addressableArea?.id;if(p){const d=Mc(s,p),f=Object.keys(a).find(m=>a[m].slot===p);Object.values(l).find(m=>m.location===Ny(r))&&(u+=ES(n)),d.length>0?d.forEach(m=>{a[m]!=null&&(u+=oh(o[m].model,n)),s[m]!=null&&(u+=i[m].def.dimensions.zDimension)}):f!=null&&(u+=oh(o[f].model,n))}return u},SS=(e,t,r,n,a)=>{for(const s of t){const o=s.addressableArea?.boundingBox,i=s.position;if(i==null||o==null)continue;const l={x:i[0],y:o.yDimension+i[1],z:i[2]},u={x:i[0]+o.xDimension,y:i[1],z:i[2]};if(Dy([e[0],e[1]],[l,u])&&e[0].z!=null&&wS(r,n,s,a)>=e[0]?.z&&s.addressableArea!=null)return{addressableAreaCausingCollision:s.addressableArea}}return null},AS=(e,t)=>Object.values(t).find(r=>r.type===c.THERMOCYCLER_MODULE_TYPE)?Dy([sh,gS],[e[0],e[1]])&&e[0].x<=sh.z:!1,LS=(e,t,r,n)=>{const{wells:a}=e.def,s=a[t];return{x:s.x+r.x,y:s.y+r.y,z:n?s.z+(r.z??0):e.def.dimensions.zDimension}},dt=e=>{const{robotState:t,invariantContext:r,pipetteId:n,labwareId:a,wellLocationOffset:s={x:0,y:0,z:0},wellTargetName:o,primaryNozzle:i,nozzleConfiguration:l,tiprackId:u}=e,{pipetteEntities:p,labwareEntities:d,stagingAreaEntities:f,moduleEntities:_}=r,{labware:m,tipState:h}=t,b=p[n];if(b==null)return{isSafe:!0};const{spec:T}=b,{channels:y}=T,g=T?.displayCategory==="FLEX"?c.FLEX_ROBOT_TYPE:c.OT2_ROBOT_TYPE,I=c.getDeckDefFromRobotType(g);if(d[a]==null||o==null||y===1)return{isSafe:!0};const L=u?!0:h.pipettes[n]?.hasTip??!1,w=u??h.pipettes[n]?.tiprackURI,E=w!=null?d[w]:null,v=E!=null?E.def.parameters.tipLength:0,k=Object.values(f).map(P=>P.location),$=L?v??0:0,q=G(m[a].stack),ee=m[a].stack.some(P=>_[P]?.type===c.THERMOCYCLER_MODULE_TYPE),pe=c.getDeckDefFromRobotType(c.FLEX_ROBOT_TYPE),_e=(ee?c.getPositionFromSlotId(c.B1_ADDRESSABLE_AREA,pe):c.getPositionFromSlotId(q,I))??[0,0,0],le=ee?pe.locations.addressableAreas.find(P=>P.id===c.THERMOCYCLER_MODULE_V2)?.offsetFromCutoutFixture??[0,0,0]:[0,0,0],Te={x:le[0]+_e[0],y:le[1]+_e[1],z:le[2]+_e[2]},{def:ke}=d[a],He=kS({wellTargetName:o,primaryNozzle:i,nozzleConfiguration:l,specs:T,labwareDef:ke}),$e={x:s.x+He.x+Te.x,y:s.y+He.y+Te.y,z:(s.z??0)+(Te.z??0)},te=LS(d[a],o,$e,L),Ee=E!=null?OS({pipetteSpecs:T,tiprackUri:E.labwareDefURI,nozzles:l}):0,ze=d[a].def,Pe=IS(b,$,te,ze,i,l,Ee);if(!vS({channels:y,boundingBox:Pe,robotType:g}))return{isSafe:!1,reason:{type:"outsidePipetteExtents"}};const W=(g===c.OT2_ROBOT_TYPE?c.getOt2SurroundingSlots(q):c.getFlexSurroundingSlots(q,k)).map(P=>{const V=c.getAddressableAreaFromSlotId(P,I),M=c.getPositionFromSlotId(P,I);return{addressableArea:V,position:M}});if(AS(Pe,_))return{isSafe:!1,reason:{type:"thermocyclerLidCollision"}};const C=SS(Pe,W,t,r,g);return C!=null?{isSafe:!1,reason:{type:"adjacentAdressableAreaCollision",addressableAreaCausingCollision:C.addressableAreaCausingCollision}}:{isSafe:!0}},ep=e=>{const{tipState:t,primaryNozzle:r,channels:n,nozzleConfiguration:a,wellName:s,tiprackDef:o,tipsToIgnore:i=[]}=e,{ordering:l}=o;if(n===1)return{isSafe:!0,isComplete:t[s]!==ie};if(n===8){const u=r!==c.A1_NOZZLE,p=Xu(s),d=l[p],f=u?[...d].reverse():d;if(a===c.SINGLE){const _=f.indexOf(s);return{isSafe:f.slice(_+1).every(m=>t[m]===ie||i.includes(m)),isComplete:t[s]!==ie}}if(a===c.PARTIAL_COLUMN){const _=f.indexOf(s),m=c.PARTIAL_NOZZLE_MAP[r],h=u?f.slice(_-m+1,_+1):f.slice(_,_+m);return{isSafe:f.slice(_+1).every(b=>t[b]===ie||i.includes(b)),isComplete:h.every(b=>t[b]!==ie&&!i.includes(b))}}return{isSafe:!0,isComplete:f.every(_=>t[_]!==ie)}}if(a===c.ALL)return{isSafe:!0,isComplete:Object.keys(o.wells).every(u=>t[u]!==ie)};if(a===c.COLUMN){const u=r===c.A12_NOZZLE,p=Xu(s),d=l[p],f=u?[...l].reverse():l,_=f.indexOf(d);return{isSafe:f.slice(_+1).flat().every(m=>t[m]===ie||i.includes(m)),isComplete:f[_].every(m=>t[m]!==ie)}}if(a===c.ROW){const u=l[0].map((_,m)=>l.map(h=>h[m])),d=r===c.H1_NOZZLE?[...u].reverse():u,f=d.findIndex(_=>_.some(m=>m===s));return{isSafe:d.slice(f+1).flat().every(_=>t[_]===ie||i.includes(_)),isComplete:d[f].every(_=>t[_]!==ie)}}if(a===c.SINGLE){const u=hn(r??os({nozzles:a,channels:n})),p=tp(r??os({nozzles:a,channels:n})),d=u==="H",_=p==="12"?[...l].reverse():l,m=_.findIndex(h=>h.some(b=>b===s));return{isSafe:_.slice(m).every(h=>{const b=d?[...h].reverse():h,T=b.findIndex(y=>hn(y)===hn(s));return b.slice(T).every(y=>t[y]===ie||i.includes(y)||y===s)}),isComplete:t[s]!==ie}}return{isSafe:!1}},hn=e=>e.slice(0,1),tp=e=>e.slice(1),Xu=e=>parseInt(e.slice(1))-1,os=e=>{const{nozzles:t,channels:r}=e;if(r===8&&t===c.SINGLE)return"H1";if(r===96){if(t===c.COLUMN)return"A12";if(t===c.SINGLE)return"H12"}return"A1"},Ba=e=>{const{wellSets:t,nozzles:r,channels:n,primaryNozzle:a}=e;if(r===c.ROW){const s=t[0].length;return Array.from({length:s},(i,l)=>t.map(u=>u[l])).map(i=>i[0])}return t.map(s=>n===96&&r===c.ALL?a:r===c.COLUMN||n===8&&r===c.ALL||n===8&&r===c.PARTIAL_COLUMN?hn(a)==="H"?s[s.length-1]:s[0]:(console.assert(s.length===1,"Well set for SINGLE nozzle configuration should have exactly 1 well"),s[0]))},OS=e=>{const{pipetteSpecs:t,tiprackUri:r,nozzles:n}=e,{channels:a}=t,s=RS(a,n),o=t.pickUpTipConfigurations.pressFit.configurationsByNozzleMap[s]?.default.tipOverlaps;if(o==null)return console.error(`No tip overlaps found for ${n} and ${s} overlap.`),0;const i=Math.max(...Object.keys(o).map(l=>Number(l.slice(1))));return o[`v${i}`]?.[r]??o[`v${i}`]?.default??0},RS=(e,t)=>{if(e===1)return"SingleA1";if(e===8)return t===c.SINGLE?"SingleH1":"Full";if(e===96){if(t===c.SINGLE)return"SingleH12";if(t===c.COLUMN)return"Column12";if(t===c.ROW)return"RowA"}return"Full"},vS=e=>{const{channels:t,boundingBox:r,robotType:n}=e,a=c.getRobotDefFromRobotType(n),{paddingOffsets:s}=a,{front:o,rear:i,leftSide:l,rightSide:u}=s,[p,d]=a.extents,[f,_]=r,{x:m,y:h}=f,{x:b,y:T}=_;if(t===96){if(b<l)return!1;const y=p+u;if(m>y)return!1}if(t!==1){if(h<o)return!1;const y=d+i;if(T>y)return!1}return!0},My=e=>{const[t,r]=[0,1].map(a=>Object.values(e.nozzleMap)[a][0]);return Math.abs(t-r)},kS=e=>{const t=PS(e),r=CS(e);return{x:t,y:r}},PS=e=>{const{primaryNozzle:t,nozzleConfiguration:r,specs:n,labwareDef:a}=e,{channels:s}=n,{ordering:o}=a,i=o.length===1;if(!i)return 0;let l;r===c.ALL&&s===96||r===c.ROW?l=12:r===c.QUADRANT?l=6:l=1;const u=tp(t)==="12"?1:-1,p=My(n);return i?(l-1)*p/2*u:0},CS=e=>{const{wellTargetName:t,primaryNozzle:r,nozzleConfiguration:n,specs:a,labwareDef:s}=e,{channels:o}=a,{ordering:i}=s,l=i.findIndex(m=>m.includes(t));if(!(i[l].length===1))return 0;let d;n===c.COLUMN||n===c.ALL&&o===96||o===8?d=8:n===c.PARTIAL_COLUMN?d=c.PARTIAL_NOZZLE_MAP[r]:n===c.QUADRANT?d=4:d=1;const f=My(a),_=hn(r)==="H"?-1:1;return(d-1)*f/2*_};function Fy(e){const t=e.length===1?e[0]:null;return t!=null&&"steps"in t?{numRepetitions:t.repetitions,repeatingProfileSteps:t.steps}:{numRepetitions:1,repeatingProfileSteps:rp(e)}}function rp(e){return e.flatMap(t=>"steps"in t?v_(t.steps,t.repetitions):t)}const NS=e=>{switch(e.commandCreatorFnName){case"consolidate":return R(Wy,e);case"delay":return R(fe,e);case"waitForModuleTask":return R(sb,e);case"distribute":return R(Yy,e);case"transfer":return R(eb,e);case"mix":return R(Gy,e);case"moveLabware":return R(E_,e);case"captureImage":return R(d_,e);case"engageMagnet":return R(y_,e);case"disengageMagnet":return R(__,e);case"setTemperature":return R(Sc,e);case"deactivateTemperature":return R(h_,e);case"waitForTemperature":return R(vc,e);case"thermocyclerProfile":return R(Qy,e);case"thermocyclerState":return R(Jy,e);case"heaterShaker":return R(Ky,e);case"comment":return R(f_,e);case"absorbanceReaderOpenLid":return R(c_,e);case"absorbanceReaderCloseLid":return R(Ts,e);case"absorbanceReaderRead":return R(Vy,e);case"absorbanceReaderInitialize":return R($y,e);case"flexStackerEmpty":return R(b_,{...e,strategy:"manualWithPause"});case"flexStackerFillItems":return R(T_,e);case"flexStackerRetrieve":return R(g_,e);case"flexStackerStore":return R(I_,{...e,strategy:"automatic"});case"vacuumCloseVent":return R(va,e);case"vacuumOpenVent":return R(w_,e);case"vacuumSetPumpPower":return R(Lc,e);case"vacuumSetPumpPressure":return R(Oc,e);case"vacuumStartRunProfile":return R(Rc,e);case"vacuumStopPump":return R(A_,e);case"vacuumCloseVentSetPumpPressure":return R(rb,e);case"vacuumCloseVentSetPumpPower":return R(tb,e);case"vacuumCloseVentStartProfile":return R(nb,e);case"airGapInPlace":return R(At,e);case"aspirate":return R(At,e);case"aspirateInPlace":return R(Ra,e);case"aspirateWhileTracking":return R(Yg,e);case"blowOutInPlace":return R(Rn,e);case"blowout":return R(Ic,e);case"configureForVolume":return R(gn,e);case"configureNozzleLayout":return R(m_,e);case"dispense":return R(Ec,e);case"dispenseInPlace":return R(Xe,e);case"dispenseWhileTracking":return R(Kg,e);case"dropTip":return R(zr,e);case"dropTipInPlace":return R(gs,e);case"home":return R(Xg,e);case"moveRelative":return R(Zg,e);case"moveToAddressableArea":return R(Fe,e);case"moveToAddressableAreaForDropTip":return R(wc,e);case"moveToCoordinates":return R(Qg,e);case"moveToWell":return R(B,e);case"pickUpTip":return R(ts,e);case"prepareToAspirate":return R(Lt,e);case"touchTip":return R(Et,e);case"tryLiquidProbe":return R(Jg,e)}},D=mT;function qy(e){return Object.keys(e).sort((r,n)=>{const a=G(e[r].stack),s=G(e[n].stack),o=parseInt(a),i=parseInt(s);return Me.includes(a)&&Me.includes(s)?r.localeCompare(n):Me.includes(a)?1:Me.includes(s)?-1:o-i})}function Uy(e){const{pipetteId:t,tiprackId:r,invariantContext:n,robotState:a,nozzles:s,primaryNozzle:o}=e,i=n.pipetteEntities[t]?.spec?.channels,l=n.labwareEntities[r]?.def,u=a.tipState.tipracks[r];if(!i||!l||!u)return console.assert(!1,`Pipette ${t} missing channels/spec or tiprack definition`),null;const p=E=>u[E]===wa,d=c.orderWells(l.ordering,"t2b","l2r"),f=c.orderWells(l.ordering,"b2t","l2r"),_=E=>E.find(p)??null,m=E=>[...E].reverse().find(p)??null,h=E=>E.find(v=>v.every(p))??null,b=E=>[...E].reverse().find(v=>v.every(p))??null,T=i===8&&s===c.SINGLE,y=T&&o===c.H1_NOZZLE,A=T&&o===c.A1_NOZZLE,S=i===96&&s===c.SINGLE,g=S&&o===c.H12_NOZZLE,I=S&&o===c.A12_NOZZLE,L=S&&o===c.H1_NOZZLE,w=S&&o===c.A1_NOZZLE;if(i===1||y||g)return _(d);if(A)return _(f);if(s===c.PARTIAL_COLUMN){const E=_(d);if(!E)return null;const v=d.indexOf(E);return d[v]??null}if(s===c.ALL&&i===8)return h(l.ordering)?.[0]??null;if(w)return m(d);if(I)return _(f);if(L)return m(f);if(s===c.COLUMN){const E=l.ordering;return(o===c.A1_NOZZLE?b(E):h(E))?.[0]??null}if(s===c.ROW){const E=l.ordering,v=E[0].map(($,q)=>E.map(ee=>ee[q]));return(o===c.A1_NOZZLE?b(v):h(v))?.[0]??null}return s===c.ALL&&i===96?d.every(p)?d[0]:null:(console.assert(!1,`Unhandled _getNextTip case for pipette ${t}`),null)}function xa(e,t,r,n,a,s){const o=r.pipetteEntities[e];if(!o)throw new Error(`cannot getNextTiprack, no pipette entity for pipette "${e}"`);const i=qy(n.labware).filter(m=>{console.assert(r.labwareEntities[m]?.labwareDefURI!=null,`cannot getNextTiprack, no labware entity for "${m}"`);const h=G(n.labware[m].stack)!=="offDeck",b=r.labwareEntities[m].labwareDefURI;return h&&b===t});let l=i;const u=o.spec.channels===96,p=[],d=[];u&&(l=l.filter(m=>{const h=n.labware[m].stack[1],b=r.labwareEntities[h],T=b?.def.parameters.loadName==="opentrons_flex_96_tiprack_adapter"&&c.getLabwareDefIsStandard(b?.def),y=s===c.ALL?T:!T;return y||p.push(m),y})),l=l.filter(m=>{const h=Object.entries(n.labware).find(([b,T])=>T.stack.includes(m)&&c.getIsLid(r.labwareEntities[b].def));return h!=null&&d.push(m),h==null});let f=null,_=null;for(const m of l){const h=Uy({pipetteId:e,tiprackId:m,nozzles:s,invariantContext:r,robotState:n,primaryNozzle:a}),{isSafe:b}=h!=null?dt({robotState:n,invariantContext:r,pipetteId:e,labwareId:m,wellTargetName:h,primaryNozzle:a,nozzleConfiguration:s}):{isSafe:!1},{isSafe:T,isComplete:y=!1}=h!=null?ep({tipState:n.tipState.tipracks[m],primaryNozzle:a,channels:o.spec.channels,nozzleConfiguration:s,wellName:h,tiprackDef:r.labwareEntities[m].def}):{isSafe:!1};if(h&&b&&T&&y){f=m,_=h;break}}return f&&_?{nextTiprack:{tiprackId:f,well:_},tipracks:{totalTipracks:i.length,excludedBy96Channel:p.length,excludedByLid:d.length,filteredSortedTiprackIds:l}}:{nextTiprack:null,tipracks:{totalTipracks:i.length,excludedBy96Channel:p.length,excludedByLid:d.length,filteredSortedTiprackIds:l}}}function Ns(e,t,r){const n=t.pipetteEntities[e],a=n.spec.liquids.default.maxVolume,s=n.tiprackLabwareDef;let o=null;for(const l of s)if(c.getLabwareDefURI(l)===r){o=l;break}const i=c.getTiprackVolume(o??s[0]);return!a||!i?(console.assert(!1,`getPipetteEffectiveMaxVol expected tiprackMaxVol and pipette maxVolume to be > 0, got',
121
- ${a}, ${i}`),NaN):Kb([i,a])??NaN}function Ot(e,t){return t in e.modules||console.warn(`getModuleState expected module id "${t}" to be in robot state`),e.modules[t]?.moduleState}const Ds=(e,t)=>{const r=e.modules[t]?.moduleState;return r&&r.type===c.THERMOCYCLER_MODULE_TYPE?r:null},Un=(e,t)=>{const r=e.modules[t]?.moduleState;return r&&r.type===c.ABSORBANCE_READER_TYPE?r:null},ft=(e,t)=>{const r=e.modules[t]?.moduleState;return r&&r.type===c.FLEX_STACKER_MODULE_TYPE?r:null},st=(e,t)=>{const r=e.modules[t]?.moduleState;return r&&r.type===c.VACUUM_MODULE_TYPE?r:null},$y=(e,t,r)=>{const{moduleId:n,measureMode:a,sampleWavelengths:s,referenceWavelength:o}=e,i=Un(r,n),l=[];if(i==null&&l.push(Z()),l.length>0)return{errors:l};const u=[R(Ts,{moduleId:n}),R(u_,{moduleId:n,measureMode:a,sampleWavelengths:s,referenceWavelength:o??void 0})];return ne(u,t,r)},Vy=(e,t,r)=>{const n=[],a=Un(r,e.moduleId);if((a==null||e.moduleId==null)&&n.push(Z()),a?.initialization==null&&n.push(Ib()),n.length>0)return{errors:n};const{moduleId:s,fileName:o}=e,i=[R(Ts,{moduleId:s}),R(p_,{moduleId:s,fileName:o})];return ne(i,t,r)},DS=(e,t,r)=>{const{pipetteId:n,trashId:a,flowRate:s,volume:o}=e,i=[R(Fe,{pipetteId:n,fixtureId:a,offset:wt}),O(Lt,{pipetteId:n}),R(At,{pipetteId:n,volume:o,flowRate:s})];return ne(i,t,r)},MS=(e,t,r)=>{const{pipetteId:n,volume:a,flowRate:s,wasteChuteId:o}=e,i=[R(Fe,{pipetteId:n,fixtureId:o,offset:wt}),O(Lt,{pipetteId:n}),R(At,{pipetteId:n,flowRate:s,volume:a})];return ne(i,t,r)},FS=(e,t,r)=>{const{labwareId:n,wellName:a,flowRate:s,pipetteId:o,volume:i,type:l}=e,u=t.pipetteEntities[o].pythonName,p=l==="aspirate"?[]:[O(Lt,{pipetteId:o})],d=()=>({commands:[],python:`${u}.air_gap(${[`volume=${i}`,`height=${qu}`,`flow_rate=${s}`].join(", ")})`}),f=[O(B,{pipetteId:o,labwareId:n,wellName:a,wellLocation:{origin:"top",offset:{z:qu,x:0,y:0}}}),...p,O(At,{pipetteId:o,volume:i,flowRate:s}),d];return ne(f,t,r)},By=(e,t,r)=>{const{pipetteId:n,trashId:a,flowRate:s}=e,{pipetteEntities:o,trashBinEntities:i}=t,l=o[n].pythonName,u=i[a].pythonName,p=()=>({commands:[],python:`${l}.flow_rate.blow_out = ${s}
122
- ${l}.blow_out(${u})`}),d=[O(Fe,{pipetteId:n,fixtureId:a,offset:wt}),O(Rn,{pipetteId:n,flowRate:s}),p];return ne(d,t,r)},xy=(e,t,r)=>{const{pipetteId:n,flowRate:a,wasteChuteId:s}=e,{pipetteEntities:o,wasteChuteEntities:i}=t,l=o[n].pythonName,u=i[s].pythonName,p=()=>({commands:[],python:`${l}.flow_rate.blow_out = ${a}
123
- ${l}.blow_out(${u})`}),d=[O(Fe,{pipetteId:n,fixtureId:s,offset:wt}),O(Rn,{pipetteId:n,flowRate:a}),p];return ne(d,t,r)};var ku,ih;function qS(){if(ih)return ku;ih=1;var e=l_();function t(r){var n=e(r),a=n%1;return n===n?a?n-a:n:0}return ku=t,ku}var Pu,lh;function US(){if(lh)return Pu;lh=1;var e=Q_(),t=gc(),r=qS(),n=Math.ceil,a=Math.max;function s(o,i,l){(l?t(o,i,l):i===void 0)?i=1:i=a(r(i),0);var u=o==null?0:o.length;if(!u||i<1)return[];for(var p=0,d=0,f=Array(n(u/i));p<u;)f[d++]=e(o,p,p+=i);return f}return Pu=s,Pu}var $S=US();const Hy=xe($S),zy=(e,t,r)=>{const{pipetteId:n,trashLocation:a}=e;let s=[];const o=kc(a);if(r.tipState.pipettes[n]?.hasTip){const i=t.pipetteEntities[n].pythonName,l=()=>({commands:[],python:`${i}.drop_tip()`});s=[O(wc,{pipetteId:n,addressableAreaName:o}),O(gs,{pipetteId:n}),l]}return ne(s,t,r)},jy=(e,t,r)=>{const n=wt,{pipetteId:a,wasteChuteId:s}=e,{pipetteEntities:o,wasteChuteEntities:i}=t;let l=[];if(!r.tipState.pipettes[a].hasTip)l=[];else{const u=o[a].pythonName,p=i[s].pythonName,d=()=>({commands:[],python:`${u}.drop_tip(${p})`});l=[O(Fe,{pipetteId:a,fixtureId:s,offset:n}),O(gs,{pipetteId:a}),d]}return ne(l,t,r)},Ha=(e,t,r)=>{const{pipette:n,dropTipLocation:a,nozzles:s,primaryNozzle:o,tipRack:i,isFromMixCommand:l=!1,tipSelectionArgs:u}=e,p=r.pipettes[n].nozzles,d=r.pipettes[n].tiprackId,f=t.pipetteEntities[n]?.spec,_=f?.channels;let m=null;if(u==null){if(i==null)return{errors:[kb()]};const E=xa(n,i,t,r,o,s);m=E.nextTiprack;const v=E.tipracks,{excludedBy96Channel:k,excludedByLid:$}=v??{},q=m==null&&_===96&&k>0;if(s===c.ALL&&q)return{errors:[mb()]};if(s===c.COLUMN&&q)return{errors:[hb()]};if($>0&&m==null)return{errors:[qb()]}}else m={tiprackId:u.tipRackId,well:u.tipWell};if(m==null)return{errors:[fb()]};const h=(f?.displayCategory==="FLEX"||_===96)??!1;if(!f)return{errors:[ut({pipette:n})]};const b=t.labwareEntities[m.tiprackId]?.def,T=t.wasteChuteEntities[a]!=null,y=t.trashBinEntities[a]!=null;if(!b)return{errors:[ct({actionName:"replaceTip",labware:m.tiprackId})]};const A=r.tipState.pipettes[n]?.hasTip;if(!a||!T&&!y&&A)return{errors:[En()]};if(Dn({pipette:n,labware:m.tiprackId,invariantContext:t,prevRobotState:r}))return{errors:[ma()]};const S=Cn(m.tiprackId,r.labware);if(qn(r.modules,S,h?c.FLEX_ROBOT_TYPE:c.OT2_ROBOT_TYPE))return{errors:[_a()]};if(!h){if(Mn(r.modules,S))return{errors:[ha()]};if(Fn(r.modules,S,f))return{errors:[ya()]}}const g=l?R:O,I=[];_!==1&&e.nozzles!=null&&(e.nozzles!==p||m.tiprackId!==d)&&I.push(R(m_,{configurationParams:{primaryNozzle:o,style:e.nozzles},pipetteId:e.pipette}));const L=u?St:nc;let w=[g(zr,{pipette:n,dropTipLocation:a}),...I,g(ts,{pipetteId:n,labwareId:m.tiprackId,wellName:m.well,nozzles:e.nozzles,tipTrackingOption:L,primaryNozzle:o})];return T&&(w=[g(jy,{pipetteId:e.pipette,wasteChuteId:t.wasteChuteEntities[e.dropTipLocation].id}),...I,g(ts,{pipetteId:n,labwareId:m.tiprackId,wellName:m.well,nozzles:e.nozzles,tipTrackingOption:L,primaryNozzle:o})]),y&&(w=[g(zy,{pipetteId:n,trashLocation:t.trashBinEntities[e.dropTipLocation].location}),...I,g(ts,{pipetteId:n,labwareId:m.tiprackId,wellName:m.well,nozzles:e.nozzles,tipTrackingOption:L,primaryNozzle:o})]),ne(w,t,r)},uh=(e=0)=>e>0?[O(fe,{seconds:e})]:[],VS=e=>()=>{const{invariantContext:t,pipette:r,times:n,volume:a,aspirateDelaySeconds:s,dispenseDelaySeconds:o,finalPushOut:i,aspirateFlowRateUlSec:l,dispenseFlowRateUlSec:u,positionArgs:p}=e,{pipetteEntities:d,labwareEntities:f}=t,_=d[r].pythonName;let m=null;if(p!=null){const{labware:b,well:T,wellOrigin:y,xOffset:A,yOffset:S,zOffset:g}=p,I=f[b].pythonName,L={origin:y,offset:{x:A,y:S,z:g}};m=`location=${I}[${N(T)}]${Vt(L)}`}const h=[`repetitions=${n}`,`volume=${a}`,...m!=null?[m]:[],`aspirate_flow_rate=${l}`,`dispense_flow_rate=${u}`,...s!=null&&s!==0?[`aspirate_delay=${s}`]:[],...o!=null&&o!==0?[`dispense_delay=${o}`]:[],...i!=null?[`final_push_out=${i}`]:[]];return{commands:[],python:`${_}.mix(
124
- ${K(h.join(`,
120
+ `).trimStart()}`:""},FS=(e,t,r,n)=>{const{spec:a}=t,s=e===c.ROW,o=e===c.COLUMN||e===c.ALL&&a.channels===8,i=n.ordering[0].length===1;if(s&&i){const u=o?`H${r.slice(1)}`:`${r.charAt(0)}12`,p=a.nozzleMap[u],d=a.nozzleMap[r],f=p.map((_,b)=>_-d[b]),h=[f[0]/2,f[1]/2,0],m=d.map((_,b)=>_+h[b]);return{x:m[0],y:m[1],z:m[2]}}const l=a.nozzleMap[r];return{x:l[0],y:l[1],z:l[2]}},Tn={back_left:{x:-43.25,y:454.9,z:211.91},front_right:{x:128.75,y:402,z:211.91}},mh={x:Tn.back_left.x,y:Tn.back_left.y,z:Tn.back_left.z},US={x:Tn.front_right.x,y:Tn.front_right.y,z:Tn.front_right.z},qS=49.5,Jy=e=>{if(e.addressableArea?.areaType==="slot"){const t=`cutout${e.addressableArea?.id}`;if(t)return t}return null},$S=(e,t,r,n,a,s,o)=>{const{pipetteBoundingBoxOffsets:i}=e.spec,l=FS(s,e,a,n),u=i.backLeftCorner[0],p=i.frontRightCorner[0],d=i.backLeftCorner[1],f=i.frontRightCorner[1],h=r.x-(l.x-u),m=r.x+(p-l.x),_=r.y+(d-l.y),b=r.y-(l.y-f),T=(r.z??0)+t-o;return[{x:h,y:_,z:T},{x:m,y:b,z:T},{x:m,y:_,z:T},{x:h,y:b,z:T}]},eb=(e,t)=>{const r=e[1].x<t[0].x,n=e[0].x>t[1].x,a=e[0].y<t[1].y,s=e[1].y>t[0].y;return!(r||n||a||s)},hh=(e,t)=>{if(t===c.FLEX_ROBOT_TYPE){const r=c.getDeckDefFromRobotType(t),{addressableAreas:n}=r.locations;return n.find(s=>s.id.includes(e))?.offsetFromCutoutFixture[2]??0}return c.getModuleDef(e).dimensions.bareOverallHeight},VS=e=>{const t=c.getDeckDefFromRobotType(e);return Object.values(t.cutoutFixtures).find(n=>c.WASTE_CHUTE_FIXTURES.includes(n.id))?.height??0},BS=(e,t,r,n)=>{const{modules:a,labware:s}=e,{moduleEntities:o,labwareEntities:i,wasteChuteEntities:l}=t;let u=0;const p=r?.addressableArea?.id;if(p){const d=Hc(s,p),f=Object.keys(a).find(m=>a[m].slot===p);Object.values(l).find(m=>m.location===Jy(r))&&(u+=VS(n)),d.length>0?d.forEach(m=>{a[m]!=null&&(u+=hh(o[m].model,n)),s[m]!=null&&(u+=i[m].def.dimensions.zDimension)}):f!=null&&(u+=hh(o[f].model,n))}return u},xS=(e,t,r,n,a)=>{for(const s of t){const o=s.addressableArea?.boundingBox,i=s.position;if(i==null||o==null)continue;const l={x:i[0],y:o.yDimension+i[1],z:i[2]},u={x:i[0]+o.xDimension,y:i[1],z:i[2]};if(eb([e[0],e[1]],[l,u])&&e[0].z!=null&&BS(r,n,s,a)>=e[0]?.z&&s.addressableArea!=null)return{addressableAreaCausingCollision:s.addressableArea}}return null},HS=(e,t)=>Object.values(t).find(r=>r.type===c.THERMOCYCLER_MODULE_TYPE)?eb([mh,US],[e[0],e[1]])&&e[0].x<=mh.z:!1,zS=(e,t,r,n)=>{const{wells:a}=e.def,s=a[t];return{x:s.x+r.x,y:s.y+r.y,z:n?s.z+(r.z??0):e.def.dimensions.zDimension}},ft=e=>{const{robotState:t,invariantContext:r,pipetteId:n,labwareId:a,wellLocationOffset:s={x:0,y:0,z:0},wellTargetName:o,primaryNozzle:i,nozzleConfiguration:l,tiprackId:u}=e,{pipetteEntities:p,labwareEntities:d,stagingAreaEntities:f,moduleEntities:h}=r,{labware:m,tipState:_}=t,b=p[n];if(b==null)return{isSafe:!0};const{spec:T}=b,{channels:y}=T,I=T?.displayCategory==="FLEX"?c.FLEX_ROBOT_TYPE:c.OT2_ROBOT_TYPE,S=c.getDeckDefFromRobotType(I);if(d[a]==null||o==null||y===1)return{isSafe:!0};const L=u?!0:_.pipettes[n]?.hasTip??!1,g=u??_.pipettes[n]?.tiprackURI,E=g!=null?d[g]:null,k=E!=null?E.def.parameters.tipLength:0,v=Object.values(f).map(P=>P.location),$=L?k??0:0,q=G(m[a].stack),ee=m[a].stack.some(P=>h[P]?.type===c.THERMOCYCLER_MODULE_TYPE),de=c.getDeckDefFromRobotType(c.FLEX_ROBOT_TYPE),Te=(ee?c.getPositionFromSlotId(c.B1_ADDRESSABLE_AREA,de):c.getPositionFromSlotId(q,S))??[0,0,0],se=ee?de.locations.addressableAreas.find(P=>P.id===c.THERMOCYCLER_MODULE_V2)?.offsetFromCutoutFixture??[0,0,0]:[0,0,0],Ie={x:se[0]+Te[0],y:se[1]+Te[1],z:se[2]+Te[2]},{def:Pe}=d[a],He=rb({wellTargetName:o,primaryNozzle:i,nozzleConfiguration:l,specs:T,labwareDef:Pe}),Ve={x:s.x+He.x+Ie.x,y:s.y+He.y+Ie.y,z:(s.z??0)+(Ie.z??0)},te=zS(d[a],o,Ve,L),Se=E!=null?jS({pipetteSpecs:T,tiprackUri:E.labwareDefURI,nozzles:l}):0,ze=d[a].def,Ce=$S(b,$,te,ze,i,l,Se);if(!WS({channels:y,boundingBox:Ce,robotType:I}))return{isSafe:!1,reason:{type:"outsidePipetteExtents"}};const W=(I===c.OT2_ROBOT_TYPE?c.getOt2SurroundingSlots(q):c.getFlexSurroundingSlots(q,v)).map(P=>{const V=c.getAddressableAreaFromSlotId(P,S),M=c.getPositionFromSlotId(P,S);return{addressableArea:V,position:M}});if(HS(Ce,h))return{isSafe:!1,reason:{type:"thermocyclerLidCollision"}};const C=xS(Ce,W,t,r,I);return C!=null?{isSafe:!1,reason:{type:"adjacentAdressableAreaCollision",addressableAreaCausingCollision:C.addressableAreaCausingCollision}}:{isSafe:!0}},lp=e=>{const{tipState:t,primaryNozzle:r,channels:n,nozzleConfiguration:a,wellName:s,tiprackDef:o,tipsToIgnore:i=[]}=e,{ordering:l}=o;if(n===1)return{isSafe:!0,isComplete:t[s]!==ue};if(n===8){const u=r!==c.A1_NOZZLE,p=rc(s),d=l[p],f=u?[...d].reverse():d;if(a===c.SINGLE){const h=f.indexOf(s);return{isSafe:f.slice(h+1).every(m=>t[m]===ue||i.includes(m)),isComplete:t[s]!==ue}}if(a===c.PARTIAL_COLUMN){const h=f.indexOf(s),m=c.PARTIAL_NOZZLE_MAP[r],_=u?f.slice(h-m+1,h+1):f.slice(h,h+m);return{isSafe:f.slice(h+1).every(b=>t[b]===ue||i.includes(b)),isComplete:_.every(b=>t[b]!==ue&&!i.includes(b))}}return{isSafe:!0,isComplete:f.every(h=>t[h]!==ue)}}if(a===c.ALL)return{isSafe:!0,isComplete:Object.keys(o.wells).every(u=>t[u]!==ue)};if(a===c.COLUMN){const u=r===c.A12_NOZZLE,p=rc(s),d=l[p],f=u?[...l].reverse():l,h=f.indexOf(d);return{isSafe:f.slice(h+1).flat().every(m=>t[m]===ue||i.includes(m)),isComplete:f[h].every(m=>t[m]!==ue)}}if(a===c.ROW){const u=l[0].map((h,m)=>l.map(_=>_[m])),d=r===c.H1_NOZZLE?[...u].reverse():u,f=d.findIndex(h=>h.some(m=>m===s));return{isSafe:d.slice(f+1).flat().every(h=>t[h]===ue||i.includes(h)),isComplete:d[f].every(h=>t[h]!==ue)}}if(a===c.SINGLE){const u=gn(r??cs({nozzles:a,channels:n})),p=up(r??cs({nozzles:a,channels:n})),d=u==="H",h=p==="12"?[...l].reverse():l,m=h.findIndex(_=>_.some(b=>b===s));return{isSafe:h.slice(m).every(_=>{const b=d?[..._].reverse():_,T=b.findIndex(y=>gn(y)===gn(s));return b.slice(T).every(y=>t[y]===ue||i.includes(y)||y===s)}),isComplete:t[s]!==ue}}return{isSafe:!1}},gn=e=>e.slice(0,1),up=e=>e.slice(1),rc=e=>parseInt(e.slice(1))-1,cs=e=>{const{nozzles:t,channels:r}=e;if(r===8&&t===c.SINGLE)return"H1";if(r===96){if(t===c.COLUMN)return"A12";if(t===c.SINGLE)return"H12"}return"A1"},Ga=e=>{const{wellSets:t,nozzles:r,channels:n,primaryNozzle:a}=e;return r===c.ROW?t.map(s=>s[0]):t.map(s=>n===96&&r===c.ALL?a:r===c.COLUMN||n===8&&r===c.ALL||n===8&&r===c.PARTIAL_COLUMN?gn(a)==="H"?s[s.length-1]:s[0]:(console.assert(s.length===1,"Well set for SINGLE nozzle configuration should have exactly 1 well"),s[0]))},jS=e=>{const{pipetteSpecs:t,tiprackUri:r,nozzles:n}=e,{channels:a}=t,s=GS(a,n),o=t.pickUpTipConfigurations.pressFit.configurationsByNozzleMap[s]?.default.tipOverlaps;if(o==null)return console.error(`No tip overlaps found for ${n} and ${s} overlap.`),0;const i=Math.max(...Object.keys(o).map(l=>Number(l.slice(1))));return o[`v${i}`]?.[r]??o[`v${i}`]?.default??0},GS=(e,t)=>{if(e===1)return"SingleA1";if(e===8)return t===c.SINGLE?"SingleH1":"Full";if(e===96){if(t===c.SINGLE)return"SingleH12";if(t===c.COLUMN)return"Column12";if(t===c.ROW)return"RowA"}return"Full"},WS=e=>{const{channels:t,boundingBox:r,robotType:n}=e,a=c.getRobotDefFromRobotType(n),{paddingOffsets:s}=a,{front:o,rear:i,leftSide:l,rightSide:u}=s,[p,d]=a.extents,[f,h]=r,{x:m,y:_}=f,{x:b,y:T}=h;if(t===96){if(b<l)return!1;const y=p+u;if(m>y)return!1}if(t!==1){if(_<o)return!1;const y=d+i;if(T>y)return!1}return!0},tb=e=>{const{channels:t,nozzleMap:r}=e;if(t===1)return 0;const[n,a]=["A1","B1"].map(o=>r[o][1]);return Math.abs(n-a)},rb=e=>{const t=YS(e),r=KS(e);return{x:t,y:r}},YS=e=>{const{primaryNozzle:t,nozzleConfiguration:r,specs:n,labwareDef:a}=e,{channels:s}=n;if(s!==96)return 0;const{ordering:o}=a,i=o.length===1;if(!i)return 0;let l;const u=up(t)==="12"?1:-1;if(r===c.ALL&&s===96||r===c.ROW)l=12;else if(r===c.QUADRANT)l=6;else return u*qS;const p=tb(n);return i?(l-1)*p/2*u:0},KS=e=>{const{wellTargetName:t,primaryNozzle:r,nozzleConfiguration:n,specs:a,labwareDef:s}=e,{channels:o}=a;if(o===1)return 0;const i=tb(a),{ordering:l}=s,u=l.findIndex(f=>f.includes(t));if(l[u].length!==1)return 0;if(n===c.PARTIAL_COLUMN){const h=-1*(8-c.PARTIAL_NOZZLE_MAP[r])*i,m=7*i/2;return h+m}const d=gn(r)==="H"?-1:1;return 7*i/2*d};function nb(e){const t=e.length===1?e[0]:null;return t!=null&&"steps"in t?{numRepetitions:t.repetitions,repeatingProfileSteps:t.steps}:{numRepetitions:1,repeatingProfileSteps:cp(e)}}function cp(e){return e.flatMap(t=>"steps"in t?W_(t.steps,t.repetitions):t)}const XS=e=>{switch(e.commandCreatorFnName){case"consolidate":return O(mb,e);case"delay":return O(me,e);case"waitForModuleTask":return O(Sb,e);case"distribute":return O(hb,e);case"transfer":return O(Tb,e);case"mix":return O(fb,e);case"moveLabware":return O(P_,e);case"captureImage":return O(I_,e);case"engageMagnet":return O(L_,e);case"disengageMagnet":return O(A_,e);case"setTemperature":return O(vc,e);case"deactivateTemperature":return O(S_,e);case"waitForTemperature":return O(Mc,e);case"thermocyclerProfile":return O(yb,e);case"thermocyclerState":return O(bb,e);case"heaterShaker":return O(_b,e);case"comment":return O(E_,e);case"absorbanceReaderOpenLid":return O(T_,e);case"absorbanceReaderCloseLid":return O(ws,e);case"absorbanceReaderRead":return O(ib,e);case"absorbanceReaderInitialize":return O(ob,e);case"flexStackerEmpty":return O(O_,{...e,strategy:"manualWithPause"});case"flexStackerFillItems":return O(R_,e);case"flexStackerRetrieve":return O(k_,e);case"flexStackerStore":return O(v_,{...e,strategy:"automatic"});case"vacuumCloseVent":return O(Da,e);case"vacuumOpenVent":return O(N_,e);case"vacuumSetPumpPower":return O(Cc,e);case"vacuumSetPumpPressure":return O(Nc,e);case"vacuumStartRunProfile":return O(Dc,e);case"vacuumStopPump":return O(M_,e);case"vacuumCloseVentSetPumpPressure":return O(Ib,e);case"vacuumCloseVentSetPumpPower":return O(gb,e);case"vacuumCloseVentStartProfile":return O(Eb,e);case"airGapInPlace":return O(At,e);case"aspirate":return O(At,e);case"aspirateInPlace":return O(Na,e);case"aspirateWhileTracking":return O(pI,e);case"blowOutInPlace":return O(Dn,e);case"blowout":return O(Oc,e);case"configureForVolume":return O(An,e);case"configureNozzleLayout":return O(w_,e);case"dispense":return O(Rc,e);case"dispenseInPlace":return O(Xe,e);case"dispenseWhileTracking":return O(dI,e);case"dropTip":return O(Hr,e);case"dropTipInPlace":return O(Ss,e);case"home":return O(fI,e);case"moveRelative":return O(mI,e);case"moveToAddressableArea":return O(Fe,e);case"moveToAddressableAreaForDropTip":return O(kc,e);case"moveToCoordinates":return O(hI,e);case"moveToWell":return O(B,e);case"pickUpTip":return O(ss,e);case"prepareToAspirate":return O(Lt,e);case"touchTip":return O(Et,e);case"tryLiquidProbe":return O(_I,e);case"heaterShaker/closeLabwareLatch":return O(F_,e);case"heaterShaker/openLabwareLatch":return O(U_,e);case"heaterShaker/setAndWaitForShakeSpeed":return O(q_,e);case"heaterShaker/deactivateHeater":return O(ju,e);case"heaterShaker/deactivateShaker":return O(Gu,e);case"thermocycler/closeLid":return O(Fc,e);case"thermocycler/openLid":return O(B_,e);case"thermocycler/deactivateBlock":return O($_,e);case"thermocycler/deactivateLid":return O(V_,e);case"thermocycler/setTargetBlockTemperature":return O(x_,e);case"thermocycler/setTargetLidTemperature":return O(Uc,e);case"thermocycler/startRunExtendedProfile":return O(C_,e)}},D=CT;function ab(e){return Object.keys(e).sort((r,n)=>{const a=G(e[r].stack),s=G(e[n].stack),o=parseInt(a),i=parseInt(s);return ve.includes(a)&&ve.includes(s)?r.localeCompare(n):ve.includes(a)?1:ve.includes(s)?-1:o-i})}function sb(e){const{pipetteId:t,tiprackId:r,invariantContext:n,robotState:a,nozzles:s,primaryNozzle:o}=e,i=n.pipetteEntities[t]?.spec?.channels,l=n.labwareEntities[r]?.def,u=a.tipState.tipracks[r];if(!i||!l||!u)return console.assert(!1,`Pipette ${t} missing channels/spec or tiprack definition`),null;const p=E=>u[E]===Ra,d=c.orderWells(l.ordering,"t2b","l2r"),f=c.orderWells(l.ordering,"b2t","l2r"),h=E=>E.find(p)??null,m=E=>[...E].reverse().find(p)??null,_=E=>E.find(k=>k.every(p))??null,b=E=>[...E].reverse().find(k=>k.every(p))??null,T=i===8&&s===c.SINGLE,y=T&&o===c.H1_NOZZLE,A=T&&o===c.A1_NOZZLE,w=i===96&&s===c.SINGLE,I=w&&o===c.H12_NOZZLE,S=w&&o===c.A12_NOZZLE,L=w&&o===c.H1_NOZZLE,g=w&&o===c.A1_NOZZLE;if(i===1||y||I)return h(d);if(A)return h(f);if(s===c.PARTIAL_COLUMN){const E=h(d);if(!E)return null;const k=d.indexOf(E);return d[k]??null}if(s===c.ALL&&i===8)return _(l.ordering)?.[0]??null;if(g)return m(d);if(S)return h(f);if(L)return m(f);if(s===c.COLUMN){const E=l.ordering;return(o===c.A1_NOZZLE?b(E):_(E))?.[0]??null}if(s===c.ROW){const E=l.ordering,k=E[0].map(($,q)=>E.map(ee=>ee[q]));return(o===c.A1_NOZZLE?b(k):_(k))?.[0]??null}return s===c.ALL&&i===96?d.every(p)?d[0]:null:(console.assert(!1,`Unhandled _getNextTip case for pipette ${t}`),null)}function Wa(e,t,r,n,a,s){const o=r.pipetteEntities[e];if(!o)throw new Error(`cannot getNextTiprack, no pipette entity for pipette "${e}"`);const i=[],l=ab(n.labware).filter(m=>{console.assert(r.labwareEntities[m]?.labwareDefURI!=null,`cannot getNextTiprack, no labware entity for "${m}"`);const _=G(n.labware[m].stack),b=oy(_),T=sy({labwareId:m,labwareRobotState:n.labware,labwareEntities:r.labwareEntities});if(b&&T&&c.getIsTiprack(r.labwareEntities[m].def))return i.push(m),!1;const y=r.labwareEntities[m].labwareDefURI;return b&&y===t});let u=l;const p=o.spec.channels===96,d=[];p&&(u=u.filter(m=>{const _=n.labware[m].stack[1],b=r.labwareEntities[_],T=b?.def.parameters.loadName==="opentrons_flex_96_tiprack_adapter"&&c.getLabwareDefIsStandard(b?.def),y=s===c.ALL?T:!T;return y||d.push(m),y}));let f=null,h=null;for(const m of u){const _=sb({pipetteId:e,tiprackId:m,nozzles:s,invariantContext:r,robotState:n,primaryNozzle:a}),{isSafe:b}=_!=null?ft({robotState:n,invariantContext:r,pipetteId:e,labwareId:m,wellTargetName:_,primaryNozzle:a,nozzleConfiguration:s}):{isSafe:!1},{isSafe:T,isComplete:y=!1}=_!=null?lp({tipState:n.tipState.tipracks[m],primaryNozzle:a,channels:o.spec.channels,nozzleConfiguration:s,wellName:_,tiprackDef:r.labwareEntities[m].def}):{isSafe:!1};if(_&&b&&T&&y){f=m,h=_;break}}return f&&h?{nextTiprack:{tiprackId:f,well:h},tipracks:{totalTipracks:l.length,excludedBy96Channel:d.length,excludedByLid:i.length,filteredSortedTiprackIds:u}}:{nextTiprack:null,tipracks:{totalTipracks:l.length,excludedBy96Channel:d.length,excludedByLid:i.length,filteredSortedTiprackIds:u}}}function Us(e,t,r){const n=t.pipetteEntities[e],a=n.spec.liquids.default.maxVolume,s=n.tiprackLabwareDef;let o=null;for(const l of s)if(c.getLabwareDefURI(l)===r){o=l;break}const i=c.getTiprackVolume(o??s[0]);return!a||!i?(console.assert(!1,`getPipetteEffectiveMaxVol expected tiprackMaxVol and pipette maxVolume to be > 0, got',
121
+ ${a}, ${i}`),NaN):mT([i,a])??NaN}function Ot(e,t){return t in e.modules||console.warn(`getModuleState expected module id "${t}" to be in robot state`),e.modules[t]?.moduleState}const qs=(e,t)=>{const r=e.modules[t]?.moduleState;return r&&r.type===c.THERMOCYCLER_MODULE_TYPE?r:null},zn=(e,t)=>{const r=e.modules[t]?.moduleState;return r&&r.type===c.ABSORBANCE_READER_TYPE?r:null},mt=(e,t)=>{const r=e.modules[t]?.moduleState;return r&&r.type===c.FLEX_STACKER_MODULE_TYPE?r:null},ot=(e,t)=>{const r=e.modules[t]?.moduleState;return r&&r.type===c.VACUUM_MODULE_TYPE?r:null},ob=(e,t,r)=>{const{moduleId:n,measureMode:a,sampleWavelengths:s,referenceWavelength:o}=e,i=zn(r,n),l=[];if(i==null&&l.push(Q()),l.length>0)return{errors:l};const u=[O(ws,{moduleId:n}),O(b_,{moduleId:n,measureMode:a,sampleWavelengths:s,referenceWavelength:o??void 0})];return ae(u,t,r)},ib=(e,t,r)=>{const n=[],a=zn(r,e.moduleId);if((a==null||e.moduleId==null)&&n.push(Q()),a?.initialization==null&&n.push(Vb()),n.length>0)return{errors:n};const{moduleId:s,fileName:o}=e,i=[O(ws,{moduleId:s}),O(g_,{moduleId:s,fileName:o})];return ae(i,t,r)},ZS=(e,t,r)=>{const{pipetteId:n,trashId:a,flowRate:s,volume:o}=e,i=[O(Fe,{pipetteId:n,fixtureId:a,offset:wt}),R(Lt,{pipetteId:n}),O(At,{pipetteId:n,volume:o,flowRate:s})];return ae(i,t,r)},QS=(e,t,r)=>{const{pipetteId:n,volume:a,flowRate:s,wasteChuteId:o}=e,i=[O(Fe,{pipetteId:n,fixtureId:o,offset:wt}),R(Lt,{pipetteId:n}),O(At,{pipetteId:n,flowRate:s,volume:a})];return ae(i,t,r)},JS=(e,t,r)=>{const{labwareId:n,wellName:a,flowRate:s,pipetteId:o,volume:i,type:l}=e,u=t.pipetteEntities[o].pythonName,p=l==="aspirate"?[]:[R(Lt,{pipetteId:o})],d=()=>({commands:[],python:`${u}.air_gap(${[`volume=${i}`,`height=${Bu}`,`flow_rate=${s}`].join(", ")})`}),f=[R(B,{pipetteId:o,labwareId:n,wellName:a,wellLocation:{origin:"top",offset:{z:Bu,x:0,y:0}}}),...p,R(At,{pipetteId:o,volume:i,flowRate:s}),d];return ae(f,t,r)},lb=(e,t,r)=>{const{pipetteId:n,trashId:a,flowRate:s}=e,{pipetteEntities:o,trashBinEntities:i}=t,l=o[n].pythonName,u=i[a].pythonName,p=()=>({commands:[],python:`${l}.flow_rate.blow_out = ${s}
122
+ ${l}.blow_out(${u})`}),d=[R(Fe,{pipetteId:n,fixtureId:a,offset:wt}),R(Dn,{pipetteId:n,flowRate:s}),p];return ae(d,t,r)},ub=(e,t,r)=>{const{pipetteId:n,flowRate:a,wasteChuteId:s}=e,{pipetteEntities:o,wasteChuteEntities:i}=t,l=o[n].pythonName,u=i[s].pythonName,p=()=>({commands:[],python:`${l}.flow_rate.blow_out = ${a}
123
+ ${l}.blow_out(${u})`}),d=[R(Fe,{pipetteId:n,fixtureId:s,offset:wt}),R(Dn,{pipetteId:n,flowRate:a}),p];return ae(d,t,r)};var Du,_h;function eA(){if(_h)return Du;_h=1;var e=y_();function t(r){var n=e(r),a=n%1;return n===n?a?n-a:n:0}return Du=t,Du}var Mu,yh;function tA(){if(yh)return Mu;yh=1;var e=by(),t=Lc(),r=eA(),n=Math.ceil,a=Math.max;function s(o,i,l){(l?t(o,i,l):i===void 0)?i=1:i=a(r(i),0);var u=o==null?0:o.length;if(!u||i<1)return[];for(var p=0,d=0,f=Array(n(u/i));p<u;)f[d++]=e(o,p,p+=i);return f}return Mu=s,Mu}var rA=tA();const cb=xe(rA),tr=e=>{const{labwareDef:t,wells:r,primaryNozzle:n}=e,a=c.PARTIAL_NOZZLE_MAP[n]-1,{ordering:s,parameters:o}=t;return r.map(i=>{const l=s.find(p=>p.includes(i));if(l==null)return console.warn(`Could not find column for ${i} in ${o.loadName}`),i;if(l.length===1)return i;const u=l.indexOf(i);return u===-1?(console.warn(`Could not find column index of ${i}`),i):l[u+a]})},pb=(e,t,r)=>{const{pipetteId:n,trashLocation:a}=e;let s=[];const o=qc(a);if(r.tipState.pipettes[n]?.hasTip){const i=t.pipetteEntities[n].pythonName,l=()=>({commands:[],python:`${i}.drop_tip()`});s=[R(kc,{pipetteId:n,addressableAreaName:o}),R(Ss,{pipetteId:n}),l]}return ae(s,t,r)},db=(e,t,r)=>{const n=wt,{pipetteId:a,wasteChuteId:s}=e,{pipetteEntities:o,wasteChuteEntities:i}=t;let l=[];if(!r.tipState.pipettes[a].hasTip)l=[];else{const u=o[a].pythonName,p=i[s].pythonName,d=()=>({commands:[],python:`${u}.drop_tip(${p})`});l=[R(Fe,{pipetteId:a,fixtureId:s,offset:n}),R(Ss,{pipetteId:a}),d]}return ae(l,t,r)},Ya=(e,t,r)=>{const{pipette:n,dropTipLocation:a,nozzles:s,primaryNozzle:o,tipRack:i,isFromMixCommand:l=!1,tipSelectionArgs:u}=e,p=r.pipettes[n].nozzles,d=r.pipettes[n].tiprackId,f=t.pipetteEntities[n]?.spec,h=f?.channels;let m=null;if(u==null){if(i==null)return{errors:[Kb()]};const E=Wa(n,i,t,r,o,s);m=E.nextTiprack;const k=E.tipracks,{excludedBy96Channel:v,excludedByLid:$}=k??{},q=m==null&&h===96&&v>0;if(s===c.ALL&&q)return{errors:[Nb()]};if(s===c.COLUMN&&q)return{errors:[Db()]};if($>0&&m==null)return{errors:[rT()]}}else m={tiprackId:u.tipRackId,well:u.tipWell};if(m==null)return{errors:[Cb()]};const _=(f?.displayCategory==="FLEX"||h===96)??!1;if(!f)return{errors:[ct({pipette:n})]};const b=t.labwareEntities[m.tiprackId]?.def,T=t.wasteChuteEntities[a]!=null,y=t.trashBinEntities[a]!=null;if(!b)return{errors:[pt({actionName:"replaceTip",labware:m.tiprackId})]};const A=r.tipState.pipettes[n]?.hasTip;if(!a||!T&&!y&&A)return{errors:[Rn()]};if(Vn({pipette:n,labware:m.tiprackId,invariantContext:t,prevRobotState:r}))return{errors:[Ta()]};const w=qn(m.tiprackId,r.labware);if(Hn(r.modules,w,_?c.FLEX_ROBOT_TYPE:c.OT2_ROBOT_TYPE))return{errors:[Ia()]};if(!_){if(Bn(r.modules,w))return{errors:[ga()]};if(xn(r.modules,w,f))return{errors:[Ea()]}}const I=l?O:R,S=[];h!==1&&e.nozzles!=null&&(e.nozzles!==p||m.tiprackId!==d)&&S.push(O(w_,{configurationParams:{primaryNozzle:o,style:e.nozzles},pipetteId:e.pipette}));const L=u?St:uc;let g=[I(Hr,{pipette:n,dropTipLocation:a}),...S,I(ss,{pipetteId:n,labwareId:m.tiprackId,wellName:m.well,nozzles:e.nozzles,tipTrackingOption:L,primaryNozzle:o})];return T&&(g=[I(db,{pipetteId:e.pipette,wasteChuteId:t.wasteChuteEntities[e.dropTipLocation].id}),...S,I(ss,{pipetteId:n,labwareId:m.tiprackId,wellName:m.well,nozzles:e.nozzles,tipTrackingOption:L,primaryNozzle:o})]),y&&(g=[I(pb,{pipetteId:n,trashLocation:t.trashBinEntities[e.dropTipLocation].location}),...S,I(ss,{pipetteId:n,labwareId:m.tiprackId,wellName:m.well,nozzles:e.nozzles,tipTrackingOption:L,primaryNozzle:o})]),ae(g,t,r)},bh=(e=0)=>e>0?[R(me,{seconds:e})]:[],nA=e=>()=>{const{invariantContext:t,pipette:r,times:n,volume:a,aspirateDelaySeconds:s,dispenseDelaySeconds:o,finalPushOut:i,aspirateFlowRateUlSec:l,dispenseFlowRateUlSec:u,positionArgs:p}=e,{pipetteEntities:d,labwareEntities:f}=t,h=d[r].pythonName;let m=null;if(p!=null){const{labware:b,well:T,wellOrigin:y,xOffset:A,yOffset:w,zOffset:I}=p,S=f[b].pythonName,L={origin:y,offset:{x:A,y:w,z:I}};m=`location=${S}[${N(T)}]${Bt(L)}`}const _=[`repetitions=${n}`,`volume=${a}`,...m!=null?[m]:[],`aspirate_flow_rate=${l}`,`dispense_flow_rate=${u}`,...s!=null&&s!==0?[`aspirate_delay=${s}`]:[],...o!=null&&o!==0?[`dispense_delay=${o}`]:[],...i!=null?[`final_push_out=${i}`]:[]];return{commands:[],python:`${h}.mix(
124
+ ${K(_.join(`,
125
125
  `))},
126
- )`}},Mr=e=>{const{pipette:t,volume:r,times:n,aspirateFlowRateUlSec:a,dispenseFlowRateUlSec:s,aspirateDelaySeconds:o=0,dispenseDelaySeconds:i=0,finalPushOut:l,invariantContext:u,liquidClass:p,tiprack:d,moveToWellParams:f,generatePython:_}=e,m=VS({invariantContext:u,pipette:t,volume:r,times:n,aspirateFlowRateUlSec:a,dispenseFlowRateUlSec:s,aspirateDelaySeconds:o,dispenseDelaySeconds:i,finalPushOut:l,positionArgs:f!=null?{labware:f.labwareId,well:f.wellName,wellOrigin:f.wellLocation?.origin??c.WELL_ORIGIN_BOTTOM,xOffset:f.wellLocation?.offset?.x??0,yOffset:f.wellLocation?.offset?.y??0,zOffset:f.wellLocation?.offset?.z??0}:void 0}),h=u.pipetteEntities[t].spec,b=c.getByVolumeValue({liquidClass:p,pipetteSpecs:h,tiprackDefUri:d,targetVolume:r,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,T=c.getByVolumeValue({liquidClass:p,pipetteSpecs:h,tiprackDefUri:d,targetVolume:r,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,A=f!=null?[O(B,{...f,wellLocation:{...f.wellLocation}})]:[];for(let S=0;S<n;S++)A.push(O(Ra,{pipetteId:t,volume:r,flowRate:a,...b>0?{correctionVolume:b}:{}}),...uh(o),O(Xe,{pipetteId:t,volume:r,flowRate:s,...S<n-1?{pushOut:0}:l==null?{}:{pushOut:l},...T>0?{correctionVolume:T}:{}}),...uh(i));return[...A,..._?[m]:[]]},Gy=(e,t,r)=>{const{pipette:a,labware:s,wells:o,volume:i,times:l,changeTip:u,aspirateFlowRateUlSec:p,dispenseFlowRateUlSec:d,blowoutFlowRateUlSec:f,blowoutOffsetFromTopMm:_,dropTipLocation:m,tipRack:h,positionReference:b,xOffset:T,yOffset:y,zOffset:A,finalPushOut:S,nozzles:g,primaryNozzle:I,tipsSelected:L,tiprackSelected:w,tipTracking:E}=e,v=e.aspirateDelaySeconds??0,k=e.dispenseDelaySeconds??0,$=t.pipetteEntities[a]?.spec.channels!==1;if(r.pipettes[a]==null||t.pipetteEntities[a]==null)return{errors:[ut({pipette:a})]};if(r.labware[s]==null)return{errors:[ct({actionName:"mix",labware:s})]};const q=G(r.labware[s]?.stack);if(Object.keys(t.wasteChuteEntities).length>0&&q===c.GRIPPER_WASTE_CHUTE_ADDRESSABLE_AREA)return{errors:[ba()]};const pe=[...Object.keys(t.trashBinEntities),...Object.keys(t.wasteChuteEntities)],_e=pe.length>0?pe[0]:null,le=Object.values(t.labwareEntities).find(({labwareDefURI:W})=>W===m),Te=le!=null&&c.getIsTiprack(le.def),ke=t.wasteChuteEntities[m]!=null,He=t.trashBinEntities[m]!=null,$e=r.pipettes[a]?.tipWell!=null;if(m==null||Te&&_e==null&&u!=="never"&&$e||!Te&&!ke&&!He)return{errors:[En()]};if($){const W=dt({robotState:r,invariantContext:t,pipetteId:a,labwareId:s,wellLocationOffset:{x:T,y},wellTargetName:o[0],primaryNozzle:I,nozzleConfiguration:g});if(!W.isSafe)return{errors:[Ut({unsafePipetteMovementReason:W.reason})]};const C=dt({robotState:r,invariantContext:t,pipetteId:a,labwareId:s,wellLocationOffset:{x:T,y},wellTargetName:o[0],primaryNozzle:I,nozzleConfiguration:g});if(!C.isSafe)return{errors:[Ut({unsafePipetteMovementReason:C.reason})]}}const te=c.LOW_VOLUME_PIPETTES.includes(t.pipetteEntities[a].name),Ee=te?[R(gn,{pipetteId:a,volume:i})]:[],ze=t.pipetteEntities[a].spec,ge=E===St&&w!=null&&L!=null&&L.length>0?Ba({wellSets:L,nozzles:g,channels:ze.channels,primaryNozzle:I}):null,X=Tn(o,(W,C)=>{let P=[];if(u==="always"||u==="once"&&C===0){const ye=ge?.shift();P=[R(Ha,{pipette:a,primaryNozzle:I,dropTipLocation:Te&&_e!=null?_e:m,tipRack:h,nozzles:g,...E===St&&ye!=null&&w!=null?{tipSelectionArgs:{tipRackId:w,tipWell:ye}}:{},isFromMixCommand:!0})]}const V=te||e.blowoutLocation!=null&&C>0?[R(Lt,{pipetteId:a})]:[],M=e.touchTip?[R(Et,{pipetteId:a,labwareId:s,wellName:W,zOffsetFromTop:e.touchTipMmFromTop})]:[],ae=k_({pipette:e.pipette,sourceLabwareId:e.labware,sourceWell:W,destLabwareId:e.labware,destWell:W,blowoutLocation:e.blowoutLocation,flowRate:f,offsetFromTopMm:_,invariantContext:t}),z=[...Object.keys(t.wasteChuteEntities),...Object.keys(t.trashBinEntities)].some(ye=>ye===e.blowoutLocation)?[...M,...ae]:[...ae,...M],F=Te&&(C===o.length-1||u==="always")?[R(zr,{pipette:a,dropTipLocation:h,isReturnTip:Te})]:[],x=Mr({pipette:a,volume:i,times:l,aspirateFlowRateUlSec:p,dispenseFlowRateUlSec:d,invariantContext:t,liquidClass:null,tiprack:h,finalPushOut:S,aspirateDelaySeconds:v,dispenseDelaySeconds:k,moveToWellParams:{pipetteId:a,labwareId:s,wellName:W,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[b],offset:{x:T,y,z:A}}},generatePython:!0});return[...P,...Ee,...V,...x,...z,...F]});return ne(X,t,r)},Wy=(e,t,r)=>{const{aspirateDelay:n,aspirateFlowRateUlSec:a,aspiratePositionReference:s,aspirateRetractDelay:o,aspirateRetractPositionReference:i,aspirateRetractSpeed:l,aspirateRetractXOffset:u,aspirateRetractYOffset:p,aspirateRetractZOffset:d,aspirateSubmergeDelay:f,aspirateSubmergePositionReference:_,aspirateSubmergeSpeed:m,aspirateSubmergeXOffset:h,aspirateSubmergeYOffset:b,aspirateSubmergeZOffset:T,aspirateXOffset:y,aspirateYOffset:A,aspirateZOffset:S,blowoutFlowRateUlSec:g,blowoutLocation:I,changeTip:L,destLabware:w,destWell:E,dispenseDelay:v,dispenseFlowRateUlSec:k,dispensePositionReference:$,dispenseRetractPositionReference:q,dispenseRetractXOffset:ee,dispenseRetractYOffset:pe,dispenseRetractZOffset:_e,dispenseSubmergeDelay:le,dispenseSubmergePositionReference:Te,dispenseSubmergeSpeed:ke,dispenseSubmergeXOffset:He,dispenseSubmergeYOffset:$e,dispenseSubmergeZOffset:te,dispenseXOffset:Ee,dispenseYOffset:ze,dispenseZOffset:Pe,dropTipLocation:ge,liquidClass:X,mixInDestination:W,nozzles:C,pipette:P,primaryNozzle:V,pushOut:M,sourceLabware:ae,sourceWells:U,tipRack:H,tipTracking:z,tiprackSelected:F,tipsSelected:x,touchTipAfterAspirate:ye,touchTipAfterAspirateMmFromEdge:Ve,touchTipAfterAspirateOffsetMmFromTop:Qe,touchTipAfterAspirateSpeed:Be,touchTipAfterDispense:ce,touchTipAfterDispenseMmFromEdge:Je,touchTipAfterDispenseOffsetMmFromTop:mt,touchTipAfterDispenseSpeed:Rt,stepNumber:ht,volume:Oe}=e,{pipetteEntities:et,labwareEntities:Re,trashBinEntities:ve,wasteChuteEntities:Ce}=t,ue="consolidate",re=[],vt=r.pipettes[P],We=et[P]?.spec.channels!==1,Y=e.aspirateAirGapVolume??0,we=e.dispenseAirGapVolume??0;vt==null&&re.push(ut({pipette:P})),(w==null||Re[w]==null&&ve[w]==null&&Ce[w]==null)&&re.push(Ih());const hr=G(r.labware[w]?.stack),tt=G(r.labware[ae]?.stack);Object.keys(Ce).length>0&&(hr===c.GRIPPER_WASTE_CHUTE_ADDRESSABLE_AREA||tt===c.GRIPPER_WASTE_CHUTE_ADDRESSABLE_AREA)&&re.push(ba());const me=[...Object.keys(t.trashBinEntities),...Object.keys(t.wasteChuteEntities)],rt=me.length>0?me[0]:null,Yr=Object.values(t.labwareEntities).find(({labwareDefURI:he})=>he===ge),kt=Yr!=null&&c.getIsTiprack(Yr.def),za=t.wasteChuteEntities[ge]!=null,Kr=t.trashBinEntities[ge]!=null,rr=r.tipState.pipettes[P]?.hasTip;(ge==null||kt&&rt==null&&L!=="never"&&rr||!kt&&!za&&!Kr)&&re.push(En());let ot,Q;if(L==="never"){const he=r.tipState.pipettes[P]?.tiprackURI;ot=t.labwareEntities[he??""],Q=ot?.labwareDefURI}else ot=Object.values(Re).find(({labwareDefURI:he})=>he===H),Q=H;ot==null&&(L==="never"?re.push(Bt({actionName:ue,pipette:P})):re.push(ct({actionName:ue,labware:Q})));const{def:Pt=null}=ot??{},{spec:Ie,name:Ct,pythonName:J}=et[P],j=c.getAllLiquidClassDefs()[X===c.NONE_LIQUID_CLASS_NAME||X==null?c.WATER_LIQUID_CLASS_NAME:X].byPipette?.find(({pipetteModel:he})=>he===c.getFlexNameConversion(Ie))?.byTipType.find(({tiprack:he})=>he===Q)??null,{aspirate:it}=j??{},{multiWellHandling:de}=Fc({pipetteSpecs:Ie,tiprackDefinition:Pt,volume:Oe,path:"multiAspirate",numAspirateWells:U.length,numDispenseWells:1,aspirateAirGapByVolume:it?.retract.airGapByVolume??[],conditioningByVolume:null,disposalByVolume:null}),{numWellsToFitInTip:nt}=de;if((!de.isSupported||nt==null||nt===1)&&re.push(Nb()),We&&C!==c.ALL){const he=dt({robotState:r,invariantContext:t,pipetteId:P,labwareId:ae,wellLocationOffset:{x:y,y:A},primaryNozzle:V,nozzleConfiguration:C});he.isSafe||re.push(Ut({unsafePipetteMovementReason:he.reason}));const se=dt({robotState:r,invariantContext:t,pipetteId:P,labwareId:w,wellLocationOffset:{x:Ee,y:ze},primaryNozzle:V,nozzleConfiguration:C});se.isSafe||re.push(Ut({unsafePipetteMovementReason:se.reason}))}const Ht=E!=null?Re[ae]?.def.wells[E]?.depth:null,Nt=c.getMmFromBottom(Pe,$,Ht),Xr=c.getMmFromBottom(te,Te,Ht),nr=c.getMmFromBottom(_e,q,Ht);if(Nt!=null&&Xr!=null&&Nt>Xr&&re.push(Pb()),Nt!=null&&nr!=null&&Nt>nr&&re.push(Cb()),re.length>0)return{errors:re};const{tipracks:_r}=xa(P,Q,t,r,V,C),ar=c.getByVolumeValue({liquidClass:X,pipetteSpecs:Ie,tiprackDefUri:Q,targetVolume:Oe,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Se=ve[w]?.pythonName??Ce[w]?.pythonName,Dt=ve[ge]?.pythonName??Ce[ge]?.pythonName,yr=I==null?null:ve[I]?.pythonName??Ce[I]?.pythonName,br=Re[ae].pythonName,Zr=Re[w]?.pythonName,Tr=U.map(he=>`${br}[${N(he)}]`).join(", "),Qr=e.destWell!=null&&Zr!=null?`${Zr}[${N(e.destWell)}]`:null,Jr=[`name=${N(`${e.commandCreatorFnName}_step_${ht}`)}`,...X!=null?[`base_liquid_class=${Va(X,!0)}`]:[],`properties=${ks({args:e,pipetteName:c.isFlexPipette(Ct)?c.getFlexNameConversion(Ie):Ct,tiprackUri:Q,liquidClassValuesForTip:j})}`],Vn=`${be}.define_liquid_class(
127
- ${K(Jr.join(`,
128
- `))},
129
- )`,gr=z===St&&F!=null&&x!=null&&x.length>0?Ba({wellSets:x,nozzles:C,channels:Ie.channels,primaryNozzle:V}):null,sr=F!=null?Re[F]?.pythonName:null,xn=gr?.map(he=>`${sr}[${N(he)}]`).join(", "),en=[`volume=${Oe}`,`source=[${Tr}]`,`dest=${Qr!=null?`[${Qr}]`:Se}`,`new_tip=${N(Cs(L))}`,...kt?["return_tip=True",...yr!=null?[`trash_location=${yr}`]:[]]:[`trash_location=${Dt}`,"keep_last_tip=True"],...Ie.channels>1?["group_wells=False"]:[],..._r.filteredSortedTiprackIds.length>0?[Ps({labwareEntities:Re,tiprackIds:_r.filteredSortedTiprackIds})]:[],`liquid_class=${Vn}`,...gr!=null&&sr!=null?[`tips=[${xn}]`]:[]],Hn=()=>({commands:[],python:`${J}.consolidate_with_liquid_class(
126
+ )`}},Dr=e=>{const{pipette:t,volume:r,times:n,aspirateFlowRateUlSec:a,dispenseFlowRateUlSec:s,aspirateDelaySeconds:o=0,dispenseDelaySeconds:i=0,finalPushOut:l,invariantContext:u,liquidClass:p,tiprack:d,moveToWellParams:f,generatePython:h}=e,m=nA({invariantContext:u,pipette:t,volume:r,times:n,aspirateFlowRateUlSec:a,dispenseFlowRateUlSec:s,aspirateDelaySeconds:o,dispenseDelaySeconds:i,finalPushOut:l,positionArgs:f!=null?{labware:f.labwareId,well:f.wellName,wellOrigin:f.wellLocation?.origin??c.WELL_ORIGIN_BOTTOM,xOffset:f.wellLocation?.offset?.x??0,yOffset:f.wellLocation?.offset?.y??0,zOffset:f.wellLocation?.offset?.z??0}:void 0}),_=u.pipetteEntities[t].spec,b=c.getByVolumeValue({liquidClass:p,pipetteSpecs:_,tiprackDefUri:d,targetVolume:r,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,T=c.getByVolumeValue({liquidClass:p,pipetteSpecs:_,tiprackDefUri:d,targetVolume:r,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,A=f!=null?[R(B,{...f,wellLocation:{...f.wellLocation}})]:[];for(let w=0;w<n;w++)A.push(R(Na,{pipetteId:t,volume:r,flowRate:a,...b>0?{correctionVolume:b}:{}}),...bh(o),R(Xe,{pipetteId:t,volume:r,flowRate:s,...w<n-1?{pushOut:0}:l==null?{}:{pushOut:l},...T>0?{correctionVolume:T}:{}}),...bh(i));return[...A,...h?[m]:[]]},fb=(e,t,r)=>{const{pipette:a,labware:s,wells:o,volume:i,times:l,changeTip:u,aspirateFlowRateUlSec:p,dispenseFlowRateUlSec:d,blowoutFlowRateUlSec:f,blowoutOffsetFromTopMm:h,dropTipLocation:m,tipRack:_,positionReference:b,xOffset:T,yOffset:y,zOffset:A,finalPushOut:w,nozzles:I,primaryNozzle:S,tipsSelected:L,tiprackSelected:g,tipTracking:E}=e,k=e.aspirateDelaySeconds??0,v=e.dispenseDelaySeconds??0,$=t.pipetteEntities[a]?.spec.channels!==1;if(r.pipettes[a]==null||t.pipetteEntities[a]==null)return{errors:[ct({pipette:a})]};if(r.labware[s]==null)return{errors:[pt({actionName:"mix",labware:s})]};const q=G(r.labware[s]?.stack);if(Object.keys(t.wasteChuteEntities).length>0&&q===c.GRIPPER_WASTE_CHUTE_ADDRESSABLE_AREA)return{errors:[wa()]};const de=[...Object.keys(t.trashBinEntities),...Object.keys(t.wasteChuteEntities)],Te=de.length>0?de[0]:null,se=Object.values(t.labwareEntities).find(({labwareDefURI:W})=>W===m),Ie=se!=null&&c.getIsTiprack(se.def),Pe=t.wasteChuteEntities[m]!=null,He=t.trashBinEntities[m]!=null,Ve=r.pipettes[a]?.tipWell!=null;if(m==null||Ie&&Te==null&&u!=="never"&&Ve||!Ie&&!Pe&&!He)return{errors:[Rn()]};if($){const W=ft({robotState:r,invariantContext:t,pipetteId:a,labwareId:s,wellLocationOffset:{x:T,y},wellTargetName:o[0],primaryNozzle:S,nozzleConfiguration:I});if(!W.isSafe)return{errors:[$t({unsafePipetteMovementReason:W.reason})]};const C=ft({robotState:r,invariantContext:t,pipetteId:a,labwareId:s,wellLocationOffset:{x:T,y},wellTargetName:o[0],primaryNozzle:S,nozzleConfiguration:I});if(!C.isSafe)return{errors:[$t({unsafePipetteMovementReason:C.reason})]}}const te=c.LOW_VOLUME_PIPETTES.includes(t.pipetteEntities[a].name),Se=te?[O(An,{pipetteId:a,volume:i})]:[],ze=t.pipetteEntities[a].spec,Ee=E===St&&g!=null&&L!=null&&L.length>0?Ga({wellSets:L,nozzles:I,channels:ze.channels,primaryNozzle:S}):null,X=Sn(o,(W,C)=>{let P=[];if(u==="always"||u==="once"&&C===0){const ce=Ee?.shift();P=[O(Ya,{pipette:a,primaryNozzle:S,dropTipLocation:Ie&&Te!=null?Te:m,tipRack:_,nozzles:I,...E===St&&ce!=null&&g!=null?{tipSelectionArgs:{tipRackId:g,tipWell:ce}}:{},isFromMixCommand:!0})]}const V=te||e.blowoutLocation!=null&&C>0?[O(Lt,{pipetteId:a})]:[],M=e.touchTip?[O(Et,{pipetteId:a,labwareId:s,wellName:W,zOffsetFromTop:e.touchTipMmFromTop})]:[],oe=Y_({pipette:e.pipette,sourceLabwareId:e.labware,sourceWell:W,destLabwareId:e.labware,destWell:W,blowoutLocation:e.blowoutLocation,flowRate:f,offsetFromTopMm:h,invariantContext:t}),x=[...Object.keys(t.wasteChuteEntities),...Object.keys(t.trashBinEntities)].some(ce=>ce===e.blowoutLocation)?[...M,...oe]:[...oe,...M],F=Ie&&(C===o.length-1||u==="always")?[O(Hr,{pipette:a,dropTipLocation:_,isReturnTip:Ie})]:[],H=Dr({pipette:a,volume:i,times:l,aspirateFlowRateUlSec:p,dispenseFlowRateUlSec:d,invariantContext:t,liquidClass:null,tiprack:_,finalPushOut:w,aspirateDelaySeconds:k,dispenseDelaySeconds:v,moveToWellParams:{pipetteId:a,labwareId:s,wellName:W,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[b],offset:{x:T,y,z:A}}},generatePython:!0});return[...P,...Se,...V,...H,...x,...F]});return ae(X,t,r)},mb=(e,t,r)=>{const{aspirateDelay:n,aspirateFlowRateUlSec:a,aspiratePositionReference:s,aspirateRetractDelay:o,aspirateRetractPositionReference:i,aspirateRetractSpeed:l,aspirateRetractXOffset:u,aspirateRetractYOffset:p,aspirateRetractZOffset:d,aspirateSubmergeDelay:f,aspirateSubmergePositionReference:h,aspirateSubmergeSpeed:m,aspirateSubmergeXOffset:_,aspirateSubmergeYOffset:b,aspirateSubmergeZOffset:T,aspirateXOffset:y,aspirateYOffset:A,aspirateZOffset:w,blowoutFlowRateUlSec:I,blowoutLocation:S,changeTip:L,destLabware:g,destWell:E,dispenseDelay:k,dispenseFlowRateUlSec:v,dispensePositionReference:$,dispenseRetractPositionReference:q,dispenseRetractXOffset:ee,dispenseRetractYOffset:de,dispenseRetractZOffset:Te,dispenseSubmergeDelay:se,dispenseSubmergePositionReference:Ie,dispenseSubmergeSpeed:Pe,dispenseSubmergeXOffset:He,dispenseSubmergeYOffset:Ve,dispenseSubmergeZOffset:te,dispenseXOffset:Se,dispenseYOffset:ze,dispenseZOffset:Ce,dropTipLocation:Ee,liquidClass:X,mixInDestination:W,nozzles:C,pipette:P,primaryNozzle:V,pushOut:M,sourceLabware:oe,sourceWells:U,tipRack:z,tipTracking:x,tiprackSelected:F,tipsSelected:H,touchTipAfterAspirate:ce,touchTipAfterAspirateMmFromEdge:Ue,touchTipAfterAspirateOffsetMmFromTop:Je,touchTipAfterAspirateSpeed:Be,touchTipAfterDispense:pe,touchTipAfterDispenseMmFromEdge:et,touchTipAfterDispenseOffsetMmFromTop:ht,touchTipAfterDispenseSpeed:Rt,stepNumber:_t,volume:Re}=e,{pipetteEntities:tt,labwareEntities:ge,trashBinEntities:ke,wasteChuteEntities:Ne}=t,re="consolidate",ne=[],kt=r.pipettes[P],Ge=tt[P]?.spec.channels!==1,Y=e.aspirateAirGapVolume??0,he=e.dispenseAirGapVolume??0;kt==null&&ne.push(ct({pipette:P})),(g==null||ge[g]==null&&ke[g]==null&&Ne[g]==null)&&ne.push(Rh());const _r=G(r.labware[g]?.stack),rt=G(r.labware[oe]?.stack);Object.keys(Ne).length>0&&(_r===c.GRIPPER_WASTE_CHUTE_ADDRESSABLE_AREA||rt===c.GRIPPER_WASTE_CHUTE_ADDRESSABLE_AREA)&&ne.push(wa());const _e=[...Object.keys(t.trashBinEntities),...Object.keys(t.wasteChuteEntities)],nt=_e.length>0?_e[0]:null,Wr=Object.values(t.labwareEntities).find(({labwareDefURI:ye})=>ye===Ee),vt=Wr!=null&&c.getIsTiprack(Wr.def),Ka=t.wasteChuteEntities[Ee]!=null,Yr=t.trashBinEntities[Ee]!=null,sr=r.tipState.pipettes[P]?.hasTip;(Ee==null||vt&&nt==null&&L!=="never"&&sr||!vt&&!Ka&&!Yr)&&ne.push(Rn());let We,J;if(L==="never"){const ye=r.tipState.pipettes[P]?.tiprackURI;We=t.labwareEntities[ye??""],J=We?.labwareDefURI}else We=Object.values(ge).find(({labwareDefURI:ye})=>ye===z),J=z;We==null&&(L==="never"?ne.push(xt({actionName:re,pipette:P})):ne.push(pt({actionName:re,labware:J})));const{def:Pt=null}=We??{},{spec:we,name:it,pythonName:Z}=tt[P],j=c.getAllLiquidClassDefs()[X===c.NONE_LIQUID_CLASS_NAME||X==null?c.WATER_LIQUID_CLASS_NAME:X].byPipette?.find(({pipetteModel:ye})=>ye===c.getFlexNameConversion(we))?.byTipType.find(({tiprack:ye})=>ye===J)??null,{aspirate:lt}=j??{},{multiWellHandling:fe}=zc({pipetteSpecs:we,tiprackDefinition:Pt,volume:Re,path:"multiAspirate",numAspirateWells:U.length,numDispenseWells:1,aspirateAirGapByVolume:lt?.retract.airGapByVolume??[],conditioningByVolume:null,disposalByVolume:null}),{numWellsToFitInTip:at}=fe;if((!fe.isSupported||at==null||at===1)&&ne.push(Qb()),Ge&&C!==c.ALL){const ye=ft({robotState:r,invariantContext:t,pipetteId:P,labwareId:oe,wellLocationOffset:{x:y,y:A},primaryNozzle:V,nozzleConfiguration:C});ye.isSafe||ne.push($t({unsafePipetteMovementReason:ye.reason}));const ie=ft({robotState:r,invariantContext:t,pipetteId:P,labwareId:g,wellLocationOffset:{x:Se,y:ze},primaryNozzle:V,nozzleConfiguration:C});ie.isSafe||ne.push($t({unsafePipetteMovementReason:ie.reason}))}const zt=E!=null?ge[oe]?.def.wells[E]?.depth:null,Ct=c.getMmFromBottom(Ce,$,zt),Kr=c.getMmFromBottom(te,Ie,zt),or=c.getMmFromBottom(Te,q,zt);if(Ct!=null&&Kr!=null&&Ct>Kr&&ne.push(Xb()),Ct!=null&&or!=null&&Ct>or&&ne.push(Zb()),ne.length>0)return{errors:ne};const{tipracks:yr}=Wa(P,J,t,r,V,C),ir=c.getByVolumeValue({liquidClass:X,pipetteSpecs:we,tiprackDefUri:J,targetVolume:Re,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Ae=ke[g]?.pythonName??Ne[g]?.pythonName,Nt=ke[Ee]?.pythonName??Ne[Ee]?.pythonName,br=S==null?null:ke[S]?.pythonName??Ne[S]?.pythonName,Tr=ge[oe].pythonName,Xr=ge[g]?.pythonName,gr=C===c.PARTIAL_COLUMN?tr({labwareDef:ge[oe].def,wells:U,primaryNozzle:V}):U,Zr=(C===c.PARTIAL_COLUMN&&E!=null&&ge[g]!=null?tr({labwareDef:ge[g].def,wells:[E],primaryNozzle:V}):[E])[0],Qr=gr.map(ye=>`${Tr}[${N(ye)}]`).join(", "),Jr=Zr!=null&&Xr!=null?`${Xr}[${N(Zr)}]`:null,en=[`name=${N(`${e.commandCreatorFnName}_step_${_t}`)}`,...X!=null?[`base_liquid_class=${ja(X,!0)}`]:[],`properties=${Ds({args:e,pipetteName:c.isFlexPipette(it)?c.getFlexNameConversion(we):it,tiprackUri:J,liquidClassValuesForTip:j})}`],Gn=`${be}.define_liquid_class(
130
127
  ${K(en.join(`,
131
128
  `))},
132
- )`}),Ir=Hy(U,nt),ja=c.LOW_VOLUME_PIPETTES.includes(Ct)?[O(gn,{pipetteId:P,volume:Oe})]:[],or={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[Te],offset:{x:He,y:$e,z:te}},zn={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[q],offset:{x:ee,y:pe,z:_e}},zt=n!=null?[O(fe,{seconds:n.seconds})]:[],Er=c.getByVolumeValue({liquidClass:X,pipetteSpecs:Ie,tiprackDefUri:Q,targetVolume:we,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,wr=v!=null?[O(fe,{seconds:v.seconds})]:[],jn=c.getByVolumeValue({liquidClass:X,pipetteSpecs:Ie,tiprackDefUri:Q,targetVolume:Y,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null})??a,tn=c.getByVolumeValue({liquidClass:X,pipetteSpecs:Ie,tiprackDefUri:Q,targetVolume:Y,liquidHandlingAction:"singleDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null})??k,Gn=c.getByVolumeValue({liquidClass:X,pipetteSpecs:Ie,tiprackDefUri:Q,targetVolume:we,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null})??a,rn=c.getByVolumeValue({liquidClass:X,pipetteSpecs:Ie,tiprackDefUri:Q,targetVolume:we,liquidHandlingAction:"singleDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null})??k,ir=Ur({retractZOffset:_e,retractPositionReference:q,labwareId:w,labwareEntities:Re,well:E}),Sr=!ir&&E!=null?[O(B,{pipetteId:P,labwareId:w,wellName:E,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})]:[],Ga=[...Tn(Ir,(he,se)=>{const _t=(Le,Wt=!0)=>we>0&&!(L==="never"&&Ne&&Le)?[...Wt?Sr:[],O(Lt,{pipetteId:P}),O(At,{pipetteId:P,volume:we,flowRate:Gn,...Er>0?{correctionVolume:Er}:{}}),...zt]:[],yt=Le=>E!=null&&ce?[O(Et,{pipetteId:P,labwareId:w,wellName:E,...Je!=null?{mmFromEdge:Je}:{},zOffsetFromTop:mt,...Rt!=null?{speed:Rt}:{}}),..._t(Le).length>0&&ir?[O(B,{pipetteId:P,labwareId:w,wellName:E,wellLocation:zn})]:[]]:[],Ae=se===0,Ne=se===Ir.length-1,Yn=he.length,oe=Oe*Yn,Ye=L==="always"||L==="once"&&Ae;let lr=[];if(Ye){const Le=gr?.shift();lr=[R(Ha,{pipette:P,primaryNozzle:V,nozzles:C,dropTipLocation:kt&&rt!=null?rt:ge,tipRack:Q,...z===St&&Le!=null&&F!=null?{tipSelectionArgs:{tipRackId:F,tipWell:Le}}:{}})]}const Ar=Tn(he,(Le,Wt)=>{const vr=Wt===0;let Tt=0,Yt=k;vr&&!Ye&&!Ae?(Tt=we,Yt=rn):vr||(Tt=Y,Yt=tn);const Qn={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[_],offset:{x:h,y:b,z:T}},sn={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[i],offset:{x:u,y:p,z:d}},on=Ur({retractZOffset:d,retractPositionReference:i,labwareId:ae,labwareEntities:Re,well:Le}),Jn=!on&&Le!=null?[O(B,{pipetteId:P,labwareId:ae,wellName:Le,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})]:[],ln=c.getByVolumeValue({liquidClass:X,pipetteSpecs:Ie,tiprackDefUri:Q,targetVolume:Tt,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,kr=vr?[...c.LOW_VOLUME_PIPETTES.includes(t.pipetteEntities[P].name)?[O(gn,{pipetteId:P,volume:oe})]:[],O(Lt,{pipetteId:P})]:[],ea=Tt>0?[O(Xe,{pipetteId:P,volume:Tt,flowRate:Yt,...ln>0?{correctionVolume:ln}:{},isAirGap:!0,pushOut:0}),...wr]:[],Pr=[...[O(B,{pipetteId:P,labwareId:ae,wellName:Le,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})],...ea,...kr],un=[O(B,{pipetteId:P,labwareId:ae,wellName:Le,wellLocation:Qn}),O(B,{pipetteId:P,labwareId:ae,...m!=null?{speed:m}:{},wellName:Le,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[s],offset:{x:y,y:A,z:S}}}),...f!=null&&f.seconds>0?[O(fe,{seconds:f.seconds})]:[]],pr=ye?[O(Et,{pipetteId:P,labwareId:ae,wellName:Le,...Ve!=null?{mmFromEdge:Ve}:{},zOffsetFromTop:Qe,...Be!=null?{speed:Be}:{}}),...Y>0&&on?[O(B,{pipetteId:P,labwareId:ae,wellName:Le,wellLocation:sn})]:[]]:[],Cr=c.getByVolumeValue({liquidClass:X,pipetteSpecs:Ie,tiprackDefUri:Q,targetVolume:Y,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Kt=Y>0?[...Jn,O(At,{pipetteId:P,volume:Y,flowRate:jn,...Cr>0?{correctionVolume:Cr}:{}}),...zt]:[],dr=[O(Ra,{pipetteId:P,volume:Oe,flowRate:a,correctionVolume:ar}),...zt],ta=[O(B,{pipetteId:P,labwareId:ae,...l!=null?{speed:l}:{},wellName:Le,wellLocation:sn}),...o!=null&&o?.seconds>0?[O(fe,{seconds:o.seconds})]:[]];return[...Pr,...un,...dr,...ta,...pr,...Kt]}),Lr=E!=null?[O(B,{pipetteId:P,labwareId:w,wellName:E,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION}),O(B,{pipetteId:P,labwareId:w,wellName:E,wellLocation:or,...ke!=null?{speed:ke}:{}})]:[O(Fe,{pipetteId:P,fixtureId:w,offset:{x:0,y:0,z:0}})],Kn=c.getByVolumeValue({liquidClass:X,pipetteSpecs:Ie,tiprackDefUri:Q,targetVolume:Y,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Xn=Y>0?[O(Xe,{pipetteId:P,volume:Y,flowRate:tn,pushOut:0,correctionVolume:Kn,isAirGap:!0}),...wr]:[],bt=E!=null?[O(B,{pipetteId:P,labwareId:w,wellName:E,wellLocation:or}),O(B,{pipetteId:P,labwareId:w,...ke!=null?{speed:ke}:{},wellName:E,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[$],offset:{x:Ee,y:ze,z:Pe}}}),...le!=null&&le.seconds>0?[O(fe,{seconds:le.seconds})]:[]]:[],Zn=c.getByVolumeValue({liquidClass:X,pipetteSpecs:Ie,tiprackDefUri:Q,targetVolume:oe,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,ur=W!=null?0:M,Or=[O(Xe,{pipetteId:P,volume:oe,flowRate:k,...ur!=null?{pushOut:ur}:{},correctionVolume:Zn}),...wr],jt=(W!=null?c.getByVolumeValue({liquidClass:X,pipetteSpecs:Ie,tiprackDefUri:Q,targetVolume:W.volume,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null}):a)??a,Gt=(W!=null?c.getByVolumeValue({liquidClass:X,pipetteSpecs:Ie,tiprackDefUri:Q,targetVolume:W.volume,liquidHandlingAction:"singleDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null}):k)??k,nn=W!=null?Mr({pipette:P,volume:W.volume,times:W.times,aspirateFlowRateUlSec:jt,dispenseFlowRateUlSec:Gt,aspirateDelaySeconds:n?.seconds,dispenseDelaySeconds:v?.seconds,finalPushOut:M,invariantContext:t,liquidClass:X,tiprack:Q,generatePython:!1}):[],Rr=[O(Rn,{pipetteId:P,flowRate:g})];let cr=[];I==null||I===jr?cr=[...yt(!0),..._t(!0)]:I===vn&&E!=null?cr=[O(B,{pipetteId:P,labwareId:w,wellName:E,wellLocation:{origin:c.WELL_ORIGIN_TOP}}),...Rr,...yt(!0),..._t(!0)]:cr=[...yt(!1),..._t(!1),O(Fe,{pipetteId:P,fixtureId:Object.values(ve).length>0?Object.values(ve)[0].id:Object.values(Ce)[0].id,offset:{x:0,y:0,z:0}}),...Rr,..._t(!0,!1)];const an=kt&&(se===Ir.length-1||L==="always")?[O(zr,{pipette:P,dropTipLocation:Q,isReturnTip:kt})]:[];return[...lr,...ja,...Ar,...Lr,...Xn,...bt,...Or,...nn,...cr,...an]}),Hn];return ne(Ga,t,r)},BS=(e,t,r)=>{const{pipetteId:n,trashId:a,flowRate:s,volume:o}=e,{pipetteEntities:i,trashBinEntities:l}=t,u=l[a],p=i[n].pythonName,d=u.pythonName,f=[`volume=${o}`,`location=${d}`,`rate=${s} / ${p}.flow_rate.dispense`],_=()=>({commands:[],python:`${p}.dispense(
129
+ )`,jt=x===St&&F!=null&&H!=null&&H.length>0?Ga({wellSets:H,nozzles:C,channels:we.channels,primaryNozzle:V}):null,rn=jt!=null&&We!=null&&C===c.PARTIAL_COLUMN?tr({labwareDef:We?.def,wells:jt,primaryNozzle:V}):jt,nn=F!=null?ge[F]?.pythonName:null,an=rn?.map(ye=>`${nn}[${N(ye)}]`).join(", "),Wn=[`volume=${Re}`,`source=[${Qr}]`,`dest=${Jr!=null?`[${Jr}]`:Ae}`,`new_tip=${N(Fs(L))}`,...vt?["return_tip=True",...br!=null?[`trash_location=${br}`]:[]]:[`trash_location=${Nt}`,"keep_last_tip=True"],...we.channels>1?["group_wells=False"]:[],...yr.filteredSortedTiprackIds.length>0?[Ms({labwareEntities:ge,tiprackIds:yr.filteredSortedTiprackIds})]:[],`liquid_class=${Gn}`,...jt!=null&&nn!=null?[`tips=[${an}]`]:[]],Yn=()=>({commands:[],python:`${Z}.consolidate_with_liquid_class(
130
+ ${K(Wn.join(`,
131
+ `))},
132
+ )`}),sn=cb(U,at),Gt=c.LOW_VOLUME_PIPETTES.includes(it)?[R(An,{pipetteId:P,volume:Re})]:[],Kn={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[Ie],offset:{x:He,y:Ve,z:te}},Dt={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[q],offset:{x:ee,y:de,z:Te}},lr=n!=null?[R(me,{seconds:n.seconds})]:[],Xn=c.getByVolumeValue({liquidClass:X,pipetteSpecs:we,tiprackDefUri:J,targetVolume:he,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Ir=k!=null?[R(me,{seconds:k.seconds})]:[],Zn=c.getByVolumeValue({liquidClass:X,pipetteSpecs:we,tiprackDefUri:J,targetVolume:Y,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null})??a,on=c.getByVolumeValue({liquidClass:X,pipetteSpecs:we,tiprackDefUri:J,targetVolume:Y,liquidHandlingAction:"singleDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null})??v,Qn=c.getByVolumeValue({liquidClass:X,pipetteSpecs:we,tiprackDefUri:J,targetVolume:he,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null})??a,ln=c.getByVolumeValue({liquidClass:X,pipetteSpecs:we,tiprackDefUri:J,targetVolume:he,liquidHandlingAction:"singleDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null})??v,Er=Ur({retractZOffset:Te,retractPositionReference:q,labwareId:g,labwareEntities:ge,well:E}),wr=!Er&&E!=null?[R(B,{pipetteId:P,labwareId:g,wellName:E,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})]:[],Xa=[...Sn(sn,(ye,ie)=>{const yt=(Oe,Kt=!0)=>he>0&&!(L==="never"&&De&&Oe)?[...Kt?wr:[],R(Lt,{pipetteId:P}),R(At,{pipetteId:P,volume:he,flowRate:Qn,...Xn>0?{correctionVolume:Xn}:{}}),...lr]:[],Mt=Oe=>E!=null&&pe?[R(Et,{pipetteId:P,labwareId:g,wellName:E,...et!=null?{mmFromEdge:et}:{},zOffsetFromTop:ht,...Rt!=null?{speed:Rt}:{}}),...yt(Oe).length>0&&Er?[R(B,{pipetteId:P,labwareId:g,wellName:E,wellLocation:Dt})]:[]]:[],Le=ie===0,De=ie===sn.length-1,ea=ye.length,le=Re*ea,Ye=L==="always"||L==="once"&&Le;let ur=[];if(Ye){const Oe=jt?.shift();ur=[O(Ya,{pipette:P,primaryNozzle:V,nozzles:C,dropTipLocation:vt&&nt!=null?nt:Ee,tipRack:J,...x===St&&Oe!=null&&F!=null?{tipSelectionArgs:{tipRackId:F,tipWell:Oe}}:{}})]}const Sr=Sn(ye,(Oe,Kt)=>{const Rr=Kt===0;let Tt=0,Xt=v;Rr&&!Ye&&!Le?(Tt=he,Xt=ln):Rr||(Tt=Y,Xt=on);const na={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[h],offset:{x:_,y:b,z:T}},dn={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[i],offset:{x:u,y:p,z:d}},fn=Ur({retractZOffset:d,retractPositionReference:i,labwareId:oe,labwareEntities:ge,well:Oe}),aa=!fn&&Oe!=null?[R(B,{pipetteId:P,labwareId:oe,wellName:Oe,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})]:[],mn=c.getByVolumeValue({liquidClass:X,pipetteSpecs:we,tiprackDefUri:J,targetVolume:Tt,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,kr=Rr?[...c.LOW_VOLUME_PIPETTES.includes(t.pipetteEntities[P].name)?[R(An,{pipetteId:P,volume:le})]:[],R(Lt,{pipetteId:P})]:[],sa=Tt>0?[R(Xe,{pipetteId:P,volume:Tt,flowRate:Xt,...mn>0?{correctionVolume:mn}:{},isAirGap:!0,pushOut:0}),...Ir]:[],vr=[...[R(B,{pipetteId:P,labwareId:oe,wellName:Oe,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})],...sa,...kr],hn=[R(B,{pipetteId:P,labwareId:oe,wellName:Oe,wellLocation:na}),R(B,{pipetteId:P,labwareId:oe,...m!=null?{speed:m}:{},wellName:Oe,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[s],offset:{x:y,y:A,z:w}}}),...f!=null&&f.seconds>0?[R(me,{seconds:f.seconds})]:[]],dr=ce?[R(Et,{pipetteId:P,labwareId:oe,wellName:Oe,...Ue!=null?{mmFromEdge:Ue}:{},zOffsetFromTop:Je,...Be!=null?{speed:Be}:{}}),...Y>0&&fn?[R(B,{pipetteId:P,labwareId:oe,wellName:Oe,wellLocation:dn})]:[]]:[],Pr=c.getByVolumeValue({liquidClass:X,pipetteSpecs:we,tiprackDefUri:J,targetVolume:Y,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Zt=Y>0?[...aa,R(At,{pipetteId:P,volume:Y,flowRate:Zn,...Pr>0?{correctionVolume:Pr}:{}}),...lr]:[],fr=[R(Na,{pipetteId:P,volume:Re,flowRate:a,correctionVolume:ir}),...lr],oa=[R(B,{pipetteId:P,labwareId:oe,...l!=null?{speed:l}:{},wellName:Oe,wellLocation:dn}),...o!=null&&o?.seconds>0?[R(me,{seconds:o.seconds})]:[]];return[...vr,...hn,...fr,...oa,...dr,...Zt]}),Ar=E!=null?[R(B,{pipetteId:P,labwareId:g,wellName:E,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION}),R(B,{pipetteId:P,labwareId:g,wellName:E,wellLocation:Kn,...Pe!=null?{speed:Pe}:{}})]:[R(Fe,{pipetteId:P,fixtureId:g,offset:{x:0,y:0,z:0}})],ta=c.getByVolumeValue({liquidClass:X,pipetteSpecs:we,tiprackDefUri:J,targetVolume:Y,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,un=Y>0?[R(Xe,{pipetteId:P,volume:Y,flowRate:on,pushOut:0,correctionVolume:ta,isAirGap:!0}),...Ir]:[],bt=E!=null?[R(B,{pipetteId:P,labwareId:g,wellName:E,wellLocation:Kn}),R(B,{pipetteId:P,labwareId:g,...Pe!=null?{speed:Pe}:{},wellName:E,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[$],offset:{x:Se,y:ze,z:Ce}}}),...se!=null&&se.seconds>0?[R(me,{seconds:se.seconds})]:[]]:[],ra=c.getByVolumeValue({liquidClass:X,pipetteSpecs:we,tiprackDefUri:J,targetVolume:le,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,cr=W!=null?0:M,Lr=[R(Xe,{pipetteId:P,volume:le,flowRate:v,...cr!=null?{pushOut:cr}:{},correctionVolume:ra}),...Ir],Wt=(W!=null?c.getByVolumeValue({liquidClass:X,pipetteSpecs:we,tiprackDefUri:J,targetVolume:W.volume,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null}):a)??a,Yt=(W!=null?c.getByVolumeValue({liquidClass:X,pipetteSpecs:we,tiprackDefUri:J,targetVolume:W.volume,liquidHandlingAction:"singleDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null}):v)??v,cn=W!=null?Dr({pipette:P,volume:W.volume,times:W.times,aspirateFlowRateUlSec:Wt,dispenseFlowRateUlSec:Yt,aspirateDelaySeconds:n?.seconds,dispenseDelaySeconds:k?.seconds,finalPushOut:M,invariantContext:t,liquidClass:X,tiprack:J,generatePython:!1}):[],Or=[R(Dn,{pipetteId:P,flowRate:I})];let pr=[];S==null||S===zr?pr=[...Mt(!0),...yt(!0)]:S===Mn&&E!=null?pr=[R(B,{pipetteId:P,labwareId:g,wellName:E,wellLocation:{origin:c.WELL_ORIGIN_TOP}}),...Or,...Mt(!0),...yt(!0)]:pr=[...Mt(!1),...yt(!1),R(Fe,{pipetteId:P,fixtureId:Object.values(ke).length>0?Object.values(ke)[0].id:Object.values(Ne)[0].id,offset:{x:0,y:0,z:0}}),...Or,...yt(!0,!1)];const pn=vt&&(ie===sn.length-1||L==="always")?[R(Hr,{pipette:P,dropTipLocation:J,isReturnTip:vt})]:[];return[...ur,...Gt,...Sr,...Ar,...un,...bt,...Lr,...cn,...pr,...pn]}),Yn];return ae(Xa,t,r)},aA=(e,t,r)=>{const{pipetteId:n,trashId:a,flowRate:s,volume:o}=e,{pipetteEntities:i,trashBinEntities:l}=t,u=l[a],p=i[n].pythonName,d=u.pythonName,f=[`volume=${o}`,`location=${d}`,`rate=${s} / ${p}.flow_rate.dispense`],h=()=>({commands:[],python:`${p}.dispense(
133
133
  ${K(f.join(`,
134
134
  `))},
135
- )`}),m=[O(Fe,{pipetteId:n,fixtureId:a,offset:wt}),O(Xe,{pipetteId:n,volume:o,flowRate:s}),_];return ne(m,t,r)},xS=(e,t,r)=>{const{pipetteId:n,flowRate:a,volume:s,wasteChuteId:o}=e,{pipetteEntities:i,wasteChuteEntities:l}=t,u=l[o].pythonName,p=i[n].pythonName,d=[`volume=${s}`,`location=${u}`,`rate=${a} / ${p}.flow_rate.dispense`],f=()=>({commands:[],python:`${p}.dispense(
135
+ )`}),m=[R(Fe,{pipetteId:n,fixtureId:a,offset:wt}),R(Xe,{pipetteId:n,volume:o,flowRate:s}),h];return ae(m,t,r)},sA=(e,t,r)=>{const{pipetteId:n,flowRate:a,volume:s,wasteChuteId:o}=e,{pipetteEntities:i,wasteChuteEntities:l}=t,u=l[o].pythonName,p=i[n].pythonName,d=[`volume=${s}`,`location=${u}`,`rate=${a} / ${p}.flow_rate.dispense`],f=()=>({commands:[],python:`${p}.dispense(
136
136
  ${K(d.join(`,
137
137
  `))},
138
- )`}),_=[O(Fe,{pipetteId:n,fixtureId:o,offset:wt}),O(Xe,{pipetteId:n,flowRate:a,volume:s}),f];return ne(_,t,r)},Yy=(e,t,r)=>{const{aspirateDelay:n,aspirateFlowRateUlSec:a,aspiratePositionReference:s,aspirateRetractDelay:o,aspirateRetractPositionReference:i,aspirateRetractSpeed:l,aspirateRetractXOffset:u,aspirateRetractYOffset:p,aspirateRetractZOffset:d,aspirateSubmergeDelay:f,aspirateSubmergePositionReference:_,aspirateSubmergeSpeed:m,aspirateSubmergeXOffset:h,aspirateSubmergeYOffset:b,aspirateSubmergeZOffset:T,aspirateXOffset:y,aspirateYOffset:A,aspirateZOffset:S,blowoutFlowRateUlSec:g,blowoutLocation:I,changeTip:L,destLabware:w,destWells:E,dispenseDelay:v,dispenseFlowRateUlSec:k,dispensePositionReference:$,dispenseRetractDelay:q,dispenseRetractPositionReference:ee,dispenseRetractSpeed:pe,dispenseRetractXOffset:_e,dispenseRetractYOffset:le,dispenseRetractZOffset:Te,dispenseSubmergeDelay:ke,dispenseSubmergePositionReference:He,dispenseSubmergeSpeed:$e,dispenseSubmergeXOffset:te,dispenseSubmergeYOffset:Ee,dispenseSubmergeZOffset:ze,dispenseXOffset:Pe,dispenseYOffset:ge,dispenseZOffset:X,dropTipLocation:W,liquidClass:C,mixBeforeAspirate:P,nozzles:V,pipette:M,preWetTip:ae,primaryNozzle:U,pushOut:H,sourceLabware:z,sourceWell:F,tipRack:x,tipTracking:ye,tiprackSelected:Ve,tipsSelected:Qe,touchTipAfterAspirate:Be,touchTipAfterAspirateMmFromEdge:ce,touchTipAfterAspirateOffsetMmFromTop:Je,touchTipAfterAspirateSpeed:mt,touchTipAfterDispense:Rt,touchTipAfterDispenseMmFromEdge:ht,touchTipAfterDispenseOffsetMmFromTop:Oe,touchTipAfterDispenseSpeed:et,stepNumber:Re,volume:ve}=e,{pipetteEntities:Ce,labwareEntities:ue,trashBinEntities:re,wasteChuteEntities:vt}=t,We="distribute",Y=[],we=Ce[M]?.spec.channels!==1,hr=ue[z]?.def.parameters.quirks?.includes("touchTipDisabled"),tt=e.aspirateAirGapVolume??0,qe=e.dispenseAirGapVolume??0,me=e.disposalVolume!=null&&e.disposalVolume>0?e.disposalVolume:0,rt=e.conditioningVolume!=null&&e.conditioningVolume>0?e.conditioningVolume:0;(r.pipettes[M]==null||Ce[M]==null)&&Y.push(ut({pipette:M})),(!z||!r.labware[z])&&Y.push(ct({actionName:We,labware:z}));const Yr=G(r.labware[w]?.stack),kt=G(r.labware[z]?.stack);Object.keys(vt).length>0&&(Yr===c.GRIPPER_WASTE_CHUTE_ADDRESSABLE_AREA||kt===c.GRIPPER_WASTE_CHUTE_ADDRESSABLE_AREA)&&Y.push(ba());const Kr=[...Object.keys(t.trashBinEntities),...Object.keys(t.wasteChuteEntities)],rr=Kr.length>0?Kr[0]:null,ot=Object.values(t.labwareEntities).find(({labwareDefURI:oe})=>oe===W),Q=ot!=null&&c.getIsTiprack(ot.def),Pt=t.wasteChuteEntities[W]!=null,Ie=t.trashBinEntities[W]!=null,Ct=r.tipState.pipettes[M]?.hasTip;(W==null||Q&&rr==null&&L!=="never"&&Ct||!Q&&!Pt&&!Ie)&&Y.push(En());let J,j;if(L==="never"){const oe=r.tipState.pipettes[M]?.tiprackURI;J=t.labwareEntities[oe??""],j=J?.labwareDefURI}else J=Object.values(ue).find(({labwareDefURI:oe})=>oe===x),j=x;J==null&&(L==="never"?Y.push(Bt({actionName:We,pipette:M})):Y.push(ct({actionName:We,labware:j})));const{def:it=null}=J??{},{spec:de,name:nt,pythonName:Ht}=Ce[M],Nt=c.getAllLiquidClassDefs()[C===c.NONE_LIQUID_CLASS_NAME||C==null?c.WATER_LIQUID_CLASS_NAME:C].byPipette?.find(({pipetteModel:oe})=>oe===c.getFlexNameConversion(de))?.byTipType.find(({tiprack:oe})=>oe===j)??null,{aspirate:Xr,multiDispense:nr}=Nt??{},{multiWellHandling:_r}=Fc({pipetteSpecs:de,tiprackDefinition:it,volume:ve,path:"multiDispense",numAspirateWells:1,numDispenseWells:E.length,conditioningByVolume:nr?.conditioningByVolume??[],disposalByVolume:nr?.disposalByVolume??[],aspirateAirGapByVolume:Xr?.retract.airGapByVolume??[]}),{numWellsToFitInTip:ar}=_r;if((!_r.isSupported||ar==null||ar===1)&&Y.push(Db()),we&&V!==c.ALL){const oe=dt({robotState:r,invariantContext:t,pipetteId:M,labwareId:z,wellLocationOffset:{x:y,y:A},wellTargetName:F,primaryNozzle:U,nozzleConfiguration:V});oe.isSafe||Y.push(Ut({unsafePipetteMovementReason:oe.reason}));const Ye=dt({robotState:r,invariantContext:t,pipetteId:M,labwareId:w,wellLocationOffset:{x:Pe,y:ge},wellTargetName:E[0],primaryNozzle:U,nozzleConfiguration:V});Ye.isSafe||Y.push(Ut({unsafePipetteMovementReason:Ye.reason}))}const Se=t.labwareEntities[z]?.def.wells[F]?.depth??null,Dt=c.getMmFromBottom(S,s,Se),yr=c.getMmFromBottom(T,_,Se),br=c.getMmFromBottom(d,i,Se);Dt!=null&&yr!=null&&Dt>yr&&Y.push(Eh()),Dt!=null&&br!=null&&Dt>br&&Y.push(wh());const Zr=[O(B,{pipetteId:M,labwareId:z,wellName:F,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})],Tr=Ns(M,t,j)-tt;if(Math.floor((Tr-me)/ve)===0&&Y.push(rs({actionName:We,volume:ve,maxVolume:Tr,disposalVolume:me})),Y.length>0)return{errors:Y};const{tipracks:Jr}=xa(M,j,t,r,U,V),Vn=c.getByVolumeValue({liquidClass:C,pipetteSpecs:de,tiprackDefUri:j,targetVolume:ve,liquidHandlingAction:"multiDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Bn=re[w]?.pythonName??vt[w]?.pythonName,gr=re[W]?.pythonName??vt[W]?.pythonName,sr=I==null?null:re[I]?.pythonName??vt[I]?.pythonName,xn=ue[z].pythonName,en=ue[w]?.pythonName,Hn=`${xn}[${N(e.sourceWell)}]`,Ir=e.destWells.map(oe=>`${en}[${N(oe)}]`).join(", "),ja=[`name=${N(`${e.commandCreatorFnName}_step_${Re}`)}`,...C!=null?[`base_liquid_class=${Va(C,!0)}`]:[],`properties=${ks({args:e,pipetteName:c.isFlexPipette(nt)?c.getFlexNameConversion(de):nt,tiprackUri:j,liquidClassValuesForTip:Nt})}`],or=`${be}.define_liquid_class(
139
- ${K(ja.join(`,
138
+ )`}),h=[R(Fe,{pipetteId:n,fixtureId:o,offset:wt}),R(Xe,{pipetteId:n,flowRate:a,volume:s}),f];return ae(h,t,r)},hb=(e,t,r)=>{const{aspirateDelay:n,aspirateFlowRateUlSec:a,aspiratePositionReference:s,aspirateRetractDelay:o,aspirateRetractPositionReference:i,aspirateRetractSpeed:l,aspirateRetractXOffset:u,aspirateRetractYOffset:p,aspirateRetractZOffset:d,aspirateSubmergeDelay:f,aspirateSubmergePositionReference:h,aspirateSubmergeSpeed:m,aspirateSubmergeXOffset:_,aspirateSubmergeYOffset:b,aspirateSubmergeZOffset:T,aspirateXOffset:y,aspirateYOffset:A,aspirateZOffset:w,blowoutFlowRateUlSec:I,blowoutLocation:S,changeTip:L,destLabware:g,destWells:E,dispenseDelay:k,dispenseFlowRateUlSec:v,dispensePositionReference:$,dispenseRetractDelay:q,dispenseRetractPositionReference:ee,dispenseRetractSpeed:de,dispenseRetractXOffset:Te,dispenseRetractYOffset:se,dispenseRetractZOffset:Ie,dispenseSubmergeDelay:Pe,dispenseSubmergePositionReference:He,dispenseSubmergeSpeed:Ve,dispenseSubmergeXOffset:te,dispenseSubmergeYOffset:Se,dispenseSubmergeZOffset:ze,dispenseXOffset:Ce,dispenseYOffset:Ee,dispenseZOffset:X,dropTipLocation:W,liquidClass:C,mixBeforeAspirate:P,nozzles:V,pipette:M,preWetTip:oe,primaryNozzle:U,pushOut:z,sourceLabware:x,sourceWell:F,tipRack:H,tipTracking:ce,tiprackSelected:Ue,tipsSelected:Je,touchTipAfterAspirate:Be,touchTipAfterAspirateMmFromEdge:pe,touchTipAfterAspirateOffsetMmFromTop:et,touchTipAfterAspirateSpeed:ht,touchTipAfterDispense:Rt,touchTipAfterDispenseMmFromEdge:_t,touchTipAfterDispenseOffsetMmFromTop:Re,touchTipAfterDispenseSpeed:tt,stepNumber:ge,volume:ke}=e,{pipetteEntities:Ne,labwareEntities:re,trashBinEntities:ne,wasteChuteEntities:kt}=t,Ge="distribute",Y=[],he=Ne[M]?.spec.channels!==1,_r=re[x]?.def.parameters.quirks?.includes("touchTipDisabled"),rt=e.aspirateAirGapVolume??0,qe=e.dispenseAirGapVolume??0,_e=e.disposalVolume!=null&&e.disposalVolume>0?e.disposalVolume:0,nt=e.conditioningVolume!=null&&e.conditioningVolume>0?e.conditioningVolume:0;(r.pipettes[M]==null||Ne[M]==null)&&Y.push(ct({pipette:M})),(!x||!r.labware[x])&&Y.push(pt({actionName:Ge,labware:x}));const Wr=G(r.labware[g]?.stack),vt=G(r.labware[x]?.stack);Object.keys(kt).length>0&&(Wr===c.GRIPPER_WASTE_CHUTE_ADDRESSABLE_AREA||vt===c.GRIPPER_WASTE_CHUTE_ADDRESSABLE_AREA)&&Y.push(wa());const Yr=[...Object.keys(t.trashBinEntities),...Object.keys(t.wasteChuteEntities)],sr=Yr.length>0?Yr[0]:null,We=Object.values(t.labwareEntities).find(({labwareDefURI:le})=>le===W),J=We!=null&&c.getIsTiprack(We.def),Pt=t.wasteChuteEntities[W]!=null,we=t.trashBinEntities[W]!=null,it=r.tipState.pipettes[M]?.hasTip;(W==null||J&&sr==null&&L!=="never"&&it||!J&&!Pt&&!we)&&Y.push(Rn());let Z,j;if(L==="never"){const le=r.tipState.pipettes[M]?.tiprackURI;Z=t.labwareEntities[le??""],j=Z?.labwareDefURI}else Z=Object.values(re).find(({labwareDefURI:le})=>le===H),j=H;Z==null&&(L==="never"?Y.push(xt({actionName:Ge,pipette:M})):Y.push(pt({actionName:Ge,labware:j})));const{def:lt=null}=Z??{},{spec:fe,name:at,pythonName:zt}=Ne[M],Ct=c.getAllLiquidClassDefs()[C===c.NONE_LIQUID_CLASS_NAME||C==null?c.WATER_LIQUID_CLASS_NAME:C].byPipette?.find(({pipetteModel:le})=>le===c.getFlexNameConversion(fe))?.byTipType.find(({tiprack:le})=>le===j)??null,{aspirate:Kr,multiDispense:or}=Ct??{},{multiWellHandling:yr}=zc({pipetteSpecs:fe,tiprackDefinition:lt,volume:ke,path:"multiDispense",numAspirateWells:1,numDispenseWells:E.length,conditioningByVolume:or?.conditioningByVolume??[],disposalByVolume:or?.disposalByVolume??[],aspirateAirGapByVolume:Kr?.retract.airGapByVolume??[]}),{numWellsToFitInTip:ir}=yr;if((!yr.isSupported||ir==null||ir===1)&&Y.push(Jb()),he&&V!==c.ALL){const le=ft({robotState:r,invariantContext:t,pipetteId:M,labwareId:x,wellLocationOffset:{x:y,y:A},wellTargetName:F,primaryNozzle:U,nozzleConfiguration:V});le.isSafe||Y.push($t({unsafePipetteMovementReason:le.reason}));const Ye=ft({robotState:r,invariantContext:t,pipetteId:M,labwareId:g,wellLocationOffset:{x:Ce,y:Ee},wellTargetName:E[0],primaryNozzle:U,nozzleConfiguration:V});Ye.isSafe||Y.push($t({unsafePipetteMovementReason:Ye.reason}))}const Ae=t.labwareEntities[x]?.def.wells[F]?.depth??null,Nt=c.getMmFromBottom(w,s,Ae),br=c.getMmFromBottom(T,h,Ae),Tr=c.getMmFromBottom(d,i,Ae);Nt!=null&&br!=null&&Nt>br&&Y.push(kh()),Nt!=null&&Tr!=null&&Nt>Tr&&Y.push(vh());const Xr=[R(B,{pipetteId:M,labwareId:x,wellName:F,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})],gr=Us(M,t,j)-rt;if(Math.floor((gr-_e)/ke)===0&&Y.push(os({actionName:Ge,volume:ke,maxVolume:gr,disposalVolume:_e})),Y.length>0)return{errors:Y};const{tipracks:Qr}=Wa(M,j,t,r,U,V),Jr=c.getByVolumeValue({liquidClass:C,pipetteSpecs:fe,tiprackDefUri:j,targetVolume:ke,liquidHandlingAction:"multiDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,en=ne[g]?.pythonName??kt[g]?.pythonName,Gn=ne[W]?.pythonName??kt[W]?.pythonName,tn=S==null?null:ne[S]?.pythonName??kt[S]?.pythonName,jt=re[x].pythonName,rn=re[g]?.pythonName,nn=(V===c.PARTIAL_COLUMN?tr({labwareDef:re[x].def,wells:[F],primaryNozzle:U}):[F])[0],an=V===c.PARTIAL_COLUMN&&E!=null&&re[g]!=null?tr({labwareDef:re[g].def,wells:E,primaryNozzle:U}):E,Wn=`${jt}[${N(nn)}]`,Yn=an.map(le=>`${rn}[${N(le)}]`).join(", "),sn=[`name=${N(`${e.commandCreatorFnName}_step_${ge}`)}`,...C!=null?[`base_liquid_class=${ja(C,!0)}`]:[],`properties=${Ds({args:e,pipetteName:c.isFlexPipette(at)?c.getFlexNameConversion(fe):at,tiprackUri:j,liquidClassValuesForTip:Ct})}`],Gt=`${be}.define_liquid_class(
139
+ ${K(sn.join(`,
140
140
  `))},
141
- )`,zt=ye===St&&Ve!=null&&Qe!=null&&Qe.length>0?Ba({wellSets:Qe,nozzles:V,channels:de.channels,primaryNozzle:U}):null,Er=Ve!=null?ue[Ve]?.pythonName:null,wr=zt?.map(oe=>`${Er}[${N(oe)}]`).join(", "),jn=[`volume=${ve}`,`source=[${Hn}]`,`dest=[${Ir??Bn}]`,`new_tip=${N(Cs(L))}`,...Q?["return_tip=True",...sr!=null?[`trash_location=${sr}`]:[]]:[`trash_location=${gr}`,"keep_last_tip=True"],...de.channels>1?["group_wells=False"]:[],...Jr.filteredSortedTiprackIds.length>0?[Ps({labwareEntities:ue,tiprackIds:Jr.filteredSortedTiprackIds})]:[],`liquid_class=${or}`,...zt!=null&&Er!=null?[`tips=[${wr}]`]:[]],tn=()=>({commands:[],python:`${Ht}.distribute_with_liquid_class(
142
- ${K(jn.join(`,
141
+ )`,Dt=ce===St&&Ue!=null&&Je!=null&&Je.length>0?Ga({wellSets:Je,nozzles:V,channels:fe.channels,primaryNozzle:U}):null,lr=Ue!=null?re[Ue]?.pythonName:null,Ir=(Dt!=null&&Z!=null&&V===c.PARTIAL_COLUMN?tr({labwareDef:Z?.def,wells:Dt,primaryNozzle:U}):Dt)?.map(le=>`${lr}[${N(le)}]`).join(", "),Zn=[`volume=${ke}`,`source=[${Wn}]`,`dest=[${Yn??en}]`,`new_tip=${N(Fs(L))}`,...J?["return_tip=True",...tn!=null?[`trash_location=${tn}`]:[]]:[`trash_location=${Gn}`,"keep_last_tip=True"],...fe.channels>1?["group_wells=False"]:[],...Qr.filteredSortedTiprackIds.length>0?[Ms({labwareEntities:re,tiprackIds:Qr.filteredSortedTiprackIds})]:[],`liquid_class=${Gt}`,...Dt!=null&&lr!=null?[`tips=[${Ir}]`]:[]],on=()=>({commands:[],python:`${zt}.distribute_with_liquid_class(
142
+ ${K(Zn.join(`,
143
143
  `))},
144
- )`}),Gn={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[_],offset:{x:h,y:b,z:T}},rn={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[i],offset:{x:u,y:p,z:d}},ir={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[He],offset:{x:te,y:Ee,z:ze}},Sr={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[ee],offset:{x:_e,y:le,z:Te}},Wn=c.getByVolumeValue({liquidClass:C,pipetteSpecs:de,tiprackDefUri:j,targetVolume:tt,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null})??a,Ga=c.getByVolumeValue({liquidClass:C,pipetteSpecs:de,tiprackDefUri:j,targetVolume:tt,liquidHandlingAction:"multiDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null})??k,he=c.getByVolumeValue({liquidClass:C,pipetteSpecs:de,tiprackDefUri:j,targetVolume:qe,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null})??a,se=c.getByVolumeValue({liquidClass:C,pipetteSpecs:de,tiprackDefUri:j,targetVolume:qe,liquidHandlingAction:"multiDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null})??k,_t=Hy(E,ar),yt=Ur({retractZOffset:d,retractPositionReference:i,labwareId:z,labwareEntities:ue,well:F}),Ae=!yt&&F!=null?[O(B,{pipetteId:M,labwareId:z,wellName:F,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})]:[],Yn=[...Tn(_t,(oe,Ye)=>{const lr=oe.length,Ar=ve*lr,Lr=Ar+me+rt,Kn=Ye===0,Xn=Ye===_t.length-1,bt=L==="always"||L==="once"&&Kn,Zn=c.LOW_VOLUME_PIPETTES.includes(nt)?[O(gn,{pipetteId:M,volume:Lr})]:[];let ur=[];if(bt){const De=zt?.shift();ur=[R(Ha,{pipette:M,nozzles:V,primaryNozzle:U,dropTipLocation:Q&&rr!=null?rr:W,tipRack:j,...ye===St&&De!=null&&Ve!=null?{tipSelectionArgs:{tipRackId:Ve,tipWell:De}}:{}})]}const Or=[O(Lt,{pipetteId:M})],jt=c.getByVolumeValue({liquidClass:C,pipetteSpecs:de,tiprackDefUri:j,targetVolume:qe,liquidHandlingAction:"multiDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Gt=v!=null?[O(fe,{seconds:v.seconds})]:[],nn=qe>0&&!bt&&!Kn&&me===0&&I==null?[O(Xe,{isAirGap:!0,pipetteId:M,volume:qe,flowRate:se,...jt>0?{correctionVolume:jt}:{},pushOut:0}),...Gt]:[],Rr=[...Zr,...nn,...Zn,...Or],cr=[O(B,{pipetteId:M,labwareId:z,wellName:F,wellLocation:Gn}),O(B,{pipetteId:M,labwareId:z,...m!=null?{speed:m}:{},wellName:F,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[s],offset:{x:y,y:A,z:S}}}),...f!=null&&f.seconds>0?[O(fe,{seconds:f.seconds})]:[]],an=ae?Mr({pipette:M,volume:Ar,times:1,aspirateFlowRateUlSec:a,dispenseFlowRateUlSec:k,aspirateDelaySeconds:n?.seconds??0,dispenseDelaySeconds:v?.seconds??0,finalPushOut:0,invariantContext:t,liquidClass:C,tiprack:j,generatePython:!1}):[],Le=P!=null?Mr({pipette:M,volume:P.volume,times:P.times,aspirateFlowRateUlSec:a,dispenseFlowRateUlSec:k,aspirateDelaySeconds:n?.seconds,dispenseDelaySeconds:v?.seconds,finalPushOut:0,invariantContext:t,liquidClass:C,tiprack:j,generatePython:!1}):[],Wt=n!=null?[O(fe,{seconds:n.seconds})]:[],vr=Be?[O(Et,{pipetteId:M,labwareId:z,wellName:F,...ce!=null?{mmFromEdge:ce}:{},zOffsetFromTop:Je,...mt!=null?{speed:mt}:{}}),...tt>0&&yt?[O(B,{pipetteId:M,labwareId:z,wellName:F,wellLocation:rn})]:[]]:[],Tt=c.getByVolumeValue({liquidClass:C,pipetteSpecs:de,tiprackDefUri:j,targetVolume:tt,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Yt=tt>0?[...Ae,O(At,{pipetteId:M,volume:tt,flowRate:Wn,...Tt>0?{correctionVolume:Tt}:{}}),...Wt]:[],Qn=c.getByVolumeValue({liquidClass:C,pipetteSpecs:de,tiprackDefUri:j,targetVolume:Lr,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,sn=c.getByVolumeValue({liquidClass:C,pipetteSpecs:de,tiprackDefUri:j,targetVolume:rt,liquidHandlingAction:"multiDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,on=rt!=null&&rt>0?[O(Xe,{pipetteId:M,volume:rt,flowRate:k,correctionVolume:sn,pushOut:0}),...Gt]:[],Jn=[O(Ra,{pipetteId:M,volume:Lr,flowRate:a,correctionVolume:Qn}),...Wt,...on],ln=[O(B,{pipetteId:M,labwareId:z,...l!=null?{speed:l}:{},wellName:F,wellLocation:rn}),...o!=null&&o?.seconds>0?[O(fe,{seconds:o.seconds})]:[]],kr=Tn(oe,(De,Pr)=>{const un=Pr===0,pr=Pr===oe.length-1,Cr=Xn&&pr;let Kt=0,dr=k;un&&tt>0?(Kt=tt,dr=Ga):!un&&qe>0&&rt===0&&(Kt=qe,dr=se);const ta=c.getByVolumeValue({liquidClass:C,pipetteSpecs:de,tiprackDefUri:j,targetVolume:Kt,liquidHandlingAction:"multiDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Wa=Ur({retractZOffset:Te,retractPositionReference:ee,labwareId:w,labwareEntities:ue,well:De}),Ms=Wa?[]:[O(B,{pipetteId:M,labwareId:w,wellName:De,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})],Ya=De!=null?[O(B,{pipetteId:M,labwareId:w,wellName:De,wellLocation:ir}),...Kt>0?[O(Xe,{isAirGap:!0,pipetteId:M,volume:Kt,flowRate:dr,pushOut:0,correctionVolume:ta}),...Gt]:[],O(B,{pipetteId:M,labwareId:w,...$e!=null?{speed:$e}:{},wellName:De,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[$],offset:{x:Pe,y:ge,z:X}}}),...ke!=null&&ke.seconds>0?[O(fe,{seconds:ke.seconds})]:[]]:[O(Fe,{fixtureId:w,pipetteId:M,offset:{x:0,y:0,z:0}})],ra=me===0&&pr?H:0,gt=[O(Xe,{pipetteId:M,volume:ve,flowRate:k,...ra!=null?{pushOut:ra}:{},correctionVolume:Vn}),...Gt],cn=De!=null?[O(B,{pipetteId:M,labwareId:w,...pe!=null?{speed:pe}:{},wellName:De,wellLocation:Sr}),...q!=null&&q?.seconds>0?[O(fe,{seconds:q.seconds})]:[]]:[],Mt=pr?[O(Rn,{pipetteId:M,flowRate:g})]:[],Ka=c.getByVolumeValue({liquidClass:C,pipetteSpecs:de,tiprackDefUri:j,targetVolume:qe,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Ft=(na,db=!0)=>qe>0&&!(Pr<oe.length-1&&rt>0)&&!(L==="never"&&Cr&&na)?[...db?Ms:[],O(Lt,{pipetteId:M}),O(At,{pipetteId:M,volume:qe,flowRate:he,...Ka>0?{correctionVolume:Ka}:{}}),...Wt]:[],It=na=>De!=null&&Rt?[O(Et,{pipetteId:M,labwareId:w,wellName:De,...ht!=null?{mmFromEdge:ht}:{},zOffsetFromTop:Oe,...et!=null?{speed:et}:{}}),...Ft(na).length>0&&Wa?[O(B,{pipetteId:M,labwareId:w,wellName:De,wellLocation:Sr})]:[]]:[];let Nr=[];if(I==null||!pr)Nr=[...It(!0),...Ft(!0)];else if(I===vn)Nr=[O(B,{pipetteId:M,labwareId:w,wellName:De,wellLocation:{origin:c.WELL_ORIGIN_TOP}}),...Mt,...It(!0),...Ft(!0)];else if(I===jr){const na=Ft(!0);Nr=[...It(!1),...Ft(!1),O(B,{pipetteId:M,labwareId:z,wellName:F,wellLocation:{origin:c.WELL_ORIGIN_TOP}}),...Mt,...Rt&&!hr?[O(Et,{pipetteId:M,labwareId:z,wellName:F,...ht!=null?{mmFromEdge:ht}:{},zOffsetFromTop:Oe,...et!=null?{speed:et}:{}})]:[],...na.length>0?[O(B,{pipetteId:M,labwareId:z,wellName:F,wellLocation:{origin:c.WELL_ORIGIN_TOP}})]:[],...Ft(!0,!1)]}else Nr=[...It(!1),...Ft(!1),O(Fe,{pipetteId:M,fixtureId:Object.values(re).length>0?Object.values(re)[0].id:Object.values(vt)[0].id,offset:{x:0,y:0,z:0}}),...Mt,...Ft(!0,!1)];return[...Ya,...gt,...cn,...Nr]}),ea=Q&&(Ye===_t.length-1||L==="always")?[O(zr,{pipette:M,dropTipLocation:j,isReturnTip:Q})]:[];return[...ur,...Rr,...cr,...Le,...an,...Jn,...ln,...vr,...Yt,...kr,...ea]}),tn];return ne(Yn,t,r)},HS=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"heaterShaker/closeLabwareLatch",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.close_labware_latch()`}},ch=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"heaterShaker/deactivateHeater",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.deactivate_heater()`}},zS=["1","4","7","10"],jS=(e,t,r)=>{const{pipetteEntities:n,labwareEntities:a,moduleEntities:s}=t,o=r.modules[e.moduleId].slot,i=Object.keys(n)[0],l=n[i]?.spec;if(!((l?.displayCategory==="FLEX"||l?.channels===96)??!1)&&hy(r.labware,a,o)){const d=zS.includes(o)?"right":"left";return{errors:[Lb(d)]}}const p=s[e.moduleId].pythonName;return{commands:[{commandType:"heaterShaker/openLabwareLatch",key:D(),params:{moduleId:e.moduleId}}],python:`${p}.open_labware_latch()`}},GS=(e,t,r)=>{const{moduleEntities:n}=t,{moduleId:a,rpm:s}=e;if(a===null)return{errors:[Z()]};if(n[a]?.type!==c.HEATERSHAKER_MODULE_TYPE)throw new Error(`expected module ${a} to be heaterShaker, got ${n[a]?.type}`);const o=n[a].pythonName;return{commands:[{commandType:"heaterShaker/setAndWaitForShakeSpeed",key:D(),params:{moduleId:a,rpm:s}}],python:`${o}.set_and_wait_for_shake_speed(${s})`}},ph=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"heaterShaker/deactivateShaker",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.deactivate_shaker()`}},Ky=(e,t,r)=>{const{timerHours:n,timerMinutes:a,timerSeconds:s,latchOpen:o,targetTemperature:i,rpm:l}=e;if(e.moduleId==null)return{errors:[Z()]};const u=Ot(r,e.moduleId),p=e.moduleId??"";if(u==null)return{errors:[Z()]};const d=[];if(o||d.push(R(HS,{moduleId:p})),i===null?d.push(R(ch,{moduleId:p})):d.push(R(Sc,{moduleId:p,celsius:i})),l===null&&"targetSpeed"in u&&u.targetSpeed!==null?d.push(R(ph,{moduleId:p})):l!==null&&d.push(R(GS,{moduleId:p,rpm:l})),[n,a,s].some(_=>_!=null&&_!==0)){i!==null&&d.push(R(vc,{moduleId:p,celsius:i}));const _=(n??0)*3600+(a??0)*60+(s??0);d.push(R(fe,{seconds:_})),d.push(R(ph,{moduleId:p})),d.push(R(ch,{moduleId:p}))}return o&&d.push(R(jS,{moduleId:p})),ne(d,t,r)},Xy=(e,t,r)=>{const{moduleId:n}=e,{moduleEntities:a,labwareEntities:s}=t,o=[],i=a[n].pythonName,u=Object.values(r.labware).filter(f=>f.stack.includes(n)).find(f=>f.stack.find(_=>s[_]?.def.allowedRoles?.includes("lid")&&s[_]?.def.parameters.loadName!=="opentrons_tough_pcr_auto_sealing_lid")),p=u!=null?Nc(u.stack):null,d=p!=null?s[p].def.metadata.displayName:null;return d!=null&&o.push(Mb({lidDisplayName:d})),o.length>0?{errors:o}:{commands:[{commandType:"thermocycler/closeLid",key:D(),params:{moduleId:n}}],python:`${i}.close_lid()`}},Zy=(e,t,r)=>{const{moduleId:n,celsius:a}=e,s=t.moduleEntities[n].pythonName;return{commands:[{commandType:"thermocycler/setTargetLidTemperature",key:D(),params:{moduleId:n,celsius:a}}],python:`${s}.set_lid_temperature(${a})`}},Qy=(e,t,r)=>{const{moduleId:n,profileElements:a,profileTargetLidTemp:s,profileVolume:o}=e,i=Ds(r,n);if(i===null)return{errors:[Z()]};const l=t.moduleEntities[n].pythonName,u=[];i.lidOpen!==!1&&u.push(R(Xy,{moduleId:n})),s!==i.lidTargetTemp&&u.push(R(Zy,{moduleId:n,celsius:s}));const p=`${l}_task_${i.numProfilesStarted+1}`;return u.push(R(Hg,{moduleId:n,profileElements:a,blockMaxVolumeUl:o,taskId:p})),ne(u,t,r)},WS=()=>({lidOpen:!1,lidClosed:!1,setBlockTemperature:!1,deactivateBlockTemperature:!1,setLidTemperature:!1,deactivateLidTemperature:!1}),YS=(e,t)=>!e.lidOpen&&t.lidOpen?{lidOpen:!0}:{},KS=(e,t)=>e.lidOpen&&!t.lidOpen||e.lidOpen===null&&!t.lidOpen?{lidClosed:!0}:{},XS=(e,t)=>t==null?e.currentBlockActivity.type==="blockDeactivated":e.currentBlockActivity.type==="blockTargetTemp"&&e.currentBlockActivity.blockTargetTemp===t,ZS=(e,t)=>{const r={...YS(e,t)},n={...KS(e,t)},a=!XS(e,t.blockTargetTemp),s=a&&t.blockTargetTemp===null,o=a&&t.blockTargetTemp!==null,i=e.lidTargetTemp!==t.lidTargetTemp,l=i&&t.lidTargetTemp===null,u=i&&t.lidTargetTemp!==null;return{...WS(),...r,...n,setBlockTemperature:o,deactivateBlockTemperature:s,setLidTemperature:u,deactivateLidTemperature:l}},QS=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"thermocycler/deactivateBlock",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.deactivate_block()`}},JS=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"thermocycler/deactivateLid",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.deactivate_lid()`}},eA=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"thermocycler/openLid",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.open_lid()`}},tA=(e,t,r)=>{e.celsius!==void 0&&console.warn("'volume' param not implemented for thermocycler/setTargetBlockTemperature, should not be set!");const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"thermocycler/setTargetBlockTemperature",key:D(),params:{moduleId:e.moduleId,celsius:e.celsius}}],python:`${n}.set_block_temperature(${e.celsius})`}},Jy=(e,t,r)=>{const n=Ds(r,e.moduleId);if(n===null)return{errors:[Z()]};if(n.currentBlockActivity.type==="profile")return{errors:[gb()]};const{lidOpen:a,lidClosed:s,setBlockTemperature:o,deactivateBlockTemperature:i,setLidTemperature:l,deactivateLidTemperature:u}=ZS(n,e),{blockTargetTemp:p,lidTargetTemp:d}=e,f=[];return a&&f.push(R(eA,{moduleId:e.moduleId})),s&&f.push(R(Xy,{moduleId:e.moduleId})),i&&f.push(R(QS,{moduleId:e.moduleId})),p!==null&&o&&f.push(R(tA,{moduleId:e.moduleId,celsius:p})),u&&f.push(R(JS,{moduleId:e.moduleId})),d!==null&&l&&f.push(R(Zy,{moduleId:e.moduleId,celsius:d})),ne(f,t,r)};var Cu,dh;function rA(){if(dh)return Cu;dh=1;var e=Ia(),t=J_(),r=ey();function n(a,s){return r(t(a,s,e),a+"")}return Cu=n,Cu}var Nu,fh;function nA(){if(fh)return Nu;fh=1;var e=Hr(),t=er();function r(n){return t(n)&&e(n)}return Nu=r,Nu}var Du,mh;function aA(){if(mh)return Du;mh=1;var e=Kh(),t=Aa(),r=s_(),n=Zh(),a=nA(),s=Math.max;function o(i){if(!(i&&i.length))return[];var l=0;return i=e(i,function(u){if(a(u))return l=s(u.length,l),!0}),n(l,function(u){return t(i,r(u))})}return Du=o,Du}var Mu,hh;function sA(){if(hh)return Mu;hh=1;var e=rA(),t=aA(),r=e(t);return Mu=r,Mu}var oA=sA();const iA=xe(oA),eb=(e,t,r)=>{const{aspirateAirGapVolume:n,aspirateDelay:a,aspirateFlowRateUlSec:s,aspiratePositionReference:o,aspirateRetractDelay:i,aspirateRetractPositionReference:l,aspirateRetractSpeed:u,aspirateRetractXOffset:p,aspirateRetractYOffset:d,aspirateRetractZOffset:f,aspirateSubmergeDelay:_,aspirateSubmergePositionReference:m,aspirateSubmergeSpeed:h,aspirateSubmergeXOffset:b,aspirateSubmergeYOffset:T,aspirateSubmergeZOffset:y,aspirateXOffset:A,aspirateYOffset:S,aspirateZOffset:g,blowoutFlowRateUlSec:I,blowoutLocation:L,changeTip:w,destLabware:E,destWells:v,dispenseAirGapVolume:k,dispenseDelay:$,dispenseFlowRateUlSec:q,dispensePositionReference:ee,dispenseRetractDelay:pe,dispenseRetractPositionReference:_e,dispenseRetractSpeed:le,dispenseRetractXOffset:Te,dispenseRetractYOffset:ke,dispenseRetractZOffset:He,dispenseSubmergeDelay:$e,dispenseSubmergePositionReference:te,dispenseSubmergeSpeed:Ee,dispenseSubmergeXOffset:ze,dispenseSubmergeYOffset:Pe,dispenseSubmergeZOffset:ge,dispenseXOffset:X,dispenseYOffset:W,dispenseZOffset:C,dropTipLocation:P,liquidClass:V,mixBeforeAspirate:M,mixInDestination:ae,pipette:U,preWetTip:H,primaryNozzle:z,pushOut:F,sourceLabware:x,nozzles:ye,sourceWells:Ve,tipRack:Qe,tipTracking:Be,tiprackSelected:ce,tipsSelected:Je,touchTipAfterAspirate:mt,touchTipAfterAspirateMmFromEdge:Rt,touchTipAfterAspirateOffsetMmFromTop:ht,touchTipAfterAspirateSpeed:Oe,touchTipAfterDispense:et,touchTipAfterDispenseMmFromEdge:Re,touchTipAfterDispenseOffsetMmFromTop:ve,touchTipAfterDispenseSpeed:Ce,volume:ue,stepNumber:re}=e,{pipetteEntities:vt,trashBinEntities:We,wasteChuteEntities:Y,labwareEntities:we}=t,hr=kn(we,Y,We,E),tt=we[x]?.def.parameters.quirks?.includes("touchTipDisabled");if(!(hr==="labware"&&v!=null&&Ve.length===v.length||(hr==="wasteChute"||hr==="trashBin")&&v==null&&Ve.length>=1))throw new Error(`Transfer command creator expected N:N source-to-dest wells ratio. Got ${Ve.length}:${v?.length} in labware`);const qe="transfer",me=[];(!r.pipettes[U]||!vt[U])&&me.push(ut({pipette:U})),(!x||!r.labware[x])&&me.push(ct({actionName:qe,labware:x}));const rt=r.labware[E]!=null?G(r.labware[E].stack):"",Yr=G(r.labware[x]?.stack),kt=Object.keys(Y).length>0,za=Y[P]!=null,Kr=We[P]!=null;kt&&(rt===c.GRIPPER_WASTE_CHUTE_ADDRESSABLE_AREA||Yr===c.GRIPPER_WASTE_CHUTE_ADDRESSABLE_AREA)&&me.push(ba());const rr=[...Object.keys(t.trashBinEntities),...Object.keys(t.wasteChuteEntities)],ot=rr.length>0?rr[0]:null,Q=Object.values(t.labwareEntities).find(({labwareDefURI:se})=>se===P),Pt=Q!=null&&c.getIsTiprack(Q.def),Ie=r.tipState.pipettes[U]?.hasTip;if(P==null||Pt&&ot==null&&w!=="never"&&Ie||!Pt&&!za&&!Kr)return{errors:[En()]};(!E||!we[E]&&!Y[E]&&!We[E])&&me.push(Ih());let Ct,J;if(w==="never"){const se=r.tipState.pipettes[U]?.tiprackURI;Ct=t.labwareEntities[se??""],J=Ct?.labwareDefURI}else Ct=Object.values(we).find(({labwareDefURI:se})=>se===Qe),J=Qe;if(Ct==null&&(w==="never"?me.push(Bt({actionName:qe,pipette:U})):me.push(ct({actionName:qe,labware:J}))),me.length>0)return{errors:me};const j=n||0,it=k||0,de=Ns(U,t,J)-j;if(de<=0||!isFinite(de))return me.push(rs({volume:ue,maxVolume:de,actionName:qe})),{errors:me};const nt=Math.ceil(ue/de);if(!isFinite(nt)||nt<=0)return me.push(rs({volume:ue,maxVolume:nt,actionName:qe})),{errors:me};const Ht=ue/nt,Nt=Array(nt).fill(Ht),Xr={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[m],offset:{x:b,y:T,z:y}},nr={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[l],offset:{x:p,y:d,z:f}},_r={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[te],offset:{x:ze,y:Pe,z:ge}},ar={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[_e],offset:{x:Te,y:ke,z:He}},{spec:Se,name:Dt,pythonName:yr}=vt[U],{tipracks:br}=xa(U,J,t,r,z,ye),Zr=c.getAllLiquidClassDefs()[V===c.NONE_LIQUID_CLASS_NAME||V==null?c.WATER_LIQUID_CLASS_NAME:V].byPipette?.find(({pipetteModel:se})=>se===c.getFlexNameConversion(Se))?.byTipType.find(({tiprack:se})=>se===J)??null,Tr=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Se,tiprackDefUri:J,targetVolume:Ht,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Qr=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Se,tiprackDefUri:J,targetVolume:Ht,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Jr=We[E]?.pythonName??Y[E]?.pythonName,Vn=We[P]?.pythonName??Y[P]?.pythonName,Bn=L==null?null:We[L]?.pythonName??Y[L]?.pythonName,gr=we[x].pythonName,sr=we[E]?.pythonName,xn=Ve.map(se=>`${gr}[${N(se)}]`).join(", "),en=v!=null&&sr!=null?v.map(se=>`${sr}[${N(se)}]`).join(", "):null,Hn=[`name=${N(`${e.commandCreatorFnName}_step_${re}`)}`,...V!=null?[`base_liquid_class=${Va(V,!0)}`]:[],`properties=${ks({args:e,pipetteName:c.isFlexPipette(Dt)?c.getFlexNameConversion(Se):Dt,tiprackUri:J,liquidClassValuesForTip:Zr})}`],Ir=`${be}.define_liquid_class(
145
- ${K(Hn.join(`,
144
+ )`}),Qn={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[h],offset:{x:_,y:b,z:T}},ln={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[i],offset:{x:u,y:p,z:d}},Er={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[He],offset:{x:te,y:Se,z:ze}},wr={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[ee],offset:{x:Te,y:se,z:Ie}},Jn=c.getByVolumeValue({liquidClass:C,pipetteSpecs:fe,tiprackDefUri:j,targetVolume:rt,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null})??a,Xa=c.getByVolumeValue({liquidClass:C,pipetteSpecs:fe,tiprackDefUri:j,targetVolume:rt,liquidHandlingAction:"multiDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null})??v,ye=c.getByVolumeValue({liquidClass:C,pipetteSpecs:fe,tiprackDefUri:j,targetVolume:qe,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null})??a,ie=c.getByVolumeValue({liquidClass:C,pipetteSpecs:fe,tiprackDefUri:j,targetVolume:qe,liquidHandlingAction:"multiDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null})??v,yt=cb(E,ir),Mt=Ur({retractZOffset:d,retractPositionReference:i,labwareId:x,labwareEntities:re,well:F}),Le=!Mt&&F!=null?[R(B,{pipetteId:M,labwareId:x,wellName:F,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})]:[],ea=[...Sn(yt,(le,Ye)=>{const ur=le.length,Sr=ke*ur,Ar=Sr+_e+nt,ta=Ye===0,un=Ye===yt.length-1,bt=L==="always"||L==="once"&&ta,ra=c.LOW_VOLUME_PIPETTES.includes(at)?[R(An,{pipetteId:M,volume:Ar})]:[];let cr=[];if(bt){const Me=Dt?.shift();cr=[O(Ya,{pipette:M,nozzles:V,primaryNozzle:U,dropTipLocation:J&&sr!=null?sr:W,tipRack:j,...ce===St&&Me!=null&&Ue!=null?{tipSelectionArgs:{tipRackId:Ue,tipWell:Me}}:{}})]}const Lr=[R(Lt,{pipetteId:M})],Wt=c.getByVolumeValue({liquidClass:C,pipetteSpecs:fe,tiprackDefUri:j,targetVolume:qe,liquidHandlingAction:"multiDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Yt=k!=null?[R(me,{seconds:k.seconds})]:[],cn=qe>0&&!bt&&!ta&&_e===0&&S==null?[R(Xe,{isAirGap:!0,pipetteId:M,volume:qe,flowRate:ie,...Wt>0?{correctionVolume:Wt}:{},pushOut:0}),...Yt]:[],Or=[...Xr,...cn,...ra,...Lr],pr=[R(B,{pipetteId:M,labwareId:x,wellName:F,wellLocation:Qn}),R(B,{pipetteId:M,labwareId:x,...m!=null?{speed:m}:{},wellName:F,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[s],offset:{x:y,y:A,z:w}}}),...f!=null&&f.seconds>0?[R(me,{seconds:f.seconds})]:[]],pn=oe?Dr({pipette:M,volume:Sr,times:1,aspirateFlowRateUlSec:a,dispenseFlowRateUlSec:v,aspirateDelaySeconds:n?.seconds??0,dispenseDelaySeconds:k?.seconds??0,finalPushOut:0,invariantContext:t,liquidClass:C,tiprack:j,generatePython:!1}):[],Oe=P!=null?Dr({pipette:M,volume:P.volume,times:P.times,aspirateFlowRateUlSec:a,dispenseFlowRateUlSec:v,aspirateDelaySeconds:n?.seconds,dispenseDelaySeconds:k?.seconds,finalPushOut:0,invariantContext:t,liquidClass:C,tiprack:j,generatePython:!1}):[],Kt=n!=null?[R(me,{seconds:n.seconds})]:[],Rr=Be?[R(Et,{pipetteId:M,labwareId:x,wellName:F,...pe!=null?{mmFromEdge:pe}:{},zOffsetFromTop:et,...ht!=null?{speed:ht}:{}}),...rt>0&&Mt?[R(B,{pipetteId:M,labwareId:x,wellName:F,wellLocation:ln})]:[]]:[],Tt=c.getByVolumeValue({liquidClass:C,pipetteSpecs:fe,tiprackDefUri:j,targetVolume:rt,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Xt=rt>0?[...Le,R(At,{pipetteId:M,volume:rt,flowRate:Jn,...Tt>0?{correctionVolume:Tt}:{}}),...Kt]:[],na=c.getByVolumeValue({liquidClass:C,pipetteSpecs:fe,tiprackDefUri:j,targetVolume:Ar,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,dn=c.getByVolumeValue({liquidClass:C,pipetteSpecs:fe,tiprackDefUri:j,targetVolume:nt,liquidHandlingAction:"multiDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,fn=nt!=null&&nt>0?[R(Xe,{pipetteId:M,volume:nt,flowRate:v,correctionVolume:dn,pushOut:0}),...Yt]:[],aa=[R(Na,{pipetteId:M,volume:Ar,flowRate:a,correctionVolume:na}),...Kt,...fn],mn=[R(B,{pipetteId:M,labwareId:x,...l!=null?{speed:l}:{},wellName:F,wellLocation:ln}),...o!=null&&o?.seconds>0?[R(me,{seconds:o.seconds})]:[]],kr=Sn(le,(Me,vr)=>{const hn=vr===0,dr=vr===le.length-1,Pr=un&&dr;let Zt=0,fr=v;hn&&rt>0?(Zt=rt,fr=Xa):!hn&&qe>0&&nt===0&&(Zt=qe,fr=ie);const oa=c.getByVolumeValue({liquidClass:C,pipetteSpecs:fe,tiprackDefUri:j,targetVolume:Zt,liquidHandlingAction:"multiDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Za=Ur({retractZOffset:Ie,retractPositionReference:ee,labwareId:g,labwareEntities:re,well:Me}),$s=Za?[]:[R(B,{pipetteId:M,labwareId:g,wellName:Me,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})],Qa=Me!=null?[R(B,{pipetteId:M,labwareId:g,wellName:Me,wellLocation:Er}),...Zt>0?[R(Xe,{isAirGap:!0,pipetteId:M,volume:Zt,flowRate:fr,pushOut:0,correctionVolume:oa}),...Yt]:[],R(B,{pipetteId:M,labwareId:g,...Ve!=null?{speed:Ve}:{},wellName:Me,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[$],offset:{x:Ce,y:Ee,z:X}}}),...Pe!=null&&Pe.seconds>0?[R(me,{seconds:Pe.seconds})]:[]]:[R(Fe,{fixtureId:g,pipetteId:M,offset:{x:0,y:0,z:0}})],ia=_e===0&&dr?z:0,gt=[R(Xe,{pipetteId:M,volume:ke,flowRate:v,...ia!=null?{pushOut:ia}:{},correctionVolume:Jr}),...Yt],_n=Me!=null?[R(B,{pipetteId:M,labwareId:g,...de!=null?{speed:de}:{},wellName:Me,wellLocation:wr}),...q!=null&&q?.seconds>0?[R(me,{seconds:q.seconds})]:[]]:[],Ft=dr?[R(Dn,{pipetteId:M,flowRate:I})]:[],Ja=c.getByVolumeValue({liquidClass:C,pipetteSpecs:fe,tiprackDefUri:j,targetVolume:qe,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Ut=(la,Pb=!0)=>qe>0&&!(vr<le.length-1&&nt>0)&&!(L==="never"&&Pr&&la)?[...Pb?$s:[],R(Lt,{pipetteId:M}),R(At,{pipetteId:M,volume:qe,flowRate:ye,...Ja>0?{correctionVolume:Ja}:{}}),...Kt]:[],It=la=>Me!=null&&Rt?[R(Et,{pipetteId:M,labwareId:g,wellName:Me,..._t!=null?{mmFromEdge:_t}:{},zOffsetFromTop:Re,...tt!=null?{speed:tt}:{}}),...Ut(la).length>0&&Za?[R(B,{pipetteId:M,labwareId:g,wellName:Me,wellLocation:wr})]:[]]:[];let Cr=[];if(S==null||!dr)Cr=[...It(!0),...Ut(!0)];else if(S===Mn)Cr=[R(B,{pipetteId:M,labwareId:g,wellName:Me,wellLocation:{origin:c.WELL_ORIGIN_TOP}}),...Ft,...It(!0),...Ut(!0)];else if(S===zr){const la=Ut(!0);Cr=[...It(!1),...Ut(!1),R(B,{pipetteId:M,labwareId:x,wellName:F,wellLocation:{origin:c.WELL_ORIGIN_TOP}}),...Ft,...Rt&&!_r?[R(Et,{pipetteId:M,labwareId:x,wellName:F,..._t!=null?{mmFromEdge:_t}:{},zOffsetFromTop:Re,...tt!=null?{speed:tt}:{}})]:[],...la.length>0?[R(B,{pipetteId:M,labwareId:x,wellName:F,wellLocation:{origin:c.WELL_ORIGIN_TOP}})]:[],...Ut(!0,!1)]}else Cr=[...It(!1),...Ut(!1),R(Fe,{pipetteId:M,fixtureId:Object.values(ne).length>0?Object.values(ne)[0].id:Object.values(kt)[0].id,offset:{x:0,y:0,z:0}}),...Ft,...Ut(!0,!1)];return[...Qa,...gt,..._n,...Cr]}),sa=J&&(Ye===yt.length-1||L==="always")?[R(Hr,{pipette:M,dropTipLocation:j,isReturnTip:J})]:[];return[...cr,...Or,...pr,...Oe,...pn,...aa,...mn,...Rr,...Xt,...kr,...sa]}),on];return ae(ea,t,r)},_b=(e,t,r)=>{const{timerHours:n,timerMinutes:a,timerSeconds:s,latchOpen:o,targetTemperature:i,rpm:l}=e;if(e.moduleId==null)return{errors:[Q()]};const u=Ot(r,e.moduleId),p=e.moduleId??"";if(u==null)return{errors:[Q()]};const d=[];if(o||d.push(O(F_,{moduleId:p})),i===null?d.push(O(ju,{moduleId:p})):d.push(O(vc,{moduleId:p,celsius:i})),l===null&&"targetSpeed"in u&&u.targetSpeed!==null?d.push(O(Gu,{moduleId:p})):l!==null&&d.push(O(q_,{moduleId:p,rpm:l})),[n,a,s].some(h=>h!=null&&h!==0)){i!==null&&d.push(O(Mc,{moduleId:p,celsius:i}));const h=(n??0)*3600+(a??0)*60+(s??0);d.push(O(me,{seconds:h})),d.push(O(Gu,{moduleId:p})),d.push(O(ju,{moduleId:p}))}return o&&d.push(O(U_,{moduleId:p})),ae(d,t,r)},yb=(e,t,r)=>{const{moduleId:n,profileElements:a,profileTargetLidTemp:s,profileVolume:o}=e,i=qs(r,n);if(i===null)return{errors:[Q()]};const l=t.moduleEntities[n].pythonName,u=[];i.lidOpen!==!1&&u.push(O(Fc,{moduleId:n})),s!==i.lidTargetTemp&&u.push(O(Uc,{moduleId:n,celsius:s}));const p=`${l}_task_${i.numProfilesStarted+1}`;return u.push(O(C_,{moduleId:n,profileElements:a,blockMaxVolumeUl:o,taskId:p})),ae(u,t,r)},oA=()=>({lidOpen:!1,lidClosed:!1,setBlockTemperature:!1,deactivateBlockTemperature:!1,setLidTemperature:!1,deactivateLidTemperature:!1}),iA=(e,t)=>!e.lidOpen&&t.lidOpen?{lidOpen:!0}:{},lA=(e,t)=>e.lidOpen&&!t.lidOpen||e.lidOpen===null&&!t.lidOpen?{lidClosed:!0}:{},uA=(e,t)=>t==null?e.currentBlockActivity.type==="blockDeactivated":e.currentBlockActivity.type==="blockTargetTemp"&&e.currentBlockActivity.blockTargetTemp===t,cA=(e,t)=>{const r={...iA(e,t)},n={...lA(e,t)},a=!uA(e,t.blockTargetTemp),s=a&&t.blockTargetTemp===null,o=a&&t.blockTargetTemp!==null,i=e.lidTargetTemp!==t.lidTargetTemp,l=i&&t.lidTargetTemp===null,u=i&&t.lidTargetTemp!==null;return{...oA(),...r,...n,setBlockTemperature:o,deactivateBlockTemperature:s,setLidTemperature:u,deactivateLidTemperature:l}},bb=(e,t,r)=>{const n=qs(r,e.moduleId);if(n===null)return{errors:[Q()]};if(n.currentBlockActivity.type==="profile")return{errors:[$b()]};const{lidOpen:a,lidClosed:s,setBlockTemperature:o,deactivateBlockTemperature:i,setLidTemperature:l,deactivateLidTemperature:u}=cA(n,e),{blockTargetTemp:p,lidTargetTemp:d}=e,f=[];return a&&f.push(O(B_,{moduleId:e.moduleId})),s&&f.push(O(Fc,{moduleId:e.moduleId})),i&&f.push(O($_,{moduleId:e.moduleId})),p!==null&&o&&f.push(O(x_,{moduleId:e.moduleId,celsius:p})),u&&f.push(O(V_,{moduleId:e.moduleId})),d!==null&&l&&f.push(O(Uc,{moduleId:e.moduleId,celsius:d})),ae(f,t,r)};var Fu,Th;function pA(){if(Th)return Fu;Th=1;var e=La(),t=Ty(),r=gy();function n(a,s){return r(t(a,s,e),a+"")}return Fu=n,Fu}var Uu,gh;function dA(){if(gh)return Uu;gh=1;var e=xr(),t=nr();function r(n){return t(n)&&e(n)}return Uu=r,Uu}var qu,Ih;function fA(){if(Ih)return qu;Ih=1;var e=a_(),t=va(),r=m_(),n=o_(),a=dA(),s=Math.max;function o(i){if(!(i&&i.length))return[];var l=0;return i=e(i,function(u){if(a(u))return l=s(u.length,l),!0}),n(l,function(u){return t(i,r(u))})}return qu=o,qu}var $u,Eh;function mA(){if(Eh)return $u;Eh=1;var e=pA(),t=fA(),r=e(t);return $u=r,$u}var hA=mA();const _A=xe(hA),Tb=(e,t,r)=>{const{aspirateAirGapVolume:n,aspirateDelay:a,aspirateFlowRateUlSec:s,aspiratePositionReference:o,aspirateRetractDelay:i,aspirateRetractPositionReference:l,aspirateRetractSpeed:u,aspirateRetractXOffset:p,aspirateRetractYOffset:d,aspirateRetractZOffset:f,aspirateSubmergeDelay:h,aspirateSubmergePositionReference:m,aspirateSubmergeSpeed:_,aspirateSubmergeXOffset:b,aspirateSubmergeYOffset:T,aspirateSubmergeZOffset:y,aspirateXOffset:A,aspirateYOffset:w,aspirateZOffset:I,blowoutFlowRateUlSec:S,blowoutLocation:L,changeTip:g,destLabware:E,destWells:k,dispenseAirGapVolume:v,dispenseDelay:$,dispenseFlowRateUlSec:q,dispensePositionReference:ee,dispenseRetractDelay:de,dispenseRetractPositionReference:Te,dispenseRetractSpeed:se,dispenseRetractXOffset:Ie,dispenseRetractYOffset:Pe,dispenseRetractZOffset:He,dispenseSubmergeDelay:Ve,dispenseSubmergePositionReference:te,dispenseSubmergeSpeed:Se,dispenseSubmergeXOffset:ze,dispenseSubmergeYOffset:Ce,dispenseSubmergeZOffset:Ee,dispenseXOffset:X,dispenseYOffset:W,dispenseZOffset:C,dropTipLocation:P,liquidClass:V,mixBeforeAspirate:M,mixInDestination:oe,pipette:U,preWetTip:z,primaryNozzle:x,pushOut:F,sourceLabware:H,nozzles:ce,sourceWells:Ue,tipRack:Je,tipTracking:Be,tiprackSelected:pe,tipsSelected:et,touchTipAfterAspirate:ht,touchTipAfterAspirateMmFromEdge:Rt,touchTipAfterAspirateOffsetMmFromTop:_t,touchTipAfterAspirateSpeed:Re,touchTipAfterDispense:tt,touchTipAfterDispenseMmFromEdge:ge,touchTipAfterDispenseOffsetMmFromTop:ke,touchTipAfterDispenseSpeed:Ne,volume:re,stepNumber:ne}=e,{pipetteEntities:kt,trashBinEntities:Ge,wasteChuteEntities:Y,labwareEntities:he}=t,_r=Fn(he,Y,Ge,E),rt=he[H]?.def.parameters.quirks?.includes("touchTipDisabled");if(!(_r==="labware"&&k!=null&&Ue.length===k.length||(_r==="wasteChute"||_r==="trashBin")&&k==null&&Ue.length>=1))throw new Error(`Transfer command creator expected N:N source-to-dest wells ratio. Got ${Ue.length}:${k?.length} in labware`);const qe="transfer",_e=[];(!r.pipettes[U]||!kt[U])&&_e.push(ct({pipette:U})),(!H||!r.labware[H])&&_e.push(pt({actionName:qe,labware:H}));const nt=r.labware[E]!=null?G(r.labware[E].stack):"",Wr=G(r.labware[H]?.stack),vt=Object.keys(Y).length>0,Ka=Y[P]!=null,Yr=Ge[P]!=null;vt&&(nt===c.GRIPPER_WASTE_CHUTE_ADDRESSABLE_AREA||Wr===c.GRIPPER_WASTE_CHUTE_ADDRESSABLE_AREA)&&_e.push(wa());const sr=[...Object.keys(t.trashBinEntities),...Object.keys(t.wasteChuteEntities)],We=sr.length>0?sr[0]:null,J=Object.values(t.labwareEntities).find(({labwareDefURI:ie})=>ie===P),Pt=J!=null&&c.getIsTiprack(J.def),we=r.tipState.pipettes[U]?.hasTip;if(P==null||Pt&&We==null&&g!=="never"&&we||!Pt&&!Ka&&!Yr)return{errors:[Rn()]};(!E||!he[E]&&!Y[E]&&!Ge[E])&&_e.push(Rh());let it,Z;if(g==="never"){const ie=r.tipState.pipettes[U]?.tiprackURI;it=t.labwareEntities[ie??""],Z=it?.labwareDefURI}else it=Object.values(he).find(({labwareDefURI:ie})=>ie===Je),Z=Je;if(it==null&&(g==="never"?_e.push(xt({actionName:qe,pipette:U})):_e.push(pt({actionName:qe,labware:Z}))),_e.length>0)return{errors:_e};const j=n||0,lt=v||0,fe=Us(U,t,Z)-j;if(fe<=0||!isFinite(fe))return _e.push(os({volume:re,maxVolume:fe,actionName:qe})),{errors:_e};const at=Math.ceil(re/fe);if(!isFinite(at)||at<=0)return _e.push(os({volume:re,maxVolume:at,actionName:qe})),{errors:_e};const zt=re/at,Ct=Array(at).fill(zt),Kr={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[m],offset:{x:b,y:T,z:y}},or={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[l],offset:{x:p,y:d,z:f}},yr={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[te],offset:{x:ze,y:Ce,z:Ee}},ir={origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[Te],offset:{x:Ie,y:Pe,z:He}},{spec:Ae,name:Nt,pythonName:br}=kt[U],{tipracks:Tr}=Wa(U,Z,t,r,x,ce),Xr=c.getAllLiquidClassDefs()[V===c.NONE_LIQUID_CLASS_NAME||V==null?c.WATER_LIQUID_CLASS_NAME:V].byPipette?.find(({pipetteModel:ie})=>ie===c.getFlexNameConversion(Ae))?.byTipType.find(({tiprack:ie})=>ie===Z)??null,gr=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:zt,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Zr=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:zt,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Qr=Ge[E]?.pythonName??Y[E]?.pythonName,Jr=Ge[P]?.pythonName??Y[P]?.pythonName,en=L==null?null:Ge[L]?.pythonName??Y[L]?.pythonName,Gn=he[H].pythonName,tn=he[E]?.pythonName,jt=ce===c.PARTIAL_COLUMN?tr({labwareDef:he[H].def,wells:Ue,primaryNozzle:x}):Ue,rn=ce===c.PARTIAL_COLUMN&&k!=null&&he[E]!=null?tr({labwareDef:he[E].def,wells:k,primaryNozzle:x}):k,nn=jt.map(ie=>`${Gn}[${N(ie)}]`).join(", "),an=rn!=null&&tn!=null?rn.map(ie=>`${tn}[${N(ie)}]`).join(", "):null,Wn=[`name=${N(`${e.commandCreatorFnName}_step_${ne}`)}`,...V!=null?[`base_liquid_class=${ja(V,!0)}`]:[],`properties=${Ds({args:e,pipetteName:c.isFlexPipette(Nt)?c.getFlexNameConversion(Ae):Nt,tiprackUri:Z,liquidClassValuesForTip:Xr})}`],Yn=`${be}.define_liquid_class(
145
+ ${K(Wn.join(`,
146
146
  `))},
147
- )`,or=Be===St&&ce!=null&&Je!=null&&Je.length>0?Ba({wellSets:Je,nozzles:ye,channels:Se.channels,primaryNozzle:z}):null,zn=ce!=null?we[ce]?.pythonName:null,zt=or?.map(se=>`${zn}[${N(se)}]`).join(", "),Er=[`volume=${ue}`,`source=[${xn}]`,`dest=${en!=null?`[${en}]`:Jr}`,`new_tip=${N(Cs(w))}`,...Pt?["return_tip=True",...Bn!=null?[`trash_location=${Bn}`]:[]]:[`trash_location=${Vn}`,"keep_last_tip=True"],...Se.channels>1?["group_wells=False"]:[],...br.filteredSortedTiprackIds.length>0?[Ps({labwareEntities:we,tiprackIds:br.filteredSortedTiprackIds})]:[],`liquid_class=${Ir}`,...or!=null&&zn!=null?[`tips=[${zt}]`]:[]],wr=()=>({commands:[],python:`${yr}.transfer_with_liquid_class(
148
- ${K(Er.join(`,
147
+ )`,Gt=Be===St&&pe!=null&&et!=null&&et.length>0?Ga({wellSets:et,nozzles:ce,channels:Ae.channels,primaryNozzle:x}):null,Kn=Gt!=null&&it!=null&&ce===c.PARTIAL_COLUMN?tr({labwareDef:it?.def,wells:Gt,primaryNozzle:x}):Gt,Dt=pe!=null?he[pe]?.pythonName:null,lr=Kn?.map(ie=>`${Dt}[${N(ie)}]`).join(", "),Xn=[`volume=${re}`,`source=[${nn}]`,`dest=${an!=null?`[${an}]`:Qr}`,`new_tip=${N(Fs(g))}`,...Pt?["return_tip=True",...en!=null?[`trash_location=${en}`]:[]]:[`trash_location=${Jr}`,"keep_last_tip=True"],...Ae.channels>1?["group_wells=False"]:[],...Tr.filteredSortedTiprackIds.length>0?[Ms({labwareEntities:he,tiprackIds:Tr.filteredSortedTiprackIds})]:[],`liquid_class=${Yn}`,...Gt!=null&&Dt!=null?[`tips=[${lr}]`]:[]],Ir=()=>({commands:[],python:`${br}.transfer_with_liquid_class(
148
+ ${K(Xn.join(`,
149
149
  `))},
150
- )`}),jn=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Se,tiprackDefUri:J,targetVolume:j,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null})??s,tn=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Se,tiprackDefUri:J,targetVolume:j,liquidHandlingAction:"singleDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null})??q,Gn=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Se,tiprackDefUri:J,targetVolume:it,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null})??s,rn=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Se,tiprackDefUri:J,targetVolume:it,liquidHandlingAction:"singleDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null})??q,ir=iA(Ve,v);let Sr=null,Wn=null;const he=[...ir.reduce((se,_t,yt)=>{const[Ae,Ne]=_t,Yn=Nt.reduce((oe,Ye,lr)=>{const Ar=yt===0&&lr===0,Lr=yt+1===ir.length,Xn=lr+1===Nt.length&&Lr;let bt=!1;w==="always"?bt=!0:w==="once"?bt=Ar:w==="perSource"?bt=Ae!==Sr:w==="perDest"&&(bt=Ar||Ne!==Wn);const Zn=c.LOW_VOLUME_PIPETTES.includes(Dt)?[O(gn,{pipetteId:U,volume:Ye})]:[];let ur=[];if(bt){const It=or?.shift();ur=[R(Ha,{pipette:U,primaryNozzle:z,nozzles:ye,dropTipLocation:Pt&&ot!=null?ot:P,tipRack:J,...ye!=null?{nozzles:ye}:{},...Be===St&&It!=null&&ce!=null?{tipSelectionArgs:{tipRackId:ce,tipWell:It}}:{}})]}const Or=we[x]?.def.wells[Ae]?.depth??null,jt=c.getMmFromBottom(g,o,Or),Gt=c.getMmFromBottom(y,m,Or),nn=c.getMmFromBottom(f,l,Or);jt!=null&&Gt!=null&&jt>Gt&&me.push(Eh());const Rr=Ur({retractZOffset:f,retractPositionReference:l,labwareId:x,labwareEntities:we,well:Ae}),cr=!Rr&&Ae!=null?[O(B,{pipetteId:U,labwareId:x,wellName:Ae,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})]:[],an=Ur({retractZOffset:He,retractPositionReference:_e,labwareId:E,labwareEntities:we,well:Ne}),Le=!an&&Ne!=null?[O(B,{pipetteId:U,labwareId:E,wellName:Ne,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})]:[];jt!=null&&nn!=null&&jt>nn&&me.push(wh());const Wt=[O(B,{pipetteId:U,labwareId:x,wellName:Ae,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})],vr=[O(Lt,{pipetteId:U})],Tt=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Se,tiprackDefUri:J,targetVolume:it,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Yt=$!=null?[O(fe,{seconds:$.seconds})]:[],Qn=it>0&&!bt&&(lr>0||yt>0)?[O(Xe,{isAirGap:!0,pipetteId:U,volume:it,flowRate:rn,...Tt>0?{correctionVolume:Tt}:{},pushOut:0}),...Yt]:[],sn=[...Wt,...Qn,...Zn,...vr],on=[O(B,{pipetteId:U,labwareId:x,wellName:Ae,wellLocation:Xr}),O(B,{pipetteId:U,labwareId:x,...h!=null?{speed:h}:{},wellName:Ae,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[o],offset:{x:A,y:S,z:g}}}),..._!=null&&_.seconds>0?[O(fe,{seconds:_.seconds})]:[]],Jn=H?Mr({pipette:U,volume:Ye,times:1,aspirateFlowRateUlSec:s,dispenseFlowRateUlSec:q,aspirateDelaySeconds:a?.seconds??0,dispenseDelaySeconds:$?.seconds??0,finalPushOut:0,invariantContext:t,liquidClass:V,tiprack:J,generatePython:!1}):[],ln=M!=null?Mr({pipette:U,volume:M.volume,times:M.times,aspirateFlowRateUlSec:s,dispenseFlowRateUlSec:q,aspirateDelaySeconds:a?.seconds,dispenseDelaySeconds:$?.seconds,finalPushOut:0,invariantContext:t,liquidClass:V,tiprack:J,generatePython:!1}):[],kr=a!=null?[O(fe,{seconds:a.seconds})]:[],ea=mt?[O(Et,{pipetteId:U,labwareId:x,wellName:Ae,...Rt!=null?{mmFromEdge:Rt}:{},zOffsetFromTop:ht,...Oe!=null?{speed:Oe}:{}}),...j>0&&Rr?[O(B,{pipetteId:U,labwareId:x,wellName:Ae,wellLocation:nr})]:[]]:[],De=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Se,tiprackDefUri:J,targetVolume:j,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Pr=j>0?[...cr,O(At,{pipetteId:U,volume:j,flowRate:jn,...De>0?{correctionVolume:De}:{}}),...kr]:[],un=[O(Ra,{pipetteId:U,volume:Ye,flowRate:s,...Qr>0?{correctionVolume:Qr}:{}}),...kr],pr=[O(B,{pipetteId:U,labwareId:x,...u!=null?{speed:u}:{},wellName:Ae,wellLocation:nr}),...i!=null&&i?.seconds>0?[O(fe,{seconds:i.seconds})]:[]],Cr=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Se,tiprackDefUri:J,targetVolume:j,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Kt=Ne!=null?[O(B,{pipetteId:U,labwareId:E,wellName:Ne,wellLocation:_r}),...j>0?[O(Xe,{isAirGap:!0,pipetteId:U,volume:j,flowRate:tn,pushOut:0,...Cr>0?{correctionVolume:Cr}:{}}),...Yt]:[],O(B,{pipetteId:U,labwareId:E,...Ee!=null?{speed:Ee}:{},wellName:Ne,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[ee],offset:{x:X,y:W,z:C}}}),...$e!=null&&$e.seconds>0?[O(fe,{seconds:$e.seconds})]:[]]:[O(Fe,{fixtureId:E,pipetteId:U,offset:{x:0,y:0,z:0}})],dr=ae!=null&&Ne!=null?0:F,ta=[O(Xe,{pipetteId:U,volume:Ye,flowRate:q,...dr!=null?{pushOut:dr}:{},...Tr>0?{correctionVolume:Tr}:{}}),...Yt],Wa=ae!=null&&Ne!=null?Mr({pipette:U,volume:ae.volume,times:ae.times,aspirateFlowRateUlSec:s,dispenseFlowRateUlSec:q,aspirateDelaySeconds:a?.seconds,dispenseDelaySeconds:$?.seconds,finalPushOut:F,invariantContext:t,liquidClass:V,tiprack:J,generatePython:!1}):[],Ms=Ne!=null?[O(B,{pipetteId:U,labwareId:E,...le!=null?{speed:le}:{},wellName:Ne,wellLocation:ar}),...pe!=null&&pe?.seconds>0?[O(fe,{seconds:pe.seconds})]:[]]:[],Ya=O(Rn,{pipetteId:U,flowRate:I}),ra=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Se,tiprackDefUri:J,targetVolume:it,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,gt=(It,Nr=!0)=>it>0&&!(w==="never"&&Xn&&It)?[...Nr?Le:[],O(Lt,{pipetteId:U}),O(At,{pipetteId:U,volume:it,flowRate:Gn,...ra>0?{correctionVolume:ra}:{}}),...kr]:[],cn=It=>Ne!=null&&et?[O(Et,{pipetteId:U,labwareId:E,wellName:Ne,...Re!=null?{mmFromEdge:Re}:{},zOffsetFromTop:ve,...Ce!=null?{speed:Ce}:{}}),...gt(It).length>0&&an?[O(B,{pipetteId:U,labwareId:E,wellName:Ne,wellLocation:ar})]:[]]:[];let Mt=[];switch(L){case null:case void 0:Mt=[...cn(!0),...gt(!0)];break;case vn:Mt=[Ya,...cn(!0),...gt(!0)];break;case jr:Mt=[...cn(!0),...gt(!1),O(B,{pipetteId:U,labwareId:x,wellName:Ae,wellLocation:{origin:c.WELL_ORIGIN_TOP}}),Ya,...et&&!tt?[O(Et,{pipetteId:U,labwareId:x,wellName:Ae,...Re!=null?{mmFromEdge:Re}:{},zOffsetFromTop:ve,...Ce!=null?{speed:Ce}:{}})]:[],...gt(!0).length>0?[O(B,{pipetteId:U,labwareId:x,wellName:Ae,wellLocation:{origin:c.WELL_ORIGIN_TOP}})]:[],...gt(!0,!1)];break;default:L in We?Mt=[...cn(!1),...gt(!1),O(By,{pipetteId:U,flowRate:I,trashId:L}),...gt(!0,!1)]:L in Y&&(Mt=[O(xy,{pipetteId:U,flowRate:I,wasteChuteId:L}),...gt(!0,!1)]);break}const Ka=Pt&&(yt===ir.length-1||w==="always")?[O(zr,{pipette:U,dropTipLocation:J,isReturnTip:Pt})]:[],Ft=[...ur,...sn,...on,...ln,...Jn,...un,...pr,...ea,...Pr,...Kt,...ta,...Wa,...Ms,...Mt,...Ka];return Sr=Ae,Wn=Ne,[...oe,...Ft]},[]);return[...se,...Yn]},[]),wr];return ne(he,t,r)},tb=(e,t,r)=>ne([R(va,{moduleId:e.moduleId,commandCreatorFnName:"vacuumCloseVent"}),R(Lc,{...e,commandCreatorFnName:"vacuumSetPumpPower"})],t,r),rb=(e,t,r)=>ne([R(va,{moduleId:e.moduleId,commandCreatorFnName:"vacuumCloseVent"}),R(Oc,{...e,commandCreatorFnName:"vacuumSetPumpPressure"})],t,r),nb=(e,t,r)=>{const{ventAfter:n}=e;return ne([R(va,{moduleId:e.moduleId,commandCreatorFnName:"vacuumCloseVent"}),R(Rc,{...e,commandCreatorFnName:"vacuumStartRunProfile",ventAfter:n})],t,r)},ab=(e,t,r)=>{const n=`[${e.task_ids.join(", ")}]`,a=`${be}.wait_for_tasks(${n})`;return{commands:[{key:D(),commandType:"waitForTasks",params:e}],python:a}},sb=(e,t,r)=>{const{waitCondition:n}=e;return n==="thermocyclerProfileComplete"?lA(e,t,r):n==="vacuumProfileComplete"||n==="vacuumStateComplete"?uA(e,t,r):{errors:[Hb(n)]}},lA=(e,t,r)=>{const{moduleId:n}=e,a=[],s=Ds(r,n);if(s==null)return{errors:[Z()]};if(s.currentBlockActivity.type!=="profile")return{errors:[np()]};const{taskId:o}=s.currentBlockActivity;return o==null?{errors:[np()]}:(a.push(R(ab,{task_ids:[o]})),ne(a,t,r))},uA=(e,t,r)=>{const{moduleId:n}=e,a=[],s=st(r,n);if(s==null)return{errors:[Z()]};if(s.currentPumpActivity.type!=="timedHold"&&s.currentPumpActivity.type!=="profile")return{errors:[xb()]};const o=s.currentPumpActivity.taskId;return a.push(R(ab,{task_ids:[o]})),ne(a,t,r)};var Fu,_h;function cA(){if(_h)return Fu;_h=1;var e=Z_(),t=1,r=4;function n(a){return e(a,t|r)}return Fu=n,Fu}var pA=cA();const dA=xe(pA),ob=["A1","B1","C1","D1","E1","F1","G1","H1","A2","B2","C2","D2","E2","F2","G2","H2","A3","B3","C3","D3","E3","F3","G3","H3","A4","B4","C4","D4","E4","F4","G4","H4","A5","B5","C5","D5","E5","F5","G5","H5","A6","B6","C6","D6","E6","F6","G6","H6","A7","B7","C7","D7","E7","F7","G7","H7","A8","B8","C8","D8","E8","F8","G8","H8","A9","B9","C9","D9","E9","F9","G9","H9","A10","B10","C10","D10","E10","F10","G10","H10","A11","B11","C11","D11","E11","F11","G11","H11","A12","B12","C12","D12","E12","F12","G12","H12"],Br="p300SingleId",fa="p300MultiId",Zu="p100096Id",Qu="sourcePlateId",Ju="destPlateId",ec="troughId",fA="A1",mA="tiprack1Id",hA={isAirGap:!0},Qa=c.fixture96Plate,yh=c.fixture12Trough,Ja=c.fixtureTiprack10ul,qt=c.fixtureTiprack300ul,pn=c.fixtureTiprack1000ul,es=c.fixtureTiprackAdapter,ib={OT_PD_DISABLE_MODULE_RESTRICTIONS:!1};function lb(e){return ob.reduce((t,r)=>({...t,[r]:e?wa:ie}),{})}function _A(e,t){return Array.from("ABCDEFGH").map(r=>`${r}${e}`).reduce((r,n)=>({...r,[n]:t}),{})}function ub(){const e={[Qu]:{id:Qu,pythonName:"mock_source_plate",labwareDefURI:c.getLabwareDefURI(Qa),def:Qa},[Ju]:{id:Ju,pythonName:"mock_dest_plate",labwareDefURI:c.getLabwareDefURI(Qa),def:Qa},[ec]:{id:ec,pythonName:"mock_trough",labwareDefURI:c.getLabwareDefURI(yh),def:yh},tiprack1Id:{id:"tiprack1Id",pythonName:"mock_tip_rack_1",labwareDefURI:c.getLabwareDefURI(qt),def:qt},tiprack2Id:{id:"tiprack2Id",pythonName:"mock_tip_rack_2",labwareDefURI:c.getLabwareDefURI(qt),def:qt},tiprack3Id:{id:"tiprack3Id",pythonName:"mock_tip_rack_3",labwareDefURI:c.getLabwareDefURI(qt),def:qt},tiprack4AdapterId:{id:"tiprack4AdapterId",pythonName:"mock_adapter_4",labwareDefURI:c.getLabwareDefURI(es),def:es},tiprack5AdapterId:{id:"tiprack5AdapterId",pythonName:"mock_adapter_5",labwareDefURI:c.getLabwareDefURI(es),def:es},tiprack4Id:{id:"tiprack4Id",pythonName:"mock_tip_rack_4",labwareDefURI:c.getLabwareDefURI(pn),def:pn},tiprack5Id:{id:"tiprack5Id",pythonName:"mock_tip_rack_5",labwareDefURI:c.getLabwareDefURI(pn),def:pn}},t={},r={[Uu]:{id:Uu,location:"cutoutA3",pythonName:"trash_bin_1"}},n={p10SingleId:{name:"p10_single",id:"p10SingleId",pythonName:"mock_pipette_p10",tiprackDefURI:[c.getLabwareDefURI(Ja)],tiprackLabwareDef:[Ja],spec:c.fixtureP10SingleV2Specs},p10MultiId:{name:"p10_multi",id:"p10MultiId",tiprackDefURI:[c.getLabwareDefURI(Ja)],tiprackLabwareDef:[Ja],spec:c.fixtureP10MultiV2Specs,pythonName:"mock_pipette_p10_multi"},[Br]:{name:"p300_single",id:Br,tiprackDefURI:[c.getLabwareDefURI(qt)],tiprackLabwareDef:[qt],spec:c.fixtureP300SingleV2Specs,pythonName:"mock_pipette"},[fa]:{name:"p300_multi",id:fa,tiprackDefURI:[c.getLabwareDefURI(qt)],tiprackLabwareDef:[qt],spec:c.fixtureP300MultiV2Specs,pythonName:"mock_pipette_p300_multi"},[Zu]:{name:"p1000_96",id:Zu,tiprackDefURI:[c.getLabwareDefURI(pn)],tiprackLabwareDef:[pn],spec:c.fixtureP100096V2Specs,pythonName:"mock_pipette_p1000_96"}};return{labwareEntities:e,moduleEntities:t,pipetteEntities:n,trashBinEntities:r,wasteChuteEntities:{},stagingAreaEntities:{},gripperEntities:{},liquidEntities:{},config:ib}}const Wr=e=>{const{invariantContext:t,labwareLocations:r,moduleLocations:n,pipetteLocations:a,tiprackSetting:s}=e,o=Cc({invariantContext:t,labwareLocations:r,moduleLocations:n||{},pipetteLocations:a});return o.tipState.tipracks=Jt(s,i=>lb(i)),o},$n=()=>({pipetteLocations:{[Br]:{mount:"left",tiprackId:"tiprack1Id"},[fa]:{mount:"right",tiprackId:"tiprack1Id"}},labwareLocations:{tiprack1Id:{stack:["tiprack1Id","1"]},tiprack2Id:{stack:["tiprack2Id","5"]},tiprack4AdapterId:{stack:["tiprack4AdapterId","7"]},tiprack5AdapterId:{stack:["tiprack5AdapterId","8"]},tiprack4Id:{stack:["tiprack4Id","tiprack4AdapterId","7"]},tiprack5Id:{stack:["tiprack5Id","tiprack5AdapterId","8"]},sourcePlateId:{stack:["sourcePlateId","2"]},destPlateId:{stack:["destPlateId","3"]}},moduleLocations:{}}),cb=()=>({pipetteLocations:{[Br]:{mount:"left"},[fa]:{mount:"right"}},labwareLocations:{tiprack1Id:{stack:["tiprack1Id","B1"]},tiprack2Id:{stack:["tiprack2Id","A2"]},sourcePlateId:{stack:["sourcePlateId","offDeck"]},destPlateId:{stack:["destPlateId","C2"]}},moduleLocations:{}}),pb=e=>Wr({...$n(),invariantContext:e,tiprackSetting:{tiprack1Id:!0,tiprack2Id:!0}}),yA=e=>Wr({...cb(),invariantContext:e,tiprackSetting:{tiprack1Id:!0,tiprack2Id:!0}}),bA=e=>({robotState:pb(e),warnings:[]}),TA=e=>{const t=Wr({...$n(),invariantContext:e,tiprackSetting:{tiprack1Id:!0,tiprack2Id:!0}});return t.tipState.pipettes[Br]={hasTip:!0,tiprackURI:"tiprack1Id"},t},gA=e=>{const t=Wr({...$n(),invariantContext:e,tiprackSetting:{tiprack1Id:!0}});return t.tipState.pipettes[Br]={hasTip:!0,tiprackURI:"tiprack1Id"},t.tipState.tipracks.tiprack1Id.A1=ie,t},IA=e=>Wr({...$n(),invariantContext:e,tiprackSetting:{tiprack1Id:!1,tiprack2Id:!1}}),EA=({temperatureModuleId:e,thermocyclerId:t})=>{const r=ub();r.moduleEntities={[e]:{id:e,type:c.TEMPERATURE_MODULE_TYPE,model:"foo",pythonName:"mock_temperature_module_1"},[t]:{id:t,type:c.THERMOCYCLER_MODULE_TYPE,model:"foo",pythonName:"mock_thermocycler"}};const n=Wr({...$n(),invariantContext:r,tiprackSetting:{tiprack1Id:!0}});return n.modules={[e]:{slot:"3",moduleState:{type:c.TEMPERATURE_MODULE_TYPE,status:Ea,targetTemperature:null}},[t]:{slot:"span7_8_10_11",moduleState:{type:c.THERMOCYCLER_MODULE_TYPE,currentBlockActivity:{type:"blockDeactivated"},lidTargetTemp:null,lidOpen:null,numProfilesStarted:0}}},{invariantContext:r,robotState:n}},wA=(e,t,r,n)=>{const a=dA(e);return a.modules[t].moduleState={type:c.TEMPERATURE_MODULE_TYPE,targetTemperature:n,status:r},a};exports.ABSORBANCE_READER_INITIAL_STATE=Ph;exports.AIR=Ge;exports.AIR_GAP_META=hA;exports.AIR_GAP_OFFSET_FROM_TOP=qu;exports.AUTOMATIC=nc;exports.BOTTOM_UP_LABWARE_POOL_KEYS=Zt;exports.BOTTOM_UP_STORED_LABWARE_URI_KEYS=Jb;exports.CLEAN=wa;exports.COLUMN_4_SLOTS=Me;exports.CUSTOM_LABWARE_DICT_NAME=Is;exports.DEFAULT_BLOWOUT_WELL=fA;exports.DEFAULT_CONFIG=ib;exports.DEFAULT_PIPETTE=Br;exports.DEST_LABWARE=Ju;exports.DEST_WELL_BLOWOUT_DESTINATION=vn;exports.DIRTY=Xt;exports.EMPTY=ie;exports.FAKE_HOPPER_LOCATION_MAP=$h;exports.FIXED_TRASH_ID=Uu;exports.FLEX_STACKER_MODULE_INITIAL_STATE=Nh;exports.FLEX_TRASH_DEF_URI=Zb;exports.GRIPPER_LOCATION=Fh;exports.HEATERSHAKER_MODULE_INITIAL_STATE=kh;exports.HOPPER_FAKE_LOCATIONS=Uh;exports.HOPPER_STACKER_LOCATION=je;exports.INDENT=ka;exports.MAGNETIC_BLOCK_INITIAL_STATE=Ch;exports.MAGNETIC_MODULE_INITIAL_STATE=Oh;exports.MANUAL=St;exports.MIXED_WELL_COLOR=by;exports.MODULES_WITH_COLLISION_ISSUES=Lh;exports.MODULE_INITIAL_STATE_BY_TYPE=Mh;exports.MULTI_PIPETTE=fa;exports.OFF_DECK=la;exports.OT2_TC_SLOTS=Qb;exports.OT_2_TRASH_DEF_URI=Xb;exports.PAPI_VERSION=gy;exports.PD_APPLICATION_VERSION=cS;exports.PIPETTE_96=Zu;exports.PROTOCOL_CONTEXT_NAME=be;exports.SLOT_LOCATIONS_TO_FAKE_HOPPER_LOCATIONS=eT;exports.SOURCE_LABWARE=Qu;exports.SOURCE_WELL_BLOWOUT_DESTINATION=jr;exports.STAGING_AREA_SLOTS=qh;exports.TEMPERATURE_APPROACHING_TARGET=rc;exports.TEMPERATURE_AT_TARGET=tc;exports.TEMPERATURE_DEACTIVATED=Ea;exports.TEMPERATURE_MODULE_INITIAL_STATE=Rh;exports.THERMOCYCLER_MODULE_INITIAL_STATE=vh;exports.TIPRACK_1=mA;exports.TOUCHED_PIPETTABLE_LABWARE=Ku;exports.TROUGH_LABWARE=ec;exports.VACUUM_AT_TARGET=cT;exports.VACUUM_DEACTIVATED=uT;exports.VACUUM_DOCK_ADDRESSABLE_AREA=tT;exports.VACUUM_DOCK_LOCATION=ac;exports.VACUUM_MODE_POWER=$u;exports.VACUUM_MODE_PRESSURE=Vu;exports.VACUUM_MODULE_INITIAL_STATE=Dh;exports.VACUUM_PROGRAM_PROFILE=nT;exports.VACUUM_PROGRAM_STATE=rT;exports.VACUUM_STATE_PUMP_OFF=aT;exports.VACUUM_STATE_PUMP_ON=sT;exports.VACUUM_STATE_VENT=oT;exports.VACUUM_VENT_CLOSED=Sa;exports.VACUUM_VENT_OPEN=sc;exports.VACUUM_VENT_SET_CLOSED=lT;exports.VACUUM_VENT_SET_OPEN=iT;exports.ZERO_OFFSET=wt;exports._getNextTip=Uy;exports._wellContentsForLabware=eS;exports.absorbanceReaderCloseInitialize=$y;exports.absorbanceReaderCloseLid=Ts;exports.absorbanceReaderCloseRead=Vy;exports.absorbanceReaderCollision=Ca;exports.absorbanceReaderInitialize=u_;exports.absorbanceReaderOpenLid=c_;exports.absorbanceReaderRead=p_;exports.absorbanceReaderStateGetter=Un;exports.airGapLocationHelper=rI;exports.aspirate=qg;exports.assignContainsAmongSiblings=Zc;exports.blowOutInWell=Ic;exports.captureImage=d_;exports.column4StagingSlotIdFromFlexStackerShuttleAddressableArea=q_;exports.commandCreatorsTimeline=Nw;exports.comment=f_;exports.consolidate=Wy;exports.constructInvariantContextFromAnalysis=$w;exports.createEmptyLiquidState=P_;exports.createStagingAreaForInvariantContext=xu;exports.createTipLiquidState=C_;exports.curryCommandCreator=R;exports.curryWithoutPython=O;exports.deactivateTemperature=h_;exports.deckSlotKeyForFlexStackerShuttleAddressableArea=aI;exports.delay=fe;exports.delayLocationHelper=nI;exports.disengageMagnet=__;exports.dispense=Ec;exports.dispenseLocationHelper=eI;exports.distribute=Yy;exports.dropTip=zr;exports.dropTipInPlace=gs;exports.dropTipInTrash=zy;exports.dropTipInWasteChute=jy;exports.engageMagnet=y_;exports.enrichRobotStateForStackGraphTraversals=VE;exports.flexStackerEmpty=b_;exports.flexStackerFillItems=T_;exports.flexStackerRetrieve=g_;exports.flexStackerStateGetter=ft;exports.flexStackerStore=I_;exports.formatChangeTipArg=Cs;exports.formatPyDict=qr;exports.formatPyList=Es;exports.formatPyStr=N;exports.formatPyTuple=Ac;exports.formatPyValue=pt;exports.formatPyWellLocation=Vt;exports.getAddressableAreaFromModule=Xc;exports.getAddressableAreaNameFromLabwareLocation=DE;exports.getAllLargestStacks=ny;exports.getAllProvidedAddressableAreasFromDeckConfig=ay;exports.getAllWellsForLabware=yy;exports.getChunkForIndentingLists=ws;exports.getCommandCreatorFromStepArgs=NS;exports.getCustomLiquidClassProperties=ks;exports.getCutoutFromSlot=Ny;exports.getCutoutIdByAddressableArea=L_;exports.getDefaultPrimaryNozzle=os;exports.getDefineLiquids=Ly;exports.getDispenseAirGapLocation=N_;exports.getFlexStackerCutoutBaseDeckSlotId=Dc;exports.getFlexStackerShuttleAddressableArea=Ss;exports.getFullStackFromLabwares=Mc;exports.getFullStackFromNodeTopDownRecursive=vs;exports.getHasNoWellsFromCCArgs=Mw;exports.getInitialRobotStateStandard=pb;exports.getInitialRobotStateWithOffDeckLabwareStandard=yA;exports.getIsHeaterShakerEastWestMultiChannelPipette=Fn;exports.getIsHeaterShakerEastWestWithLatchOpen=Mn;exports.getIsHeaterShakerNorthSouthOfNonTiprackWithMultiChannelPipette=qa;exports.getIsLabwareCompatibleWithStack=$_;exports.getIsRetractSafeForAirGap=Ur;exports.getIsSafePickupWithinTiprack=ep;exports.getIsSlotAHopper=V_;exports.getIsSlotAVacuumDock=ua;exports.getIsSpaceInHopper=$c;exports.getIsTallLabwareEastWestOfHeaterShaker=hy;exports.getLabwareHasLiquid=M_;exports.getLabwareIdOnHopper=lI;exports.getLabwareIdOnShuttle=qc;exports.getLabwareSlot=Cn;exports.getLargestStackContainingLabware=ry;exports.getLargestStackInSlot=fn;exports.getLiquidClassName=Va;exports.getLiquidIdsOnLabware=nS;exports.getLiquidIdsOnLabwareStack=rS;exports.getLoadAdapters=Ey;exports.getLoadLabware=Sy;exports.getLoadLidStacks=wy;exports.getLoadLiquidClasses=Ry;exports.getLoadLiquids=Oy;exports.getLoadModules=Iy;exports.getLoadPipettes=Ay;exports.getLoadTrashBins=vy;exports.getLoadWasteChute=ky;exports.getLocationTotalVolume=fr;exports.getModuleHasLiveTask=Nn;exports.getModuleIdFromRobotStateStack=Pa;exports.getModuleState=Ot;exports.getNearestParentInStack=F_;exports.getNextRobotStateAndWarnings=Qc;exports.getNextRobotStateAndWarningsSingleCommand=my;exports.getNextTiprack=xa;exports.getNodeParentModuleId=CE;exports.getNozzleConfig=Jc;exports.getPipetteIdFromCCArgs=Dw;exports.getPipetteMovementSafetyStatus=dt;exports.getPipetteWithTipMaxVol=Ns;exports.getProvidedAddressableAreasExposed=ME;exports.getPythonAssignTipRacksString=Ps;exports.getResultingTimelineFrameFromRunCommands=Bw;exports.getRobotInitialStateNoTipsRemain=IA;exports.getRobotStateAndWarningsStandard=bA;exports.getRobotStatePickedUpTipStandard=gA;exports.getRobotStateWithTipStandard=TA;exports.getSetStoredLabware=Cy;exports.getSlotInLocationStack=G;exports.getStackForLabwareLocation=Bu;exports.getStackedOnNodeFromPdStack=sy;exports.getStateAndContextTempTCModules=EA;exports.getTargetTipsFromWellSets=Ba;exports.getThermocyclerProfileRepetitionsForPython=Fy;exports.getTipColumn=_A;exports.getTipColumnIndex=Xu;exports.getTipColumnName=tp;exports.getTipRowName=hn;exports.getTiprackHasTips=D_;exports.getTiprackTipstate=lb;exports.getTopLocationInStack=Nc;exports.getTopmostLabwareOnModuleFromStackRobotState=oI;exports.getTransferPlanAndReferenceVolumes=Fc;exports.getTrashBinAddressableAreaName=kc;exports.getTrashLocationFromAddressableAreaName=R_;exports.getTrashOrLabware=kn;exports.getVolumesPerLiquid=tS;exports.getWasteChuteAddressableAreaNamePip=O_;exports.getWellsForTips=Pc;exports.heaterShaker=Ky;exports.indentPyLines=K;exports.labwareMatchesLabwareInHopper=Uc;exports.makeContext=ub;exports.makeInitialRobotState=Cc;exports.makeState=Wr;exports.makeStateArgsLabwareOffDeck=cb;exports.makeStateArgsStandard=$n;exports.mergeLiquid=mr;exports.mix=Gy;exports.mixBlowoutLocationHelper=k_;exports.modulePipetteCollision=Dn;exports.moveHelper=tI;exports.moveLabware=E_;exports.moveToAddressableArea=Fe;exports.moveToAddressableAreaForDropTip=wc;exports.pipetteAdjacentHeaterShakerWhileShaking=qn;exports.pipetteIntoHeaterShakerLatchOpen=Ua;exports.pipetteIntoHeaterShakerWhileShaking=$a;exports.pythonCustomLabwareDict=bS;exports.pythonDefRun=yS;exports.pythonImports=pS;exports.pythonMetadata=dS;exports.pythonRequirements=fS;exports.reduceCommandCreators=ne;exports.repeatArray=v_;exports.replaceTip=Ha;exports.resolveDeckSlotKeyForLabwareStackInSlot=U_;exports.robotWithStatusAndTemp=wA;exports.setTemperature=Sc;exports.sortLabwareBySlot=qy;exports.splitLiquid=Qt;exports.stepCommands=Py;exports.swatchColors=Ty;exports.thermocyclerPipetteCollision=Ma;exports.thermocyclerProfileStep=Qy;exports.thermocyclerStateGetter=Ds;exports.thermocyclerStateStep=Jy;exports.tiprackWellNamesFlat=ob;exports.touchTip=Et;exports.transfer=eb;exports.unrollThermocyclerProfile=rp;exports.uuid=D;exports.vacuumCloseVent=va;exports.vacuumCloseVentSetPumpPower=tb;exports.vacuumCloseVentSetPumpPressure=rb;exports.vacuumCloseVentStartProfile=nb;exports.vacuumModuleStateGetter=st;exports.vacuumOpenVent=w_;exports.vacuumSetPumpPower=Lc;exports.vacuumSetPumpPressure=Oc;exports.vacuumStartRunProfile=Rc;exports.vacuumStopPump=A_;exports.waitForModuleTask=sb;exports.waitForTemperature=vc;exports.wellFillFromWellContents=sS;
150
+ )`}),Zn=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:j,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null})??s,on=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:j,liquidHandlingAction:"singleDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null})??q,Qn=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:lt,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null})??s,ln=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:lt,liquidHandlingAction:"singleDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null})??q,Er=_A(Ue,k);let wr=null,Jn=null;const ye=[...Er.reduce((ie,yt,Mt)=>{const[Le,De]=yt,ea=Ct.reduce((le,Ye,ur)=>{const Sr=Mt===0&&ur===0,Ar=Mt+1===Er.length,un=ur+1===Ct.length&&Ar;let bt=!1;g==="always"?bt=!0:g==="once"?bt=Sr:g==="perSource"?bt=Le!==wr:g==="perDest"&&(bt=Sr||De!==Jn);const ra=c.LOW_VOLUME_PIPETTES.includes(Nt)?[R(An,{pipetteId:U,volume:Ye})]:[];let cr=[];if(bt){const It=Gt?.shift();cr=[O(Ya,{pipette:U,primaryNozzle:x,nozzles:ce,dropTipLocation:Pt&&We!=null?We:P,tipRack:Z,...ce!=null?{nozzles:ce}:{},...Be===St&&It!=null&&pe!=null?{tipSelectionArgs:{tipRackId:pe,tipWell:It}}:{}})]}const Lr=he[H]?.def.wells[Le]?.depth??null,Wt=c.getMmFromBottom(I,o,Lr),Yt=c.getMmFromBottom(y,m,Lr),cn=c.getMmFromBottom(f,l,Lr);Wt!=null&&Yt!=null&&Wt>Yt&&_e.push(kh());const Or=Ur({retractZOffset:f,retractPositionReference:l,labwareId:H,labwareEntities:he,well:Le}),pr=!Or&&Le!=null?[R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})]:[],pn=Ur({retractZOffset:He,retractPositionReference:Te,labwareId:E,labwareEntities:he,well:De}),Oe=!pn&&De!=null?[R(B,{pipetteId:U,labwareId:E,wellName:De,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})]:[];Wt!=null&&cn!=null&&Wt>cn&&_e.push(vh());const Kt=[R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})],Rr=[R(Lt,{pipetteId:U})],Tt=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:lt,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Xt=$!=null?[R(me,{seconds:$.seconds})]:[],na=lt>0&&!bt&&(ur>0||Mt>0)?[R(Xe,{isAirGap:!0,pipetteId:U,volume:lt,flowRate:ln,...Tt>0?{correctionVolume:Tt}:{},pushOut:0}),...Xt]:[],dn=[...Kt,...na,...ra,...Rr],fn=[R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:Kr}),R(B,{pipetteId:U,labwareId:H,..._!=null?{speed:_}:{},wellName:Le,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[o],offset:{x:A,y:w,z:I}}}),...h!=null&&h.seconds>0?[R(me,{seconds:h.seconds})]:[]],aa=z?Dr({pipette:U,volume:Ye,times:1,aspirateFlowRateUlSec:s,dispenseFlowRateUlSec:q,aspirateDelaySeconds:a?.seconds??0,dispenseDelaySeconds:$?.seconds??0,finalPushOut:0,invariantContext:t,liquidClass:V,tiprack:Z,generatePython:!1}):[],mn=M!=null?Dr({pipette:U,volume:M.volume,times:M.times,aspirateFlowRateUlSec:s,dispenseFlowRateUlSec:q,aspirateDelaySeconds:a?.seconds,dispenseDelaySeconds:$?.seconds,finalPushOut:0,invariantContext:t,liquidClass:V,tiprack:Z,generatePython:!1}):[],kr=a!=null?[R(me,{seconds:a.seconds})]:[],sa=ht?[R(Et,{pipetteId:U,labwareId:H,wellName:Le,...Rt!=null?{mmFromEdge:Rt}:{},zOffsetFromTop:_t,...Re!=null?{speed:Re}:{}}),...j>0&&Or?[R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:or})]:[]]:[],Me=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:j,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,vr=j>0?[...pr,R(At,{pipetteId:U,volume:j,flowRate:Zn,...Me>0?{correctionVolume:Me}:{}}),...kr]:[],hn=[R(Na,{pipetteId:U,volume:Ye,flowRate:s,...Zr>0?{correctionVolume:Zr}:{}}),...kr],dr=[R(B,{pipetteId:U,labwareId:H,...u!=null?{speed:u}:{},wellName:Le,wellLocation:or}),...i!=null&&i?.seconds>0?[R(me,{seconds:i.seconds})]:[]],Pr=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:j,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Zt=De!=null?[R(B,{pipetteId:U,labwareId:E,wellName:De,wellLocation:yr}),...j>0?[R(Xe,{isAirGap:!0,pipetteId:U,volume:j,flowRate:on,pushOut:0,...Pr>0?{correctionVolume:Pr}:{}}),...Xt]:[],R(B,{pipetteId:U,labwareId:E,...Se!=null?{speed:Se}:{},wellName:De,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[ee],offset:{x:X,y:W,z:C}}}),...Ve!=null&&Ve.seconds>0?[R(me,{seconds:Ve.seconds})]:[]]:[R(Fe,{fixtureId:E,pipetteId:U,offset:{x:0,y:0,z:0}})],fr=oe!=null&&De!=null?0:F,oa=[R(Xe,{pipetteId:U,volume:Ye,flowRate:q,...fr!=null?{pushOut:fr}:{},...gr>0?{correctionVolume:gr}:{}}),...Xt],Za=oe!=null&&De!=null?Dr({pipette:U,volume:oe.volume,times:oe.times,aspirateFlowRateUlSec:s,dispenseFlowRateUlSec:q,aspirateDelaySeconds:a?.seconds,dispenseDelaySeconds:$?.seconds,finalPushOut:F,invariantContext:t,liquidClass:V,tiprack:Z,generatePython:!1}):[],$s=De!=null?[R(B,{pipetteId:U,labwareId:E,...se!=null?{speed:se}:{},wellName:De,wellLocation:ir}),...de!=null&&de?.seconds>0?[R(me,{seconds:de.seconds})]:[]]:[],Qa=R(Dn,{pipetteId:U,flowRate:S}),ia=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:lt,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,gt=(It,Cr=!0)=>lt>0&&!(g==="never"&&un&&It)?[...Cr?Oe:[],R(Lt,{pipetteId:U}),R(At,{pipetteId:U,volume:lt,flowRate:Qn,...ia>0?{correctionVolume:ia}:{}}),...kr]:[],_n=It=>De!=null&&tt?[R(Et,{pipetteId:U,labwareId:E,wellName:De,...ge!=null?{mmFromEdge:ge}:{},zOffsetFromTop:ke,...Ne!=null?{speed:Ne}:{}}),...gt(It).length>0&&pn?[R(B,{pipetteId:U,labwareId:E,wellName:De,wellLocation:ir})]:[]]:[];let Ft=[];switch(L){case null:case void 0:Ft=[..._n(!0),...gt(!0)];break;case Mn:Ft=[Qa,..._n(!0),...gt(!0)];break;case zr:Ft=[..._n(!0),...gt(!1),R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:{origin:c.WELL_ORIGIN_TOP}}),Qa,...tt&&!rt?[R(Et,{pipetteId:U,labwareId:H,wellName:Le,...ge!=null?{mmFromEdge:ge}:{},zOffsetFromTop:ke,...Ne!=null?{speed:Ne}:{}})]:[],...gt(!0).length>0?[R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:{origin:c.WELL_ORIGIN_TOP}})]:[],...gt(!0,!1)];break;default:L in Ge?Ft=[..._n(!1),...gt(!1),R(lb,{pipetteId:U,flowRate:S,trashId:L}),...gt(!0,!1)]:L in Y&&(Ft=[R(ub,{pipetteId:U,flowRate:S,wasteChuteId:L}),...gt(!0,!1)]);break}const Ja=Pt&&(un||g==="always")?[R(Hr,{pipette:U,dropTipLocation:Z,isReturnTip:Pt})]:[],Ut=[...cr,...dn,...fn,...mn,...aa,...hn,...dr,...sa,...vr,...Zt,...oa,...Za,...$s,...Ft,...Ja];return wr=Le,Jn=De,[...le,...Ut]},[]);return[...ie,...ea]},[]),Ir];return ae(ye,t,r)},gb=(e,t,r)=>ae([O(Da,{moduleId:e.moduleId,commandCreatorFnName:"vacuumCloseVent"}),O(Cc,{...e,commandCreatorFnName:"vacuumSetPumpPower"})],t,r),Ib=(e,t,r)=>ae([O(Da,{moduleId:e.moduleId,commandCreatorFnName:"vacuumCloseVent"}),O(Nc,{...e,commandCreatorFnName:"vacuumSetPumpPressure"})],t,r),Eb=(e,t,r)=>{const{ventAfter:n}=e;return ae([O(Da,{moduleId:e.moduleId,commandCreatorFnName:"vacuumCloseVent"}),O(Dc,{...e,commandCreatorFnName:"vacuumStartRunProfile",ventAfter:n})],t,r)},wb=(e,t,r)=>{const n=`[${e.task_ids.join(", ")}]`,a=`${be}.wait_for_tasks(${n})`;return{commands:[{key:D(),commandType:"waitForTasks",params:e}],python:a}},Sb=(e,t,r)=>{const{waitCondition:n}=e;return n==="thermocyclerProfileComplete"?yA(e,t,r):n==="vacuumProfileComplete"||n==="vacuumStateComplete"?bA(e,t,r):{errors:[lT(n)]}},yA=(e,t,r)=>{const{moduleId:n}=e,a=[],s=qs(r,n);if(s==null)return{errors:[Q()]};if(s.currentBlockActivity.type!=="profile")return{errors:[pp()]};const{taskId:o}=s.currentBlockActivity;return o==null?{errors:[pp()]}:(a.push(O(wb,{task_ids:[o]})),ae(a,t,r))},bA=(e,t,r)=>{const{moduleId:n}=e,a=[],s=ot(r,n);if(s==null)return{errors:[Q()]};if(s.currentPumpActivity.type!=="timedHold"&&s.currentPumpActivity.type!=="profile")return{errors:[iT()]};const o=s.currentPumpActivity.taskId;return a.push(O(wb,{task_ids:[o]})),ae(a,t,r)};var Vu,wh;function TA(){if(wh)return Vu;wh=1;var e=yy(),t=1,r=4;function n(a){return e(a,t|r)}return Vu=n,Vu}var gA=TA();const IA=xe(gA),Ab=["A1","B1","C1","D1","E1","F1","G1","H1","A2","B2","C2","D2","E2","F2","G2","H2","A3","B3","C3","D3","E3","F3","G3","H3","A4","B4","C4","D4","E4","F4","G4","H4","A5","B5","C5","D5","E5","F5","G5","H5","A6","B6","C6","D6","E6","F6","G6","H6","A7","B7","C7","D7","E7","F7","G7","H7","A8","B8","C8","D8","E8","F8","G8","H8","A9","B9","C9","D9","E9","F9","G9","H9","A10","B10","C10","D10","E10","F10","G10","H10","A11","B11","C11","D11","E11","F11","G11","H11","A12","B12","C12","D12","E12","F12","G12","H12"],Vr="p300SingleId",ba="p300MultiId",nc="p100096Id",ac="sourcePlateId",sc="destPlateId",oc="troughId",EA="A1",wA="tiprack1Id",SA={isAirGap:!0},rs=c.fixture96Plate,Sh=c.fixture12Trough,ns=c.fixtureTiprack10ul,qt=c.fixtureTiprack300ul,yn=c.fixtureTiprack1000ul,as=c.fixtureTiprackAdapter,Lb={OT_PD_DISABLE_MODULE_RESTRICTIONS:!1};function Ob(e){return Ab.reduce((t,r)=>({...t,[r]:e?Ra:ue}),{})}function AA(e,t){return Array.from("ABCDEFGH").map(r=>`${r}${e}`).reduce((r,n)=>({...r,[n]:t}),{})}function Rb(){const e={[ac]:{id:ac,pythonName:"mock_source_plate",labwareDefURI:c.getLabwareDefURI(rs),def:rs},[sc]:{id:sc,pythonName:"mock_dest_plate",labwareDefURI:c.getLabwareDefURI(rs),def:rs},[oc]:{id:oc,pythonName:"mock_trough",labwareDefURI:c.getLabwareDefURI(Sh),def:Sh},tiprack1Id:{id:"tiprack1Id",pythonName:"mock_tip_rack_1",labwareDefURI:c.getLabwareDefURI(qt),def:qt},tiprack2Id:{id:"tiprack2Id",pythonName:"mock_tip_rack_2",labwareDefURI:c.getLabwareDefURI(qt),def:qt},tiprack3Id:{id:"tiprack3Id",pythonName:"mock_tip_rack_3",labwareDefURI:c.getLabwareDefURI(qt),def:qt},tiprack4AdapterId:{id:"tiprack4AdapterId",pythonName:"mock_adapter_4",labwareDefURI:c.getLabwareDefURI(as),def:as},tiprack5AdapterId:{id:"tiprack5AdapterId",pythonName:"mock_adapter_5",labwareDefURI:c.getLabwareDefURI(as),def:as},tiprack4Id:{id:"tiprack4Id",pythonName:"mock_tip_rack_4",labwareDefURI:c.getLabwareDefURI(yn),def:yn},tiprack5Id:{id:"tiprack5Id",pythonName:"mock_tip_rack_5",labwareDefURI:c.getLabwareDefURI(yn),def:yn}},t={},r={[xu]:{id:xu,location:"cutoutA3",pythonName:"trash_bin_1"}},n={p10SingleId:{name:"p10_single",id:"p10SingleId",pythonName:"mock_pipette_p10",tiprackDefURI:[c.getLabwareDefURI(ns)],tiprackLabwareDef:[ns],spec:c.fixtureP10SingleV2Specs},p10MultiId:{name:"p10_multi",id:"p10MultiId",tiprackDefURI:[c.getLabwareDefURI(ns)],tiprackLabwareDef:[ns],spec:c.fixtureP10MultiV2Specs,pythonName:"mock_pipette_p10_multi"},[Vr]:{name:"p300_single",id:Vr,tiprackDefURI:[c.getLabwareDefURI(qt)],tiprackLabwareDef:[qt],spec:c.fixtureP300SingleV2Specs,pythonName:"mock_pipette"},[ba]:{name:"p300_multi",id:ba,tiprackDefURI:[c.getLabwareDefURI(qt)],tiprackLabwareDef:[qt],spec:c.fixtureP300MultiV2Specs,pythonName:"mock_pipette_p300_multi"},[nc]:{name:"p1000_96",id:nc,tiprackDefURI:[c.getLabwareDefURI(yn)],tiprackLabwareDef:[yn],spec:c.fixtureP100096V2Specs,pythonName:"mock_pipette_p1000_96"}};return{labwareEntities:e,moduleEntities:t,pipetteEntities:n,trashBinEntities:r,wasteChuteEntities:{},stagingAreaEntities:{},gripperEntities:{},liquidEntities:{},config:Lb}}const Gr=e=>{const{invariantContext:t,labwareLocations:r,moduleLocations:n,pipetteLocations:a,tiprackSetting:s}=e,o=Vc({invariantContext:t,labwareLocations:r,moduleLocations:n||{},pipetteLocations:a});return o.tipState.tipracks=rr(s,i=>Ob(i)),o},jn=()=>({pipetteLocations:{[Vr]:{mount:"left",tiprackId:"tiprack1Id"},[ba]:{mount:"right",tiprackId:"tiprack1Id"}},labwareLocations:{tiprack1Id:{stack:["tiprack1Id","1"]},tiprack2Id:{stack:["tiprack2Id","5"]},tiprack4AdapterId:{stack:["tiprack4AdapterId","7"]},tiprack5AdapterId:{stack:["tiprack5AdapterId","8"]},tiprack4Id:{stack:["tiprack4Id","tiprack4AdapterId","7"]},tiprack5Id:{stack:["tiprack5Id","tiprack5AdapterId","8"]},sourcePlateId:{stack:["sourcePlateId","2"]},destPlateId:{stack:["destPlateId","3"]}},moduleLocations:{}}),kb=()=>({pipetteLocations:{[Vr]:{mount:"left"},[ba]:{mount:"right"}},labwareLocations:{tiprack1Id:{stack:["tiprack1Id","B1"]},tiprack2Id:{stack:["tiprack2Id","A2"]},sourcePlateId:{stack:["sourcePlateId","offDeck"]},destPlateId:{stack:["destPlateId","C2"]}},moduleLocations:{}}),vb=e=>Gr({...jn(),invariantContext:e,tiprackSetting:{tiprack1Id:!0,tiprack2Id:!0}}),LA=e=>Gr({...kb(),invariantContext:e,tiprackSetting:{tiprack1Id:!0,tiprack2Id:!0}}),OA=e=>({robotState:vb(e),warnings:[]}),RA=e=>{const t=Gr({...jn(),invariantContext:e,tiprackSetting:{tiprack1Id:!0,tiprack2Id:!0}});return t.tipState.pipettes[Vr]={hasTip:!0,tiprackURI:"tiprack1Id"},t},kA=e=>{const t=Gr({...jn(),invariantContext:e,tiprackSetting:{tiprack1Id:!0}});return t.tipState.pipettes[Vr]={hasTip:!0,tiprackURI:"tiprack1Id"},t.tipState.tipracks.tiprack1Id.A1=ue,t},vA=e=>Gr({...jn(),invariantContext:e,tiprackSetting:{tiprack1Id:!1,tiprack2Id:!1}}),PA=({temperatureModuleId:e,thermocyclerId:t})=>{const r=Rb();r.moduleEntities={[e]:{id:e,type:c.TEMPERATURE_MODULE_TYPE,model:"foo",pythonName:"mock_temperature_module_1"},[t]:{id:t,type:c.THERMOCYCLER_MODULE_TYPE,model:"foo",pythonName:"mock_thermocycler"}};const n=Gr({...jn(),invariantContext:r,tiprackSetting:{tiprack1Id:!0}});return n.modules={[e]:{slot:"3",moduleState:{type:c.TEMPERATURE_MODULE_TYPE,status:Oa,targetTemperature:null}},[t]:{slot:"span7_8_10_11",moduleState:{type:c.THERMOCYCLER_MODULE_TYPE,currentBlockActivity:{type:"blockDeactivated"},lidTargetTemp:null,lidOpen:null,numProfilesStarted:0}}},{invariantContext:r,robotState:n}},CA=(e,t,r,n)=>{const a=IA(e);return a.modules[t].moduleState={type:c.TEMPERATURE_MODULE_TYPE,targetTemperature:n,status:r},a};exports.ABSORBANCE_READER_INITIAL_STATE=qh;exports.AIR=je;exports.AIR_GAP_META=SA;exports.AIR_GAP_OFFSET_FROM_TOP=Bu;exports.AUTOMATIC=uc;exports.BOTTOM_UP_LABWARE_POOL_KEYS=Jt;exports.BOTTOM_UP_STORED_LABWARE_URI_KEYS=bT;exports.CLEAN=Ra;exports.COLUMN_4_SLOTS=ve;exports.CUSTOM_LABWARE_DICT_NAME=As;exports.DEFAULT_BLOWOUT_WELL=EA;exports.DEFAULT_CONFIG=Lb;exports.DEFAULT_PIPETTE=Vr;exports.DEST_LABWARE=sc;exports.DEST_WELL_BLOWOUT_DESTINATION=Mn;exports.DIRTY=Qt;exports.EMPTY=ue;exports.FAKE_HOPPER_LOCATION_MAP=Gh;exports.FIXED_TRASH_ID=xu;exports.FLEX_STACKER_MODULE_INITIAL_STATE=Vh;exports.FLEX_TRASH_DEF_URI=_T;exports.GRIPPER_LOCATION=Hh;exports.HEATERSHAKER_MODULE_INITIAL_STATE=Uh;exports.HOPPER_FAKE_LOCATIONS=jh;exports.HOPPER_STACKER_LOCATION=Ze;exports.INDENT=Ma;exports.MAGNETIC_BLOCK_INITIAL_STATE=$h;exports.MAGNETIC_MODULE_INITIAL_STATE=Dh;exports.MANUAL=St;exports.MIXED_WELL_COLOR=qy;exports.MODULES_WITH_COLLISION_ISSUES=Nh;exports.MODULE_INITIAL_STATE_BY_TYPE=xh;exports.MULTI_PIPETTE=ba;exports.OFF_DECK=Ln;exports.OT2_TC_SLOTS=yT;exports.OT_2_TRASH_DEF_URI=hT;exports.PAPI_VERSION=Vy;exports.PD_APPLICATION_VERSION=OS;exports.PIPETTE_96=nc;exports.PROTOCOL_CONTEXT_NAME=be;exports.SLOT_LOCATIONS_TO_FAKE_HOPPER_LOCATIONS=TT;exports.SOURCE_LABWARE=ac;exports.SOURCE_WELL_BLOWOUT_DESTINATION=zr;exports.STAGING_AREA_SLOTS=zh;exports.TEMPERATURE_APPROACHING_TARGET=lc;exports.TEMPERATURE_AT_TARGET=ic;exports.TEMPERATURE_DEACTIVATED=Oa;exports.TEMPERATURE_MODULE_INITIAL_STATE=Mh;exports.THERMOCYCLER_MODULE_INITIAL_STATE=Fh;exports.TIPRACK_1=wA;exports.TOUCHED_PIPETTABLE_LABWARE=tc;exports.TROUGH_LABWARE=oc;exports.VACUUM_AT_TARGET=RT;exports.VACUUM_DEACTIVATED=OT;exports.VACUUM_DOCK_ADDRESSABLE_AREA=Wh;exports.VACUUM_DOCK_LOCATION=cc;exports.VACUUM_MODE_POWER=Hu;exports.VACUUM_MODE_PRESSURE=zu;exports.VACUUM_MODULE_INITIAL_STATE=Bh;exports.VACUUM_PROGRAM_PROFILE=IT;exports.VACUUM_PROGRAM_STATE=gT;exports.VACUUM_SPACER_LOAD_NAMES=Yh;exports.VACUUM_STATE_PUMP_OFF=ET;exports.VACUUM_STATE_PUMP_ON=wT;exports.VACUUM_STATE_VENT=ST;exports.VACUUM_VENT_CLOSED=ka;exports.VACUUM_VENT_OPEN=pc;exports.VACUUM_VENT_SET_CLOSED=LT;exports.VACUUM_VENT_SET_OPEN=AT;exports.ZERO_OFFSET=wt;exports._getNextTip=sb;exports._wellContentsForLabware=yS;exports.absorbanceReaderCloseInitialize=ob;exports.absorbanceReaderCloseLid=ws;exports.absorbanceReaderCloseRead=ib;exports.absorbanceReaderCollision=Ua;exports.absorbanceReaderInitialize=b_;exports.absorbanceReaderOpenLid=T_;exports.absorbanceReaderRead=g_;exports.absorbanceReaderStateGetter=zn;exports.airGapLocationHelper=gI;exports.aspirate=tI;exports.assignContainsAmongSiblings=sp;exports.blowOutInWell=Oc;exports.captureImage=I_;exports.column4StagingSlotIdFromFlexStackerShuttleAddressableArea=ty;exports.commandCreatorsTimeline=Xw;exports.comment=E_;exports.consolidate=mb;exports.constructInvariantContextFromAnalysis=rS;exports.createEmptyLiquidState=K_;exports.createStagingAreaForInvariantContext=Yu;exports.createTipLiquidState=X_;exports.curryCommandCreator=O;exports.curryWithoutPython=R;exports.deactivateTemperature=S_;exports.deckSlotKeyForFlexStackerShuttleAddressableArea=EI;exports.delay=me;exports.delayLocationHelper=II;exports.disengageMagnet=A_;exports.dispense=Rc;exports.dispenseLocationHelper=bI;exports.distribute=hb;exports.dropTip=Hr;exports.dropTipInPlace=Ss;exports.dropTipInTrash=pb;exports.dropTipInWasteChute=db;exports.engageMagnet=L_;exports.enrichRobotStateForStackGraphTraversals=nw;exports.flexStackerEmpty=O_;exports.flexStackerFillItems=R_;exports.flexStackerRetrieve=k_;exports.flexStackerStateGetter=mt;exports.flexStackerStore=v_;exports.formatChangeTipArg=Fs;exports.formatPyDict=Fr;exports.formatPyList=Ls;exports.formatPyStr=N;exports.formatPyTuple=Pc;exports.formatPyValue=dt;exports.formatPyWellLocation=Bt;exports.getAddressableAreaFromModule=ap;exports.getAddressableAreaNameFromLabwareLocation=ZE;exports.getAllLargestStacks=wy;exports.getAllProvidedAddressableAreasFromDeckConfig=Sy;exports.getAllWellsForLabware=Uy;exports.getChunkForIndentingLists=Os;exports.getCommandCreatorFromStepArgs=XS;exports.getCustomLiquidClassProperties=Ds;exports.getCutoutFromSlot=Jy;exports.getCutoutIdByAddressableArea=z_;exports.getDefaultPrimaryNozzle=cs;exports.getDefineLiquids=Gy;exports.getDispenseAirGapLocation=Z_;exports.getFlexStackerCutoutBaseDeckSlotId=xc;exports.getFlexStackerShuttleAddressableArea=Rs;exports.getFullStackFromLabwares=Hc;exports.getFullStackFromNodeTopDownRecursive=Ns;exports.getHasNoWellsFromCCArgs=Qw;exports.getInitialRobotStateStandard=vb;exports.getInitialRobotStateWithOffDeckLabwareStandard=LA;exports.getIsHeaterShakerEastWestMultiChannelPipette=xn;exports.getIsHeaterShakerEastWestWithLatchOpen=Bn;exports.getIsHeaterShakerNorthSouthOfNonTiprackWithMultiChannelPipette=xa;exports.getIsInPipettableLocation=oy;exports.getIsLabwareCompatibleWithStack=ny;exports.getIsRetractSafeForAirGap=Ur;exports.getIsSafePickupWithinTiprack=lp;exports.getIsSlotAHopper=ay;exports.getIsSlotAVacuumDock=ma;exports.getIsSpaceInHopper=Wc;exports.getIsTallLabwareEastWestOfHeaterShaker=My;exports.getIsVacuumSpacer=H_;exports.getLabwareHasLid=sy;exports.getLabwareHasLiquid=J_;exports.getLabwareIdOnShuttle=jc;exports.getLabwareSlot=qn;exports.getLargestStackContainingLabware=Ey;exports.getLargestStackInSlot=fa;exports.getLiquidClassName=ja;exports.getLiquidIdsOnLabware=gS;exports.getLiquidIdsOnLabwareStack=TS;exports.getLoadAdapters=xy;exports.getLoadLabware=zy;exports.getLoadLidStacks=Hy;exports.getLoadLiquidClasses=Yy;exports.getLoadLiquids=Wy;exports.getLoadModules=By;exports.getLoadPipettes=jy;exports.getLoadTrashBins=Ky;exports.getLoadWasteChute=Xy;exports.getLocationTotalVolume=mr;exports.getModuleHasLiveTask=$n;exports.getModuleIdFromRobotStateStack=Fa;exports.getModuleState=Ot;exports.getNearestParentInStack=ey;exports.getNextRobotStateAndWarnings=op;exports.getNextRobotStateAndWarningsSingleCommand=Dy;exports.getNextTiprack=Wa;exports.getNodeParentModuleId=KE;exports.getNozzleConfig=ip;exports.getPipetteCenteringFullOffset=rb;exports.getPipetteIdFromCCArgs=Zw;exports.getPipetteMovementSafetyStatus=ft;exports.getPipetteWithTipMaxVol=Us;exports.getProvidedAddressableAreasExposed=QE;exports.getPythonAssignTipRacksString=Ms;exports.getResultingTimelineFrameFromRunCommands=aS;exports.getRobotInitialStateNoTipsRemain=vA;exports.getRobotStateAndWarningsStandard=OA;exports.getRobotStatePickedUpTipStandard=kA;exports.getRobotStateWithTipStandard=RA;exports.getSetStoredLabware=Qy;exports.getSlotInLocationStack=G;exports.getStackForLabwareLocation=Wu;exports.getStackedOnNodeFromPdStack=Ay;exports.getStateAndContextTempTCModules=PA;exports.getTargetTipsFromWellSets=Ga;exports.getThermocyclerProfileRepetitionsForPython=nb;exports.getTipColumn=AA;exports.getTipColumnIndex=rc;exports.getTipColumnName=up;exports.getTipRowName=gn;exports.getTiprackHasTips=Q_;exports.getTiprackTipstate=Ob;exports.getTopLocationInStack=Bc;exports.getTopmostLabwareOnModuleFromStackRobotState=SI;exports.getTransferPlanAndReferenceVolumes=zc;exports.getTrashBinAddressableAreaName=qc;exports.getTrashLocationFromAddressableAreaName=G_;exports.getTrashOrLabware=Fn;exports.getVolumesPerLiquid=bS;exports.getWasteChuteAddressableAreaNamePip=j_;exports.getWellsForTips=$c;exports.heaterShaker=_b;exports.indentPyLines=K;exports.labwareMatchesLabwareInHopper=Gc;exports.makeContext=Rb;exports.makeInitialRobotState=Vc;exports.makeState=Gr;exports.makeStateArgsLabwareOffDeck=kb;exports.makeStateArgsStandard=jn;exports.mergeLiquid=hr;exports.mix=fb;exports.mixBlowoutLocationHelper=Y_;exports.modulePipetteCollision=Vn;exports.moveHelper=TI;exports.moveLabware=P_;exports.moveToAddressableArea=Fe;exports.moveToAddressableAreaForDropTip=kc;exports.pipetteAdjacentHeaterShakerWhileShaking=Hn;exports.pipetteIntoHeaterShakerLatchOpen=Ha;exports.pipetteIntoHeaterShakerWhileShaking=za;exports.pythonCustomLabwareDict=MS;exports.pythonDefRun=DS;exports.pythonImports=RS;exports.pythonMetadata=kS;exports.pythonRequirements=vS;exports.reduceCommandCreators=ae;exports.repeatArray=W_;exports.replaceTip=Ya;exports.resolveDeckSlotKeyForLabwareStackInSlot=ry;exports.robotWithStatusAndTemp=CA;exports.setTemperature=vc;exports.sortLabwareBySlot=ab;exports.splitLiquid=er;exports.stepCommands=Zy;exports.swatchColors=$y;exports.thermocyclerPipetteCollision=Va;exports.thermocyclerProfileStep=yb;exports.thermocyclerStateGetter=qs;exports.thermocyclerStateStep=bb;exports.tiprackWellNamesFlat=Ab;exports.touchTip=Et;exports.transfer=Tb;exports.unrollThermocyclerProfile=cp;exports.uuid=D;exports.vacuumCloseVent=Da;exports.vacuumCloseVentSetPumpPower=gb;exports.vacuumCloseVentSetPumpPressure=Ib;exports.vacuumCloseVentStartProfile=Eb;exports.vacuumModuleStateGetter=ot;exports.vacuumOpenVent=N_;exports.vacuumSetPumpPower=Cc;exports.vacuumSetPumpPressure=Nc;exports.vacuumStartRunProfile=Dc;exports.vacuumStopPump=M_;exports.waitForModuleTask=Sb;exports.waitForTemperature=Mc;exports.wellFillFromWellContents=ES;