CrackMe.apk

Download file
    package com.th3rdwave.safeareacontext;

import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.ViewParent;
import android.view.ViewTreeObserver;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.uimanager.FabricViewStateManager;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.views.view.ReactViewGroup;
import java.util.EnumSet;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import kotlin.Metadata;
import kotlin.Unit;
import kotlin.jvm.internal.Intrinsics;
import kotlin.jvm.internal.Ref;

@Metadata(d1 = {"\u0000L\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\u000b\n\u0000\n\u0002\u0010\u0002\n\u0002\b\t\u0018\u00002\u00020\u00012\u00020\u00022\u00020\u0003B\u000f\u0012\b\u0010\u0004\u001a\u0004\u0018\u00010\u0005¢\u0006\u0002\u0010\u0006J\b\u0010\u0012\u001a\u00020\u0011H\u0002J\b\u0010\u0013\u001a\u00020\u000bH\u0016J\b\u0010\u0014\u001a\u00020\u0015H\u0002J\b\u0010\u0016\u001a\u00020\u0017H\u0014J\b\u0010\u0018\u001a\u00020\u0017H\u0014J\b\u0010\u0019\u001a\u00020\u0015H\u0016J\u0016\u0010\u001a\u001a\u00020\u00172\u000e\u0010\u001b\u001a\n\u0012\u0004\u0012\u00020\t\u0018\u00010\bJ\u000e\u0010\u001c\u001a\u00020\u00172\u0006\u0010\u001d\u001a\u00020\u000fJ\b\u0010\u001e\u001a\u00020\u0017H\u0002J\b\u0010\u001f\u001a\u00020\u0017H\u0002R\u0016\u0010\u0007\u001a\n\u0012\u0004\u0012\u00020\t\u0018\u00010\bX‚\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\n\u001a\u00020\u000bX‚\u0004¢\u0006\u0002\n\u0000R\u0010\u0010\f\u001a\u0004\u0018\u00010\rX‚\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u000e\u001a\u00020\u000fX‚\u000e¢\u0006\u0002\n\u0000R\u0010\u0010\u0010\u001a\u0004\u0018\u00010\u0011X‚\u000e¢\u0006\u0002\n\u0000¨\u0006 "}, d2 = {"Lcom/th3rdwave/safeareacontext/SafeAreaView;", "Lcom/facebook/react/views/view/ReactViewGroup;", "Landroid/view/ViewTreeObserver$OnPreDrawListener;", "Lcom/facebook/react/uimanager/FabricViewStateManager$HasFabricViewStateManager;", "context", "Landroid/content/Context;", "(Landroid/content/Context;)V", "mEdges", "Ljava/util/EnumSet;", "Lcom/th3rdwave/safeareacontext/SafeAreaViewEdges;", "mFabricViewStateManager", "Lcom/facebook/react/uimanager/FabricViewStateManager;", "mInsets", "Lcom/th3rdwave/safeareacontext/EdgeInsets;", "mMode", "Lcom/th3rdwave/safeareacontext/SafeAreaViewMode;", "mProviderView", "Landroid/view/View;", "findProvider", "getFabricViewStateManager", "maybeUpdateInsets", "", "onAttachedToWindow", "", "onDetachedFromWindow", "onPreDraw", "setEdges", "edges", "setMode", "mode", "updateInsets", "waitForReactLayout", "react-native-safe-area-context_release"}, k = 1, mv = {1, 6, 0}, xi = 48)
/* compiled from: SafeAreaView.kt */
public final class SafeAreaView extends ReactViewGroup implements ViewTreeObserver.OnPreDrawListener, FabricViewStateManager.HasFabricViewStateManager {
    private EnumSet<SafeAreaViewEdges> mEdges;
    private final FabricViewStateManager mFabricViewStateManager = new FabricViewStateManager();
    private EdgeInsets mInsets;
    private SafeAreaViewMode mMode = SafeAreaViewMode.PADDING;
    private View mProviderView;

    public SafeAreaView(Context context) {
        super(context);
    }

    public FabricViewStateManager getFabricViewStateManager() {
        return this.mFabricViewStateManager;
    }

    private final void updateInsets() {
        EdgeInsets edgeInsets = this.mInsets;
        if (edgeInsets != null) {
            EnumSet<SafeAreaViewEdges> enumSet = this.mEdges;
            if (enumSet == null) {
                enumSet = EnumSet.allOf(SafeAreaViewEdges.class);
            }
            if (this.mFabricViewStateManager.hasStateWrapper()) {
                this.mFabricViewStateManager.setState(new SafeAreaView$$ExternalSyntheticLambda0(edgeInsets));
                return;
            }
            SafeAreaViewMode safeAreaViewMode = this.mMode;
            Intrinsics.checkNotNullExpressionValue(enumSet, "edges");
            SafeAreaViewLocalData safeAreaViewLocalData = new SafeAreaViewLocalData(edgeInsets, safeAreaViewMode, enumSet);
            ReactContext reactContext = UIManagerHelperCompatKt.getReactContext(this);
            UIManagerModule uIManagerModule = (UIManagerModule) reactContext.getNativeModule(UIManagerModule.class);
            if (uIManagerModule != null) {
                uIManagerModule.setViewLocalData(getId(), safeAreaViewLocalData);
                reactContext.runOnNativeModulesQueueThread(new SafeAreaView$$ExternalSyntheticLambda1(uIManagerModule));
                waitForReactLayout();
            }
        }
    }

