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/util/version 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  keyMake(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/verCore.java t txt2buf$(Ljava/lang/String;)Ljava/util/List;(org/freertr/util/verCore.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  org/freertr/cfg/cfgInit 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/userReader  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 '* +;(Lorg/freertr/pipe/pipeSide;Lorg/freertr/user/userReader;)V '- . privileged0write '2 3| repairCommand '5 67executeCommand6(Ljava/lang/String;)Lorg/freertr/user/userExec$cmdRes;+~ : ;< 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 B CD upgradeScriptLorg/freertr/cfg/cfgScrpt;Frunning upgrade script HIJ Korg/freertr/cfg/cfgScrptdoRoundM!successfully finished, rebooting!Oupgrade finished,~-~ S T upgradeBackup V WdoVerifyYfailed to write version info![successfully finished!]upgrade finished! _ ` flagbnothing done in this round d efaddAll(Ljava/util/Collection;)Zhno script for this roundjorg/freertr/pipe/pipeLine im n(IZ)V ip qrgetSide()Lorg/freertr/pipe/pipeSide; u vwsetTime(I)V ?y zCmodeCRLF | }ClineTx ? C modeCRorLF  ClineRxorg/freertr/user/userScript  0(Lorg/freertr/pipe/pipeSide;Ljava/lang/String;)V   allowExec   allowConfig.~  $addLine  addLines  McmdAll i setClose  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  wjustSimu 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/verCore.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.tmp!old release: #new release: % old time: ' new time: )diff: + old files:- new files:/ extra files:1excess files:3upgrading to 5should remove 7 removing 9 set path "";got empty  key!=got too small  key!?error reading public  key!Aerror reading private  key!C(error verifying private to public  key!Eskipping  since up to date!G!skipping  since just simulating!I backing up K downloading M upgrading O PQR <S$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; InnerClassesmodTypW org/freertr/user/userExec$cmdRescmdResZ%java/lang/invoke/MethodHandles$Lookup\java/lang/invoke/MethodHandlesLookup! PQ FQ  @ I!***+ *Y* ?8 @A B {|E Y*"L%Y'M,(,+-,3N7Y9M,(,+--,3:. K LMNOQ$R,S0T8U:W )n B%Y'L+(+*>D+3M7Y9L+(+*>D,+3:* ab cdfg&h*i5j7l)n M$ HNRu 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  W-=* 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* <* >* * +,-!.#0+182:4G5 #n, *@*A=> ? V SK*DR*G M+GHIJLn=SL*++DROSVSTU .YY[Y]^a [\ C*dKgYiL+*jW*m +*kW++okW+SkW+kW+* ef gh!i'j)l1m9nAo)mn  +qs= +`vL*+zW+{N-*WgYi:=-\-2:FV:s6-mv:6 W666=T :+VR:  6  * W* W*W'tu vx"y'z+{5|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*  ):  , /1:   4W8*+,9 *@*S+R,=6  DA*EAG :  *L6 6  N **+,9*:6   :  !R:*@*PV@*QVWR#DR:*QVW v*U **@ *X*Z\t{~e   " / 6 ;OUZ_ijs| !"#$#%5&<'F(X)_*i+{,-./23456:;<=> ?@A#C0D<EEFFI^JdKjLtN{Q~OPSTUVXY[\]`abefghi jk%l(n6o<pBqEsQt_uegkwtx}y~|}` ]nDggng*Y"7 nnggng I ;< 66+u+:^~Q*$!R,!R-=6^~6**agYi:6+Y+:^~5^~'!R:    cW*g*@*EiYkl:oWo:stx{~Y:      W0$/2V\mpu~(*4AGNV^ftz7+7@ +   `a +N-* ,d-* ,dY:-n* ,d-n* ,d* ,dJ "/1:MZ\o|~*!?@,y::+*,V*@*,VR*,V,,DROW*,V-:W*  Y"W*,V+y**  W,G*+,y**z &(2?AGTcpv|   n!b @NDY%) .0X9NNNNNNNNNNNNNNNNNNNNNNNN N NNNNNNNNNN N"N$N&N(N*N,N.N0N2N4N6N8N:N<N>N@NBNDNFNHNJNLT?U@V'X@Y[]