// Path: app/src/main/java/org/simlar/utils/Util.java
// public final class Util
// {
// 	public static final String[] EMPTY_STRING_ARRAY = {};
// 	private static final int MAX_BUFFER_SIZE = 1024 * 1024;
// 
// 	private Util()
// 	{
// 		throw new AssertionError("This class was not meant to be instantiated");
// 	}
// 
// 	public static boolean isNullOrEmpty(final String string)
// 	{
// 		return string == null || string.isEmpty();
// 	}
// 
// 	public static int compareString(final String lhs, final String rhs)
// 	{
// 		if (isNullOrEmpty(lhs) && isNullOrEmpty(rhs)) {
// 			return 0;
// 		}
// 
// 		if (isNullOrEmpty(lhs)) {
// 			return -1;
// 		}
// 
// 		if (isNullOrEmpty(rhs)) {
// 			return 1;
// 		}
// 
// 		return lhs.compareToIgnoreCase(rhs);
// 	}
// 
// 	public static boolean equalString(final String lhs, final String rhs)
// 	{
// 		return compareString(lhs, rhs) == 0;
// 	}
// 
// 	public static boolean equals(final Object lhs, final Object rhs)
// 	{
// 		//noinspection EqualsReplaceableByObjectsCall,ObjectEquality /// Objects.equals is available in android sdk >= 19
// 		return lhs == rhs || lhs != null && lhs.equals(rhs);
// 	}
// 
// 	public static void copyStream(final InputStream is, final OutputStream os) throws IOException
// 	{
// 		final byte[] buffer = new byte[MAX_BUFFER_SIZE];
// 		int length;
// 		while ((length = is.read(buffer)) != -1) {
// 			os.write(buffer, 0, length);
// 		}
// 	}
// 
// 	public static Spanned fromHtml(final String string)
// 	{
// 		return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ? Html.fromHtml(string, Html.FROM_HTML_MODE_LEGACY) : Html.fromHtml(string);
// 	}
// 
// 	public static String formatMilliSeconds(final long milliSeconds)
// 	{
// 		if (milliSeconds >= 0) {
// 			return formatPositiveMilliSeconds(milliSeconds);
// 		}
// 
// 		return '-' + formatPositiveMilliSeconds(-1 * milliSeconds);
// 	}
// 
// 	private static String formatPositiveMilliSeconds(final long milliSeconds)
// 	{
// 		final SimpleDateFormat sdf = createSimpleDateFormat(milliSeconds);
// 		sdf.setTimeZone(TimeZone.getTimeZone("GMT+0"));
// 		return sdf.format(new Date(milliSeconds));
// 	}
// 
// 	private static SimpleDateFormat createSimpleDateFormat(final long milliSeconds)
// 	{
// 		if (milliSeconds >= 3600000) {
// 			return new SimpleDateFormat("HH:mm:ss", Locale.US);
// 		}
// 
// 		return new SimpleDateFormat("mm:ss", Locale.US);
// 	}
// 
// 	@NonNull
// 	public static <T> T getSystemService(final Context context, final String name)
// 	{
// 		if (context == null) {
// 			throw new IllegalArgumentException("no context");
// 		}
// 
// 		@SuppressWarnings("unchecked")
// 		final T service = (T) context.getSystemService(name);
// 		if (service == null) {
// 			throw new IllegalArgumentException("no system service matching name: " + name);
// 		}
// 		return service;
// 	}
// }