    /* access modifiers changed from: private */
    /* renamed from: updateInsets$lambda-0  reason: not valid java name */
    public static final WritableMap m194updateInsets$lambda0(EdgeInsets edgeInsets) {
        WritableMap createMap = Arguments.createMap();
        createMap.putMap("insets", SerializationUtilsKt.edgeInsetsToJsMap(edgeInsets));
        return createMap;
    }

    /* access modifiers changed from: private */
    /* renamed from: updateInsets$lambda-1  reason: not valid java name */
    public static final void m195updateInsets$lambda1(UIManagerModule uIManagerModule) {
        uIManagerModule.getUIImplementation().dispatchViewUpdates(-1);
    }

    private final void waitForReactLayout() {
        Ref.BooleanRef booleanRef = new Ref.BooleanRef();
        ReentrantLock reentrantLock = new ReentrantLock();
        Condition newCondition = reentrantLock.newCondition();
        long nanoTime = System.nanoTime();
        UIManagerHelperCompatKt.getReactContext(this).runOnNativeModulesQueueThread(new SafeAreaView$$ExternalSyntheticLambda2(reentrantLock, booleanRef, newCondition));
        Lock lock = reentrantLock;
        lock.lock();
        long j = 0;
        while (!booleanRef.element && j < 500000000) {
            try {
                newCondition.awaitNanos(500000000);
            } catch (InterruptedException unused) {
                booleanRef.element = true;
            } catch (Throwable th) {
                lock.unlock();
                throw th;
            }
            j += System.nanoTime() - nanoTime;
        }
        Unit unit = Unit.INSTANCE;
        lock.unlock();
        if (j >= 500000000) {
            Log.w("SafeAreaView", "Timed out waiting for layout.");
        }
    }

    /* access modifiers changed from: private */
    /* renamed from: waitForReactLayout$lambda-3  reason: not valid java name */
    public static final void m196waitForReactLayout$lambda3(ReentrantLock reentrantLock, Ref.BooleanRef booleanRef, Condition condition) {
        Intrinsics.checkNotNullParameter(reentrantLock, "$lock");
        Intrinsics.checkNotNullParameter(booleanRef, "$done");
        Lock lock = reentrantLock;
        lock.lock();
        try {
            if (!booleanRef.element) {
                booleanRef.element = true;
                condition.signal();
            }
            Unit unit = Unit.INSTANCE;
        } finally {
            lock.unlock();
        }
    }

    public final void setMode(SafeAreaViewMode safeAreaViewMode) {
        Intrinsics.checkNotNullParameter(safeAreaViewMode, "mode");
        this.mMode = safeAreaViewMode;
        updateInsets();
    }

    public final void setEdges(EnumSet<SafeAreaViewEdges> enumSet) {
        this.mEdges = enumSet;
        updateInsets();
    }

    private final boolean maybeUpdateInsets() {
        EdgeInsets safeAreaInsets;
        View view = this.mProviderView;
        if (view == null || (safeAreaInsets = SafeAreaUtilsKt.getSafeAreaInsets(view)) == null || Intrinsics.areEqual((Object) this.mInsets, (Object) safeAreaInsets)) {
            return false;
        }
        this.mInsets = safeAreaInsets;
        updateInsets();
        return true;
    }

    private final View findProvider() {
        for (ViewParent parent = getParent(); parent != null; parent = parent.getParent()) {
            if (parent instanceof SafeAreaProvider) {
                return (View) parent;
            }
        }
        return this;
    }

    /* access modifiers changed from: protected */
    public void onAttachedToWindow() {
        ViewTreeObserver viewTreeObserver;
        super.onAttachedToWindow();
        View findProvider = findProvider();
        this.mProviderView = findProvider;
        if (!(findProvider == null || (viewTreeObserver = findProvider.getViewTreeObserver()) == null)) {
            viewTreeObserver.addOnPreDrawListener(this);
        }
        maybeUpdateInsets();
    }

    /* access modifiers changed from: protected */
    public void onDetachedFromWindow() {
        ViewTreeObserver viewTreeObserver;
        super.onDetachedFromWindow();
        View view = this.mProviderView;
        if (!(view == null || (viewTreeObserver = view.getViewTreeObserver()) == null)) {
            viewTreeObserver.removeOnPreDrawListener(this);
        }
        this.mProviderView = null;
    }

    public boolean onPreDraw() {
        boolean maybeUpdateInsets = maybeUpdateInsets();
        if (maybeUpdateInsets) {
            requestLayout();
        }
        return !maybeUpdateInsets;
    }
}
    
Download file