7N  java/lang/Object()Vb0b00092d000009290004d1308204cd308203b5a003020102021100a07defd2e6ff026c08000000003ebf0d300d06092a864886f70d01010b05003042310b3009060355040613025553311e301c060355040a1315476f6f676c65205472757374205365727669636573311330110603550403130a47545320434120314f31301e170d3230303530353038333631305a170d3230303732383038333631305a3063310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731133011060355040a130a476f6f676c65204c4c433112301006035504031309676d61696c2e636f6d3059301306072a8648ce3d020106082a8648ce3d03010703420004e47e42dfb934737833ddb6e4507c2a7775f3f759b88dec3478e7dce3cc04ae42ab381472c7a7c27069b694299a905c33a6107ae7347ae43a34ae70f42eacfbc0a382026630820262300e0603551d0f0101ff04040302078030130603551d25040c300a06082b06010505070301300c0603551d130101ff04023000301d0603551d0e04160414a841046aa9ccef3104c311cc69a9e7cdd40dc93d301f0603551d2304183016801498d1f86e10ebcf9bec609f18901ba0eb7d09fd2b306806082b06010505070101045c305a302b06082b06010505073001861f687474703a2f2f6f6373702e706b692e676f6f672f677473316f31636f7265302b06082b06010505073002861f687474703a2f2f706b692e676f6f672f677372322f475453314f312e63727430210603551d11041a30188209676d61696c2e636f6d820b2a2e676d61696c2e636f6d30210603551d20041a30183008060667810c010202300c060a2b06010401d67902050330330603551d1f042c302a3028a026a0248622687474703a2f2f63726c2e706b692e676f6f672f475453314f31636f72652e63726c30820106060a2b06010401d6790204020481f70481f400f2007700b21e05cc8ba2cd8a204e8766f92bb98a2520676bdafa70e7b249532def8b905e00000171e43155ad0000040300483046022100d6815e996faf6cde205f674ef2356b0350291e0e68ed5aaa9cb3282ac5fd825e022100b7c39d624386e538f2dc3bdb31e0d1206d4a1fb3d0a660bfbc3b17680f5633320077005ea773f9df56c0e7b536487dd049e0327a919a0c84a11212841875968171455800000171e43155ae0000040300483046022100c72bde3052e0a20a2c88df3cbd4f83e94513dda41f924b324e13e105360c5b57022100c2cdf5111cda53c29080f39f73450dce6284d0f2c46dde483d589be62ac3565a300d06092a864886f70d01010b050003820101002f475e22cb4ea5b4c049abf0593a6be7cefc91901bb8cce91bb2abfe651427324472fb6639f46e7b20cfb6626a9605fd2d56d1aa1b058b752dfcad326a219f30001f72b43ed6d0c3e162b7cd7bf82eb92ed7e79e2fc51e610953907549a6361dd1f9a6e01da1a6ec4ad786fc469b1c0fccfc695a4ff6566597a3ade8fe051df463e7a6fd5a14021caeb218ff4b2bfe049bf30ab69d432ee85a15bcba47f2d584e9c22665ad24bcf487aff3f6328bd60bcac5354c5306d6b299d98cc1bf52de4b5b079df2578f512476ca58bb8067287baff654ca1a1e161703befbf50be5a2911551c86483bd893fb9f630e8fc3339e105d06689aa670e484d076c322eb1eda9000000044e3082044a30820332a003020102020d01e3b49aa18d8aa981256950b8300d06092a864886f70d01010b0500304c3120301e060355040b1317476c6f62616c5369676e20526f6f74204341202d20523231133011060355040a130a476c6f62616c5369676e311330110603550403130a476c6f62616c5369676e301e170d3137303631353030303034325a170d3231313231353030303034325a3042310b3009060355040613025553311e301c060355040a1315476f6f676c65205472757374205365727669636573311330110603550403130a47545320434120314f3130820122300d06092a864886f70d01010105000382010f003082010a0282010100d018cf45d48bcdd39ce440ef7eb4dd69211bc9cf3c8e4c75b90f3119843d9e3c29ef500d10936f0580809f2aa0bd124b02e13d9f581624fe309f0b747755931d4bf74de1928210f651ac0cc3b222940f346b981049e70b9d8339dd20c61c2defd1186165e7238320a82312ffd2247fd42fe7446a5b4dd75066b0af9e426305fbe01cc46361af9f6a33ff6297bd48d9d37c1467dc75dc2e69e8f86d7869d0b71005b8f131c23b24fd1a3374f823e0ec6b198a16c6e3cda4cd0bdbb3a4596038883bad1db9c68ca7531bfcbcd9a4abbcdd3c61d7931598ee81bd8fe264472040064ed7ac97e8b9c05912a1492523e4ed70342ca5b4637cf9a33d83d1cd6d24ac070203010001a38201333082012f300e0603551d0f0101ff040403020186301d0603551d250416301406082b0601050507030106082b0601050507030230120603551d130101ff040830060101ff020100301d0603551d0e0416041498d1f86e10ebcf9bec609f18901ba0eb7d09fd2b301f0603551d230418301680149be20757671c1ec06a06de59b49a2ddfdc19862e303506082b0601050507010104293027302506082b060105050730018619687474703a2f2f6f6373702e706b692e676f6f672f6773723230320603551d1f042b30293027a025a0238621687474703a2f2f63726c2e706b692e676f6f672f677372322f677372322e63726c303f0603551d20043830363034060667810c010202302a302806082b06010505070201161c68747470733a2f2f706b692e676f6f672f7265706f7369746f72792f300d06092a864886f70d01010b050003820101001a803e3679fbf32ea946377d5e541635aec74e0899febdd13469265266073d0aba49cb62f4f11a8efc114f68964c742bd367deb2a3aa058d844d4c20650fa596da0d16f86c3bdb6f0423886b3a6cc160bd689f718eee2d583407f0d554e98659fd7b5e0d2194f58cc9a8f8d8f2adcc0f1af39aa7a90427f9a3c9b0ff02786b61bac7352be856fa4fc31c0cedb63cb44beaedcce13cecdc0d8cd63e9bca42588bcc16211740bca2d666efdac4155bcd89aa9b0926e732d20d6e6720025b10b090099c0c1f9eadd83beaa1fc6ce8105c085219512a71bbac7ab5dd15ed2bc9082a2c8ab4a621ab63ffd7524950d089b7adf2affb50ae2fe1950df346ad9d9cf5ca0000  0net/luminis/tls/handshake/CertificateMessageTestgmailCertificateMessageBytesLjava/lang/String; 308204cd308203b5a003020102021100a07defd2e6ff026c08000000003ebf0d300d06092a864886f70d01010b05003042310b3009060355040613025553311e301c060355040a1315476f6f676c65205472757374205365727669636573311330110603550403130a47545320434120314f31301e170d3230303530353038333631305a170d3230303732383038333631305a3063310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731133011060355040a130a476f6f676c65204c4c433112301006035504031309676d61696c2e636f6d3059301306072a8648ce3d020106082a8648ce3d03010703420004e47e42dfb934737833ddb6e4507c2a7775f3f759b88dec3478e7dce3cc04ae42ab381472c7a7c27069b694299a905c33a6107ae7347ae43a34ae70f42eacfbc0a382026630820262300e0603551d0f0101ff04040302078030130603551d25040c300a06082b06010505070301300c0603551d130101ff04023000301d0603551d0e04160414a841046aa9ccef3104c311cc69a9e7cdd40dc93d301f0603551d2304183016801498d1f86e10ebcf9bec609f18901ba0eb7d09fd2b306806082b06010505070101045c305a302b06082b06010505073001861f687474703a2f2f6f6373702e706b692e676f6f672f677473316f31636f7265302b06082b06010505073002861f687474703a2f2f706b692e676f6f672f677372322f475453314f312e63727430210603551d11041a30188209676d61696c2e636f6d820b2a2e676d61696c2e636f6d30210603551d20041a30183008060667810c010202300c060a2b06010401d67902050330330603551d1f042c302a3028a026a0248622687474703a2f2f63726c2e706b692e676f6f672f475453314f31636f72652e63726c30820106060a2b06010401d6790204020481f70481f400f2007700b21e05cc8ba2cd8a204e8766f92bb98a2520676bdafa70e7b249532def8b905e00000171e43155ad0000040300483046022100d6815e996faf6cde205f674ef2356b0350291e0e68ed5aaa9cb3282ac5fd825e022100b7c39d624386e538f2dc3bdb31e0d1206d4a1fb3d0a660bfbc3b17680f5633320077005ea773f9df56c0e7b536487dd049e0327a919a0c84a11212841875968171455800000171e43155ae0000040300483046022100c72bde3052e0a20a2c88df3cbd4f83e94513dda41f924b324e13e105360c5b57022100c2cdf5111cda53c29080f39f73450dce6284d0f2c46dde483d589be62ac3565a300d06092a864886f70d01010b050003820101002f475e22cb4ea5b4c049abf0593a6be7cefc91901bb8cce91bb2abfe651427324472fb6639f46e7b20cfb6626a9605fd2d56d1aa1b058b752dfcad326a219f30001f72b43ed6d0c3e162b7cd7bf82eb92ed7e79e2fc51e610953907549a6361dd1f9a6e01da1a6ec4ad786fc469b1c0fccfc695a4ff6566597a3ade8fe051df463e7a6fd5a14021caeb218ff4b2bfe049bf30ab69d432ee85a15bcba47f2d584e9c22665ad24bcf487aff3f6328bd60bcac5354c5306d6b299d98cc1bf52de4b5b079df2578f512476ca58bb8067287baff654ca1a1e161703befbf50be5a2911551c86483bd893fb9f630e8fc3339e105d06689aa670e484d076c322eb1eda9  gmailCertificateBytes  net/luminis/tls/util/ByteUtils hexToBytes(Ljava/lang/String;)[B,net/luminis/tls/handshake/CertificateMessage   !"java/nio/ByteBufferwrap([B)Ljava/nio/ByteBuffer; $ %&parseE(Ljava/nio/ByteBuffer;)Lnet/luminis/tls/handshake/CertificateMessage; ( )*getEndEntityCertificate&()Ljava/security/cert/X509Certificate; ,-. /0org/assertj/core/api/Assertions assertThat7(Ljava/lang/Object;)Lorg/assertj/core/api/ObjectAssert; 234 56!org/assertj/core/api/ObjectAssert isNotNull'()Lorg/assertj/core/api/AbstractAssert; 8 9:getCertificateChain()Ljava/util/List; ,< /=3(Ljava/util/List;)Lorg/assertj/core/api/ListAssert; ?@A BCorg/assertj/core/api/ListAsserthasSizeGreaterThan0(I)Lorg/assertj/core/api/AbstractIterableAssert; EFG HI"java/security/cert/X509CertificategetSubjectAlternativeNames()Ljava/util/Collection; KLM NOjava/util/Collectionstream()Ljava/util/stream/Stream;Q RSapply()Ljava/util/function/Function; UVW XYjava/util/stream/StreamflatMap8(Ljava/util/function/Function;)Ljava/util/stream/Stream; [\] ^_java/util/stream/CollectorstoList()Ljava/util/stream/Collector; Ua bccollect0(Ljava/util/stream/Collector;)Ljava/lang/Object;ejava/util/Listg gmail.com ?i jkcontainsB([Ljava/lang/Object;)Lorg/assertj/core/api/AbstractIterableAssert;m0b00o pqcall;([B)Lorg/assertj/core/api/ThrowableAssert$ThrowingCallable; ,s tuassertThatThrownByg(Lorg/assertj/core/api/ThrowableAssert$ThrowingCallable;)Lorg/assertj/core/api/AbstractThrowableAssert;w*net/luminis/tls/alert/DecodeErrorException yz{ |},org/assertj/core/api/AbstractThrowableAssert isInstanceOf8(Ljava/lang/Class;)Lorg/assertj/core/api/AbstractAssert;0b000066o makeConcatWithConstants&(Ljava/lang/String;)Ljava/lang/String; ? ChasSize   bytesToHex([B)Ljava/lang/String;o)net/luminis/tls/alert/BadCertificateAlert0b000009000000050000000000D0b00001dff0004d60000200123456789012345678901234567890123456789010000oD0b00001d000004d60000200123456789012345678901234567890123456789010000oB0b00001d0000002400002001234567890123456789012345678901234567890000o o  org/mockito/Mockitomock%(Ljava/lang/Class;)Ljava/lang/Object; E  getEncoded()[B when:(Ljava/lang/Object;)Lorg/mockito/stubbing/OngoingStubbing;  $org/mockito/stubbing/OngoingStubbing thenReturn  '(Ljava/security/cert/X509Certificate;)V  getBytes  getInt()I , //(I)Lorg/assertj/core/api/AbstractIntegerAssert;  *org/assertj/core/api/AbstractIntegerAssert isEqualTo o  * net/luminis/tls/CertificateUtilsgetTestCertificate 2 9(Ljava/lang/Object;)Lorg/assertj/core/api/AbstractAssert;  o d get(I)Ljava/lang/Object; U of-(Ljava/lang/Object;)Ljava/util/stream/Stream;CodeLineNumberTableLocalVariableTablethis2Lnet/luminis/tls/handshake/CertificateMessageTest;parseCertificateMessagerawData[Bcm.Lnet/luminis/tls/handshake/CertificateMessage;namesLjava/util/List;LocalVariableTypeTable$Ljava/util/List; Exceptionsjava/lang/ExceptionRuntimeVisibleAnnotationsLorg/junit/jupiter/api/Test;parseNoMessageparseNotEnoughBytesForMessageparseSingleCertificateMessageparseInvalidCertificate bogusCertparseMessageWithoutCertificateCparseCertificateMessageWithIncorrectCertificateRequestContextLength9parseCertificateMessageWithIncorrectCertificateListLength5parseCertificateMessageWithIncorrectCertificateLength>parseCertificateMessageWithIncorrectCertificateExtensionLengthserializeCertificateMessagecert$Ljava/security/cert/X509Certificate;certificateMessagedata messageLengthI)serializeAndDeserializeCertificateMessageparsedCertificateMessage&parseMessageWithVeryLargeExtensionSize/lambda$parseMessageWithVeryLargeExtensionSize$9([B)Vjava/lang/Throwable$lambda$serializeCertificateMessage$8Glambda$parseCertificateMessageWithIncorrectCertificateExtensionLength$7>lambda$parseCertificateMessageWithIncorrectCertificateLength$6Blambda$parseCertificateMessageWithIncorrectCertificateListLength$5Llambda$parseCertificateMessageWithIncorrectCertificateRequestContextLength$4 lambda$parseInvalidCertificate$3&lambda$parseNotEnoughBytesForMessage$2lambda$parseNoMessage$1 lambda$parseCertificateMessage$0+(Ljava/util/List;)Ljava/util/stream/Stream;l SourceFileCertificateMessageTest.javaBootstrapMethods  "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;&(Ljava/lang/Object;)Ljava/lang/Object;       ! # $%& '$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;)0b000400000004d60004d10000+ , . / 1 2 4 5 70b000400000004d60004d100ff9 : < = ?0b000400000004d60004d18000A B  InnerClassesE5org/assertj/core/api/ThrowableAssert$ThrowingCallableG$org/assertj/core/api/ThrowableAssertThrowingCallableJ%java/lang/invoke/MethodHandles$LookupLjava/lang/invoke/MethodHandlesLookup!  C** *' d* LYM,+#W,'+1W,7;>W,'DJPTZ`dN-;YfShW* +,-.$/02A3F4R5c6*d\TR RVlL+nrvxW:;=>V~L+rvxWBCEFs)*LY+#M,7;WJ MN(O )  y#ѼL+M,rxWSTVTXZ"[ #l"LY+#M,7;W_ac!d " VL+rvxWhlnoVL+rvxWswyzVL+rvxW~]*L+rvxW  REEL+,WY+M,N-`~6-W-rxW& $)7BMQ4R I$.))7ILY+M,N-`~6-WY-#:'++W"  +;H>IE <7 );]*L+rvxW   :Y*#W  :Y*#W  :Y*#W  :Y*#W  :Y*#Wx  :Y*#Wm  :Y*#WY  :Y*#WD  :Y*#W<   5 *Ѱ3      x "(*-03"68;">@CDFH IKM