import android.content.Context;
import android.content.SharedPreferences;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.simlar.utils.Util;

	private static void createPasswordHash()
	{
		// kamailio password hash md5(username:realm:password)
		mPasswordHash = md5(mMySimlarId + ':' + ServerSettings.DOMAIN + ':' + mPassword);
	}

	private static String md5(final String str)
	{
		try {
			final MessageDigest digest = MessageDigest.getInstance("md5");
			digest.update(str.getBytes());
			final StringBuilder sb = new StringBuilder();
			for (final byte b : digest.digest()) {
				sb.append(String.format("%02x", b));
			}
			return sb.toString();
		} catch (final NoSuchAlgorithmException e) {
			return "";
		}
	}

	@SuppressWarnings("WeakerAccess")
	public static final class NotInitedException extends IllegalStateException
	{
		private static final long serialVersionUID = 1;
	}

	public static String getMySimlarId() throws NotInitedException
	{
// Path: app/src/main/java/org/simlar/utils/Util.java
// public final class Util
// {
// 	public static final String[] EMPTY_STRING_ARRAY = {};
// 	private static final int MAX_BUFFER_SIZE = 1024 * 1024;
// 
// 	private Util()
// 	{
// 		throw new AssertionError("This class was not meant to be instantiated");
// 	}
// 
// 	public static boolean isNullOrEmpty(final String string)
// 	{
// 		return string == null || string.isEmpty();
// 	}
// 
// 	public static int compareString(final String lhs, final String rhs)
// 	{
// 		if (isNullOrEmpty(lhs) && isNullOrEmpty(rhs)) {
// 			return 0;
// 		}
// 
// 		if (isNullOrEmpty(lhs)) {
// 			return -1;
// 		}
// 
// 		if (isNullOrEmpty(rhs)) {
// 			return 1;
// 		}
// 
// 		return lhs.compareToIgnoreCase(rhs);
// 	}
// 
// 	public static boolean equalString(final String lhs, final String rhs)
// 	{
// 		return compareString(lhs, rhs) == 0;
// 	}
// 
// 	public static boolean equals(final Object lhs, final Object rhs)
// 	{
// 		//noinspection EqualsReplaceableByObjectsCall,ObjectEquality /// Objects.equals is available in android sdk >= 19
// 		return lhs == rhs || lhs != null && lhs.equals(rhs);
// 	}
// 
// 	public static void copyStream(final InputStream is, final OutputStream os) throws IOException
// 	{
// 		final byte[] buffer = new byte[MAX_BUFFER_SIZE];
// 		int length;
// 		while ((length = is.read(buffer)) != -1) {
// 			os.write(buffer, 0, length);
// 		}
// 	}
// 
// 	public static Spanned fromHtml(final String string)
// 	{
// 		return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ? Html.fromHtml(string, Html.FROM_HTML_MODE_LEGACY) : Html.fromHtml(string);
// 	}
// 
// 	public static String formatMilliSeconds(final long milliSeconds)
// 	{
// 		if (milliSeconds >= 0) {
// 			return formatPositiveMilliSeconds(milliSeconds);
// 		}
// 
// 		return '-' + formatPositiveMilliSeconds(-1 * milliSeconds);
// 	}
// 
// 	private static String formatPositiveMilliSeconds(final long milliSeconds)
// 	{
// 		final SimpleDateFormat sdf = createSimpleDateFormat(milliSeconds);
// 		sdf.setTimeZone(TimeZone.getTimeZone("GMT+0"));
// 		return sdf.format(new Date(milliSeconds));
// 	}
// 
// 	private static SimpleDateFormat createSimpleDateFormat(final long milliSeconds)
// 	{
// 		if (milliSeconds >= 3600000) {
// 			return new SimpleDateFormat("HH:mm:ss", Locale.US);
// 		}
// 
// 		return new SimpleDateFormat("mm:ss", Locale.US);
// 	}
// 
// 	@NonNull
// 	public static <T> T getSystemService(final Context context, final String name)
// 	{
// 		if (context == null) {
// 			throw new IllegalArgumentException("no context");
// 		}
// 
// 		@SuppressWarnings("unchecked")
// 		final T service = (T) context.getSystemService(name);
// 		if (service == null) {
// 			throw new IllegalArgumentException("no system service matching name: " + name);
// 		}
// 		return service;
// 	}
// }


// Path: app/src/main/java/org/simlar/helper/PreferencesHelper.java
import android.content.Context;
import android.content.SharedPreferences;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.simlar.utils.Util;


	private static void createPasswordHash()
	{
		// kamailio password hash md5(username:realm:password)
		mPasswordHash = md5(mMySimlarId + ':' + ServerSettings.DOMAIN + ':' + mPassword);
	}

	private static String md5(final String str)
	{
		try {
			final MessageDigest digest = MessageDigest.getInstance("md5");
			digest.update(str.getBytes());
			final StringBuilder sb = new StringBuilder();
			for (final byte b : digest.digest()) {
				sb.append(String.format("%02x", b));
			}
			return sb.toString();
		} catch (final NoSuchAlgorithmException e) {
			return "";
		}
	}

	@SuppressWarnings("WeakerAccess")
	public static final class NotInitedException extends IllegalStateException
	{
		private static final long serialVersionUID = 1;
	}

	public static String getMySimlarId() throws NotInitedException
	{
		if (Util.isNullOrEmpty(mMySimlarId)) {