7  java/lang/Object()Vjava/util/ArrayList    org/freertr/user/userUpgradeBlobfilesLjava/util/List;org/freertr/cfg/cfgInit2freeRouter v26.1.5-cur, done by sprscc13@mrn0b0dy.  headLjava/lang/String;   getFileName()Ljava/lang/String;  !org/freertr/user/userUpgrade calcFileHash&(Ljava/lang/String;)Ljava/lang/String; # $jars & '(timeJ  + ,sign . /keyed 1 23addFiles(Ljava/util/List;)V 567 89java/util/Listsize()I 5; <=get(I)Ljava/lang/Object;? org/freertr/user/userUpgradeNtry >A Bname DEF GHjava/lang/String compareTo(Ljava/lang/String;)I J KLfindFile%(Lorg/freertr/user/userUpgradeNtry;)I 5N OPadd(Ljava/lang/Object;)Z 5R S=removeU >W XYflagI[ \]makeConcatWithConstants8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; D_ `trim b c myVerFile e fg getFilelist(I)Ljava/lang/String; ijk lorg/freertr/cfg/cfgAll timeZoneName nop qrorg/freertr/util/bitstime2str((Ljava/lang/String;JI)Ljava/lang/String;t \u(J)Ljava/lang/String; Dw xyvalueOf&(Ljava/lang/Object;)Ljava/lang/String;{ \! } ~ggetSum getText(I)Ljava/util/List;   calcTextHash$(Ljava/util/List;)Ljava/lang/String;   putSelf not found! too small! n str2long(Ljava/lang/String;)J D Pequalschecksum mismatch! >  fromString6(Ljava/lang/String;)Lorg/freertr/user/userUpgradeNtry;checksum invalid!  org/freertr/enc/encBase64 decodeBytes(Ljava/lang/String;)[Berror decoding signature! configured i  upgradeOwnKeyZ i  upgradePubKey doVrfy((Ljava/lang/String;[B)Ljava/lang/String;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 key not exists!org/freertr/cry/cryKeyRSA   pemReadStr(Ljava/lang/String;Z)Zerror reading public key!org/freertr/cry/cryHashSha3512  D getBytes()[B  tlsVerify((ILorg/freertr/cry/cryHashGeneric;[B[B)Zsignature mismatch!java/lang/Exception  org/freertr/util/logger traceback(Ljava/lang/Throwable;)Verror during verify! n getTime()J  tlsSigning'(ILorg/freertr/cry/cryHashGeneric;[B)[B  encodeBytes([B)Ljava/lang/String; Signature4Ljava/util/List;CodeLineNumberTable copyBytes$()Lorg/freertr/user/userUpgradeBlob; StackMapTable7(Ljava/util/List;)VdelFiles(Z)Ljava/lang/String;'(I)Ljava/util/List;fromText%(Ljava/util/List;Z)Ljava/lang/String;[B9(Ljava/util/List;Z)Ljava/lang/String;doSign(Lorg/freertr/cry/cryKeyRSA;)V SourceFileuserUpgrade.javaBootstrapMethods     \$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; InnerClasses%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandlesLookup $'(,/,**Y  #/:**"* %2345n: Y)L+*+*""+*%%+***+*--+* 0+"89:; <(=0>8?KLk3=* 4%* :>@+@CCD)E+C1H (23|4=+4*+:>N*-I* -MWұL MNO"Q-L3S> 39=+4/+:>N*-I6* QWͱ"V WXY#Z&\2V8^#> fgETM>* 41* :>:V~,@ZM,^"abc!d+e.g:b@iD(> f<TM ,aZM,*dZM ,ZM,*dZM,^"mnoqr!s+u7v D$ h*%mzY M,*MW,*"MW,*%sMW>* 4",* :vzMW,,**MW,,*|MW,:~.=V\acnsu05+~g! *@I**"*** %+*+4d>*+:D*+:D"*+:D%+:D:+QW+*+:D*+QW6!* +:DMW*|**:*- **:*: *-*: *-*µ-. #%(169GUfrz !')38>@F% %OD#D@+İYN-+əͰ-Y*|,֙ڰN-8858678. 3689= DC#*%*+Y*|Ҷ*"