Version |
Insecure |
CryptoMisuse |
Rule name |
Method |
Statement |
Details |
3.3.0 |
|
|
MessageDigest |
com.bumptech.glide.load.resource.gif.GifResourceDecoder.decode(Ljava/io/InputStream;II)Lcom/bumptech/glide/load/resource/gif/GifDrawableResource; |
r6 = staticinvoke <java.security.MessageDigest: java.security.MessageDigest getInstance(java.lang.String)>(varReplacer765) |
First parameter (with value "SHA-1") should be any of {SHA-256, SHA-384, SHA-512} |
3.3.1 |
|
|
MessageDigest |
com.bumptech.glide.load.resource.gif.GifResourceDecoder.decode(Ljava/io/InputStream;II)Lcom/bumptech/glide/load/resource/gif/GifDrawableResource; |
r6 = staticinvoke <java.security.MessageDigest: java.security.MessageDigest getInstance(java.lang.String)>(varReplacer781) |
First parameter (with value "SHA-1") should be any of {SHA-256, SHA-384, SHA-512} |
3.4.0 |
|
|
MessageDigest |
com.bumptech.glide.load.engine.cache.SafeKeyGenerator.getSafeKey(Lcom/bumptech/glide/load/Key;)Ljava/lang/String; |
$r7 = virtualinvoke r15.<java.security.MessageDigest: byte[] digest()>() |
Unexpected call to method <java.security.MessageDigest: byte[] digest()> on object of type java.security.MessageDigest. Expect a call to one of the following methods <java.security.MessageDigest: void update(byte[])>,<java.security.MessageDigest: void update(byte[],int,int)>,<java.security.MessageDigest: byte[] digest(byte[])>,<java.security.MessageDigest: void update(java.nio.ByteBuffer)>,<java.security.MessageDigest: void update(byte)> |
3.5.0 |
|
|
MessageDigest |
com.bumptech.glide.load.engine.cache.SafeKeyGenerator.getSafeKey(Lcom/bumptech/glide/load/Key;)Ljava/lang/String; |
$r7 = virtualinvoke r15.<java.security.MessageDigest: byte[] digest()>() |
Unexpected call to method <java.security.MessageDigest: byte[] digest()> on object of type java.security.MessageDigest. Expect a call to one of the following methods <java.security.MessageDigest: void update(byte[])>,<java.security.MessageDigest: void update(byte[],int,int)>,<java.security.MessageDigest: byte[] digest(byte[])>,<java.security.MessageDigest: void update(java.nio.ByteBuffer)>,<java.security.MessageDigest: void update(byte)> |
3.5.1 |
|
|
MessageDigest |
com.bumptech.glide.load.engine.cache.SafeKeyGenerator.getSafeKey(Lcom/bumptech/glide/load/Key;)Ljava/lang/String; |
$r7 = virtualinvoke r15.<java.security.MessageDigest: byte[] digest()>() |
Unexpected call to method <java.security.MessageDigest: byte[] digest()> on object of type java.security.MessageDigest. Expect a call to one of the following methods <java.security.MessageDigest: void update(byte[])>,<java.security.MessageDigest: void update(byte[],int,int)>,<java.security.MessageDigest: byte[] digest(byte[])>,<java.security.MessageDigest: void update(java.nio.ByteBuffer)>,<java.security.MessageDigest: void update(byte)> |
3.5.2 |
|
|
MessageDigest |
com.bumptech.glide.load.engine.cache.SafeKeyGenerator.getSafeKey(Lcom/bumptech/glide/load/Key;)Ljava/lang/String; |
$r7 = virtualinvoke r15.<java.security.MessageDigest: byte[] digest()>() |
Unexpected call to method <java.security.MessageDigest: byte[] digest()> on object of type java.security.MessageDigest. Expect a call to one of the following methods <java.security.MessageDigest: void update(byte[])>,<java.security.MessageDigest: void update(byte[],int,int)>,<java.security.MessageDigest: byte[] digest(byte[])>,<java.security.MessageDigest: void update(java.nio.ByteBuffer)>,<java.security.MessageDigest: void update(byte)> |
3.6.0 |
|
|
|
|
|
|
3.6.1 |
|
|
|
|
|
|
3.7.0 |
|
|
MessageDigest |
com.bumptech.glide.load.engine.cache.SafeKeyGenerator.getSafeKey(Lcom/bumptech/glide/load/Key;)Ljava/lang/String; |
$r7 = virtualinvoke r15.<java.security.MessageDigest: byte[] digest()>() |
Unexpected call to method <java.security.MessageDigest: byte[] digest()> on object of type java.security.MessageDigest. Expect a call to one of the following methods <java.security.MessageDigest: void update(byte[])>,<java.security.MessageDigest: void update(byte[],int,int)>,<java.security.MessageDigest: byte[] digest(byte[])>,<java.security.MessageDigest: void update(java.nio.ByteBuffer)>,<java.security.MessageDigest: void update(byte)> |
3.8.0 |
|
|
MessageDigest |
com.bumptech.glide.load.engine.cache.SafeKeyGenerator.getSafeKey(Lcom/bumptech/glide/load/Key;)Ljava/lang/String; |
$r7 = virtualinvoke r15.<java.security.MessageDigest: byte[] digest()>() |
Unexpected call to method <java.security.MessageDigest: byte[] digest()> on object of type java.security.MessageDigest. Expect a call to one of the following methods <java.security.MessageDigest: void update(byte[])>,<java.security.MessageDigest: void update(byte[],int,int)>,<java.security.MessageDigest: byte[] digest(byte[])>,<java.security.MessageDigest: void update(java.nio.ByteBuffer)>,<java.security.MessageDigest: void update(byte)> |
4.0.0 |
|
|
MessageDigest |
com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(Lcom/bumptech/glide/load/Key;Ljava/lang/Object;Lcom/bumptech/glide/load/data/DataFetcher;Lcom/bumptech/glide/load/DataSource;Lcom/bumptech/glide/load/Key;)V |
specialinvoke r0.<com.bumptech.glide.load.engine.DecodeJob: void notifyEncodeAndRelease(com.bumptech.glide.load.engine.Resource,com.bumptech.glide.load.DataSource)>(r21, $r5) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.util.pool.FactoryPools$FactoryPool.release(Ljava/lang/Object;)Z |
$r5 = interfaceinvoke $r4.<com.bumptech.glide.util.pool.FactoryPools$Poolable: com.bumptech.glide.util.pool.StateVerifier getVerifier()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
4.1.0 |
|
|
MessageDigest |
com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(Lcom/bumptech/glide/load/Key;Ljava/lang/Object;Lcom/bumptech/glide/load/data/DataFetcher;Lcom/bumptech/glide/load/DataSource;Lcom/bumptech/glide/load/Key;)V |
specialinvoke r0.<com.bumptech.glide.load.engine.DecodeJob: void notifyEncodeAndRelease(com.bumptech.glide.load.engine.Resource,com.bumptech.glide.load.DataSource)>(r21, $r5) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.load.engine.DecodePath.decode(Lcom/bumptech/glide/load/data/DataRewinder;IILcom/bumptech/glide/load/Options;Lcom/bumptech/glide/load/engine/DecodePath$DecodeCallback;)Lcom/bumptech/glide/load/engine/Resource; |
specialinvoke $r7.<java.util.ArrayList: void <init>(java.util.Collection)>(r3) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.util.pool.FactoryPools$FactoryPool.release(Ljava/lang/Object;)Z |
$r5 = interfaceinvoke $r4.<com.bumptech.glide.util.pool.FactoryPools$Poolable: com.bumptech.glide.util.pool.StateVerifier getVerifier()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
4.1.1 |
|
|
MessageDigest |
com.bumptech.glide.load.engine.DecodeJob.onDataFetcherFailed(Lcom/bumptech/glide/load/Key;Ljava/lang/Exception;Lcom/bumptech/glide/load/data/DataFetcher;Lcom/bumptech/glide/load/DataSource;)V |
$z2 = interfaceinvoke $r3.<com.bumptech.glide.load.engine.DataFetcherGenerator: boolean startNext()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.load.engine.DecodePath.decode(Lcom/bumptech/glide/load/data/DataRewinder;IILcom/bumptech/glide/load/Options;Lcom/bumptech/glide/load/engine/DecodePath$DecodeCallback;)Lcom/bumptech/glide/load/engine/Resource; |
specialinvoke $r7.<java.util.ArrayList: void <init>(java.util.Collection)>(r3) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.load.engine.LoadPath.load(Lcom/bumptech/glide/load/data/DataRewinder;Lcom/bumptech/glide/load/Options;IILcom/bumptech/glide/load/engine/DecodePath$DecodeCallback;)Lcom/bumptech/glide/load/engine/Resource; |
specialinvoke $r9.<java.util.ArrayList: void <init>(java.util.Collection)>(r4) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.load.engine.SourceGenerator.startNext()Z |
$z3 = virtualinvoke $r21.<com.bumptech.glide.load.engine.DataCacheGenerator: boolean startNext()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.load.engine.SourceGenerator.startNext()Z |
interfaceinvoke $r15.<com.bumptech.glide.load.data.DataFetcher: void loadData(com.bumptech.glide.Priority,com.bumptech.glide.load.data.DataFetcher$DataCallback)>($r16, r0) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.util.pool.FactoryPools$FactoryPool.release(Ljava/lang/Object;)Z |
$r5 = interfaceinvoke $r4.<com.bumptech.glide.util.pool.FactoryPools$Poolable: com.bumptech.glide.util.pool.StateVerifier getVerifier()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
4.2.0 |
|
|
MessageDigest |
com.bumptech.glide.load.engine.DecodePath.decode(Lcom/bumptech/glide/load/data/DataRewinder;IILcom/bumptech/glide/load/Options;Lcom/bumptech/glide/load/engine/DecodePath$DecodeCallback;)Lcom/bumptech/glide/load/engine/Resource; |
specialinvoke $r7.<java.util.ArrayList: void <init>(java.util.Collection)>(r3) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.util.pool.FactoryPools$FactoryPool.release(Ljava/lang/Object;)Z |
$r5 = interfaceinvoke $r4.<com.bumptech.glide.util.pool.FactoryPools$Poolable: com.bumptech.glide.util.pool.StateVerifier getVerifier()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
4.3.0 |
|
|
|
|
|
|
4.3.1 |
|
|
MessageDigest |
com.bumptech.glide.load.engine.DataCacheGenerator.startNext()Z |
interfaceinvoke $r30.<com.bumptech.glide.load.data.DataFetcher: void loadData(com.bumptech.glide.Priority,com.bumptech.glide.load.data.DataFetcher$DataCallback)>($r31, r0) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.load.engine.DecodePath.decode(Lcom/bumptech/glide/load/data/DataRewinder;IILcom/bumptech/glide/load/Options;Lcom/bumptech/glide/load/engine/DecodePath$DecodeCallback;)Lcom/bumptech/glide/load/engine/Resource; |
specialinvoke $r7.<java.util.ArrayList: void <init>(java.util.Collection)>(r3) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.load.engine.LoadPath.load(Lcom/bumptech/glide/load/data/DataRewinder;Lcom/bumptech/glide/load/Options;IILcom/bumptech/glide/load/engine/DecodePath$DecodeCallback;)Lcom/bumptech/glide/load/engine/Resource; |
specialinvoke $r9.<java.util.ArrayList: void <init>(java.util.Collection)>(r4) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.load.engine.SourceGenerator.startNext()Z |
interfaceinvoke $r15.<com.bumptech.glide.load.data.DataFetcher: void loadData(com.bumptech.glide.Priority,com.bumptech.glide.load.data.DataFetcher$DataCallback)>($r16, r0) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.load.engine.cache.SafeKeyGenerator.getSafeKey(Lcom/bumptech/glide/load/Key;)Ljava/lang/String; |
$r9 = virtualinvoke $r8.<java.security.MessageDigest: byte[] digest()>() |
Unexpected call to method <java.security.MessageDigest: byte[] digest()> on object of type java.security.MessageDigest. Expect a call to one of the following methods <java.security.MessageDigest: void update(byte[])>,<java.security.MessageDigest: void update(byte[],int,int)>,<java.security.MessageDigest: byte[] digest(byte[])>,<java.security.MessageDigest: void update(java.nio.ByteBuffer)>,<java.security.MessageDigest: void update(byte)> |
- |
- |
|
MessageDigest |
com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(Ljava/lang/Exception;)V |
interfaceinvoke $r2.<java.util.List: boolean add(java.lang.Object)>(r1) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.util.pool.FactoryPools$FactoryPool.release(Ljava/lang/Object;)Z |
$r5 = interfaceinvoke $r4.<com.bumptech.glide.util.pool.FactoryPools$Poolable: com.bumptech.glide.util.pool.StateVerifier getVerifier()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
4.4.0 |
|
|
|
|
|
|
4.5.0 |
|
|
MessageDigest |
com.bumptech.glide.load.engine.DecodePath.decode(Lcom/bumptech/glide/load/data/DataRewinder;IILcom/bumptech/glide/load/Options;Lcom/bumptech/glide/load/engine/DecodePath$DecodeCallback;)Lcom/bumptech/glide/load/engine/Resource; |
$r8 = staticinvoke <com.bumptech.glide.util.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>($r7) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.load.engine.DecodePath.decode(Lcom/bumptech/glide/load/data/DataRewinder;IILcom/bumptech/glide/load/Options;Lcom/bumptech/glide/load/engine/DecodePath$DecodeCallback;)Lcom/bumptech/glide/load/engine/Resource; |
specialinvoke $r7.<java.util.ArrayList: void <init>(java.util.Collection)>(r3) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.util.pool.FactoryPools$FactoryPool.release(Ljava/lang/Object;)Z |
$r5 = interfaceinvoke $r4.<com.bumptech.glide.util.pool.FactoryPools$Poolable: com.bumptech.glide.util.pool.StateVerifier getVerifier()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
4.6.0 |
|
|
MessageDigest |
com.bumptech.glide.RequestBuilder.into(Landroid/widget/ImageView;)Lcom/bumptech/glide/request/target/ViewTarget; |
$r8 = staticinvoke <com.bumptech.glide.util.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(r4) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.RequestBuilder.into(Landroid/widget/ImageView;)Lcom/bumptech/glide/request/target/ViewTarget; |
interfaceinvoke r4.<com.bumptech.glide.request.Request: void begin()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.RequestBuilder.into(Landroid/widget/ImageView;)Lcom/bumptech/glide/request/target/ViewTarget; |
virtualinvoke $r7.<com.bumptech.glide.RequestManager: void track(com.bumptech.glide.request.target.Target,com.bumptech.glide.request.Request)>(r1, r3) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.manager.RequestTracker.restartRequests()V |
$z1 = interfaceinvoke r2.<com.bumptech.glide.request.Request: boolean isComplete()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.manager.RequestTracker.restartRequests()V |
$z2 = interfaceinvoke r2.<com.bumptech.glide.request.Request: boolean isCancelled()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.manager.RequestTracker.restartRequests()V |
interfaceinvoke $r6.<java.util.List: boolean add(java.lang.Object)>(r2) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.manager.RequestTracker.restartRequests()V |
interfaceinvoke r2.<com.bumptech.glide.request.Request: void begin()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.manager.RequestTracker.resumeRequests()V |
$z1 = interfaceinvoke r2.<com.bumptech.glide.request.Request: boolean isComplete()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.manager.RequestTracker.resumeRequests()V |
$z2 = interfaceinvoke r2.<com.bumptech.glide.request.Request: boolean isCancelled()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.manager.RequestTracker.resumeRequests()V |
$z3 = interfaceinvoke r2.<com.bumptech.glide.request.Request: boolean isRunning()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.manager.RequestTracker.resumeRequests()V |
interfaceinvoke r2.<com.bumptech.glide.request.Request: void begin()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.request.ErrorRequestCoordinator.begin()V |
interfaceinvoke $r2.<com.bumptech.glide.request.Request: void begin()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.request.ErrorRequestCoordinator.onRequestFailed(Lcom/bumptech/glide/request/Request;)V |
interfaceinvoke $r6.<com.bumptech.glide.request.Request: void begin()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.request.ThumbnailRequestCoordinator.begin()V |
interfaceinvoke $r3.<com.bumptech.glide.request.Request: void begin()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.request.ThumbnailRequestCoordinator.begin()V |
interfaceinvoke $r5.<com.bumptech.glide.request.Request: void begin()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.request.target.ViewTarget.resumeMyRequest()V |
$z0 = interfaceinvoke r1.<com.bumptech.glide.request.Request: boolean isPaused()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.request.target.ViewTarget.resumeMyRequest()V |
interfaceinvoke r1.<com.bumptech.glide.request.Request: void begin()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.request.target.ViewTarget$SizeDeterminer.notifyCbs(II)V |
interfaceinvoke r2.<com.bumptech.glide.request.target.SizeReadyCallback: void onSizeReady(int,int)>(i0, i1) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.util.ViewPreloadSizeProvider.<init>(Landroid/view/View;)V |
specialinvoke $r2.<com.bumptech.glide.util.ViewPreloadSizeProvider$SizeViewTarget: void <init>(android.view.View,com.bumptech.glide.request.target.SizeReadyCallback)>(r1, r0) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.util.ViewPreloadSizeProvider.setView(Landroid/view/View;)V |
specialinvoke $r4.<com.bumptech.glide.util.ViewPreloadSizeProvider$SizeViewTarget: void <init>(android.view.View,com.bumptech.glide.request.target.SizeReadyCallback)>(r1, r0) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
4.6.1 |
|
|
MessageDigest |
com.bumptech.glide.load.engine.LoadPath.load(Lcom/bumptech/glide/load/data/DataRewinder;Lcom/bumptech/glide/load/Options;IILcom/bumptech/glide/load/engine/DecodePath$DecodeCallback;)Lcom/bumptech/glide/load/engine/Resource; |
$r9 = staticinvoke <com.bumptech.glide.util.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>($r8) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.load.engine.LoadPath.load(Lcom/bumptech/glide/load/data/DataRewinder;Lcom/bumptech/glide/load/Options;IILcom/bumptech/glide/load/engine/DecodePath$DecodeCallback;)Lcom/bumptech/glide/load/engine/Resource; |
specialinvoke $r9.<java.util.ArrayList: void <init>(java.util.Collection)>(r4) |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
- |
- |
|
MessageDigest |
com.bumptech.glide.util.pool.FactoryPools$FactoryPool.release(Ljava/lang/Object;)Z |
$r5 = interfaceinvoke $r4.<com.bumptech.glide.util.pool.FactoryPools$Poolable: com.bumptech.glide.util.pool.StateVerifier getVerifier()>() |
Operation on object of type java.security.MessageDigest object not completed. Expected call to digest, update |
4.7.0 |
|
|
|
|
|
|
4.7.1 |
|
|
|
|
|
|
4.8.0 |
|
|
|
|
|
|