diff --git a/.gas-snapshot b/.gas-snapshot index a730a2373..45d9fe9d7 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -8,45 +8,45 @@ LibEvalNPFBoundsTest:testEvalNPFBoundsModConstant(uint256) (runs: 2051, μ: 8686 LibExternCodecTest:testLibExternCodecEncodeExternCall(uint256,uint256) (runs: 2051, μ: 9644, ~: 9532) LibExternCodecTest:testLibExternCodecEncodeExternDispatch(uint256,uint256) (runs: 2051, μ: 8812, ~: 8700) LibInterpreterStateNPStackTraceTest:testStackTraceCall(uint256,uint256,uint256[]) (runs: 2051, μ: 43115, ~: 42781) -LibOpAddTest:testOpAddEval2InputsHappy() (gas: 105797) -LibOpAddTest:testOpAddEval2InputsHappyZero() (gas: 57540) -LibOpAddTest:testOpAddEval2InputsHappyZeroMax() (gas: 101782) -LibOpAddTest:testOpAddEval2InputsHappyZeroOne() (gas: 104792) -LibOpAddTest:testOpAddEval2InputsUnhappy() (gas: 97969) -LibOpAddTest:testOpAddEval3InputsHappy() (gas: 332579) -LibOpAddTest:testOpAddEval3InputsUnhappy() (gas: 674963) +LibOpAddTest:testOpAddEval2InputsHappy() (gas: 106243) +LibOpAddTest:testOpAddEval2InputsHappyZero() (gas: 57763) +LibOpAddTest:testOpAddEval2InputsHappyZeroMax() (gas: 102228) +LibOpAddTest:testOpAddEval2InputsHappyZeroOne() (gas: 105238) +LibOpAddTest:testOpAddEval2InputsUnhappy() (gas: 98415) +LibOpAddTest:testOpAddEval3InputsHappy() (gas: 333917) +LibOpAddTest:testOpAddEval3InputsUnhappy() (gas: 677862) LibOpAddTest:testOpAddEvalOneInput() (gas: 35897) LibOpAddTest:testOpAddEvalOperandDisallowed() (gas: 93453) LibOpAddTest:testOpAddEvalTwoOutput() (gas: 42745) LibOpAddTest:testOpAddEvalZeroInputs() (gas: 30156) LibOpAddTest:testOpAddEvalZeroOutputs() (gas: 41657) -LibOpAddTest:testOpAddIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17966, ~: 17968) +LibOpAddTest:testOpAddIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17968, ~: 17972) LibOpAddTest:testOpAddIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13798, ~: 13645) LibOpAddTest:testOpAddIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13797, ~: 13644) -LibOpAddTest:testOpAddRun(uint256[]) (runs: 2048, μ: 19850, ~: 20060) -LibOpAnyNPTest:testOpAnyNPEval1FalseInput() (gas: 51917) -LibOpAnyNPTest:testOpAnyNPEval1TrueInput() (gas: 51815) -LibOpAnyNPTest:testOpAnyNPEval2FalseInputs() (gas: 57326) -LibOpAnyNPTest:testOpAnyNPEval2MixedInputs() (gas: 58094) -LibOpAnyNPTest:testOpAnyNPEval2MixedInputs2() (gas: 58198) -LibOpAnyNPTest:testOpAnyNPEval2TrueInputs() (gas: 58096) +LibOpAddTest:testOpAddRun(uint256[]) (runs: 2048, μ: 19867, ~: 20060) +LibOpAnyNPTest:testOpAnyNPEval1FalseInput() (gas: 52140) +LibOpAnyNPTest:testOpAnyNPEval1TrueInput() (gas: 52038) +LibOpAnyNPTest:testOpAnyNPEval2FalseInputs() (gas: 57549) +LibOpAnyNPTest:testOpAnyNPEval2MixedInputs() (gas: 58317) +LibOpAnyNPTest:testOpAnyNPEval2MixedInputs2() (gas: 58421) +LibOpAnyNPTest:testOpAnyNPEval2TrueInputs() (gas: 58319) LibOpAnyNPTest:testOpAnyNPEvalFail() (gas: 29691) LibOpAnyNPTest:testOpAnyNPIntegrityGas0() (gas: 3279) -LibOpAnyNPTest:testOpAnyNPIntegrityHappy(uint8,uint16) (runs: 2051, μ: 8296, ~: 8432) +LibOpAnyNPTest:testOpAnyNPIntegrityHappy(uint8,uint16) (runs: 2051, μ: 8302, ~: 8432) LibOpAnyNPTest:testOpAnyNPIntegrityUnhappyZeroInputs() (gas: 4079) LibOpAnyNPTest:testOpAnyNPRun(uint256[],uint16) (runs: 2048, μ: 19148, ~: 19140) LibOpAnyNPTest:testOpAnyNPRunGas0() (gas: 3382) LibOpAnyNPTest:testOpAnyNPTwoOutputs() (gas: 36001) LibOpAnyNPTest:testOpAnyNPZeroOutputs() (gas: 34974) -LibOpAvgTest:testOpAvgEval() (gas: 420713) +LibOpAvgTest:testOpAvgEval() (gas: 422720) LibOpAvgTest:testOpAvgEvalOneInput() (gas: 35336) LibOpAvgTest:testOpAvgEvalOperandDisallowed() (gas: 17754) LibOpAvgTest:testOpAvgEvalThreeInputs() (gas: 45473) LibOpAvgTest:testOpAvgEvalTwoOutputs() (gas: 41123) LibOpAvgTest:testOpAvgEvalZeroOutputs() (gas: 40058) LibOpAvgTest:testOpAvgIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13835, ~: 13805) -LibOpAvgTest:testOpAvgRun(uint256,uint256,uint16) (runs: 2051, μ: 22102, ~: 21813) -LibOpBitwiseAndNPTest:testOpBitwiseAndNPEvalHappy() (gas: 757569) +LibOpAvgTest:testOpAvgRun(uint256,uint256,uint16) (runs: 2051, μ: 22110, ~: 21813) +LibOpBitwiseAndNPTest:testOpBitwiseAndNPEvalHappy() (gas: 761137) LibOpBitwiseAndNPTest:testOpBitwiseAndNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13857, ~: 13827) LibOpBitwiseAndNPTest:testOpBitwiseAndNPRun(uint256,uint256) (runs: 2051, μ: 16544, ~: 16544) LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18444) @@ -55,7 +55,7 @@ LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 46111) LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41761) LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30781) LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40738) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEval() (gas: 756253) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEval() (gas: 759821) LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18363) LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35894) LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 46052) @@ -64,110 +64,110 @@ LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30656) LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40657) LibOpBitwiseOrNPTest:testOpBitwiseORNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13835, ~: 13805) LibOpBitwiseOrNPTest:testOpBitwiseORNPRun(uint256,uint256) (runs: 2051, μ: 16520, ~: 16520) -LibOpBlockNumberNPTest:testOpBlockNumberNPEval(uint256) (runs: 2051, μ: 50827, ~: 50700) +LibOpBlockNumberNPTest:testOpBlockNumberNPEval(uint256) (runs: 2051, μ: 51050, ~: 50923) LibOpBlockNumberNPTest:testOpBlockNumberNPEvalOneInput() (gas: 35094) LibOpBlockNumberNPTest:testOpBlockNumberNPEvalTwoOutputs() (gas: 31448) LibOpBlockNumberNPTest:testOpBlockNumberNPEvalZeroOutputs() (gas: 30442) -LibOpBlockNumberNPTest:testOpBlockNumberNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19415, ~: 19471) -LibOpBlockNumberNPTest:testOpBlockNumberNPRun(uint256,uint16) (runs: 2051, μ: 20150, ~: 20009) -LibOpCallNPTest:testCallTraceInnerOnly() (gas: 62741) -LibOpCallNPTest:testCallTraceOuterAndInner() (gas: 73600) -LibOpCallNPTest:testCallTraceOuterAndTwoInner() (gas: 113622) -LibOpCallNPTest:testCallTraceOuterOnly() (gas: 45400) -LibOpCallNPTest:testOpCallNPIntegrityIO((uint256,uint256,uint256,uint256[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2050, μ: 39836, ~: 38354) -LibOpCallNPTest:testOpCallNPIntegritySourceIndexOutOfBounds((uint256,uint256,uint256,uint256[],uint256,bytes),uint256,uint256,uint256,uint256,bytes32) (runs: 2051, μ: 37612, ~: 35893) -LibOpCallNPTest:testOpCallNPIntegrityTooManyOutputs((uint256,uint256,uint256,uint256[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2049, μ: 36309, ~: 36135) +LibOpBlockNumberNPTest:testOpBlockNumberNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19426, ~: 19481) +LibOpBlockNumberNPTest:testOpBlockNumberNPRun(uint256,uint16) (runs: 2051, μ: 20153, ~: 20009) +LibOpCallNPTest:testCallTraceInnerOnly() (gas: 62964) +LibOpCallNPTest:testCallTraceOuterAndInner() (gas: 73823) +LibOpCallNPTest:testCallTraceOuterAndTwoInner() (gas: 113845) +LibOpCallNPTest:testCallTraceOuterOnly() (gas: 45623) +LibOpCallNPTest:testOpCallNPIntegrityIO((uint256,uint256,uint256,uint256[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2049, μ: 39857, ~: 38392) +LibOpCallNPTest:testOpCallNPIntegritySourceIndexOutOfBounds((uint256,uint256,uint256,uint256[],uint256,bytes),uint256,uint256,uint256,uint256,bytes32) (runs: 2051, μ: 37582, ~: 35759) +LibOpCallNPTest:testOpCallNPIntegrityTooManyOutputs((uint256,uint256,uint256,uint256[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2048, μ: 36291, ~: 36311) LibOpCallNPTest:testOpCallNPRunInputsMismatch() (gas: 73763) -LibOpCallNPTest:testOpCallNPRunNoIO() (gas: 714227) +LibOpCallNPTest:testOpCallNPRunNoIO() (gas: 716463) LibOpCallNPTest:testOpCallNPRunOutputsMismatch() (gas: 66546) -LibOpCallNPTest:testOpCallNPRunRecursive() (gas: 304314) +LibOpCallNPTest:testOpCallNPRunRecursive() (gas: 304983) LibOpCallNPTest:testOpCallNPRunSourceDoesNotExist() (gas: 351530) -LibOpCeilTest:testOpCeilEval() (gas: 210712) +LibOpCeilTest:testOpCeilEval() (gas: 211827) LibOpCeilTest:testOpCeilEvalOperandDisallowed() (gas: 17835) LibOpCeilTest:testOpCeilIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13879, ~: 13849) -LibOpCeilTest:testOpCeilRun(uint256,uint16) (runs: 2051, μ: 20393, ~: 20603) +LibOpCeilTest:testOpCeilRun(uint256,uint16) (runs: 2051, μ: 20392, ~: 20603) LibOpCeilTest:testOpCeilTwoInputs() (gas: 40498) LibOpCeilTest:testOpCeilTwoOutputs() (gas: 36085) LibOpCeilTest:testOpCeilZeroInputs() (gas: 30203) LibOpCeilTest:testOpCeilZeroOutputs() (gas: 35081) -LibOpChainIdNPTest:testOpChainIDNPEval(uint64) (runs: 2051, μ: 46983, ~: 46983) -LibOpChainIdNPTest:testOpChainIDNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19424, ~: 19503) +LibOpChainIdNPTest:testOpChainIDNPEval(uint64) (runs: 2051, μ: 47206, ~: 47206) +LibOpChainIdNPTest:testOpChainIDNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19423, ~: 19470) LibOpChainIdNPTest:testOpChainIdNPEvalFail() (gas: 34341) LibOpChainIdNPTest:testOpChainIdNPRun(uint64,uint16) (runs: 2051, μ: 16585, ~: 16585) LibOpChainIdNPTest:testOpChainIdNPTwoOutputs() (gas: 31173) LibOpChainIdNPTest:testOpChainIdNPZeroOutputs() (gas: 30103) -LibOpConditionsNPTest:testOpConditionsNPEval1FalseInput1TrueInput() (gas: 71931) -LibOpConditionsNPTest:testOpConditionsNPEval1FalseInputRevert() (gas: 55316) -LibOpConditionsNPTest:testOpConditionsNPEval1TrueInput1FalseInput() (gas: 71805) -LibOpConditionsNPTest:testOpConditionsNPEval1TrueInputZeroOutput() (gas: 58924) -LibOpConditionsNPTest:testOpConditionsNPEval2MixedInputs() (gas: 58926) -LibOpConditionsNPTest:testOpConditionsNPEval2TrueInputs() (gas: 71806) -LibOpConditionsNPTest:testOpConditionsNPEvalErrorCode() (gas: 67305) +LibOpConditionsNPTest:testOpConditionsNPEval1FalseInput1TrueInput() (gas: 72154) +LibOpConditionsNPTest:testOpConditionsNPEval1FalseInputRevert() (gas: 55539) +LibOpConditionsNPTest:testOpConditionsNPEval1TrueInput1FalseInput() (gas: 72028) +LibOpConditionsNPTest:testOpConditionsNPEval1TrueInputZeroOutput() (gas: 59147) +LibOpConditionsNPTest:testOpConditionsNPEval2MixedInputs() (gas: 59149) +LibOpConditionsNPTest:testOpConditionsNPEval2TrueInputs() (gas: 72029) +LibOpConditionsNPTest:testOpConditionsNPEvalErrorCode() (gas: 67528) LibOpConditionsNPTest:testOpConditionsNPEvalFail0Inputs() (gas: 30360) LibOpConditionsNPTest:testOpConditionsNPEvalFail1Inputs() (gas: 34639) LibOpConditionsNPTest:testOpConditionsNPEvalUnhappyOperand() (gas: 18305) -LibOpConditionsNPTest:testOpConditionsNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 20007, ~: 20059) +LibOpConditionsNPTest:testOpConditionsNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19997, ~: 20059) LibOpConditionsNPTest:testOpConditionsNPRun(uint256[],uint256) (runs: 2048, μ: 19641, ~: 19743) LibOpConditionsNPTest:testOpConditionsNPRunNoConditionsMet(uint256[],string) (runs: 2049, μ: 25209, ~: 24938) LibOpConditionsNPTest:testOpConditionsNPTwoOutputs() (gas: 39888) LibOpConditionsNPTest:testOpConditionsNPZeroOutputs() (gas: 38889) -LibOpConstantNPTest:testOpConstantEvalNPE2E() (gas: 54269) +LibOpConstantNPTest:testOpConstantEvalNPE2E() (gas: 54492) LibOpConstantNPTest:testOpConstantEvalZeroConstants() (gas: 41484) -LibOpConstantNPTest:testOpConstantNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 19240, ~: 19220) -LibOpConstantNPTest:testOpConstantNPIntegrityOOBConstants((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 18100, ~: 18096) +LibOpConstantNPTest:testOpConstantNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 19241, ~: 19220) +LibOpConstantNPTest:testOpConstantNPIntegrityOOBConstants((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 18100, ~: 18108) LibOpConstantNPTest:testOpConstantNPMultipleOutputErrorSugared() (gas: 31852) LibOpConstantNPTest:testOpConstantNPMultipleOutputErrorUnsugared() (gas: 41813) -LibOpConstantNPTest:testOpConstantNPRun(uint256[],uint16) (runs: 2051, μ: 53254, ~: 53322) +LibOpConstantNPTest:testOpConstantNPRun(uint256[],uint16) (runs: 2051, μ: 53257, ~: 53322) LibOpConstantNPTest:testOpConstantNPZeroOutputErrorSugared() (gas: 30496) LibOpConstantNPTest:testOpConstantNPZeroOutputErrorUnsugared() (gas: 40402) -LibOpContextNPTest:testOpContextNPEval00(uint256[][]) (runs: 2051, μ: 7235298, ~: 6121962) -LibOpContextNPTest:testOpContextNPEval01(uint256[][]) (runs: 2051, μ: 7229071, ~: 6114938) -LibOpContextNPTest:testOpContextNPEval10(uint256[][]) (runs: 2051, μ: 7274695, ~: 6173957) -LibOpContextNPTest:testOpContextNPEval11(uint256[][]) (runs: 2051, μ: 7271384, ~: 6202833) -LibOpContextNPTest:testOpContextNPEvalOOBi(uint256[]) (runs: 2051, μ: 77024, ~: 77130) -LibOpContextNPTest:testOpContextNPEvalOOBj(uint256) (runs: 2051, μ: 48036, ~: 48036) +LibOpContextNPTest:testOpContextNPEval00(uint256[][]) (runs: 2051, μ: 7235521, ~: 6122185) +LibOpContextNPTest:testOpContextNPEval01(uint256[][]) (runs: 2051, μ: 7229294, ~: 6115161) +LibOpContextNPTest:testOpContextNPEval10(uint256[][]) (runs: 2051, μ: 7274918, ~: 6174180) +LibOpContextNPTest:testOpContextNPEval11(uint256[][]) (runs: 2051, μ: 7271607, ~: 6203056) +LibOpContextNPTest:testOpContextNPEvalOOBi(uint256[]) (runs: 2051, μ: 77247, ~: 77353) +LibOpContextNPTest:testOpContextNPEvalOOBj(uint256) (runs: 2051, μ: 48259, ~: 48259) LibOpContextNPTest:testOpContextNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 14558, ~: 14528) LibOpContextNPTest:testOpContextNPOneInput() (gas: 41806) -LibOpContextNPTest:testOpContextNPRun(uint256[][],uint256,uint256) (runs: 2051, μ: 10504767, ~: 8947737) -LibOpContextNPTest:testOpContextNPRunOOBi(uint256[][],uint256,uint256) (runs: 2051, μ: 5490321, ~: 4779946) -LibOpContextNPTest:testOpContextNPRunOOBj(uint256[][],uint256,uint256) (runs: 2051, μ: 5512454, ~: 4817135) +LibOpContextNPTest:testOpContextNPRun(uint256[][],uint256,uint256) (runs: 2051, μ: 10535390, ~: 8988701) +LibOpContextNPTest:testOpContextNPRunOOBi(uint256[][],uint256,uint256) (runs: 2051, μ: 5490319, ~: 4779946) +LibOpContextNPTest:testOpContextNPRunOOBj(uint256[][],uint256,uint256) (runs: 2051, μ: 5515700, ~: 4817135) LibOpContextNPTest:testOpContextNPTwoInputs() (gas: 46929) LibOpContextNPTest:testOpContextNPTwoOutputs() (gas: 37298) LibOpContextNPTest:testOpContextNPZeroOutputs() (gas: 36270) -LibOpCtPopNPTest:testOpCtPopNPEval(uint256) (runs: 2051, μ: 64474, ~: 61344) +LibOpCtPopNPTest:testOpCtPopNPEval(uint256) (runs: 2051, μ: 64761, ~: 61567) LibOpCtPopNPTest:testOpCtPopNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13878, ~: 13848) LibOpCtPopNPTest:testOpCtPopNPRun(uint256) (runs: 2051, μ: 16679, ~: 16680) LibOpCtPopNPTest:testOpCtPopNPTwoInputs() (gas: 41554) LibOpCtPopNPTest:testOpCtPopNPTwoOutputs() (gas: 37207) LibOpCtPopNPTest:testOpCtPopNPZeroInputs() (gas: 31258) LibOpCtPopNPTest:testOpCtPopNPZeroOutputs() (gas: 36159) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalHappy() (gas: 845288) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalHappy() (gas: 849302) LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoInputs() (gas: 47409) LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoOutputs() (gas: 43086) LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroInputs() (gas: 37159) LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroOutputs() (gas: 41992) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint8,uint8) (runs: 2051, μ: 22059, ~: 22224) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFail((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8) (runs: 2051, μ: 19427, ~: 19383) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint8,uint8) (runs: 2051, μ: 22063, ~: 22224) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFail((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8) (runs: 2051, μ: 19419, ~: 19364) LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,uint256[],uint256,bytes),uint8) (runs: 2051, μ: 13873, ~: 13849) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPRun(uint256,uint8,uint8) (runs: 2051, μ: 20847, ~: 20668) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPRun(uint256,uint8,uint8) (runs: 2051, μ: 20857, ~: 20668) LibOpDivTest:testDebugOpDivRun() (gas: 11706) LibOpDivTest:testOpDivEvalOneInput() (gas: 126900) LibOpDivTest:testOpDivEvalOperandsDisallowed() (gas: 93429) -LibOpDivTest:testOpDivEvalThreeInputsHappy() (gas: 373989) -LibOpDivTest:testOpDivEvalThreeInputsUnhappy() (gas: 210018) -LibOpDivTest:testOpDivEvalThreeInputsUnhappyOverflow() (gas: 167098) -LibOpDivTest:testOpDivEvalTwoInputsHappy() (gas: 331677) -LibOpDivTest:testOpDivEvalTwoInputsUnhappy() (gas: 142658) -LibOpDivTest:testOpDivEvalTwoInputsUnhappyOverflow() (gas: 100822) +LibOpDivTest:testOpDivEvalThreeInputsHappy() (gas: 375550) +LibOpDivTest:testOpDivEvalThreeInputsUnhappy() (gas: 210910) +LibOpDivTest:testOpDivEvalThreeInputsUnhappyOverflow() (gas: 167767) +LibOpDivTest:testOpDivEvalTwoInputsHappy() (gas: 333238) +LibOpDivTest:testOpDivEvalTwoInputsUnhappy() (gas: 143327) +LibOpDivTest:testOpDivEvalTwoInputsUnhappyOverflow() (gas: 101268) LibOpDivTest:testOpDivEvalTwoOutputs() (gas: 41831) LibOpDivTest:testOpDivEvalZeroInputs() (gas: 30156) LibOpDivTest:testOpDivEvalZeroOutputs() (gas: 40786) -LibOpDivTest:testOpDivIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17965, ~: 17974) +LibOpDivTest:testOpDivIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17968, ~: 17967) LibOpDivTest:testOpDivIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13797, ~: 13644) LibOpDivTest:testOpDivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13820, ~: 13667) -LibOpDivTest:testOpDivRun(uint256[]) (runs: 2048, μ: 25115, ~: 24197) +LibOpDivTest:testOpDivRun(uint256[]) (runs: 2048, μ: 25008, ~: 24111) LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalFourInputs() (gas: 55762) -LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalHappy(uint256,uint8) (runs: 2051, μ: 71453, ~: 71506) +LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalHappy(uint256,uint8) (runs: 2051, μ: 71675, ~: 71729) LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalOneInput() (gas: 37109) LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalOperandDisallowed() (gas: 18791) LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalTwoInputs() (gas: 43521) @@ -175,27 +175,27 @@ LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalTwoOutputs() (gas: 50587) LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalZeroInputs() (gas: 31077) LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalZeroOutputs() (gas: 49521) LibOpERC20AllowanceTest:testOpERC20AllowanceNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13859, ~: 13829) -LibOpERC20AllowanceTest:testOpERC20AllowanceNPRun(address,address,address,uint256,uint8) (runs: 2051, μ: 26862, ~: 26907) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalHappy(uint256,uint8) (runs: 2050, μ: 65160, ~: 65079) +LibOpERC20AllowanceTest:testOpERC20AllowanceNPRun(address,address,address,uint256,uint8) (runs: 2051, μ: 26859, ~: 26907) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalHappy(uint256,uint8) (runs: 2050, μ: 65378, ~: 65302) LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalOneInput() (gas: 37165) LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalOperandDisallowed() (gas: 18872) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalOverflow(uint256,uint8) (runs: 2049, μ: 61131, ~: 61131) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalOverflow(uint256,uint8) (runs: 2049, μ: 61354, ~: 61354) LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalThreeInputs() (gas: 49456) LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalTwoOutputs() (gas: 44285) LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalZeroInputs() (gas: 31175) LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalZeroOutputs() (gas: 43261) LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13879, ~: 13849) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPRun(address,address,uint256,uint16,uint8) (runs: 2051, μ: 26938, ~: 26855) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalHappy(uint256,uint8) (runs: 2050, μ: 58310, ~: 58225) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPRun(address,address,uint256,uint16,uint8) (runs: 2051, μ: 26933, ~: 26855) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalHappy(uint256,uint8) (runs: 2050, μ: 58526, ~: 58448) LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalOperandDisallowed() (gas: 19078) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalOverflow(uint256,uint8) (runs: 2049, μ: 54346, ~: 54346) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalOverflow(uint256,uint8) (runs: 2049, μ: 54569, ~: 54569) LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalTwoInputs() (gas: 43782) LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalTwoOutputs() (gas: 38151) LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalZeroInputs() (gas: 31338) LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalZeroOutputs() (gas: 37104) LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13859, ~: 13829) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPRun(address,uint256,uint16,uint8) (runs: 2050, μ: 26195, ~: 26109) -LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalHappy() (gas: 54970) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPRun(address,uint256,uint16,uint8) (runs: 2050, μ: 26189, ~: 26109) +LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalHappy() (gas: 55193) LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalOperandDisallowed() (gas: 18576) LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalTwoInputs() (gas: 43346) LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalTwoOutputs() (gas: 37623) @@ -207,7 +207,7 @@ LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail0() (gas: 30653) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail1() (gas: 34976) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail3() (gas: 44395) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFailOperand() (gas: 18409) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalHappy(address,uint256,address) (runs: 2051, μ: 95909, ~: 92281) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalHappy(address,uint256,address) (runs: 2051, μ: 96229, ~: 92556) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalOneInput() (gas: 35428) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalThreeInputs() (gas: 44899) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroInputs() (gas: 31117) @@ -215,73 +215,73 @@ LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroOutputs() (gas: 39683) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8) (runs: 2051, μ: 13861, ~: 13838) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPRun(address,uint256,address,uint16) (runs: 2051, μ: 23764, ~: 23764) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPTwoOutputs() (gas: 40726) -LibOpETest:testOpEEval() (gas: 44368) +LibOpETest:testOpEEval() (gas: 44591) LibOpETest:testOpEEvalOneInput() (gas: 34204) LibOpETest:testOpEEvalTwoOutputs() (gas: 30600) LibOpETest:testOpEEvalZeroOutputs() (gas: 29552) -LibOpETest:testOpEIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19443, ~: 19492) +LibOpETest:testOpEIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19448, ~: 19525) LibOpETest:testOpERun(uint16) (runs: 2051, μ: 16015, ~: 16015) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalHappy() (gas: 846989) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalHappy() (gas: 850557) LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalOneInput() (gas: 42290) LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalThreeInputs() (gas: 52447) LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalTwoOutputs() (gas: 48054) LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroInputs() (gas: 37073) LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroOutputs() (gas: 47053) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8) (runs: 2051, μ: 18152, ~: 18180) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFail((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8) (runs: 2051, μ: 19541, ~: 19443) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8) (runs: 2051, μ: 18144, ~: 18111) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFail((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8) (runs: 2051, μ: 19550, ~: 19485) LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,uint256[],uint256,bytes),uint8) (runs: 2051, μ: 14045, ~: 14021) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPRun(uint256,uint256,uint8,uint8) (runs: 2051, μ: 21256, ~: 21069) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPRun(uint256,uint256,uint8,uint8) (runs: 2051, μ: 21252, ~: 21069) LibOpEnsureNPTest:testOpEnsureNPEvalBadOutputs() (gas: 35192) LibOpEnsureNPTest:testOpEnsureNPEvalBadOutputs2() (gas: 34532) -LibOpEnsureNPTest:testOpEnsureNPEvalHappy() (gas: 169698) +LibOpEnsureNPTest:testOpEnsureNPEvalHappy() (gas: 170367) LibOpEnsureNPTest:testOpEnsureNPEvalOne() (gas: 34869) LibOpEnsureNPTest:testOpEnsureNPEvalThree() (gas: 46416) -LibOpEnsureNPTest:testOpEnsureNPEvalUnhappy() (gas: 112818) +LibOpEnsureNPTest:testOpEnsureNPEvalUnhappy() (gas: 113264) LibOpEnsureNPTest:testOpEnsureNPEvalUnhappyOperand() (gas: 17295) LibOpEnsureNPTest:testOpEnsureNPEvalZero() (gas: 29605) -LibOpEnsureNPTest:testOpEnsureNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19501, ~: 19557) +LibOpEnsureNPTest:testOpEnsureNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19515, ~: 19567) LibOpEnsureNPTest:testOpEnsureNPIntegrityUnhappy((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13764, ~: 13611) LibOpEnsureNPTest:testOpEnsureNPOneOutput() (gas: 39962) LibOpEnsureNPTest:testOpEnsureNPRun(uint256,string) (runs: 2049, μ: 16542, ~: 16613) -LibOpEqualToNPTest:testOpEqualToNPEval2InputsBothOne() (gas: 57485) -LibOpEqualToNPTest:testOpEqualToNPEval2InputsFirstOneSecondZero() (gas: 58413) -LibOpEqualToNPTest:testOpEqualToNPEval2InputsFirstZeroSecondOne() (gas: 58392) -LibOpEqualToNPTest:testOpEqualToNPEval2ZeroInputs() (gas: 57527) +LibOpEqualToNPTest:testOpEqualToNPEval2InputsBothOne() (gas: 57708) +LibOpEqualToNPTest:testOpEqualToNPEval2InputsFirstOneSecondZero() (gas: 58636) +LibOpEqualToNPTest:testOpEqualToNPEval2InputsFirstZeroSecondOne() (gas: 58615) +LibOpEqualToNPTest:testOpEqualToNPEval2ZeroInputs() (gas: 57750) LibOpEqualToNPTest:testOpEqualToNPEvalFail0Inputs() (gas: 30053) LibOpEqualToNPTest:testOpEqualToNPEvalFail1Input() (gas: 34352) LibOpEqualToNPTest:testOpEqualToNPEvalFail3Inputs() (gas: 42725) -LibOpEqualToNPTest:testOpEqualToNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19440, ~: 19502) +LibOpEqualToNPTest:testOpEqualToNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19446, ~: 19502) LibOpEqualToNPTest:testOpEqualToNPRun(uint256,uint256) (runs: 2051, μ: 16571, ~: 16572) LibOpEqualToNPTest:testOpEqualToNPTwoOutputs() (gas: 41423) LibOpEqualToNPTest:testOpEqualToNPZeroOutputs() (gas: 40424) LibOpEveryNPTest:testOpAnyNPEvalFail() (gas: 30560) -LibOpEveryNPTest:testOpEveryNPEval1FalseInput() (gas: 52678) -LibOpEveryNPTest:testOpEveryNPEval1TrueInput() (gas: 52717) -LibOpEveryNPTest:testOpEveryNPEval2FalseInputs() (gas: 58055) -LibOpEveryNPTest:testOpEveryNPEval2MixedInputs() (gas: 59038) -LibOpEveryNPTest:testOpEveryNPEval2MixedInputs2() (gas: 58984) -LibOpEveryNPTest:testOpEveryNPEval2TrueInputs() (gas: 59074) -LibOpEveryNPTest:testOpEveryNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19619, ~: 19686) +LibOpEveryNPTest:testOpEveryNPEval1FalseInput() (gas: 52901) +LibOpEveryNPTest:testOpEveryNPEval1TrueInput() (gas: 52940) +LibOpEveryNPTest:testOpEveryNPEval2FalseInputs() (gas: 58278) +LibOpEveryNPTest:testOpEveryNPEval2MixedInputs() (gas: 59261) +LibOpEveryNPTest:testOpEveryNPEval2MixedInputs2() (gas: 59207) +LibOpEveryNPTest:testOpEveryNPEval2TrueInputs() (gas: 59297) +LibOpEveryNPTest:testOpEveryNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19625, ~: 19729) LibOpEveryNPTest:testOpEveryNPIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13747, ~: 13594) LibOpEveryNPTest:testOpEveryNPRun(uint256[]) (runs: 2048, μ: 20480, ~: 20545) LibOpEveryNPTest:testOpEveryNPTwoOutputs() (gas: 36847) LibOpEveryNPTest:testOpEveryNPZeroOutputs() (gas: 35820) -LibOpExp2Test:testOpExp2Eval() (gas: 215277) +LibOpExp2Test:testOpExp2Eval() (gas: 216392) LibOpExp2Test:testOpExp2EvalBad() (gas: 67085) LibOpExp2Test:testOpExp2EvalOperandDisallowed() (gas: 18525) LibOpExp2Test:testOpExp2Integrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13835, ~: 13805) -LibOpExp2Test:testOpExp2Run(uint256,uint16) (runs: 2051, μ: 23984, ~: 25030) +LibOpExp2Test:testOpExp2Run(uint256,uint16) (runs: 2051, μ: 24030, ~: 25248) LibOpExp2Test:testOpExp2TwoOutputs() (gas: 36733) LibOpExp2Test:testOpExp2ZeroOutputs() (gas: 35705) -LibOpExpTest:testOpExpEval() (gas: 220282) +LibOpExpTest:testOpExpEval() (gas: 221397) LibOpExpTest:testOpExpEvalOperandDisallowed() (gas: 17752) LibOpExpTest:testOpExpEvalTwoInputs() (gas: 40394) LibOpExpTest:testOpExpEvalZeroInputs() (gas: 30121) LibOpExpTest:testOpExpIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13856, ~: 13826) -LibOpExpTest:testOpExpRun(uint256,uint16) (runs: 2051, μ: 24306, ~: 25576) +LibOpExpTest:testOpExpRun(uint256,uint16) (runs: 2051, μ: 24298, ~: 25576) LibOpExpTest:testOpExpTwoOutputs() (gas: 36006) LibOpExpTest:testOpExpZeroOutputs() (gas: 35000) -LibOpExponentialGrowthTest:testOpExponentialGrowthEval() (gas: 694934) +LibOpExponentialGrowthTest:testOpExponentialGrowthEval() (gas: 697610) LibOpExponentialGrowthTest:testOpExponentialGrowthEvalFourInputs() (gas: 52560) LibOpExponentialGrowthTest:testOpExponentialGrowthEvalOneInput() (gas: 36520) LibOpExponentialGrowthTest:testOpExponentialGrowthEvalOperandDisallowed() (gas: 18959) @@ -290,67 +290,67 @@ LibOpExponentialGrowthTest:testOpExponentialGrowthEvalTwoOutputs() (gas: 48074) LibOpExponentialGrowthTest:testOpExponentialGrowthEvalZeroInputs() (gas: 30917) LibOpExponentialGrowthTest:testOpExponentialGrowthEvalZeroOutputs() (gas: 47008) LibOpExponentialGrowthTest:testOpExponentialGrowthIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13834, ~: 13804) -LibOpExponentialGrowthTest:testOpExponentialGrowthRun(uint256,uint256,uint256,uint16) (runs: 2051, μ: 39083, ~: 39168) -LibOpExternNPTest:testOpExternNPEvalHappy() (gas: 99897) -LibOpExternNPTest:testOpExternNPEvalMultipleInputsOutputsHappy() (gas: 114821) -LibOpExternNPTest:testOpExternNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2051, μ: 34336, ~: 34215) -LibOpExternNPTest:testOpExternNPIntegrityNotAnExternContract((uint256,uint256,uint256,uint256[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2051, μ: 52478, ~: 51929) -LibOpExternNPTest:testOpExternNPRunHappy(address,uint256[],uint16,uint256[],uint256[]) (runs: 2051, μ: 116482, ~: 115806) -LibOpFloorTest:testOpFloorEval() (gas: 250169) +LibOpExponentialGrowthTest:testOpExponentialGrowthRun(uint256,uint256,uint256,uint16) (runs: 2051, μ: 39080, ~: 39137) +LibOpExternNPTest:testOpExternNPEvalHappy() (gas: 100120) +LibOpExternNPTest:testOpExternNPEvalMultipleInputsOutputsHappy() (gas: 115044) +LibOpExternNPTest:testOpExternNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2051, μ: 34371, ~: 34248) +LibOpExternNPTest:testOpExternNPIntegrityNotAnExternContract((uint256,uint256,uint256,uint256[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2051, μ: 52584, ~: 52197) +LibOpExternNPTest:testOpExternNPRunHappy(address,uint256[],uint16,uint256[],uint256[]) (runs: 2051, μ: 116361, ~: 115733) +LibOpFloorTest:testOpFloorEval() (gas: 251507) LibOpFloorTest:testOpFloorEvalOperandDisallowed() (gas: 17917) LibOpFloorTest:testOpFloorIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13856, ~: 13826) -LibOpFloorTest:testOpFloorRun(uint256,uint16) (runs: 2051, μ: 20263, ~: 20466) +LibOpFloorTest:testOpFloorRun(uint256,uint16) (runs: 2051, μ: 20258, ~: 20466) LibOpFloorTest:testOpFloorTwoInputs() (gas: 40578) LibOpFloorTest:testOpFloorTwoOutputs() (gas: 36167) LibOpFloorTest:testOpFloorZeroInputs() (gas: 30262) LibOpFloorTest:testOpFloorZeroOutputs() (gas: 35141) -LibOpFracTest:testOpFracEval() (gas: 249606) +LibOpFracTest:testOpFracEval() (gas: 250944) LibOpFracTest:testOpFracEvalOperandDisallowed() (gas: 17835) LibOpFracTest:testOpFracIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13834, ~: 13804) -LibOpFracTest:testOpFracRun(uint256,uint16) (runs: 2051, μ: 20215, ~: 20425) +LibOpFracTest:testOpFracRun(uint256,uint16) (runs: 2051, μ: 20220, ~: 20425) LibOpFracTest:testOpFracTwoInputs() (gas: 40488) LibOpFracTest:testOpFracTwoOutputs() (gas: 36120) LibOpFracTest:testOpFracZeroInputs() (gas: 30191) LibOpFracTest:testOpFracZeroOutputs() (gas: 35070) -LibOpGetNPTest:testLibOpGetNPEvalKeyNotSet() (gas: 306497) +LibOpGetNPTest:testLibOpGetNPEvalKeyNotSet() (gas: 307877) LibOpGetNPTest:testLibOpGetNPEvalOperandDisallowed() (gas: 58646) -LibOpGetNPTest:testLibOpGetNPEvalSetThenGet() (gas: 520159) -LibOpGetNPTest:testLibOpGetNPEvalStoreAndSetAndGet() (gas: 254541) -LibOpGetNPTest:testLibOpGetNPEvalStoreThenGet() (gas: 473284) +LibOpGetNPTest:testLibOpGetNPEvalSetThenGet() (gas: 521798) +LibOpGetNPTest:testLibOpGetNPEvalStoreAndSetAndGet() (gas: 255240) +LibOpGetNPTest:testLibOpGetNPEvalStoreThenGet() (gas: 475116) LibOpGetNPTest:testLibOpGetNPEvalThreeInputs() (gas: 44966) LibOpGetNPTest:testLibOpGetNPEvalTwoInputs() (gas: 39739) LibOpGetNPTest:testLibOpGetNPEvalTwoOutputs() (gas: 35284) LibOpGetNPTest:testLibOpGetNPEvalZeroInputs() (gas: 29769) LibOpGetNPTest:testLibOpGetNPEvalZeroOutputs() (gas: 34257) -LibOpGetNPTest:testLibOpGetNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 20313, ~: 20370) +LibOpGetNPTest:testLibOpGetNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 20311, ~: 20389) LibOpGetNPTest:testLibOpGetNPRunState(uint256,uint256,uint16) (runs: 2051, μ: 19501, ~: 19505) LibOpGetNPTest:testLibOpGetNPRunStateAndStore(uint256,uint256,uint256,uint16) (runs: 2051, μ: 47307, ~: 47524) LibOpGetNPTest:testLibOpGetNPRunStore(uint256,uint256,uint16) (runs: 2051, μ: 49516, ~: 49724) LibOpGetNPTest:testLibOpGetNPRunStoreDifferentNamespace(uint256,uint256,uint16) (runs: 2051, μ: 51046, ~: 51254) LibOpGetNPTest:testLibOpGetNPRunUnset(uint256,uint16) (runs: 2051, μ: 24523, ~: 24528) -LibOpGmTest:testOpGmEval() (gas: 425044) +LibOpGmTest:testOpGmEval() (gas: 427051) LibOpGmTest:testOpGmEvalOperandDisallowed() (gas: 17695) LibOpGmTest:testOpGmIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13878, ~: 13848) LibOpGmTest:testOpGmOneInput() (gas: 36120) -LibOpGmTest:testOpGmRun(uint256,uint256,uint16) (runs: 2051, μ: 23534, ~: 23449) +LibOpGmTest:testOpGmRun(uint256,uint256,uint16) (runs: 2051, μ: 23530, ~: 23449) LibOpGmTest:testOpGmThreeInputs() (gas: 45426) LibOpGmTest:testOpGmTwoOutputs() (gas: 41009) LibOpGmTest:testOpGmZeroOutputs() (gas: 39989) -LibOpGreaterThanNPTest:testOpGreaterThanNPEval2InputsBothOne() (gas: 57851) -LibOpGreaterThanNPTest:testOpGreaterThanNPEval2InputsFirstOneSecondZero() (gas: 58716) -LibOpGreaterThanNPTest:testOpGreaterThanNPEval2InputsFirstZeroSecondOne() (gas: 58715) -LibOpGreaterThanNPTest:testOpGreaterThanNPEval2ZeroInputs() (gas: 57828) +LibOpGreaterThanNPTest:testOpGreaterThanNPEval2InputsBothOne() (gas: 58074) +LibOpGreaterThanNPTest:testOpGreaterThanNPEval2InputsFirstOneSecondZero() (gas: 58939) +LibOpGreaterThanNPTest:testOpGreaterThanNPEval2InputsFirstZeroSecondOne() (gas: 58938) +LibOpGreaterThanNPTest:testOpGreaterThanNPEval2ZeroInputs() (gas: 58051) LibOpGreaterThanNPTest:testOpGreaterThanNPEvalFail0Inputs() (gas: 30388) LibOpGreaterThanNPTest:testOpGreaterThanNPEvalFail1Input() (gas: 34700) LibOpGreaterThanNPTest:testOpGreaterThanNPEvalFail3Inputs() (gas: 43020) -LibOpGreaterThanNPTest:testOpGreaterThanNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19423, ~: 19504) +LibOpGreaterThanNPTest:testOpGreaterThanNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19414, ~: 19471) LibOpGreaterThanNPTest:testOpGreaterThanNPRun(uint256,uint256) (runs: 2051, μ: 16567, ~: 16563) LibOpGreaterThanNPTest:testOpGreaterThanNPTwoOutputs() (gas: 42410) LibOpGreaterThanNPTest:testOpGreaterThanNPZeroOutputs() (gas: 41409) -LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEval2InputsBothOne() (gas: 58956) -LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEval2InputsFirstOneSecondZero() (gas: 59819) -LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEval2InputsFirstZeroSecondOne() (gas: 59841) -LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEval2ZeroInputs() (gas: 58936) +LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEval2InputsBothOne() (gas: 59179) +LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEval2InputsFirstOneSecondZero() (gas: 60042) +LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEval2InputsFirstZeroSecondOne() (gas: 60064) +LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEval2ZeroInputs() (gas: 59159) LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEvalFail0Inputs() (gas: 31371) LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEvalFail1Input() (gas: 35743) LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEvalFail3Inputs() (gas: 44106) @@ -358,79 +358,79 @@ LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPIntegrityHappy((uint LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPRun(uint256,uint256) (runs: 2051, μ: 16574, ~: 16570) LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPTwoOutputs() (gas: 43581) LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPZeroOutputs() (gas: 42357) -LibOpHashNPTest:testOpHashNPEval0Inputs() (gas: 46118) -LibOpHashNPTest:testOpHashNPEval1Input() (gas: 54690) -LibOpHashNPTest:testOpHashNPEval2Inputs() (gas: 62910) -LibOpHashNPTest:testOpHashNPEval2InputsDifferent() (gas: 63603) -LibOpHashNPTest:testOpHashNPEval2InputsOtherStack() (gas: 78484) -LibOpHashNPTest:testOpHashNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19478, ~: 19527) +LibOpHashNPTest:testOpHashNPEval0Inputs() (gas: 46341) +LibOpHashNPTest:testOpHashNPEval1Input() (gas: 54913) +LibOpHashNPTest:testOpHashNPEval2Inputs() (gas: 63133) +LibOpHashNPTest:testOpHashNPEval2InputsDifferent() (gas: 63826) +LibOpHashNPTest:testOpHashNPEval2InputsOtherStack() (gas: 78707) +LibOpHashNPTest:testOpHashNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19484, ~: 19537) LibOpHashNPTest:testOpHashNPRun(uint256[]) (runs: 2048, μ: 19321, ~: 19429) LibOpHashNPTest:testOpHashNPTwoOutputs() (gas: 30856) LibOpHashNPTest:testOpHashNPZeroOutputs() (gas: 29423) -LibOpHeadroomTest:testOpHeadroomEval() (gas: 251429) +LibOpHeadroomTest:testOpHeadroomEval() (gas: 252767) LibOpHeadroomTest:testOpHeadroomEvalOperandDisallowed() (gas: 18181) LibOpHeadroomTest:testOpHeadroomIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13834, ~: 13804) -LibOpHeadroomTest:testOpHeadroomRun(uint256,uint16) (runs: 2051, μ: 20309, ~: 20513) +LibOpHeadroomTest:testOpHeadroomRun(uint256,uint16) (runs: 2051, μ: 20308, ~: 20513) LibOpHeadroomTest:testOpHeadroomTwoInputs() (gas: 40800) LibOpHeadroomTest:testOpHeadroomTwoOutputs() (gas: 36432) LibOpHeadroomTest:testOpHeadroomZeroInputs() (gas: 30526) LibOpHeadroomTest:testOpHeadroomZeroOutputs() (gas: 35404) -LibOpIfNPTest:testOpIfNPEval3InputsFirstOneSecondTwoThirdThree() (gas: 64356) -LibOpIfNPTest:testOpIfNPEval3InputsFirstOneSecondZeroThirdThree() (gas: 64313) -LibOpIfNPTest:testOpIfNPEval3InputsFirstTwoSecondThreeThirdFour() (gas: 64312) -LibOpIfNPTest:testOpIfNPEval3InputsFirstTwoSecondZeroThirdFour() (gas: 64333) -LibOpIfNPTest:testOpIfNPEval3InputsFirstZeroSecondOneThirdTwo() (gas: 64355) -LibOpIfNPTest:testOpIfNPEval3InputsFirstZeroSecondOneThirdZero() (gas: 63403) -LibOpIfNPTest:testOpIfNPEval3InputsFirstZeroSecondZeroThirdOne() (gas: 63314) -LibOpIfNPTest:testOpIfNPEval3InputsFirstZeroSecondZeroThirdThree() (gas: 63336) -LibOpIfNPTest:testOpIfNPEvalEmptyStringTruthy() (gas: 63302) +LibOpIfNPTest:testOpIfNPEval3InputsFirstOneSecondTwoThirdThree() (gas: 64579) +LibOpIfNPTest:testOpIfNPEval3InputsFirstOneSecondZeroThirdThree() (gas: 64536) +LibOpIfNPTest:testOpIfNPEval3InputsFirstTwoSecondThreeThirdFour() (gas: 64535) +LibOpIfNPTest:testOpIfNPEval3InputsFirstTwoSecondZeroThirdFour() (gas: 64556) +LibOpIfNPTest:testOpIfNPEval3InputsFirstZeroSecondOneThirdTwo() (gas: 64578) +LibOpIfNPTest:testOpIfNPEval3InputsFirstZeroSecondOneThirdZero() (gas: 63626) +LibOpIfNPTest:testOpIfNPEval3InputsFirstZeroSecondZeroThirdOne() (gas: 63537) +LibOpIfNPTest:testOpIfNPEval3InputsFirstZeroSecondZeroThirdThree() (gas: 63559) +LibOpIfNPTest:testOpIfNPEvalEmptyStringTruthy() (gas: 63525) LibOpIfNPTest:testOpIfNPEvalFail0Inputs() (gas: 29547) LibOpIfNPTest:testOpIfNPEvalFail1Input() (gas: 33910) LibOpIfNPTest:testOpIfNPEvalFail2Inputs() (gas: 38088) LibOpIfNPTest:testOpIfNPEvalFail4Inputs() (gas: 46390) LibOpIfNPTest:testOpIfNPEvalTwoOutputs() (gas: 46706) LibOpIfNPTest:testOpIfNPEvalZeroOutputs() (gas: 45641) -LibOpIfNPTest:testOpIfNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19428, ~: 19477) +LibOpIfNPTest:testOpIfNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19423, ~: 19477) LibOpIfNPTest:testOpIfNPRun(uint256,uint256,uint256) (runs: 2051, μ: 16803, ~: 16803) LibOpInvTest:testOpExpEvalOperandDisallowed() (gas: 17774) -LibOpInvTest:testOpInvEval() (gas: 170298) +LibOpInvTest:testOpInvEval() (gas: 171190) LibOpInvTest:testOpInvIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13857, ~: 13827) -LibOpInvTest:testOpInvRun(uint256,uint16) (runs: 2051, μ: 20339, ~: 20544) +LibOpInvTest:testOpInvRun(uint256,uint16) (runs: 2051, μ: 20338, ~: 20544) LibOpInvTest:testOpInvTwoInputs() (gas: 40416) LibOpInvTest:testOpInvTwoOutputs() (gas: 36005) LibOpInvTest:testOpInvZeroInputs() (gas: 30122) LibOpInvTest:testOpInvZeroOutputs() (gas: 35001) -LibOpIsZeroNPTest:testOpIsZeroNPEval1NonZeroInput() (gas: 52286) -LibOpIsZeroNPTest:testOpIsZeroNPEval1ZeroInput() (gas: 51982) +LibOpIsZeroNPTest:testOpIsZeroNPEval1NonZeroInput() (gas: 52509) +LibOpIsZeroNPTest:testOpIsZeroNPEval1ZeroInput() (gas: 52205) LibOpIsZeroNPTest:testOpIsZeroNPEvalFail0Inputs() (gas: 29960) LibOpIsZeroNPTest:testOpIsZeroNPEvalFail2Inputs() (gas: 38437) -LibOpIsZeroNPTest:testOpIsZeroNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19545, ~: 19648) +LibOpIsZeroNPTest:testOpIsZeroNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19547, ~: 19612) LibOpIsZeroNPTest:testOpIsZeroNPRun(uint256) (runs: 2051, μ: 16268, ~: 16269) LibOpIsZeroNPTest:testOpIsZeroNPTwoOutputs() (gas: 36595) LibOpIsZeroNPTest:testOpIsZeroNPZeroOutputs() (gas: 35241) -LibOpLessThanNPTest:testOpLessThanNPEval2InputsBothOne() (gas: 56159) -LibOpLessThanNPTest:testOpLessThanNPEval2InputsFirstOneSecondZero() (gas: 57043) -LibOpLessThanNPTest:testOpLessThanNPEval2InputsFirstZeroSecondOne() (gas: 57042) -LibOpLessThanNPTest:testOpLessThanNPEval2ZeroInputs() (gas: 56179) -LibOpLessThanNPTest:testOpLessThanNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19466, ~: 19520) -LibOpLessThanNPTest:testOpLessThanNPRun(uint256,uint256) (runs: 2051, μ: 16552, ~: 16548) +LibOpLessThanNPTest:testOpLessThanNPEval2InputsBothOne() (gas: 56382) +LibOpLessThanNPTest:testOpLessThanNPEval2InputsFirstOneSecondZero() (gas: 57266) +LibOpLessThanNPTest:testOpLessThanNPEval2InputsFirstZeroSecondOne() (gas: 57265) +LibOpLessThanNPTest:testOpLessThanNPEval2ZeroInputs() (gas: 56402) +LibOpLessThanNPTest:testOpLessThanNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19465, ~: 19520) +LibOpLessThanNPTest:testOpLessThanNPRun(uint256,uint256) (runs: 2051, μ: 16553, ~: 16558) LibOpLessThanNPTest:testOpLessThanNPTwoOutputs() (gas: 42448) LibOpLessThanNPTest:testOpLessThanNPZeroOutputs() (gas: 40504) LibOpLessThanNPTest:testOpLessThanToNPEvalFail0Inputs() (gas: 30168) LibOpLessThanNPTest:testOpLessThanToNPEvalFail1Input() (gas: 34425) LibOpLessThanNPTest:testOpLessThanToNPEvalFail3Inputs() (gas: 42829) -LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEval2InputsBothOne() (gas: 57110) -LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEval2InputsFirstOneSecondZero() (gas: 58018) -LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEval2InputsFirstZeroSecondOne() (gas: 58019) -LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEval2ZeroInputs() (gas: 57154) +LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEval2InputsBothOne() (gas: 57333) +LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEval2InputsFirstOneSecondZero() (gas: 58241) +LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEval2InputsFirstZeroSecondOne() (gas: 58242) +LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEval2ZeroInputs() (gas: 57377) LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEvalFail0Inputs() (gas: 31117) LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEvalFail1Input() (gas: 35449) LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEvalFail3Inputs() (gas: 43874) -LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19474, ~: 19596) +LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19472, ~: 19512) LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPRun(uint256,uint256) (runs: 2051, μ: 16582, ~: 16587) LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPTwoOutputs() (gas: 43181) LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPZeroOutputs() (gas: 42094) -LibOpLinearGrowthTest:testOpLinearGrowthEval() (gas: 652595) +LibOpLinearGrowthTest:testOpLinearGrowthEval() (gas: 655271) LibOpLinearGrowthTest:testOpLinearGrowthEvalFourInputs() (gas: 52188) LibOpLinearGrowthTest:testOpLinearGrowthEvalOneInput() (gas: 36169) LibOpLinearGrowthTest:testOpLinearGrowthEvalOperandDisallowed() (gas: 18562) @@ -439,212 +439,212 @@ LibOpLinearGrowthTest:testOpLinearGrowthEvalTwoOutputs() (gas: 47661) LibOpLinearGrowthTest:testOpLinearGrowthEvalZeroInputs() (gas: 30567) LibOpLinearGrowthTest:testOpLinearGrowthEvalZeroOutputs() (gas: 46593) LibOpLinearGrowthTest:testOpLinearGrowthIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13836, ~: 13806) -LibOpLinearGrowthTest:testOpLinearGrowthRun(uint256,uint256,uint256,uint16) (runs: 2051, μ: 23717, ~: 23623) -LibOpLnTest:testOpLnEval() (gas: 233536) +LibOpLinearGrowthTest:testOpLinearGrowthRun(uint256,uint256,uint256,uint16) (runs: 2051, μ: 23723, ~: 23623) +LibOpLnTest:testOpLnEval() (gas: 234651) LibOpLnTest:testOpLnEvalOperandDisallowed() (gas: 17694) LibOpLnTest:testOpLnIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13857, ~: 13827) -LibOpLnTest:testOpLnRun(uint256,uint16) (runs: 2051, μ: 33288, ~: 33302) +LibOpLnTest:testOpLnRun(uint256,uint16) (runs: 2051, μ: 33279, ~: 33302) LibOpLnTest:testOpLnTwoInputs() (gas: 40314) LibOpLnTest:testOpLnTwoOutputs() (gas: 35968) LibOpLnTest:testOpLnZeroInputs() (gas: 30020) LibOpLnTest:testOpLnZeroOutputs() (gas: 34899) -LibOpLog10Test:testOpLog10Eval() (gas: 283610) +LibOpLog10Test:testOpLog10Eval() (gas: 284948) LibOpLog10Test:testOpLog10EvalOperandDisallowed() (gas: 17937) LibOpLog10Test:testOpLog10Integrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13879, ~: 13849) -LibOpLog10Test:testOpLog10Run(uint256,uint16) (runs: 2051, μ: 36853, ~: 36877) +LibOpLog10Test:testOpLog10Run(uint256,uint16) (runs: 2051, μ: 36858, ~: 36877) LibOpLog10Test:testOpLog10TwoInputs() (gas: 40600) LibOpLog10Test:testOpLog10TwoOutputs() (gas: 36168) LibOpLog10Test:testOpLog10ZeroInputs() (gas: 30261) LibOpLog10Test:testOpLog10ZeroOutputs() (gas: 35141) -LibOpLog2Test:testOpLog2Eval() (gas: 273478) +LibOpLog2Test:testOpLog2Eval() (gas: 274816) LibOpLog2Test:testOpLog2EvalOperandDisallowed() (gas: 17856) LibOpLog2Test:testOpLog2Integrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13834, ~: 13804) -LibOpLog2Test:testOpLog2Run(uint256) (runs: 2051, μ: 32994, ~: 33036) +LibOpLog2Test:testOpLog2Run(uint256) (runs: 2051, μ: 32990, ~: 33036) LibOpLog2Test:testOpLog2TwoInputs() (gas: 40488) LibOpLog2Test:testOpLog2TwoOutputs() (gas: 36120) LibOpLog2Test:testOpLog2ZeroInputs() (gas: 30193) LibOpLog2Test:testOpLog2ZeroOutputs() (gas: 35091) -LibOpMaxTest:testOpMaxEval2InputsHappy() (gas: 556915) -LibOpMaxTest:testOpMaxEval3InputsHappy() (gas: 1883281) +LibOpMaxTest:testOpMaxEval2InputsHappy() (gas: 559591) +LibOpMaxTest:testOpMaxEval3InputsHappy() (gas: 1891309) LibOpMaxTest:testOpMaxEvalOneInput() (gas: 127927) LibOpMaxTest:testOpMaxEvalOperandDisallowed() (gas: 59987) LibOpMaxTest:testOpMaxEvalTwoOutputs() (gas: 41170) LibOpMaxTest:testOpMaxEvalZeroInputs() (gas: 30158) -LibOpMaxTest:testOpMaxIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17963, ~: 17974) +LibOpMaxTest:testOpMaxIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17968, ~: 17978) LibOpMaxTest:testOpMaxIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13778, ~: 13625) LibOpMaxTest:testOpMaxIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13776, ~: 13623) -LibOpMaxTest:testOpMaxRun(uint256[]) (runs: 2048, μ: 20920, ~: 21069) -LibOpMaxUint256NPTest:testOpMaxUint256NPEval() (gas: 46468) +LibOpMaxTest:testOpMaxRun(uint256[]) (runs: 2048, μ: 20920, ~: 21045) +LibOpMaxUint256NPTest:testOpMaxUint256NPEval() (gas: 46691) LibOpMaxUint256NPTest:testOpMaxUint256NPEvalFail() (gas: 34445) -LibOpMaxUint256NPTest:testOpMaxUint256NPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19450, ~: 19502) +LibOpMaxUint256NPTest:testOpMaxUint256NPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19445, ~: 19512) LibOpMaxUint256NPTest:testOpMaxUint256NPRun() (gas: 15866) LibOpMaxUint256NPTest:testOpMaxUint256NPTwoOutputs() (gas: 31232) LibOpMaxUint256NPTest:testOpMaxUint256NPZeroOutputs() (gas: 30140) -LibOpMinTest:testOpMinEval2InputsHappy() (gas: 556920) -LibOpMinTest:testOpMinEval3InputsHappy() (gas: 3314763) +LibOpMinTest:testOpMinEval2InputsHappy() (gas: 559596) +LibOpMinTest:testOpMinEval3InputsHappy() (gas: 3329035) LibOpMinTest:testOpMinEvalOneInput() (gas: 127863) LibOpMinTest:testOpMinEvalOperandDisallowed() (gas: 59966) LibOpMinTest:testOpMinEvalZeroInputs() (gas: 30163) -LibOpMinTest:testOpMinIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17978, ~: 17983) +LibOpMinTest:testOpMinIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17983, ~: 17987) LibOpMinTest:testOpMinIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13775, ~: 13622) LibOpMinTest:testOpMinIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13798, ~: 13645) -LibOpMinTest:testOpMinRun(uint256[],uint16) (runs: 2048, μ: 20911, ~: 20764) -LibOpModTest:testOpModEval2InputsHappy() (gas: 794359) -LibOpModTest:testOpModEval2InputsUnhappy() (gas: 142359) -LibOpModTest:testOpModEval3InputsHappy() (gas: 1539369) -LibOpModTest:testOpModEval3InputsUnhappy() (gas: 469560) +LibOpMinTest:testOpMinRun(uint256[],uint16) (runs: 2048, μ: 20910, ~: 20764) +LibOpModTest:testOpModEval2InputsHappy() (gas: 798150) +LibOpModTest:testOpModEval2InputsUnhappy() (gas: 143028) +LibOpModTest:testOpModEval3InputsHappy() (gas: 1545836) +LibOpModTest:testOpModEval3InputsUnhappy() (gas: 471567) LibOpModTest:testOpModEvalOneInput() (gas: 127927) LibOpModTest:testOpModEvalOperandDisallowed() (gas: 60011) LibOpModTest:testOpModEvalTwoOutputs() (gas: 41168) LibOpModTest:testOpModEvalZeroInputs() (gas: 30156) LibOpModTest:testOpModEvalZeroOutputs() (gas: 40125) -LibOpModTest:testOpModIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17943, ~: 17947) +LibOpModTest:testOpModIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17939, ~: 17947) LibOpModTest:testOpModIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13777, ~: 13624) LibOpModTest:testOpModIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13755, ~: 13602) LibOpModTest:testOpModRun(uint256[]) (runs: 2048, μ: 21251, ~: 21667) LibOpMulTest:testOpDecimal18MulNPIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13799, ~: 13646) LibOpMulTest:testOpMulEvalOneInput() (gas: 126835) LibOpMulTest:testOpMulEvalOperandsDisallowed() (gas: 93473) -LibOpMulTest:testOpMulEvalThreeInputsHappy() (gas: 736833) -LibOpMulTest:testOpMulEvalThreeInputsUnhappyOverflow() (gas: 166924) -LibOpMulTest:testOpMulEvalTwoInputsHappy() (gas: 517507) -LibOpMulTest:testOpMulEvalTwoInputsUnhappyOverflow() (gas: 100627) +LibOpMulTest:testOpMulEvalThreeInputsHappy() (gas: 739955) +LibOpMulTest:testOpMulEvalThreeInputsUnhappyOverflow() (gas: 167593) +LibOpMulTest:testOpMulEvalTwoInputsHappy() (gas: 519960) +LibOpMulTest:testOpMulEvalTwoInputsUnhappyOverflow() (gas: 101073) LibOpMulTest:testOpMulEvalZeroInputs() (gas: 30179) -LibOpMulTest:testOpMulIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17925, ~: 17942) +LibOpMulTest:testOpMulIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17922, ~: 17930) LibOpMulTest:testOpMulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13798, ~: 13645) -LibOpMulTest:testOpMulRun(uint256[]) (runs: 2048, μ: 20817, ~: 18901) +LibOpMulTest:testOpMulRun(uint256[]) (runs: 2048, μ: 20827, ~: 18901) LibOpMulTest:testOpMulTwoOutputs() (gas: 41169) LibOpMulTest:testOpMulZeroOutputs() (gas: 40126) -LibOpPowTest:testOpPowEval() (gas: 426958) +LibOpPowTest:testOpPowEval() (gas: 428965) LibOpPowTest:testOpPowEvalOneInput() (gas: 35500) LibOpPowTest:testOpPowEvalOperandDisallowed() (gas: 17915) LibOpPowTest:testOpPowIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13856, ~: 13826) -LibOpPowTest:testOpPowRun(uint256,uint256) (runs: 2051, μ: 35395, ~: 37119) +LibOpPowTest:testOpPowRun(uint256,uint256) (runs: 2051, μ: 35207, ~: 37095) LibOpPowTest:testOpPowThreeInputs() (gas: 45635) LibOpPowTest:testOpPowTwoOutputs() (gas: 41243) LibOpPowTest:testOpPowZeroOutputs() (gas: 40196) -LibOpScale18DynamicTest:testOpScale18DynamicEval() (gas: 1672602) +LibOpScale18DynamicTest:testOpScale18DynamicEval() (gas: 1679738) LibOpScale18DynamicTest:testOpScale18DynamicEvalOneInput() (gas: 132030) LibOpScale18DynamicTest:testOpScale18DynamicEvalThreeInputs() (gas: 349735) LibOpScale18DynamicTest:testOpScale18DynamicEvalZeroInputs() (gas: 31415) -LibOpScale18DynamicTest:testOpScale18DynamicIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17898, ~: 17902) -LibOpScale18DynamicTest:testOpScale18DynamicRun(uint256,uint256,uint256,uint256) (runs: 2051, μ: 24547, ~: 24439) +LibOpScale18DynamicTest:testOpScale18DynamicIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17899, ~: 17906) +LibOpScale18DynamicTest:testOpScale18DynamicRun(uint256,uint256,uint256,uint256) (runs: 2051, μ: 24538, ~: 24439) LibOpScale18DynamicTest:testOpScale18DynamicTwoOutputs() (gas: 42396) LibOpScale18DynamicTest:testOpScale18DynamicZeroOutputs() (gas: 41371) -LibOpScale18Test:testOpScale18Eval() (gas: 1573503) +LibOpScale18Test:testOpScale18Eval() (gas: 1580639) LibOpScale18Test:testOpScale18EvalOneInput() (gas: 166647) LibOpScale18Test:testOpScale18EvalZeroInputs() (gas: 34595) -LibOpScale18Test:testOpScale18Integrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17843, ~: 17874) -LibOpScale18Test:testOpScale18Run(uint256,uint256,uint256,uint256) (runs: 2051, μ: 24142, ~: 24241) +LibOpScale18Test:testOpScale18Integrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17851, ~: 17881) +LibOpScale18Test:testOpScale18Run(uint256,uint256,uint256,uint256) (runs: 2051, μ: 24136, ~: 24241) LibOpScale18Test:testOpScale18TwoOutputs() (gas: 40481) LibOpScale18Test:testOpScale18ZeroOutputs() (gas: 39452) -LibOpScale18Test:testOpUint256ToDecimal18Eval() (gas: 179879) -LibOpScaleNDynamicTest:testOpScaleNDynamicEval() (gas: 1670271) +LibOpScale18Test:testOpUint256ToDecimal18Eval() (gas: 180771) +LibOpScaleNDynamicTest:testOpScaleNDynamicEval() (gas: 1677407) LibOpScaleNDynamicTest:testOpScaleNDynamicEvalOneInput() (gas: 131523) LibOpScaleNDynamicTest:testOpScaleNDynamicEvalThreeInputs() (gas: 349000) LibOpScaleNDynamicTest:testOpScaleNDynamicEvalZeroInputs() (gas: 31323) -LibOpScaleNDynamicTest:testOpScaleNDynamicIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17925, ~: 17916) -LibOpScaleNDynamicTest:testOpScaleNDynamicRun(uint256,uint256,uint256,uint256) (runs: 2051, μ: 22340, ~: 24087) +LibOpScaleNDynamicTest:testOpScaleNDynamicIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17917, ~: 17923) +LibOpScaleNDynamicTest:testOpScaleNDynamicRun(uint256,uint256,uint256,uint256) (runs: 2051, μ: 22331, ~: 24087) LibOpScaleNDynamicTest:testOpScaleNDynamicTwoOutputs() (gas: 42346) LibOpScaleNDynamicTest:testOpScaleNDynamicZeroOutputs() (gas: 41280) -LibOpScaleNTest:testOpDecimal18ToIntNPEval() (gas: 300810) -LibOpScaleNTest:testOpScaleNEval() (gas: 1549971) +LibOpScaleNTest:testOpDecimal18ToIntNPEval() (gas: 302371) +LibOpScaleNTest:testOpScaleNEval() (gas: 1557107) LibOpScaleNTest:testOpScaleNEvalOneInput() (gas: 163585) LibOpScaleNTest:testOpScaleNEvalZeroInputs() (gas: 33816) LibOpScaleNTest:testOpScaleNEvalZeroOutputs() (gas: 38715) -LibOpScaleNTest:testOpScaleNIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17863, ~: 17838) -LibOpScaleNTest:testOpScaleNRun(uint256,uint256,uint256,uint256) (runs: 2051, μ: 22173, ~: 24136) +LibOpScaleNTest:testOpScaleNIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17865, ~: 17885) +LibOpScaleNTest:testOpScaleNRun(uint256,uint256,uint256,uint256) (runs: 2051, μ: 22141, ~: 24136) LibOpScaleNTest:testOpScaleNTwoOutputs() (gas: 39741) LibOpSetNPTest:testLibOpSetNP(uint256,uint256) (runs: 2051, μ: 17584, ~: 17589) LibOpSetNPTest:testLibOpSetNPEvalOneInput() (gas: 34177) LibOpSetNPTest:testLibOpSetNPEvalOneOutput() (gas: 39732) LibOpSetNPTest:testLibOpSetNPEvalOperandsDisallowed() (gas: 57116) -LibOpSetNPTest:testLibOpSetNPEvalSetTwice() (gas: 77957) +LibOpSetNPTest:testLibOpSetNPEvalSetTwice() (gas: 78192) LibOpSetNPTest:testLibOpSetNPEvalThreeInputs() (gas: 44594) -LibOpSetNPTest:testLibOpSetNPEvalTwoInputs() (gas: 258154) +LibOpSetNPTest:testLibOpSetNPEvalTwoInputs() (gas: 259305) LibOpSetNPTest:testLibOpSetNPEvalTwoOutputs() (gas: 40392) LibOpSetNPTest:testLibOpSetNPEvalZeroInputs() (gas: 29394) -LibOpSetNPTest:testLibOpSetNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 20205, ~: 20262) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPEval() (gas: 892118) +LibOpSetNPTest:testLibOpSetNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 20201, ~: 20295) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPEval() (gas: 896578) LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailBadShiftAmount() (gas: 128896) LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoInputs() (gas: 44838) LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoOutputs() (gas: 40460) LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroInputs() (gas: 34587) LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroOutputs() (gas: 39431) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint8) (runs: 2051, μ: 19898, ~: 19948) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint8) (runs: 2051, μ: 19911, ~: 19915) LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityNoop((uint256,uint256,uint256,uint256[],uint256,bytes),uint8) (runs: 2051, μ: 14033, ~: 14009) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityZero((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 19175, ~: 19185) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityZero((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 19174, ~: 19187) LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPRun(uint256,uint8) (runs: 2051, μ: 16675, ~: 16675) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPEval() (gas: 1073724) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPEval() (gas: 1079076) LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityFailBadShiftAmount() (gas: 129440) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint8) (runs: 2051, μ: 19902, ~: 19865) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint8) (runs: 2050, μ: 19936, ~: 19936) LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityNoop((uint256,uint256,uint256,uint256[],uint256,bytes),uint8) (runs: 2051, μ: 14001, ~: 13977) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityZero((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17737, ~: 17722) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityZero((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17741, ~: 17722) LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPRun(uint256,uint8) (runs: 2051, μ: 16722, ~: 16722) LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoInputs() (gas: 44917) LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoOutputs() (gas: 40563) LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroInputs() (gas: 34624) LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroOutputs() (gas: 39515) -LibOpSnapToUnitTest:testOpSnapToUnitEval() (gas: 624004) +LibOpSnapToUnitTest:testOpSnapToUnitEval() (gas: 626903) LibOpSnapToUnitTest:testOpSnapToUnitEvalBad() (gas: 103480) LibOpSnapToUnitTest:testOpSnapToUnitEvalOperandDisallowed() (gas: 18483) LibOpSnapToUnitTest:testOpSnapToUnitEvalTwoOutputs() (gas: 41819) LibOpSnapToUnitTest:testOpSnapToUnitEvalZeroOutputs() (gas: 40797) LibOpSnapToUnitTest:testOpSnapToUnitIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13855, ~: 13825) -LibOpSnapToUnitTest:testOpSnapToUnitRun(uint256,uint256) (runs: 2051, μ: 20655, ~: 20331) -LibOpSqrtTest:testOpSqrtEval() (gas: 213703) +LibOpSnapToUnitTest:testOpSnapToUnitRun(uint256,uint256) (runs: 2051, μ: 20646, ~: 20331) +LibOpSqrtTest:testOpSqrtEval() (gas: 214818) LibOpSqrtTest:testOpSqrtEvalBad() (gas: 65750) LibOpSqrtTest:testOpSqrtEvalOperandDisallowed() (gas: 17834) LibOpSqrtTest:testOpSqrtEvalTwoOutputs() (gas: 36086) LibOpSqrtTest:testOpSqrtEvalZeroOutputs() (gas: 35058) LibOpSqrtTest:testOpSqrtIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13857, ~: 13827) -LibOpSqrtTest:testOpSqrtRun(uint256) (runs: 2051, μ: 21680, ~: 21976) -LibOpStackNPTest:testOpStackEval() (gas: 56127) -LibOpStackNPTest:testOpStackEvalSeveral() (gas: 88999) -LibOpStackNPTest:testOpStackNPIntegrity(bytes,uint256,uint256[],uint256) (runs: 2051, μ: 18682, ~: 18558) -LibOpStackNPTest:testOpStackNPIntegrityOOBStack(bytes,uint16,uint256[],uint16,uint256) (runs: 2051, μ: 19239, ~: 19252) +LibOpSqrtTest:testOpSqrtRun(uint256) (runs: 2051, μ: 21683, ~: 21976) +LibOpStackNPTest:testOpStackEval() (gas: 56349) +LibOpStackNPTest:testOpStackEvalSeveral() (gas: 89217) +LibOpStackNPTest:testOpStackNPIntegrity(bytes,uint256,uint256[],uint256) (runs: 2051, μ: 18687, ~: 18598) +LibOpStackNPTest:testOpStackNPIntegrityOOBStack(bytes,uint16,uint256[],uint16,uint256) (runs: 2051, μ: 19234, ~: 19252) LibOpStackNPTest:testOpStackNPMultipleOutputErrorSugared() (gas: 40192) LibOpStackNPTest:testOpStackNPMultipleOutputErrorUnsugared() (gas: 43149) -LibOpStackNPTest:testOpStackNPRun(uint256[][],uint256) (runs: 2051, μ: 2039471, ~: 1872230) +LibOpStackNPTest:testOpStackNPRun(uint256[][],uint256) (runs: 2051, μ: 2039473, ~: 1872230) LibOpStackNPTest:testOpStackNPZeroOutputErrorSugared() (gas: 38786) LibOpStackNPTest:testOpStackNPZeroOutputErrorUnsugared() (gas: 41709) -LibOpSubTest:testOpSubEval2InputsSaturatingUnderflow() (gas: 303114) -LibOpSubTest:testOpSubEval2InputsUnhappyUnderflow() (gas: 146429) -LibOpSubTest:testOpSubEval3InputsSaturatingUnderflow() (gas: 780209) -LibOpSubTest:testOpSubEval3InputsUnhappyUnderflow() (gas: 376552) +LibOpSubTest:testOpSubEval2InputsSaturatingUnderflow() (gas: 304452) +LibOpSubTest:testOpSubEval2InputsUnhappyUnderflow() (gas: 147098) +LibOpSubTest:testOpSubEval3InputsSaturatingUnderflow() (gas: 783331) +LibOpSubTest:testOpSubEval3InputsUnhappyUnderflow() (gas: 378113) LibOpSubTest:testOpSubEvalOneInput() (gas: 127814) LibOpSubTest:testOpSubEvalOneInputSaturating() (gas: 270666) -LibOpSubTest:testOpSubEvalThreeInputs() (gas: 221629) -LibOpSubTest:testOpSubEvalThreeInputsSaturating() (gas: 446217) -LibOpSubTest:testOpSubEvalTwoInputs() (gas: 330878) -LibOpSubTest:testOpSubEvalTwoInputsSaturating() (gas: 677012) +LibOpSubTest:testOpSubEvalThreeInputs() (gas: 222521) +LibOpSubTest:testOpSubEvalThreeInputsSaturating() (gas: 448001) +LibOpSubTest:testOpSubEvalTwoInputs() (gas: 332439) +LibOpSubTest:testOpSubEvalTwoInputsSaturating() (gas: 680134) LibOpSubTest:testOpSubEvalZeroInputs() (gas: 30130) LibOpSubTest:testOpSubEvalZeroInputsSaturating() (gas: 59323) -LibOpSubTest:testOpSubIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17981, ~: 17989) +LibOpSubTest:testOpSubIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17985, ~: 17993) LibOpSubTest:testOpSubIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13799, ~: 13646) LibOpSubTest:testOpSubIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13799, ~: 13646) -LibOpSubTest:testOpSubRun(uint256[]) (runs: 2048, μ: 15663, ~: 15258) +LibOpSubTest:testOpSubRun(uint256[]) (runs: 2048, μ: 15728, ~: 15258) LibOpTimestampNPTest:testOpBlockTimestampNPEvalFail() (gas: 65754) LibOpTimestampNPTest:testOpBlockTimestampNPTwoOutputs() (gas: 58730) LibOpTimestampNPTest:testOpBlockTimestampNPZeroOutputs() (gas: 56611) -LibOpTimestampNPTest:testOpTimestampNPEval(uint256) (runs: 2051, μ: 84657, ~: 84531) -LibOpTimestampNPTest:testOpTimestampNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19416, ~: 19480) -LibOpTimestampNPTest:testOpTimestampNPRun(uint256) (runs: 2051, μ: 20082, ~: 19956) -LibOpUint256DivTest:testOpUint256DivEval2InputsHappy() (gas: 805843) -LibOpUint256DivTest:testOpUint256DivEval2InputsUnhappy() (gas: 144302) -LibOpUint256DivTest:testOpUint256DivEval3InputsHappy() (gas: 1507506) -LibOpUint256DivTest:testOpUint256DivEval3InputsUnhappy() (gas: 475475) +LibOpTimestampNPTest:testOpTimestampNPEval(uint256) (runs: 2051, μ: 85106, ~: 84977) +LibOpTimestampNPTest:testOpTimestampNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19420, ~: 19460) +LibOpTimestampNPTest:testOpTimestampNPRun(uint256) (runs: 2051, μ: 20085, ~: 19956) +LibOpUint256DivTest:testOpUint256DivEval2InputsHappy() (gas: 809634) +LibOpUint256DivTest:testOpUint256DivEval2InputsUnhappy() (gas: 144971) +LibOpUint256DivTest:testOpUint256DivEval3InputsHappy() (gas: 1513750) +LibOpUint256DivTest:testOpUint256DivEval3InputsUnhappy() (gas: 477482) LibOpUint256DivTest:testOpUint256DivEvalOneInput() (gas: 131022) LibOpUint256DivTest:testOpUint256DivEvalOperandDisallowed() (gas: 62603) LibOpUint256DivTest:testOpUint256DivEvalTwoOutputs() (gas: 41796) LibOpUint256DivTest:testOpUint256DivEvalZeroInputs() (gas: 30806) LibOpUint256DivTest:testOpUint256DivEvalZeroOutputs() (gas: 40774) -LibOpUint256DivTest:testOpUint256DivIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17942, ~: 17951) +LibOpUint256DivTest:testOpUint256DivIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17942, ~: 17945) LibOpUint256DivTest:testOpUint256DivIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13819, ~: 13666) LibOpUint256DivTest:testOpUint256DivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13775, ~: 13622) LibOpUint256DivTest:testOpUint256DivRun(uint256[]) (runs: 2048, μ: 21211, ~: 21625) LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalFourInputs() (gas: 56516) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalHappy(uint256) (runs: 2051, μ: 69961, ~: 69961) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalHappy(uint256) (runs: 2051, μ: 70184, ~: 70184) LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalOneInput() (gas: 37900) LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalOperandDisallowed() (gas: 19439) LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalTwoInputs() (gas: 44165) @@ -653,7 +653,7 @@ LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalZeroInputs() (gas: 3176 LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalZeroOutputs() (gas: 50142) LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13837, ~: 13807) LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPRun(address,address,address,uint256) (runs: 2051, μ: 24285, ~: 24285) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalHappy(uint256) (runs: 2051, μ: 63010, ~: 63010) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalHappy(uint256) (runs: 2051, μ: 63233, ~: 63233) LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalOneInput() (gas: 37960) LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalOperandDisallowed() (gas: 19520) LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalThreeInputs() (gas: 50082) @@ -662,7 +662,7 @@ LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalZeroInputs() (gas: 3182 LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalZeroOutputs() (gas: 43909) LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13879, ~: 13849) LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPRun(address,address,uint256,uint16) (runs: 2051, μ: 23683, ~: 23683) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalHappy(uint256) (runs: 2051, μ: 56167, ~: 56167) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalHappy(uint256) (runs: 2051, μ: 56390, ~: 56390) LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalOperandDisallowed() (gas: 19726) LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalTwoInputs() (gas: 44430) LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalTwoOutputs() (gas: 38811) @@ -670,8 +670,8 @@ LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalZeroInputs() (gas: LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalZeroOutputs() (gas: 37742) LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2051, μ: 13859, ~: 13829) LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPRun(address,uint256,uint16) (runs: 2051, μ: 22945, ~: 22945) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2051, μ: 103945, ~: 104109) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19432, ~: 19479) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2051, μ: 104172, ~: 104332) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2051, μ: 19430, ~: 19460) LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail0() (gas: 31441) LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail1() (gas: 35815) LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail3() (gas: 45130) @@ -684,22 +684,22 @@ LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroInputs() (gas: 31869) LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroOutputs() (gas: 40627) LibOpUint256MulTest:testOpUint256MulEvalOneInput() (gas: 130563) LibOpUint256MulTest:testOpUint256MulEvalOperandsDisallowed() (gas: 97362) -LibOpUint256MulTest:testOpUint256MulEvalThreeInputsHappy() (gas: 1065535) -LibOpUint256MulTest:testOpUint256MulEvalThreeInputsUnhappy() (gas: 657339) -LibOpUint256MulTest:testOpUint256MulEvalTwoInputsHappy() (gas: 430145) -LibOpUint256MulTest:testOpUint256MulEvalTwoInputsUnhappy() (gas: 143345) +LibOpUint256MulTest:testOpUint256MulEvalThreeInputsHappy() (gas: 1069995) +LibOpUint256MulTest:testOpUint256MulEvalThreeInputsUnhappy() (gas: 660015) +LibOpUint256MulTest:testOpUint256MulEvalTwoInputsHappy() (gas: 432152) +LibOpUint256MulTest:testOpUint256MulEvalTwoInputsUnhappy() (gas: 144014) LibOpUint256MulTest:testOpUint256MulEvalTwoOutputs() (gas: 41784) LibOpUint256MulTest:testOpUint256MulEvalZeroInputs() (gas: 30815) LibOpUint256MulTest:testOpUint256MulEvalZeroOutputs() (gas: 40786) -LibOpUint256MulTest:testOpUint256MulIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17989, ~: 17988) +LibOpUint256MulTest:testOpUint256MulIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17993, ~: 17995) LibOpUint256MulTest:testOpUint256MulIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13775, ~: 13622) LibOpUint256MulTest:testOpUint256MulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13799, ~: 13646) -LibOpUint256MulTest:testOpUint256MulRun(uint256[]) (runs: 2048, μ: 16347, ~: 15961) -LibOpUint256PowTest:testOpUint256ExpIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17931, ~: 17929) -LibOpUint256PowTest:testOpUint256PowEval2InputsHappy() (gas: 903478) -LibOpUint256PowTest:testOpUint256PowEval2InputsUnhappy() (gas: 145301) -LibOpUint256PowTest:testOpUint256PowEval3InputsHappy() (gas: 2098809) -LibOpUint256PowTest:testOpUint256PowEval3InputsUnhappy() (gas: 644994) +LibOpUint256MulTest:testOpUint256MulRun(uint256[]) (runs: 2048, μ: 16392, ~: 15961) +LibOpUint256PowTest:testOpUint256ExpIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2051, μ: 17929, ~: 17929) +LibOpUint256PowTest:testOpUint256PowEval2InputsHappy() (gas: 907715) +LibOpUint256PowTest:testOpUint256PowEval2InputsUnhappy() (gas: 145970) +LibOpUint256PowTest:testOpUint256PowEval3InputsHappy() (gas: 2107506) +LibOpUint256PowTest:testOpUint256PowEval3InputsUnhappy() (gas: 647670) LibOpUint256PowTest:testOpUint256PowEvalOneInput() (gas: 131211) LibOpUint256PowTest:testOpUint256PowEvalOperandDisallowed() (gas: 63205) LibOpUint256PowTest:testOpUint256PowEvalTwoOutputs() (gas: 41991) @@ -707,7 +707,7 @@ LibOpUint256PowTest:testOpUint256PowEvalZeroInputs() (gas: 31020) LibOpUint256PowTest:testOpUint256PowEvalZeroOutputs() (gas: 40904) LibOpUint256PowTest:testOpUint256PowIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13777, ~: 13624) LibOpUint256PowTest:testOpUint256PowIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2051, μ: 13755, ~: 13602) -LibOpUint256PowTest:testOpUint256PowRun(uint256[]) (runs: 2048, μ: 17679, ~: 17063) +LibOpUint256PowTest:testOpUint256PowRun(uint256[]) (runs: 2048, μ: 17697, ~: 17132) LibParseCommentsTest:testParseCommentAfterSources() (gas: 69470) LibParseCommentsTest:testParseCommentBetweenSources() (gas: 69548) LibParseCommentsTest:testParseCommentInIgnoredLHS() (gas: 42114) @@ -1102,12 +1102,14 @@ LibParseUnexpectedRightParenTest:testParseUnexpectedRightParen() (gas: 41612) LibParseUnexpectedRightParenTest:testParseUnexpectedRightParenNested() (gas: 47262) LibSubParseSubParserExternTest:testLibSubParseSubParserExtern(address,uint8,uint8,uint8,uint16,uint8) (runs: 2051, μ: 13169, ~: 13112) LibSubParseSubParserExternTest:testLibSubParseSubParserExternConstantsHeightOverflow(address,uint256,uint8,uint8,uint16,uint8) (runs: 2051, μ: 7949, ~: 7689) -RainterpreterExpressionDeployerNPE2DeployCheckTest:testRainterpreterExpressionDeployerDeployNoEIP1820() (gas: 9685169) -RainterpreterExpressionDeployerNPE2DescribedByMetaV1Test:testRainterpreterExpressionDeployerNPE2DescribedByMetaV1Happy() (gas: 9699268) -RainterpreterExpressionDeployerNPE2IERC165Test:testRainterpreterExpressionDeployerNPE2IERC165(bytes4) (runs: 2051, μ: 9692610, ~: 9692610) +RainterpreterExpressionDeployerNPE2DeployCheckTest:testRainterpreterExpressionDeployerDeployNoEIP1820() (gas: 9715204) +RainterpreterExpressionDeployerNPE2DescribedByMetaV1Test:testRainterpreterExpressionDeployerNPE2DescribedByMetaV1Happy() (gas: 9729306) +RainterpreterExpressionDeployerNPE2IERC165Test:testRainterpreterExpressionDeployerNPE2IERC165(bytes4) (runs: 2051, μ: 9722645, ~: 9722645) RainterpreterExpressionDeployerNPE2MetaTest:testRainterpreterExpressionDeployerNPE2ExpectedConstructionMetaHash() (gas: 6178) -RainterpreterNPE2IERC165Test:testRainterpreterNPE2IERC165(bytes4) (runs: 2051, μ: 4163919, ~: 4163919) -RainterpreterNPE2PointersTest:testOpcodeFunctionPointers() (gas: 4172125) +RainterpreterNPE2IERC165Test:testRainterpreterNPE2IERC165(bytes4) (runs: 2051, μ: 4193987, ~: 4193987) +RainterpreterNPE2PointersTest:testOpcodeFunctionPointers() (gas: 4202193) +RainterpreterNPE2StateOverlayTest:testStateOverlayGet() (gas: 52283) +RainterpreterNPE2StateOverlayTest:testStateOverlaySet() (gas: 83333) RainterpreterNPE2Test:testRainterpreterNPE2OddFunctionPointersLength() (gas: 3695) RainterpreterParserNPE2IERC165Test:testRainterpreterParserNPE2IERC165(bytes4) (runs: 2051, μ: 3793588, ~: 3793588) RainterpreterParserNPE2ParserPragma:testParsePragmaNoPragma() (gas: 18941509) @@ -1116,16 +1118,16 @@ RainterpreterParserNPE2ParserPragma:testParsePragmaWithInterstitial() (gas: 1141 RainterpreterParserNPE2PointersTest:testLiteralParserFunctionPointers() (gas: 3791002) RainterpreterParserNPE2PointersTest:testOperandHandlerFunctionPointers() (gas: 3800200) RainterpreterParserNPE2PointersTest:testParserParseMeta() (gas: 5488449) -RainterpreterReferenceExternNPE2ContextRainlenTest:testRainterpreterReferenceExterNPE2ContextRainlenHappy() (gas: 1741413) -RainterpreterReferenceExternNPE2ContextSenderTest:testRainterpreterReferenceExterNPE2ContextContractHappy() (gas: 1741020) -RainterpreterReferenceExternNPE2ContextSenderTest:testRainterpreterReferenceExterNPE2ContextSenderHappy() (gas: 1739716) +RainterpreterReferenceExternNPE2ContextRainlenTest:testRainterpreterReferenceExterNPE2ContextRainlenHappy() (gas: 1741636) +RainterpreterReferenceExternNPE2ContextSenderTest:testRainterpreterReferenceExterNPE2ContextContractHappy() (gas: 1741243) +RainterpreterReferenceExternNPE2ContextSenderTest:testRainterpreterReferenceExterNPE2ContextSenderHappy() (gas: 1739939) RainterpreterReferenceExternNPE2DescribedByMetaV1:testRainterpreterReferenceExternNPE2DescribedByMetaV1Happy() (gas: 1662715) RainterpreterReferenceExternNPE2IERC165Test:testRainterpreterReferenceExternNPE2IERC165(bytes4) (runs: 2051, μ: 1667797, ~: 1667797) -RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncHappySugared() (gas: 1762633) -RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncHappyUnsugared() (gas: 1755925) +RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncHappySugared() (gas: 1762856) +RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncHappyUnsugared() (gas: 1756148) RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncIntegrity(uint256,uint256,uint256) (runs: 2051, μ: 3618, ~: 3618) -RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncRun(uint256,uint256[]) (runs: 2049, μ: 167232, ~: 153965) -RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncSubParseKnownWord(uint16,bytes1) (runs: 2051, μ: 1676563, ~: 1676836) +RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncRun(uint256,uint256[]) (runs: 2049, μ: 167328, ~: 153965) +RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncSubParseKnownWord(uint16,bytes1) (runs: 2051, μ: 1676562, ~: 1676836) RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncSubParseUnknownWord(uint16,bytes1,bytes) (runs: 2049, μ: 1672960, ~: 1672739) RainterpreterReferenceExternNPE2PointersTest:testIntegrityFunctionPointers() (gas: 1662748) RainterpreterReferenceExternNPE2PointersTest:testOpcodeFunctionPointers() (gas: 1662813) @@ -1133,8 +1135,8 @@ RainterpreterReferenceExternNPE2PointersTest:testSubParserFunctionPointers() (ga RainterpreterReferenceExternNPE2PointersTest:testSubParserLiteralParsers() (gas: 1662790) RainterpreterReferenceExternNPE2PointersTest:testSubParserOperandParsers() (gas: 1663263) RainterpreterReferenceExternNPE2PointersTest:testSubParserParseMeta() (gas: 21933) -RainterpreterReferenceExternNPE2RepeatTest:testRainterpreterReferenceExternNPE2RepeatHappy() (gas: 1792929) -RainterpreterReferenceExternNPE2StackOperandTest:testRainterpreterReferenceExternNPE2StackOperandSingle(uint256) (runs: 2051, μ: 1748688, ~: 1749088) +RainterpreterReferenceExternNPE2RepeatTest:testRainterpreterReferenceExternNPE2RepeatHappy() (gas: 1793375) +RainterpreterReferenceExternNPE2StackOperandTest:testRainterpreterReferenceExternNPE2StackOperandSingle(uint256) (runs: 2051, μ: 1748911, ~: 1749311) RainterpreterReferenceExternNPE2UnknownWordTest:testRainterpreterReferenceExternNPE2UnknownWord() (gas: 1710356) RainterpreterStoreNPE2IERC165Test:testRainterpreterStoreNPE2IERC165(bytes4) (runs: 2051, μ: 229944, ~: 229944) RainterpreterStoreNPE2Test:testRainterpreterStoreNPE2IERC165(uint32) (runs: 2051, μ: 229961, ~: 229961) diff --git a/src/concrete/RainterpreterNPE2.sol b/src/concrete/RainterpreterNPE2.sol index e4e52c145..3ff6e4dab 100644 --- a/src/concrete/RainterpreterNPE2.sol +++ b/src/concrete/RainterpreterNPE2.sol @@ -5,7 +5,7 @@ import {ERC165} from "openzeppelin-contracts/contracts/utils/introspection/ERC16 import {LibPointer, Pointer} from "rain.solmem/lib/LibPointer.sol"; import {LibStackPointer} from "rain.solmem/lib/LibStackPointer.sol"; import {LibUint256Array} from "rain.solmem/lib/LibUint256Array.sol"; -import {LibMemoryKV, MemoryKV} from "rain.lib.memkv/lib/LibMemoryKV.sol"; +import {LibMemoryKV, MemoryKV, MemoryKVKey, MemoryKVVal} from "rain.lib.memkv/lib/LibMemoryKV.sol"; import {LibCast} from "rain.lib.typecast/LibCast.sol"; import {LibDataContract} from "rain.datacontract/lib/LibDataContract.sol"; @@ -32,6 +32,11 @@ contract RainterpreterNPE2 is IInterpreterV4, IOpcodeToolingV1, ERC165 { InterpreterStateNP memory state = eval.bytecode.unsafeDeserializeNP( SourceIndexV2.unwrap(eval.sourceIndex), eval.namespace, eval.store, eval.context, OPCODE_FUNCTION_POINTERS ); + for (uint256 i = 0; i < eval.stateOverlay.length; i += 2) { + state.stateKV = LibMemoryKV.set( + state.stateKV, MemoryKVKey.wrap(eval.stateOverlay[i]), MemoryKVVal.wrap(eval.stateOverlay[i + 1]) + ); + } // We use the return by returning it. Slither false positive. //slither-disable-next-line unused-return return state.eval2(eval.inputs, type(uint256).max); diff --git a/src/generated/RainterpreterNPE2.pointers.sol b/src/generated/RainterpreterNPE2.pointers.sol index e4f4601f9..7fe8879ae 100644 --- a/src/generated/RainterpreterNPE2.pointers.sol +++ b/src/generated/RainterpreterNPE2.pointers.sol @@ -9,11 +9,11 @@ pragma solidity =0.8.25; /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0xc151eb26749192999fc129c91cc2cfe0b4d7720f8d970fdf7de1c441258996f6); +bytes32 constant BYTECODE_HASH = bytes32(0xa6ac22dde262b0ef8fb037d7003ec2d9f3d1ec699c541c8f2b30101ea353e53d); /// @dev The function pointers known to the interpreter for dynamic dispatch. /// By setting these as a constant they can be inlined into the interpreter /// and loaded at eval time for very low gas (~100) due to the compiler /// optimising it to a single `codecopy` to build the in memory bytes array. bytes constant OPCODE_FUNCTION_POINTERS = - hex"078a07db081d09e90ad00ae20af40b170b590bab0bbc0bcd0c6f0cac0d6a0e1a0e9e0fe111080d6a120412a6131e1357139013df13df1418147d155115a415b816111625163a1654165f1673168816c016e7176717b5180318511869188218d0190719151923193e1953196b1984199219a019ae19bc1a0a1a581aa61af41b0c1b0c1b231b511b511b681b971bec1bfa1bfa1c9e1d85"; + hex"08b3090309450b110bf80c0a0c1c0c3f0c810cd30ce40cf50d970dd40e920f420fc6110912300e92132c13ce1446147f14b815071507154015a5167916cc16e01739174d1762177c1787179b17b017e8180f188f18dd192b1979199119aa19f81a2f1a3d1a4b1a661a7b1a931aac1aba1ac81ad61ae41b321b801bce1c1c1c341c341c4b1c791c791c901cbf1d141d221d221dc61ead"; diff --git a/test/src/concrete/RainterpreterNPE2.stateOverlay.t.sol b/test/src/concrete/RainterpreterNPE2.stateOverlay.t.sol new file mode 100644 index 000000000..abad6499a --- /dev/null +++ b/test/src/concrete/RainterpreterNPE2.stateOverlay.t.sol @@ -0,0 +1,69 @@ +// SPDX-License-Identifier: CAL +pragma solidity =0.8.25; + +import {RainterpreterExpressionDeployerNPE2DeploymentTest} from + "test/abstract/RainterpreterExpressionDeployerNPE2DeploymentTest.sol"; +import {FullyQualifiedNamespace, StateNamespace} from "rain.interpreter.interface/interface/IInterpreterStoreV2.sol"; +import {EvalV4, SourceIndexV2} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; +import {LibNamespace} from "rain.interpreter.interface/lib/ns/LibNamespace.sol"; + +contract RainterpreterNPE2StateOverlayTest is RainterpreterExpressionDeployerNPE2DeploymentTest { + /// Show that state overlay can prewarm a get. + function testStateOverlayGet() external { + bytes memory bytecode = iDeployer.parse2("_: get(9);"); + + uint256 k = 9e18; + uint256 v = 42; + uint256[] memory stateOverlay = new uint256[](2); + stateOverlay[0] = k; + stateOverlay[1] = v; + + (uint256[] memory stack, uint256[] memory kvs) = iInterpreter.eval4( + EvalV4({ + store: iStore, + namespace: LibNamespace.qualifyNamespace(StateNamespace.wrap(0), address(this)), + bytecode: bytecode, + sourceIndex: SourceIndexV2.wrap(0), + context: new uint256[][](0), + inputs: new uint256[](0), + stateOverlay: stateOverlay + }) + ); + + assertEq(stack.length, 1); + assertEq(stack[0], v); + assertEq(kvs.length, 2); + assertEq(kvs[0], k); + assertEq(kvs[1], v); + } + + /// Show that state overlay can be overridden by a set in the bytecode. + function testStateOverlaySet() external { + bytes memory bytecode = iDeployer.parse2("_:get(9),:set(9 42),_:get(9);"); + + uint256 k = 9e18; + uint256 v = 43e18; + uint256[] memory stateOverlay = new uint256[](2); + stateOverlay[0] = k; + stateOverlay[1] = v; + + (uint256[] memory stack, uint256[] memory kvs) = iInterpreter.eval4( + EvalV4({ + store: iStore, + namespace: LibNamespace.qualifyNamespace(StateNamespace.wrap(0), address(this)), + bytecode: bytecode, + sourceIndex: SourceIndexV2.wrap(0), + context: new uint256[][](0), + inputs: new uint256[](0), + stateOverlay: stateOverlay + }) + ); + + assertEq(stack.length, 2); + assertEq(stack[0], 42e18); + assertEq(stack[1], v); + assertEq(kvs.length, 2); + assertEq(kvs[0], k); + assertEq(kvs[1], 42e18); + } +}