- 28,932 files - Full Java source code - Smali files - Resources Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
585 lines
20 KiB
Java
585 lines
20 KiB
Java
package com.fyber.inneractive.sdk.protobuf;
|
|
|
|
import java.lang.reflect.Field;
|
|
import java.nio.ByteBuffer;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
import sun.misc.Unsafe;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public final class p1 {
|
|
public static final Unsafe a;
|
|
public static final Class<?> b;
|
|
public static final d c;
|
|
public static final boolean d;
|
|
public static final boolean e;
|
|
public static final long f;
|
|
public static final long g;
|
|
public static final boolean h;
|
|
|
|
/* JADX WARN: Can't wrap try/catch for region: R(23:0|1|(2:2|3)|4|(17:6|(1:(1:9)(1:(1:46)))(1:47)|10|(1:12)(1:44)|13|(1:15)(1:43)|16|(3:18|19|20)|35|36|37|(1:39)|(1:32)(1:25)|26|(1:28)|29|30)|48|10|(0)(0)|13|(0)(0)|16|(0)|35|36|37|(0)|(0)|32|26|(0)|29|30|(1:(0))) */
|
|
/* JADX WARN: Code restructure failed: missing block: B:21:0x00a0, code lost:
|
|
|
|
if (r3 == null) goto L33;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:22:0x00a2, code lost:
|
|
|
|
r0 = r3;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:40:0x00b4, code lost:
|
|
|
|
if (r3.getType() == java.lang.Long.TYPE) goto L32;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:42:0x00ab, code lost:
|
|
|
|
r3 = null;
|
|
*/
|
|
/* JADX WARN: Removed duplicated region for block: B:12:0x0045 */
|
|
/* JADX WARN: Removed duplicated region for block: B:15:0x004f */
|
|
/* JADX WARN: Removed duplicated region for block: B:18:0x0098 */
|
|
/* JADX WARN: Removed duplicated region for block: B:28:0x00cf */
|
|
/* JADX WARN: Removed duplicated region for block: B:39:0x00ae */
|
|
/* JADX WARN: Removed duplicated region for block: B:43:0x0051 */
|
|
/* JADX WARN: Removed duplicated region for block: B:44:0x0047 */
|
|
static {
|
|
/*
|
|
r0 = 0
|
|
com.fyber.inneractive.sdk.protobuf.o1 r1 = new com.fyber.inneractive.sdk.protobuf.o1 // Catch: java.lang.Throwable -> Ld
|
|
r1.<init>() // Catch: java.lang.Throwable -> Ld
|
|
java.lang.Object r1 = java.security.AccessController.doPrivileged(r1) // Catch: java.lang.Throwable -> Ld
|
|
sun.misc.Unsafe r1 = (sun.misc.Unsafe) r1 // Catch: java.lang.Throwable -> Ld
|
|
goto Le
|
|
Ld:
|
|
r1 = r0
|
|
Le:
|
|
com.fyber.inneractive.sdk.protobuf.p1.a = r1
|
|
java.lang.Class<?> r2 = com.fyber.inneractive.sdk.protobuf.d.a
|
|
com.fyber.inneractive.sdk.protobuf.p1.b = r2
|
|
java.lang.Class r2 = java.lang.Long.TYPE
|
|
boolean r2 = c(r2)
|
|
java.lang.Class r3 = java.lang.Integer.TYPE
|
|
boolean r3 = c(r3)
|
|
if (r1 != 0) goto L23
|
|
goto L39
|
|
L23:
|
|
boolean r4 = com.fyber.inneractive.sdk.protobuf.d.a()
|
|
if (r4 == 0) goto L3b
|
|
if (r2 == 0) goto L31
|
|
com.fyber.inneractive.sdk.protobuf.p1$b r2 = new com.fyber.inneractive.sdk.protobuf.p1$b
|
|
r2.<init>(r1)
|
|
goto L40
|
|
L31:
|
|
if (r3 == 0) goto L39
|
|
com.fyber.inneractive.sdk.protobuf.p1$a r2 = new com.fyber.inneractive.sdk.protobuf.p1$a
|
|
r2.<init>(r1)
|
|
goto L40
|
|
L39:
|
|
r2 = r0
|
|
goto L40
|
|
L3b:
|
|
com.fyber.inneractive.sdk.protobuf.p1$c r2 = new com.fyber.inneractive.sdk.protobuf.p1$c
|
|
r2.<init>(r1)
|
|
L40:
|
|
com.fyber.inneractive.sdk.protobuf.p1.c = r2
|
|
r1 = 0
|
|
if (r2 != 0) goto L47
|
|
r3 = r1
|
|
goto L4b
|
|
L47:
|
|
boolean r3 = r2.b()
|
|
L4b:
|
|
com.fyber.inneractive.sdk.protobuf.p1.d = r3
|
|
if (r2 != 0) goto L51
|
|
r3 = r1
|
|
goto L55
|
|
L51:
|
|
boolean r3 = r2.a()
|
|
L55:
|
|
com.fyber.inneractive.sdk.protobuf.p1.e = r3
|
|
java.lang.Class<byte[]> r3 = byte[].class
|
|
int r3 = a(r3)
|
|
long r3 = (long) r3
|
|
com.fyber.inneractive.sdk.protobuf.p1.f = r3
|
|
java.lang.Class<boolean[]> r3 = boolean[].class
|
|
a(r3)
|
|
b(r3)
|
|
java.lang.Class<int[]> r3 = int[].class
|
|
a(r3)
|
|
b(r3)
|
|
java.lang.Class<long[]> r3 = long[].class
|
|
a(r3)
|
|
b(r3)
|
|
java.lang.Class<float[]> r3 = float[].class
|
|
a(r3)
|
|
b(r3)
|
|
java.lang.Class<double[]> r3 = double[].class
|
|
a(r3)
|
|
b(r3)
|
|
java.lang.Class<java.lang.Object[]> r3 = java.lang.Object[].class
|
|
a(r3)
|
|
b(r3)
|
|
boolean r3 = com.fyber.inneractive.sdk.protobuf.d.a()
|
|
java.lang.Class<java.nio.Buffer> r4 = java.nio.Buffer.class
|
|
if (r3 == 0) goto La4
|
|
java.lang.String r3 = "effectiveDirectAddress"
|
|
java.lang.reflect.Field r3 = r4.getDeclaredField(r3) // Catch: java.lang.Throwable -> L9f
|
|
goto La0
|
|
L9f:
|
|
r3 = r0
|
|
La0:
|
|
if (r3 == 0) goto La4
|
|
La2:
|
|
r0 = r3
|
|
goto Lb7
|
|
La4:
|
|
java.lang.String r3 = "address"
|
|
java.lang.reflect.Field r3 = r4.getDeclaredField(r3) // Catch: java.lang.Throwable -> Lab
|
|
goto Lac
|
|
Lab:
|
|
r3 = r0
|
|
Lac:
|
|
if (r3 == 0) goto Lb7
|
|
java.lang.Class r4 = r3.getType()
|
|
java.lang.Class r5 = java.lang.Long.TYPE
|
|
if (r4 != r5) goto Lb7
|
|
goto La2
|
|
Lb7:
|
|
if (r0 == 0) goto Lc3
|
|
if (r2 != 0) goto Lbc
|
|
goto Lc3
|
|
Lbc:
|
|
sun.misc.Unsafe r2 = r2.a
|
|
long r2 = r2.objectFieldOffset(r0)
|
|
goto Lc5
|
|
Lc3:
|
|
r2 = -1
|
|
Lc5:
|
|
com.fyber.inneractive.sdk.protobuf.p1.g = r2
|
|
java.nio.ByteOrder r0 = java.nio.ByteOrder.nativeOrder()
|
|
java.nio.ByteOrder r2 = java.nio.ByteOrder.BIG_ENDIAN
|
|
if (r0 != r2) goto Ld0
|
|
r1 = 1
|
|
Ld0:
|
|
com.fyber.inneractive.sdk.protobuf.p1.h = r1
|
|
return
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: com.fyber.inneractive.sdk.protobuf.p1.<clinit>():void");
|
|
}
|
|
|
|
public static boolean c(Class<?> cls) {
|
|
if (!com.fyber.inneractive.sdk.protobuf.d.a()) {
|
|
return false;
|
|
}
|
|
try {
|
|
Class<?> cls2 = b;
|
|
Class<?> cls3 = Boolean.TYPE;
|
|
cls2.getMethod("peekLong", cls, cls3);
|
|
cls2.getMethod("pokeLong", cls, Long.TYPE, cls3);
|
|
Class<?> cls4 = Integer.TYPE;
|
|
cls2.getMethod("pokeInt", cls, cls4, cls3);
|
|
cls2.getMethod("peekInt", cls, cls3);
|
|
cls2.getMethod("pokeByte", cls, Byte.TYPE);
|
|
cls2.getMethod("peekByte", cls);
|
|
cls2.getMethod("pokeByteArray", cls, byte[].class, cls4, cls4);
|
|
cls2.getMethod("peekByteArray", cls, byte[].class, cls4, cls4);
|
|
return true;
|
|
} catch (Throwable unused) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static byte d(Object obj, long j) {
|
|
return (byte) ((e(obj, (-4) & j) >>> ((int) ((j & 3) << 3))) & 255);
|
|
}
|
|
|
|
public static int a(Class<?> cls) {
|
|
if (e) {
|
|
return c.a.arrayBaseOffset(cls);
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
public static void b(Class cls) {
|
|
if (e) {
|
|
c.a.arrayIndexScale(cls);
|
|
}
|
|
}
|
|
|
|
public static int e(Object obj, long j) {
|
|
return c.a.getInt(obj, j);
|
|
}
|
|
|
|
public static long f(Object obj, long j) {
|
|
return c.a.getLong(obj, j);
|
|
}
|
|
|
|
public static Object g(Object obj, long j) {
|
|
return c.a.getObject(obj, j);
|
|
}
|
|
|
|
public static final class a extends d {
|
|
public a(Unsafe unsafe) {
|
|
super(unsafe);
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final void a(Object obj, long j, byte b) {
|
|
if (p1.h) {
|
|
p1.a(obj, j, b);
|
|
} else {
|
|
p1.b(obj, j, b);
|
|
}
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final byte b(Object obj, long j) {
|
|
return p1.h ? p1.c(obj, j) : p1.d(obj, j);
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final boolean b() {
|
|
return false;
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final double c(Object obj, long j) {
|
|
return Double.longBitsToDouble(this.a.getLong(obj, j));
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final float d(Object obj, long j) {
|
|
return Float.intBitsToFloat(this.a.getInt(obj, j));
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final boolean a(Object obj, long j) {
|
|
if (p1.h) {
|
|
return p1.a(obj, j);
|
|
}
|
|
return p1.b(obj, j);
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final void a(Object obj, long j, boolean z) {
|
|
if (p1.h) {
|
|
p1.a(obj, j, z ? (byte) 1 : (byte) 0);
|
|
} else {
|
|
p1.b(obj, j, z ? (byte) 1 : (byte) 0);
|
|
}
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final void a(Object obj, long j, float f) {
|
|
this.a.putInt(obj, j, Float.floatToIntBits(f));
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final void a(Object obj, long j, double d) {
|
|
this.a.putLong(obj, j, Double.doubleToLongBits(d));
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final byte a(long j) {
|
|
throw new UnsupportedOperationException();
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final void a(long j, byte[] bArr, long j2) {
|
|
throw new UnsupportedOperationException();
|
|
}
|
|
}
|
|
|
|
public static final class b extends d {
|
|
public b(Unsafe unsafe) {
|
|
super(unsafe);
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final void a(Object obj, long j, byte b) {
|
|
if (p1.h) {
|
|
p1.a(obj, j, b);
|
|
} else {
|
|
p1.b(obj, j, b);
|
|
}
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final byte b(Object obj, long j) {
|
|
return p1.h ? p1.c(obj, j) : p1.d(obj, j);
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final boolean b() {
|
|
return false;
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final double c(Object obj, long j) {
|
|
return Double.longBitsToDouble(this.a.getLong(obj, j));
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final float d(Object obj, long j) {
|
|
return Float.intBitsToFloat(this.a.getInt(obj, j));
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final boolean a(Object obj, long j) {
|
|
if (p1.h) {
|
|
return p1.a(obj, j);
|
|
}
|
|
return p1.b(obj, j);
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final void a(Object obj, long j, boolean z) {
|
|
if (p1.h) {
|
|
p1.a(obj, j, z ? (byte) 1 : (byte) 0);
|
|
} else {
|
|
p1.b(obj, j, z ? (byte) 1 : (byte) 0);
|
|
}
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final void a(Object obj, long j, float f) {
|
|
this.a.putInt(obj, j, Float.floatToIntBits(f));
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final void a(Object obj, long j, double d) {
|
|
this.a.putLong(obj, j, Double.doubleToLongBits(d));
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final byte a(long j) {
|
|
throw new UnsupportedOperationException();
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final void a(long j, byte[] bArr, long j2) {
|
|
throw new UnsupportedOperationException();
|
|
}
|
|
}
|
|
|
|
public static final class c extends d {
|
|
public c(Unsafe unsafe) {
|
|
super(unsafe);
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final boolean a() {
|
|
if (!super.a()) {
|
|
return false;
|
|
}
|
|
try {
|
|
Class<?> cls = this.a.getClass();
|
|
Class<?> cls2 = Long.TYPE;
|
|
cls.getMethod("getByte", Object.class, cls2);
|
|
cls.getMethod("putByte", Object.class, cls2, Byte.TYPE);
|
|
cls.getMethod("getBoolean", Object.class, cls2);
|
|
cls.getMethod("putBoolean", Object.class, cls2, Boolean.TYPE);
|
|
cls.getMethod("getFloat", Object.class, cls2);
|
|
cls.getMethod("putFloat", Object.class, cls2, Float.TYPE);
|
|
cls.getMethod("getDouble", Object.class, cls2);
|
|
cls.getMethod("putDouble", Object.class, cls2, Double.TYPE);
|
|
return true;
|
|
} catch (Throwable th) {
|
|
Logger.getLogger(p1.class.getName()).log(Level.WARNING, "platform method missing - proto runtime falling back to safer methods: " + th);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final double c(Object obj, long j) {
|
|
return this.a.getDouble(obj, j);
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final float d(Object obj, long j) {
|
|
return this.a.getFloat(obj, j);
|
|
}
|
|
|
|
/* JADX WARN: Code restructure failed: missing block: B:12:0x003e, code lost:
|
|
|
|
if (r5 == null) goto L16;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:13:0x0040, code lost:
|
|
|
|
r10 = r5;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:29:0x0055, code lost:
|
|
|
|
if (r5.getType() == java.lang.Long.TYPE) goto L13;
|
|
*/
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
public final boolean b() {
|
|
/*
|
|
Method dump skipped, instructions count: 245
|
|
To view this dump add '--comments-level debug' option
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: com.fyber.inneractive.sdk.protobuf.p1.c.b():boolean");
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final void a(Object obj, long j, byte b) {
|
|
this.a.putByte(obj, j, b);
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final boolean a(Object obj, long j) {
|
|
return this.a.getBoolean(obj, j);
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final void a(Object obj, long j, boolean z) {
|
|
this.a.putBoolean(obj, j, z);
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final void a(Object obj, long j, float f) {
|
|
this.a.putFloat(obj, j, f);
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final void a(Object obj, long j, double d) {
|
|
this.a.putDouble(obj, j, d);
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final byte a(long j) {
|
|
return this.a.getByte(j);
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final void a(long j, byte[] bArr, long j2) {
|
|
this.a.copyMemory((Object) null, j, bArr, p1.f, j2);
|
|
}
|
|
|
|
@Override // com.fyber.inneractive.sdk.protobuf.p1.d
|
|
public final byte b(Object obj, long j) {
|
|
return this.a.getByte(obj, j);
|
|
}
|
|
}
|
|
|
|
public static abstract class d {
|
|
public final Unsafe a;
|
|
|
|
public d(Unsafe unsafe) {
|
|
this.a = unsafe;
|
|
}
|
|
|
|
public abstract byte a(long j);
|
|
|
|
public abstract void a(long j, byte[] bArr, long j2);
|
|
|
|
public abstract void a(Object obj, long j, byte b);
|
|
|
|
public abstract void a(Object obj, long j, double d);
|
|
|
|
public abstract void a(Object obj, long j, float f);
|
|
|
|
public abstract void a(Object obj, long j, boolean z);
|
|
|
|
public abstract boolean a(Object obj, long j);
|
|
|
|
public abstract byte b(Object obj, long j);
|
|
|
|
public abstract boolean b();
|
|
|
|
public abstract double c(Object obj, long j);
|
|
|
|
public abstract float d(Object obj, long j);
|
|
|
|
public boolean a() {
|
|
Unsafe unsafe = this.a;
|
|
if (unsafe == null) {
|
|
return false;
|
|
}
|
|
try {
|
|
Class<?> cls = unsafe.getClass();
|
|
cls.getMethod("objectFieldOffset", Field.class);
|
|
cls.getMethod("arrayBaseOffset", Class.class);
|
|
cls.getMethod("arrayIndexScale", Class.class);
|
|
Class<?> cls2 = Long.TYPE;
|
|
cls.getMethod("getInt", Object.class, cls2);
|
|
cls.getMethod("putInt", Object.class, cls2, Integer.TYPE);
|
|
cls.getMethod("getLong", Object.class, cls2);
|
|
cls.getMethod("putLong", Object.class, cls2, cls2);
|
|
cls.getMethod("getObject", Object.class, cls2);
|
|
cls.getMethod("putObject", Object.class, cls2, Object.class);
|
|
return true;
|
|
} catch (Throwable th) {
|
|
Unsafe unsafe2 = p1.a;
|
|
Logger.getLogger(p1.class.getName()).log(Level.WARNING, "platform method missing - proto runtime falling back to safer methods: " + th);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void b(Object obj, long j, byte b2) {
|
|
long j2 = (-4) & j;
|
|
int i = (((int) j) & 3) << 3;
|
|
a(((255 & b2) << i) | (e(obj, j2) & (~(255 << i))), j2, obj);
|
|
}
|
|
|
|
public static void a(int i, long j, Object obj) {
|
|
c.a.putInt(obj, j, i);
|
|
}
|
|
|
|
public static void a(Object obj, long j, long j2) {
|
|
c.a.putLong(obj, j, j2);
|
|
}
|
|
|
|
public static boolean b(Object obj, long j) {
|
|
return d(obj, j) != 0;
|
|
}
|
|
|
|
public static void a(Object obj, long j, boolean z) {
|
|
c.a(obj, j, z);
|
|
}
|
|
|
|
public static void a(Object obj, long j, float f2) {
|
|
c.a(obj, j, f2);
|
|
}
|
|
|
|
public static void a(Object obj, long j, double d2) {
|
|
c.a(obj, j, d2);
|
|
}
|
|
|
|
public static void a(long j, Object obj, Object obj2) {
|
|
c.a.putObject(obj, j, obj2);
|
|
}
|
|
|
|
public static byte c(Object obj, long j) {
|
|
return (byte) ((e(obj, (-4) & j) >>> ((int) (((~j) & 3) << 3))) & 255);
|
|
}
|
|
|
|
public static byte a(byte[] bArr, long j) {
|
|
return c.b(bArr, f + j);
|
|
}
|
|
|
|
public static void a(byte[] bArr, long j, byte b2) {
|
|
c.a((Object) bArr, f + j, b2);
|
|
}
|
|
|
|
public static long a(ByteBuffer byteBuffer) {
|
|
d dVar = c;
|
|
return dVar.a.getLong(byteBuffer, g);
|
|
}
|
|
|
|
public static void a(Object obj, long j, byte b2) {
|
|
long j2 = (-4) & j;
|
|
int e2 = e(obj, j2);
|
|
int i = ((~((int) j)) & 3) << 3;
|
|
a(((255 & b2) << i) | (e2 & (~(255 << i))), j2, obj);
|
|
}
|
|
|
|
public static boolean a(Object obj, long j) {
|
|
return c(obj, j) != 0;
|
|
}
|
|
}
|