7\  java/lang/Object()V   org/freertr/user/userUpgradeforcesI  cmdLorg/freertr/util/cmds;org/freertr/pipe/pipeProgress  org/freertr/util/cmdspipeLorg/freertr/pipe/pipeSide;  (Lorg/freertr/pipe/pipeSide;)V  consLorg/freertr/pipe/pipeProgress;! java/io/File # $(Ljava/lang/String;)V&org/freertr/cry/cryHashSha2512 % )*+ ,org/freertr/cry/cryHashGenericinit ./0 12org/freertr/cry/cryUtilshashFile1(Lorg/freertr/cry/cryHashGeneric;Ljava/io/File;)Z .4 56hash2hex4(Lorg/freertr/cry/cryHashGeneric;)Ljava/lang/String;8org/freertr/cry/cryHashSha3512 7; <=makeConcatWithConstants8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; ?@A BC org/freertr/pipe/pipeSide$modTypmodeLF"Lorg/freertr/pipe/pipeSide$modTyp; .E FGhashTextU(Lorg/freertr/cry/cryHashGeneric;Ljava/util/List;Lorg/freertr/pipe/pipeSide$modTyp;)Z IJK LMorg/freertr/cfg/cfgInit myPathName()Ljava/lang/String; O PQverExtLjava/lang/String;; IT UM getFileName W XMgetName Z [Mword]current _ `a readUpKeyA(Ljava/lang/String;Ljava/lang/String;)Lorg/freertr/cry/cryKeyRSA;cfailed to get current key! e f$errorh org/freertr/user/userUpgradeBlob g gk lputSelf nop qrjava/lang/Stringlength()I tuv wxorg/freertr/util/bitsstr2num(Ljava/lang/String;)I z {| calcFileHash&(Ljava/lang/String;)Ljava/lang/String;~ <| g filesLjava/util/List; org/freertr/user/userUpgradeNtry ((Ljava/lang/String;ILjava/lang/String;)V  java/util/Listadd(Ljava/lang/Object;)Z g doSign(Lorg/freertr/cry/cryKeyRSA;)V g getText(I)Ljava/util/List;  M myVerFile t buf2txt&(ZLjava/util/List;Ljava/lang/String;)Z~ <(I)Ljava/lang/String;org/freertr/cry/cryKeyRSA   keyMakeSize(I)Z rkeySize  keyVerify()Z <(IZ)Ljava/lang/String;  pemWriteStr(Z)Ljava/lang/String;~  $org/freertr/pipe/pipeSidelinePut~oldfailed to get old key! t getTime()J  Qorg/freertr/cfg/cfgAll timeZoneName t time2num(Ljava/lang/String;JI)I ~org/freertr/util/version.java t txt2buf$(Ljava/lang/String;)Ljava/util/List;(org/freertr/util/version.java not found! rsize get(I)Ljava/lang/Object;# public final static int year = n  startsWith(Ljava/lang/String;)Z ~ set'(ILjava/lang/Object;)Ljava/lang/Object;$ public final static int month =  ~" public final static int day =  ~) public final static String pubKeyC =  ~) public final static String pubKeyO = ~ Q upgradeServer~~~error reading version info! g fromText%(Ljava/util/List;Z)Ljava/lang/String;~ g Qhead~ g   getFilelist~ g M~ g Qkeyed~ g getSum~ g Qjars   verifyFile'(Ljava/lang/String;Ljava/lang/String;)I I  M getRWpath " #Qname % &Qchk(some tests failed!*system verification failed! ,e-org/freertr/util/logger/all tests passed! 1 2exists~ 5 6$strPut8 is missing! n: ;x compareTo= is corrupted!? is ok! B C doUpgrade E FQbakExt HIJ KLorg/freertr/user/userFlashrename)(Ljava/lang/String;Ljava/lang/String;ZZ)ZNunable to revert to backup HP QRcopy((Ljava/lang/String;Ljava/lang/String;Z)Z T UdoneFail W X$ debugStatZjava/lang/Thread\"org/freertr/user/userUpgradeRevert [ Y_ `(Ljava/lang/Runnable;)V Yb cstart ne fMtrimhjava/util/ArrayList g~ l mn doCleanUpDir%(Ljava/util/List;Ljava/lang/String;)Ip./r/ nt ux lastIndexOf nw xy substring(II)Ljava/lang/String;~ H| }~dirList#(Ljava/lang/String;)[Ljava/io/File;% unable to read filelist   isDirectory. .bak.tmp.old. n xindexOf H delete~~ <y  needColdZcoldwarm   inProgressLorg/freertr/util/syncInt;  rorg/freertr/util/syncIntno upgrade in progessupgrade in progessauto-revert cancelled  (I)I I  stopRouter(ZILjava/lang/String;)V , $info t rrandomD  <'(Ljava/lang/String;I)Ljava/lang/String;  M myFileName  org/freertr/enc/encUrlparseOne,(Ljava/lang/String;)Lorg/freertr/enc/encUrl;  QfilExt  org/freertr/pipe/pipeDiscardneedAny8(Lorg/freertr/pipe/pipeSide;)Lorg/freertr/pipe/pipeSide; H  doReceiveD(Lorg/freertr/pipe/pipeSide;Lorg/freertr/enc/encUrl;Ljava/io/File;)Z&auto-revert was unable to reach server  doRevertauto-revert finishedoverlapping upgrades eliminated  $ upgraderDoerjava/lang/Exception ,  traceback(Ljava/lang/Throwable;)Vdownloading version info! failed to download version info!  $debugRes  needStop"~#~$~%~ g timeJ t timeDump(J)Ljava/lang/String;&~'~(~ g  copyBytes$()Lorg/freertr/user/userUpgradeBlob; g delFiles(Ljava/util/List;)V)~*~no downgrade allowed!     doMissing%(Lorg/freertr/user/userUpgradeBlob;)Ino upgrade needed!   upgradeConfigsaving configurationorg/freertr/user/userRead  9(Lorg/freertr/pipe/pipeSide;Lorg/freertr/user/userLine;)Vorg/freertr/pipe/pipeSetting   java/lang/IntegervalueOf(I)Ljava/lang/Integer; " #$ settingsPut(ILjava/lang/Object;)V&org/freertr/user/userExec %( )9(Lorg/freertr/pipe/pipeSide;Lorg/freertr/user/userRead;)V %+ , privileged.write %0 1| repairCommand %3 45executeCommand6(Ljava/lang/String;)Lorg/freertr/user/userExec$cmdRes;+~ 8 9: upgradeFilesJ(Lorg/freertr/user/userUpgradeBlob;Ljava/lang/String;Ljava/lang/String;I)Z < => upgradeFileK(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I @ AB upgradeScriptLorg/freertr/cfg/cfgScrpt;Drunning upgrade script FGH Iorg/freertr/cfg/cfgScrptdoRoundK!successfully finished, rebooting!Mupgrade finished,~-~ Q R upgradeBackup T U doVerifyWfailed to write version info!Ysuccessfully finished![upgrade finished! ] ^ flag`nothing done in this round b cdaddAll(Ljava/util/Collection;)Zfno script for this roundhorg/freertr/pipe/pipeLine gk l(IZ)V gn opgetSide()Lorg/freertr/pipe/pipeSide; s tusetTime(I)V ?w xCmodeCRLF z {ClineTx ?} ~C modeCRorLF  ClineRxorg/freertr/user/userScript  0(Lorg/freertr/pipe/pipeSide;Ljava/lang/String;)V   allowExec   allowConfig.~  $addLine  addLines  McmdAll g setClose I httpGet/~0~   pemReadStr(Ljava/lang/String;Z)Z1~2~3~doit n equals4~5~6~7~8~checksum mismatch, aborting!failed to rename!checksum mismatch after rename!.ver.bak  ujustSimu ConstantValue(Lorg/freertr/util/cmds;)VCodeLineNumberTable StackMapTable calcTextHash$(Ljava/util/List;)Ljava/lang/String; Signature8(Ljava/util/List;)Ljava/lang/String; doRelease doMakeKey doVerCore doSimulatedoBackup startReverter cleanBackups8(Ljava/lang/String;)Ljava/util/List;[Ljava/io/File;9(Ljava/util/List;Ljava/lang/String;)ItoggleBootMode stopReverter doAutoRevert SourceFileuserUpgrade.javaBootstrapMethods-  not found  written!generating  bits keyresulted in  bits, error= sequence 10 puts "" sequence 20 puts "";"";$ public final static int year = % public final static int month = # public final static int day = * public final static String pubKeyC = * public final static String pubKeyO = .org/freertr/util/version.java patched  times! server:  archive:  version: version info parser:  release: files: time:   sign:  key hash:    is missing!got  as directory % cleanup  % remained  removed %  removed,  remainedunknown upgrade status  rev.tmp upg.tmpold release: !new release: # old time: % new time: 'diff: ) old files:+ new files:- extra files:/excess files:1upgrading to 3should remove 5 removing 7 set path ""9got empty  key!;got too small  key!=error reading public  key!?error reading private  key!A(error verifying private to public  key!Cskipping  since up to date!E!skipping  since just simulating!G backing up I downloading K upgrading M NOP <Q$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; InnerClassesmodTypU org/freertr/user/userExec$cmdRescmdResX%java/lang/invoke/MethodHandles$LookupZjava/lang/invoke/MethodHandlesLookup! PQ FQ  @ I!***+ *Y* >7 ?@ A {|E Y*"L%Y'M,(,+-,3N7Y9M,(,+--,3:. J KLMNP$Q,R0S8T:V )n B%Y'L+(+*>D+3M7Y9L+(+*>D,+3:* `a bcef&g*h5i7k)n M$ HNRt M& YS"V}** Y\^L+ * bdgYiM,j* YN-m@* Ys6-y:* -}d,Y-W,+,W* dN$(08;GMR_ux} gn#nc* Ys<* dYM,W* ,,d* ,* ,"  &:Nb** Y\^L+ * bd** Y^M, * dB!dp:!ʺ:!ʺ:+:,: и:  * ֶd6 6     n:  ߶  W    W f   W E   W $    W  > и*  d.*.78<N]lx'8;>HY\_epqF a nnnnn:n  U -=* d* Sd* d+=N- * dgYiL+-:* d* +d* + d* + d* +d* +d*S+`=>+1+:*!R$`=* 'd)+ * .dr /3:>GOW\jm}     !+G%a:   Y=>+I+: Y!R"0* !3d&  : ="N#QW%8I* +4+yN-* 7-,9* <* >* ) *+,!-#/+081:3G4 #n, *@*A<= > V SK*DR*G M+FGHIKn=SL*++DROSVRST .YY[Y]^a Z[ C*dKgYiL+*jW*m +*kW++okW+SkW+kW+* de fg!h'i)k1l9mAn)mn  +qs= +`vL*+zW+{N-*WgYi:=-\-2:FV:s6-mv:6 W666=T :+VR:  6  * W* W*W'st uw"x'y+z5{7}@~HMUX_inq~ N !  nn n? n ML @ M_<=@!(K+K$KW*< K<***J $(+/26>EGJQSWY]$n hKRL+N*W+ Y*"=*WN--ϸљ ԸB "'8=AEIPQW]^g Qn C^L+*+VW*<* YM** Ys@*,اN-*WCHKB  "'/CHKLPU]0n2*~ @$ +mL*VM+RN-N,W* - Y,"W,:,W*汻gYi:gYi:W:***** * *em**:*:*** * * *W*Y* : * !%Y*  ':  * -/:   2W6*+,7 *@*S+R,;6  D?*C?E :  *J6 6  L **+,7*:6   :  !R:*@*NV@*OVWP#DR:*OVW v*S **@ *V*XZt{~e  " / 6 ; OUZ_ijs| !"##$5%<&F'X(_)i*{+,-.123459:;<= >?@#B0C<DEEFH^IdJjKtM{P~NORSTUWXZ[\_`adefgh ij%k(m6n<oBpErQs_tefkvtw}x~{|~` ]nDggng*Y"7 nnggng I 9: 66+u+:\~Q*$!R,!R-;6\~6**_gYi:6+Y+:\~5\~'!R:    aW*e*@*CgYij:mWm:qrvy|Y:      W0$/2V\mpu~(*4AGNV^ftz7+7@ +   `a +N-* ,d-* ,dY:-n* ,d-n* ,d* ,dJ "/1:MZ\o|~*!=>,y::+*,V*@*,VP*,V,,DROW*,V-:W*  Y"W*,V+y**  W,G*+,y**z &(2?AGTcpv|  n!b @NDY$( -/X9LLLLLLLLLLLLLLLLLLLLLLLLL L LLLLLLLLLL L"L$L&L(L*L,L.L0L2L4L6L8L:L<L>L@LBLDLFLHLJR?S@T%V@WY[