7  java/lang/Object()V   java/util/ObjectsrequireNonNull&(Ljava/lang/Object;)Ljava/lang/Object;  %net/luminis/quic/run/InteractiveShellbuilder/Lnet/luminis/quic/QuicClientConnection$Builder;  alpnLjava/lang/String;   httpVersion*Lnet/luminis/quic/run/KwikCli$HttpVersion;java/util/LinkedHashMap   !commandsLjava/util/Map; # $!history & ' setupCommands ) * initParams,$net/luminis/quic/TransportParametersА +/ 0(IIII)V 2 34params&Lnet/luminis/quic/TransportParameters;6help8 9:acceptF(Lnet/luminis/quic/run/InteractiveShell;)Ljava/util/function/Consumer; <=> ?@ java/util/Mapput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;Bset8E scid_length8Hconnect8Kclose8Nget8Qstop8Tping838Y server_params 8\cid_new 8_cid_next 8bcid_list 8e cid_retire 8h udp_rebind8k update_keys8n statistics8q!!8tquit8 <w xysize()I <{ |}entrySet()Ljava/util/Set;   java/util/Setstream()Ljava/util/stream/Stream; apply%()Ljava/util/function/BinaryOperator;  java/util/stream/Streamreduce9(Ljava/util/function/BinaryOperator;)Ljava/util/Optional;  java/util/OptionalorElsejava/util/Map$Entry getKey()Ljava/lang/Object; < N java/util/function/Consumer getValuejava/lang/String 9(Ljava/lang/Object;)Vjava/io/BufferedReaderjava/io/InputStreamReader  java/lang/SysteminLjava/io/InputStream; (Ljava/io/InputStream;)V (Ljava/io/Reader;)V outLjava/io/PrintStream;> This is the KWIK interactive shell. Type a command or 'help'.  java/io/PrintStreamprintln(Ljava/lang/String;)V  prompt  runningZ readLine()Ljava/lang/String; isBlank()Z split'(Ljava/lang/String;)[Ljava/lang/String; < }keySet test2(Ljava/lang/String;)Ljava/util/function/Predicate; filter9(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;  java/util/stream/CollectorstoList()Ljava/util/stream/Collector; collect0(Ljava/util/stream/Collector;)Ljava/lang/Object;java/util/List w N(I)Ljava/lang/Object; ylength  substring(I)Ljava/lang/String; trim!  startsWith(Ljava/lang/String;)Zjava/lang/Exception  error(Ljava/lang/Exception;)V   unknown java/io/IOException makeConcatWithConstants)(Ljava/io/IOException;)Ljava/lang/String;  java/lang/IntegerparseInt(Ljava/lang/String;)I*Connection timeout must be at least 100 msjava/lang/NumberFormatException4Connection timeout argument must be an integer value   !-net/luminis/quic/QuicClientConnection$Builderbuild-()Lnet/luminis/quic/QuicClientConnectionImpl; # $%quicConnection+Lnet/luminis/quic/QuicClientConnectionImpl; '() H*)net/luminis/quic/QuicClientConnectionImpl[(ILjava/lang/String;Lnet/luminis/quic/TransportParameters;Ljava/util/List;)Ljava/util/List; ', -.getUri()Ljava/net/URI;0 1"(Ljava/net/URI;)Ljava/lang/String; '4 K6Error: no connected 8 9: httpClientLjava/net/http/HttpClient; <=> ?@net/luminis/quic/run/KwikClicreateHttpClientn(Lnet/luminis/quic/run/KwikCli$HttpVersion;Lnet/luminis/quic/QuicClientConnection;Z)Ljava/net/http/HttpClient; 'B CDgetServerAddress()Ljava/net/InetSocketAddress; FGH IJjava/net/http/HttpRequest newBuilder%()Ljava/net/http/HttpRequest$Builder;L java/net/URINhttps PQR Sjava/net/InetSocketAddress getHostName PU VygetPort KX Yp(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V [\] ^_!java/net/http/HttpRequest$Builderuri3(Ljava/net/URI;)Ljava/net/http/HttpRequest$Builder; [a  b()Ljava/net/http/HttpRequest; def ghjava/time/Instantnow()Ljava/time/Instant; j kl createNewFile"(Ljava/lang/String;)Ljava/io/File; nop qr java/io/FiletoPath()Ljava/nio/file/Path; tuv wx'java/net/http/HttpResponse$BodyHandlersofFile>(Ljava/nio/file/Path;)Ljava/net/http/HttpResponse$BodyHandler; z{| }~java/net/http/HttpClient sendAsyncm(Ljava/net/http/HttpRequest;Ljava/net/http/HttpResponse$BodyHandler;)Ljava/util/concurrent/CompletableFuture; 92(Ljava/time/Instant;)Ljava/util/function/Consumer;  &java/util/concurrent/CompletableFuture thenAcceptG(Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture;  currentHttpGetResult(Ljava/util/concurrent/CompletableFuture;java/net/URISyntaxException )(Ljava/lang/Exception;)Ljava/lang/String;  cancel(Z)Z/  replace(CC)Ljava/lang/String; &(Ljava/lang/String;)Ljava/lang/String; n  n exists '(Ljava/lang/String;I)Ljava/lang/String;    isEmpty +  of.([Ljava/lang/Object;)Ljava/util/stream/Stream; ()Ljava/util/function/Function;  map8(Ljava/util/function/Function;)Ljava/util/stream/Stream;  toArray()[Ljava/lang/Object;  yintValueUExpected arguments: [] [] ' newConnectionIds(II)[[B  java/util/Arrays,  joining6(Ljava/lang/CharSequence;)Ljava/util/stream/Collector; Source (client) connection id's: ' getSourceConnectionIds()Ljava/util/Map;  comparingByKey()Ljava/util/Comparator;  sorted1(Ljava/util/Comparator;)Ljava/util/stream/Stream;8  forEach (Ljava/util/function/Consumer;)V%Destination (server) connection id's: ' getDestinationConnectionIds 8  'net/luminis/quic/run/InteractiveShell$12$SwitchMap$net$luminis$quic$cid$ConnectionIdStatus[I  y'net/luminis/quic/cid/ConnectionIdStatusordinal*.xjava/lang/RuntimeException  ' nextDestinationConnectionId()[B   net/luminis/tls/util/ByteUtils bytesToHex([B)Ljava/lang/String;! MCannot switch to next destination connect id, because there is none available  toInt'(Ljava/lang/String;)Ljava/lang/Integer; ' retireDestinationConnectionId(Ljava/lang/Integer;)V '  changeAddress"# ' T ' getPeerTransportParameters(()Lnet/luminis/quic/TransportParameters; +! "#getMaxIdleTimeout()J$% &(J)Ljava/lang/String; +( )#getInitialMaxData%%,Client transport parameters: . /print '1 2getTransportParameters 4 6\s+ 8 9:setClientParameter'(Ljava/lang/String;Ljava/lang/String;)V<CIncorrect parameters; should be .>Supported parameters: @ AprintSupportedParametersC- idle (idle timeout)E#- cids (active connection id limit)G%- maxstreamdata (receive buffer size)I- payload (max udp payload) K LyhashCodeNidle P QRequals(Ljava/lang/Object;)ZTcidsV maxStreamDataX maxstreamdataZpayload +\ ]^setMaxIdleTimeout(J)V +` absetActiveConnectionIdLimit(I)V d eftoLong$(Ljava/lang/String;)Ljava/lang/Long; hij k#java/lang/Long longValue +m n^setInitialMaxStreamData +p qbsetMaxUdpPayloadSizesnet/luminis/quic/Receiveru3Warning: client will read at most %d datagram bytes w xyvalueOf(I)Ljava/lang/Integer; { |}format9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;Parameter must be one of:& :(Lnet/luminis/quic/TransportParameters;)Ljava/lang/String;9Server transport parameters still unknown (no connection) ' getStats()Lnet/luminis/quic/Statistics;  connectionIdLength2(I)Lnet/luminis/quic/QuicClientConnection$Builder; '  updateKeys'  printStackTrace>  flush$Error: value not an integer; using 0 h  parseLong(Ljava/lang/String;)J h x(J)Ljava/lang/Long;%net/luminis/quic/cid/ConnectionIdInfo  getConnectionIdStatus+()Lnet/luminis/quic/cid/ConnectionIdStatus;  toString=(Lnet/luminis/quic/cid/ConnectionIdStatus;)Ljava/lang/String;  getConnectionId( J(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String;  java/time/DurationbetweenP(Ljava/time/temporal/Temporal;Ljava/time/temporal/Temporal;)Ljava/time/Duration;  java/net/http/HttpResponsebodyjava/nio/file/Path  xjava/nio/file/Files(Ljava/nio/file/Path;)J%.2f  #toMillisDz  xjava/lang/Float(F)Ljava/lang/Float;?1Get requested finished in %.2f sec (%s MB/s) : %s SignatureTLjava/util/Map;>;5Ljava/util/Map;\Ljava/util/concurrent/CompletableFuture;>;n(Lnet/luminis/quic/QuicClientConnection$Builder;Ljava/lang/String;Lnet/luminis/quic/run/KwikCli$HttpVersion;)VCodeLineNumberTableLocalVariableTablethis'Lnet/luminis/quic/run/InteractiveShell;repeatLastCommand lastCommandLjava/util/Map$Entry;argLocalVariableTypeTable;Ljava/util/Map$Entry; StackMapTablestart commandArgsLjava/lang/Exception;matchingCommandcommandFunctionLjava/util/function/Consumer;cmdmatchingCommandsLjava/util/List;cmdLineeLjava/io/IOException;Ljava/io/BufferedReader;1Ljava/util/function/Consumer;$Ljava/util/List; notANumber!Ljava/lang/NumberFormatException;connectionTimeoutIhttpGet serverAddressLjava/net/InetSocketAddress;requestLjava/net/http/HttpRequest;Ljava/time/Instant; sendResulthttpStopibaseNamefileLjava/io/File; ExceptionsintArgs[Ljava/lang/Object;argsnewConnectionIdCount retirePriorTo[[BprintConnectionIdsconnectionIdStatus)Lnet/luminis/quic/cid/ConnectionIdStatus;newConnectionId[BretireConnectionId changeUdpPortsendPing printParams parametersprintClientParamsnamevalueargLine[Ljava/lang/String;printServerParamsprintStatistics setScidLengthlambda$printConnectionIds$6(Ljava/util/Map$Entry;)Ventrylambda$printConnectionIds$5lambda$newConnectionIds$4cidlambda$newConnectionIds$3lambda$httpGet$22(Ljava/time/Instant;Ljava/net/http/HttpResponse;)VJspeedresponseLjava/net/http/HttpResponse;donedurationLjava/time/Duration;lambda$start$1'(Ljava/lang/String;Ljava/lang/String;)Zcommandlambda$repeatLastCommand$0A(Ljava/util/Map$Entry;Ljava/util/Map$Entry;)Ljava/util/Map$Entry;firstsecond SourceFileInteractiveShell.java NestMembersBootstrapMethods: ;<= >?"java/lang/invoke/LambdaMetafactory metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;B C 6F G 9I J L M HO P KR S U V X Y [ \ ^ _ a b d e g h  j k m n p q s t v w y z t@} ~ 122R  ./  $java/lang/invoke/StringConcatFactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;Error: Ok, connected to   Error:   %&(Ljava/net/http/HttpResponse;)V.dat.dat!Cannot create output file '.dat'   $  "  )Generated new (source) connection id's:   !  -Switched to next destination connection id: available commands: unknown command: Server idle time: Server initial max data: Server transport parameters: error:  :  InnerClasses%net/luminis/quic/QuicClientConnectionBuilder(net/luminis/quic/run/KwikCli$HttpVersion HttpVersionEntry BodyHandlers&java/net/http/HttpResponse$BodyHandler BodyHandler%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandlesLookup!  !$!$%349:(<*+W,W*+ *,*-*Y*Y"*%*(. <= >?@AC(D3E7G;H*<<<<*@*+Y<-.1 KL 'W*5*7;W*A*C;W*D*F;W*G*I;W*J*L;W*M*O;W*P*R;W*S*U;W*V*W;W*X*Z;W*[*];W*^*`;W*a*c;W*d*f;W*g*i;W*j*l;W*m*o;W*p*r;W*s*u;WROP$Q6RHSZTlU~VWXYZ[\]^ _2`DaVb WM*"vC*"z~M*,,e f,gLi , MM , LGYYL***ę+M,̚,ж2N*~-:\:*:,-:*";W :**-*ę*JM,  rmopr#s*t/u6v?wexpy}z|}~f !}I9?ei/ 9ei8 #B B H,t =+-+̚&+=d N** "*"**1&W*"+/N-2#'2cf F#$'(12?Qcfgs4( g ttp$B s KT*" *"3k *" 5*7***";7*"AMEKYM,O,T+WZ`Nc:*7-*+imsy:W*M, F(0<NTYn{H0QT-Y(n  n [ B *W    klm++ +L+/_LnY+M,,>!nY+M,,޻ Y+2 !/68APWY_*:%mm/>n J=>+J+Ҹ:2=2>:*":źʸ̹ CFJ &18CFHQR]bjrH&H ])  CB  [Ѷ*"ӹz~׹**"z~׹*&  (-6 G U Z [[B+./ #'+аY(+/37BB  ((*"M,,   !'# ((   E *"*+  & '  @*" *+6`(*~ʸ̹ .'/((t>*ı 23 E + 6 7  @*" :;q'*"M, $,'*>?@&A ''4y++-*"*"03 *13D EF I*K++ 98+5M,,2N,2:*-7;=*?* NOPQRS!T*U3V7X4 880 !A_%BDFH[ \]^$_ %9:*+N6-Jsc.uC1?3rS-MOF6@-SO660-UO&6 -WO6-YO6!4FFX*1*, [m*1*, _[*1*,cglI*1*, o*, ܤ,tYܸvSz~*?6 bdeghklnopt%u)w *** < "8 (*"*"M, z{|}'  4((Z*"*"3K* *+ W K*"*"M++ B-  u+vMv   Hefu+M    Hm1*+++  - 11 !m1*+++-11  " /* # $2*v  %&&jcM*,N+7Y-ƉnnSz: ::Y-ƉnSYSY+Sz 7: &  7:<AiRx'7(<jj)*f+ `,-A)(:dd  ./:+*w0 126+f345678`)9@AD9@ED9@HD9@KD9@ND9@QD9@TD9@WD9@ZD9@]D9@`D9@cD9@fD9@iD9@lD9@oD9@rD9@uD9@xD9{|99@999@9@B <@< [F t