7=  java/lang/Object()V   java/util/concurrent/Executors newSingleThreadScheduledExecutor1()Ljava/util/concurrent/ScheduledExecutorService;  'net/luminis/quic/stream/FlowControlTestexecutor/Ljava/util/concurrent/ScheduledExecutorService;#net/luminis/quic/QuicConnectionImpl  org/mockito/Mockitomock%(Ljava/lang/Class;)Ljava/lang/Object;  conn%Lnet/luminis/quic/QuicConnectionImpl; #net/luminis/quic/stream/FlowControl "#$ %&net/luminis/quic/RoleClientLnet/luminis/quic/Role;' * +(Lnet/luminis/quic/Role;JJJJ)V-&net/luminis/quic/stream/QuicStreamImpl ,/ 0N(ILnet/luminis/quic/QuicConnectionImpl;Lnet/luminis/quic/stream/FlowControl;)V2java/lang/Long 6 78increaseFlowControlLimit!(Lnet/luminis/quic/QuicStream;J)J :;< =>org/assertj/core/api/Assertions assertThat,(J)Lorg/assertj/core/api/AbstractLongAssert; @AB C>'org/assertj/core/api/AbstractLongAssert isEqualToXdO#net/luminis/quic/frame/MaxDataFrame, NS T(J)V V WXprocess((Lnet/luminis/quic/frame/MaxDataFrame;)V\)net/luminis/quic/frame/MaxStreamDataFrame [^ _(IJ)V a Wb.(Lnet/luminis/quic/frame/MaxStreamDataFrame;)Vd1net/luminis/quic/stream/FlowControlUpdateListener f ghregisterS(Lnet/luminis/quic/QuicStream;Lnet/luminis/quic/stream/FlowControlUpdateListener;)V j klverify&(Ljava/lang/Object;)Ljava/lang/Object; n opanyInt()I cr ststreamNotBlocked(I)V v wxtimes.(I)Lorg/mockito/verification/VerificationMode; z k{Q(Ljava/lang/Object;Lorg/mockito/verification/VerificationMode;)Ljava/lang/Object;   streamOpened (Lnet/luminis/quic/QuicStream;)V   streamClosed call^(Lnet/luminis/quic/stream/FlowControl;)Lorg/assertj/core/api/ThrowableAssert$ThrowingCallable; : assertThatThrownByg(Lorg/assertj/core/api/ThrowableAssert$ThrowingCallable;)Lorg/assertj/core/api/AbstractThrowableAssert;net/luminis/quic/TransportError  ,org/assertj/core/api/AbstractThrowableAssert isInstanceOf8(Ljava/lang/Class;)Lorg/assertj/core/api/AbstractAssert;$net/luminis/quic/TransportParameters x TsetInitialMaxData TsetInitialMaxStreamDataUni T setInitialMaxStreamDataBidiLocal T!setInitialMaxStreamDataBidiRemote  updateInitialValues)(Lnet/luminis/quic/TransportParameters;)V " &Serverc  never-()Lorg/mockito/verification/VerificationMode;e2  getFlowControlBlockReasonD(Lnet/luminis/quic/QuicStream;)Lnet/luminis/quic/stream/BlockReason; : =G(Ljava/lang/Comparable;)Lorg/assertj/core/api/AbstractComparableAssert;  #net/luminis/quic/stream/BlockReason NOT_BLOCKED%Lnet/luminis/quic/stream/BlockReason;  C-org/assertj/core/api/AbstractComparableAssert9(Ljava/lang/Object;)Lorg/assertj/core/api/AbstractAssert;Y STREAM_DATA_BLOCKED  DATA_BLOCKED  getConnectionDataLimit()JCodeLineNumberTableLocalVariableTablethis)Lnet/luminis/quic/stream/FlowControlTest;initMockConnectionRuntimeVisibleAnnotations"Lorg/junit/jupiter/api/BeforeEach;'initialCreditsIsLimitedByInitialMaxDatainitialMaxDataIfc%Lnet/luminis/quic/stream/FlowControl;Lorg/junit/jupiter/api/Test;3initialCreditsClientInitiatedBidirectionalIsLimitedinitialServerMaxStreamDatastreamId3initialCreditsServerInitiatedBidirectionalIsLimited4initialCreditsClientInitiatedUnidirectionalIsLimited&streamsAreAllLimitedByTheSharedMaxData streamId1stream1Lnet/luminis/quic/QuicStream; streamId2stream2maxDataIncreasesStreamLimitstream%maxDataIncreaseIsSharedBetweenStreams!maxStreamDataIncreasesStreamLimit Exceptionsjava/lang/Exception$streamUnblocksWhenMaxDataIsIncreasedlistener3Lnet/luminis/quic/stream/FlowControlUpdateListener;java/lang/InterruptedException*streamUnblocksWhenMaxStreamDataIsIncreased9whenOutOfOrderMaxDataIsReceivedCurrentMaxDataIsNotReduced?whenOutOfOrderMaxStreamDataIsReceivedCurrentMaxDataIsNotReduced*maxStreamDataFrameForClosedStreamIsIgnored@maxStreamDataFrameForNeverOpenedStreamMustLeadToStreamStateError=maxStreamDataFrameForNeverOpenedRemoteInitiaedStreamIsIgnoredupdateInitialMaxDataupdateTransportParameters&Lnet/luminis/quic/TransportParameters;5whenInitialMaxDataIsUpdatedCurrentMaxDataIsNotReducedY!''):,Y*.359D?W678 ; =@>4A=9 7 ! A<=>Y!''):,Y*.359D?WBCD G I@J4A=9 7 ! B<=>Y!''):,Y*.359D?WNOP S!UAV4B>: 7!!* <=Y!)N6,Y*-.:6,Y*-.:-D59D?W-D59F?W-H59D?W-H59F?W2 Z[\]^._1`AcTdgezfgRsp.`1]AM d<=Y!)N6,Y*-.:-J59L?W-NYPRU-J59P?W-NYFRU-J59F?W. klmno-q@sNtavowx>|if-V< ,<=Y!)N6,Y*-.:6,Y*-.:-Y59Y?W-Y59L?W-NYHRU-F59F?W-F59Y?W6 |}~.1ATguR~.n1kA[ d<d=Y!)N6,Y*-.:-J59L?W-[YP]`-J59P?W& -@Pc>d`]JG-7 d<=>Y!):,Y*.:cc:eJ59L?WNYYRUicmqJ59Y?W2  -7@TcsH k-[7Q <d=>Y!):,Y*.:cc:eJ59L?W[YP]`uycmqJ59P?W2  -7@TdxH p-`7V u<=>Y!):,Y*.:|59D?WNY|RUNY~RU|59|?W*  .BQ`t>uqm kW.G w<=>Y!):,Y*.:|59D?W[Y|]`[Y~]`|59|?W*  .BRbv>wso mY.I ?Y!LLLL)L,Y*+.M+,+,+[Y|]`%*/> ?(% :Y!LLLL)L,Y*+.M+,+W%*59 :#%c 'Y!LLLL)L+[Y|]` & ' <=>Y!):,Y*.:|59~?WY:|59?W: .BKSZaho H| zf.VK9   1 <=>Y!):,Y*.:|59D?WNY|RUY:~59|?W>$%& ().*B,Q.Z/b0i1p2w3~45H u.eZ9    <=>Y!):,Y*.:|59D?WY:~|59~?W:9:; =>.?BAKBRCYD`EhFoGHH| zf.VK9    <=>Y!):,Y*.:|59D?WY:~|59~?W:LMN PQ.RBTKURVYWaXhYoZ[H| zf.VK9  2 <=>Y!):,Y*.:|59D?W[Y|]`Y:~|59|?W>_`a cd.eBgRi[jbkilqmxnopH v.f[9   <=>Y!):,Y*.:|59D?WY:~|59~?W:tuv xy.zB|K}R~ZahoH| zf.VK9   E<=>Y ):,Y*.:~579D?W" ,8DHEA= ;),8  E<=>Y ):,Y*.:~579D?W" ,8DHEA= ;),8  E<=>Y  ):,Y*.:~579D?W" ,8DHEA= ;),8  d<Y!LLL)M,Y*,.Ncc:,-e,-5X,[Y]`ycmq& '18APc4dbK'=13 e<Y!LLL)M,Y*,.Ncc:,-e,-5X,[Y]`uycmq& '18APd4ecL'>14) Y!LLLL)L,Y*+.MccN+,-e,Y*+.:cc:+e+,L5X+5X+NYRU-ycmquycmq6 %.4CMU^hv>%x.oCZMP 7Y!LLLL)L,Y*+.M+,N-òƶW%+6*7 %+  @Y!~LLL)L,Y*+.M+,Ѷ5X+,N-òӶW%.4?*@)%4  NY!L~~~)L,Y*+.M+,Ѷ5X+,N-òֶW+ٸ9L?W%.4? M *N7%)4  !:*[Y|]` "$%& './.2357 8:<