@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/README.md +1 -1
- package/lib/commandCreators/atomic/index.d.ts +11 -0
- package/lib/constants.d.ts +2 -1
- package/lib/errorCreators.d.ts +1 -0
- package/lib/index.cjs +78 -78
- package/lib/index.mjs +5561 -5413
- package/lib/types.d.ts +4 -4
- package/lib/utils/getTransformedWellsForPartialColumn.d.ts +6 -0
- package/lib/utils/misc.d.ts +12 -4
- package/lib/utils/pythonFileUtils.d.ts +2 -2
- package/lib/utils/safePipetteMovements.d.ts +9 -1
- package/package.json +2 -2
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(
|
|
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:
|
|
5
|
-
${o}.blow_out()`}},
|
|
6
|
-
${y}.blow_out(${A}[${N(s)}]${
|
|
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
|
-
)`}},
|
|
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:[
|
|
11
|
-
${K(
|
|
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:
|
|
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:[
|
|
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)})`}},
|
|
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},`:""),
|
|
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:
|
|
27
|
-
`).map(t=>t&&
|
|
28
|
-
`)}function
|
|
29
|
-
${K(t.map(([n,a])=>`${N(n)}: ${
|
|
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
|
|
32
|
-
${K(
|
|
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}},
|
|
35
|
-
${K(
|
|
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}},
|
|
38
|
-
${K(a.map((o,i)=>(i===a.length-1,
|
|
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=${
|
|
41
|
-
${K(n.map((a,s)=>(s===n.length-1,
|
|
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=${
|
|
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,
|
|
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:
|
|
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:
|
|
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
|
|
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
|
|
59
|
-
`);return`${l} = ${
|
|
60
|
-
${K(
|
|
61
|
-
)`}else{const
|
|
62
|
-
`);return`${l} = ${
|
|
63
|
-
${K(
|
|
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
|
|
67
|
-
`),
|
|
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}`:""},
|
|
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=[`${
|
|
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
|
|
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
|
|
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
|
|
87
|
-
`),
|
|
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(
|
|
93
|
+
${K(h)})`}).join(`
|
|
94
94
|
`);return a?`# Load Liquids:
|
|
95
|
-
${a}`:""}function
|
|
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
|
|
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
|
|
100
|
-
${t}`:""}const
|
|
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
|
|
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}${
|
|
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
|
|
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
|
|
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
|
|
114
|
-
`),A=`labware=[${
|
|
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):
|
|
122
|
-
${l}.blow_out(${u})`}),d=[
|
|
123
|
-
${l}.blow_out(${u})`}),d=[
|
|
124
|
-
${K(
|
|
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
|
-
)`}},
|
|
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
|
-
)
|
|
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=[
|
|
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
|
-
)`}),
|
|
139
|
-
${K(
|
|
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
|
-
)`,
|
|
142
|
-
${K(
|
|
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&≺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(
|
|
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
|
-
)`,
|
|
148
|
-
${K(
|
|
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;
|