Error while buildiing android 1.0.1+3

e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/CallkitIncomingBroadcastReceiver.kt: (8, 7): Redeclaration: CallkitIncomingBroadcastReceiver
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/CallkitIncomingBroadcastReceiver.kt: (132, 21): Overload resolution ambiguity:
public fun removeCall(context: Context?, data: Data): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun removeCall(context: Context?, data: Data): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/CallkitIncomingBroadcastReceiver.kt: (142, 21): Overload resolution ambiguity:
public fun removeCall(context: Context?, data: Data): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun removeCall(context: Context?, data: Data): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/CallkitIncomingBroadcastReceiver.kt: (152, 21): Overload resolution ambiguity:
public fun removeCall(context: Context?, data: Data): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun removeCall(context: Context?, data: Data): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/CallkitNotificationManager.kt: (34, 7): Redeclaration: CallkitNotificationManager
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (21, 7): Redeclaration: FlutterCallkitIncomingPlugin
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (109, 21): Overload resolution ambiguity:
public fun getDataActiveCalls(context: Context?): kotlin.collections.ArrayList /* = java.util.ArrayList / defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun getDataActiveCalls(context: Context?): kotlin.collections.ArrayList / = java.util.ArrayList / defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (110, 15): Overload resolution ambiguity:
public inline fun  Iterable<TypeVariable(T)>.forEach(action: (TypeVariable(T)) -> Unit): Unit defined in kotlin.collections
public inline fun <K, V> Map<out TypeVariable(K), TypeVariable(V)>.forEach(action: (Map.Entry<TypeVariable(K), TypeVariable(V)>) -> Unit): Unit defined in kotlin.collections
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (114, 21): Unresolved reference: it
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (118, 9): Overload resolution ambiguity:
public fun removeAllCalls(context: Context?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun removeAllCalls(context: Context?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (159, 33): Overload resolution ambiguity:
public fun getDataActiveCalls(context: Context?): kotlin.collections.ArrayList / = java.util.ArrayList / defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun getDataActiveCalls(context: Context?): kotlin.collections.ArrayList / = java.util.ArrayList / defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (160, 27): Overload resolution ambiguity:
public inline fun  Iterable<TypeVariable(T)>.forEach(action: (TypeVariable(T)) -> Unit): Unit defined in kotlin.collections
public inline fun <K, V> Map<out TypeVariable(K), TypeVariable(V)>.forEach(action: (Map.Entry<TypeVariable(K), TypeVariable(V)>) -> Unit): Unit defined in kotlin.collections
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (164, 33): Unresolved reference: it
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (168, 21): Overload resolution ambiguity:
public fun removeAllCalls(context: Context?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun removeAllCalls(context: Context?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (172, 36): Overload resolution ambiguity:
public fun getActiveCalls(context: Context?): String defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun getActiveCalls(context: Context?): String defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (19, 16): Overload resolution ambiguity:
public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (21, 10): Overload resolution ambiguity:
public open fun <T : Any!> fromJson(p0: JsonElement!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: JsonReader!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: Reader!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: String!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (23, 5): Overload resolution ambiguity:
public fun putString(context: Context?, key: String, value: String?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun putString(context: Context?, key: String, value: String?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (26, 1): Conflicting overloads: public fun removeCall(context: Context?, data: Data): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt, public fun removeCall(context: Context?, data: Data): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (27, 16): Overload resolution ambiguity:
public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (29, 10): Overload resolution ambiguity:
public open fun <T : Any!> fromJson(p0: JsonElement!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: JsonReader!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: Reader!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: String!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (31, 5): Overload resolution ambiguity:
public fun putString(context: Context?, key: String, value: String?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun putString(context: Context?, key: String, value: String?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (34, 1): Conflicting overloads: public fun removeAllCalls(context: Context?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt, public fun removeAllCalls(context: Context?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (35, 5): Overload resolution ambiguity:
public fun putString(context: Context?, key: String, value: String?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun putString(context: Context?, key: String, value: String?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (36, 5): Overload resolution ambiguity:
public fun remove(context: Context?, key: String): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun remove(context: Context?, key: String): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (39, 1): Conflicting overloads: public fun getActiveCalls(context: Context?): String defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt, public fun getActiveCalls(context: Context?): String defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (40, 16): Overload resolution ambiguity:
public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (42, 10): Overload resolution ambiguity:
public open fun <T : Any!> fromJson(p0: JsonElement!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: JsonReader!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: Reader!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: String!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (46, 1): Conflicting overloads: public fun getDataActiveCalls(context: Context?): kotlin.collections.ArrayList / = java.util.ArrayList / defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt, public fun getDataActiveCalls(context: Context?): kotlin.collections.ArrayList / = java.util.ArrayList / defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (47, 16): Overload resolution ambiguity:
public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (49, 10): Overload resolution ambiguity:
public open fun <T : Any!> fromJson(p0: JsonElement!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: JsonReader!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: Reader!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: String!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (53, 1): Conflicting overloads: public fun putString(context: Context?, key: String, value: String?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt, public fun putString(context: Context?, key: String, value: String?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (60, 1): Conflicting overloads: public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt, public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+2/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (66, 1): Conflicting overloads: public fun remove(context: Context?, key: String): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt, public fun remove(context: Context?, key: String): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/Call.kt: (5, 7): Redeclaration: Call
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/Call.kt: (9, 12): Redeclaration: Data
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/Call.kt: (85, 46): Unresolved reference: EXTRA_CALLKIT_IS_SHOW_CALLBACK
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/Call.kt: (131, 18): Unresolved reference: isShowCallback
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/Call.kt: (132, 50): Unresolved reference: EXTRA_CALLKIT_IS_SHOW_CALLBACK
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/CallkitIncomingBroadcastReceiver.kt: (8, 7): Redeclaration: CallkitIncomingBroadcastReceiver
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/CallkitIncomingBroadcastReceiver.kt: (134, 21): Overload resolution ambiguity:
public fun removeCall(context: Context?, data: Data): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun removeCall(context: Context?, data: Data): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/CallkitIncomingBroadcastReceiver.kt: (144, 21): Overload resolution ambiguity:
public fun removeCall(context: Context?, data: Data): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun removeCall(context: Context?, data: Data): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/CallkitIncomingBroadcastReceiver.kt: (154, 21): Overload resolution ambiguity:
public fun removeCall(context: Context?, data: Data): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun removeCall(context: Context?, data: Data): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/CallkitNotificationManager.kt: (34, 7): Redeclaration: CallkitNotificationManager
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/CallkitNotificationManager.kt: (222, 79): Unresolved reference: EXTRA_CALLKIT_IS_SHOW_CALLBACK
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (21, 7): Redeclaration: FlutterCallkitIncomingPlugin
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (45, 24): Cannot access 'context': it is private in 'FlutterCallkitIncomingPlugin'
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (46, 24): Cannot access 'callkitNotificationManager': it is private in 'FlutterCallkitIncomingPlugin'
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (47, 24): Cannot access 'channel': it is private in 'FlutterCallkitIncomingPlugin'
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (48, 24): Cannot access 'channel': it is private in 'FlutterCallkitIncomingPlugin'
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (49, 24): Cannot access 'events': it is private in 'FlutterCallkitIncomingPlugin'
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (51, 24): Cannot access 'events': it is private in 'FlutterCallkitIncomingPlugin'
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (109, 21): Overload resolution ambiguity:
public fun getDataActiveCalls(context: Context?): kotlin.collections.ArrayList / = java.util.ArrayList / defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun getDataActiveCalls(context: Context?): kotlin.collections.ArrayList / = java.util.ArrayList / defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (110, 15): Overload resolution ambiguity:
public inline fun  Iterable<TypeVariable(T)>.forEach(action: (TypeVariable(T)) -> Unit): Unit defined in kotlin.collections
public inline fun <K, V> Map<out TypeVariable(K), TypeVariable(V)>.forEach(action: (Map.Entry<TypeVariable(K), TypeVariable(V)>) -> Unit): Unit defined in kotlin.collections
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (114, 21): Unresolved reference: it
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (118, 9): Overload resolution ambiguity:
public fun removeAllCalls(context: Context?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun removeAllCalls(context: Context?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (159, 33): Overload resolution ambiguity:
public fun getDataActiveCalls(context: Context?): kotlin.collections.ArrayList / = java.util.ArrayList / defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun getDataActiveCalls(context: Context?): kotlin.collections.ArrayList / = java.util.ArrayList / defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (160, 27): Overload resolution ambiguity:
public inline fun  Iterable<TypeVariable(T)>.forEach(action: (TypeVariable(T)) -> Unit): Unit defined in kotlin.collections
public inline fun <K, V> Map<out TypeVariable(K), TypeVariable(V)>.forEach(action: (Map.Entry<TypeVariable(K), TypeVariable(V)>) -> Unit): Unit defined in kotlin.collections
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (161, 28): Unresolved reference: it
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (165, 37): Unresolved reference: it
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (172, 37): Unresolved reference: it
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (177, 21): Overload resolution ambiguity:
public fun removeAllCalls(context: Context?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun removeAllCalls(context: Context?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/FlutterCallkitIncomingPlugin.kt: (181, 36): Overload resolution ambiguity:
public fun getActiveCalls(context: Context?): String defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun getActiveCalls(context: Context?): String defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (19, 16): Overload resolution ambiguity:
public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (21, 10): Overload resolution ambiguity:
public open fun <T : Any!> fromJson(p0: JsonElement!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: JsonReader!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: Reader!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: String!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (24, 21): Unresolved reference: isAccepted
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (28, 5): Overload resolution ambiguity:
public fun putString(context: Context?, key: String, value: String?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun putString(context: Context?, key: String, value: String?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (31, 1): Conflicting overloads: public fun removeCall(context: Context?, data: Data): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt, public fun removeCall(context: Context?, data: Data): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (32, 16): Overload resolution ambiguity:
public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (34, 10): Overload resolution ambiguity:
public open fun <T : Any!> fromJson(p0: JsonElement!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: JsonReader!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: Reader!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: String!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (36, 5): Overload resolution ambiguity:
public fun putString(context: Context?, key: String, value: String?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun putString(context: Context?, key: String, value: String?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (39, 1): Conflicting overloads: public fun removeAllCalls(context: Context?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt, public fun removeAllCalls(context: Context?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (40, 5): Overload resolution ambiguity:
public fun putString(context: Context?, key: String, value: String?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun putString(context: Context?, key: String, value: String?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (41, 5): Overload resolution ambiguity:
public fun remove(context: Context?, key: String): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun remove(context: Context?, key: String): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (44, 1): Conflicting overloads: public fun getActiveCalls(context: Context?): String defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt, public fun getActiveCalls(context: Context?): String defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (45, 16): Overload resolution ambiguity:
public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (47, 10): Overload resolution ambiguity:
public open fun <T : Any!> fromJson(p0: JsonElement!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: JsonReader!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: Reader!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: String!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (51, 1): Conflicting overloads: public fun getDataActiveCalls(context: Context?): kotlin.collections.ArrayList / = java.util.ArrayList / defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt, public fun getDataActiveCalls(context: Context?): kotlin.collections.ArrayList / = java.util.ArrayList */ defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (52, 16): Overload resolution ambiguity:
public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (54, 10): Overload resolution ambiguity:
public open fun <T : Any!> fromJson(p0: JsonElement!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: JsonReader!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: Reader!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(p0: String!, p1: Type!): TypeVariable(T)! defined in com.google.gson.Gson
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (58, 1): Conflicting overloads: public fun putString(context: Context?, key: String, value: String?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt, public fun putString(context: Context?, key: String, value: String?): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (65, 1): Conflicting overloads: public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt, public fun getString(context: Context?, key: String, defaultValue: String = ...): String? defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt
e: /home/sayed/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_callkit_incoming-1.0.1+3/android/src/main/kotlin/com/hiennv/flutter_callkit_incoming/SharedPreferencesUtils.kt: (71, 1): Conflicting overloads: public fun remove(context: Context?, key: String): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt, public fun remove(context: Context?, key: String): Unit defined in com.hiennv.flutter_callkit_incoming in file SharedPreferencesUtils.kt

please make sure clear cache and reinstall

Fixed after running flutter clean, Thanks


Add json support to istioctl validate

Please provide a description of this PR:
Fixes: #46135
Previously istioctl validate didn't support directories consisting of json files due to the following guard if !info.IsDir() && filepath.Ext(path) == ".yaml". After this patch istioctl validate will support json files similarly as istioctl analyze

Hi @pawelbeza. Thanks for your PR.
I'm waiting for a istio member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.
Once the patch is verified, the new status will be reflected by the ok-to-test label.
I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@ymesika @hanxiaop I've removed unnecessary warn and added tests. Tests might look scary but they're analogous to the the already existing YAML tests.

/ok-to-test

@pawelbeza: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

release-notes_istio
25412c45a5f77c410044a553783615a941dd2b06
link
true
/test release-notes

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@ymesika @hanxiaop I've removed unnecessary warn and added tests.
JSON tests might look scary but they're pretty much the same as existing YAML tests.

Tests look good, thanks. We may revise the configs to testdata files instead of strings as a follow-up. But LGTM if adding a releasenote.

LGTM but as it's a UX we will need the release note.


compose_box: Make "To" in compose window clickable to narrow conversation.

Fixes #22756.
Edited with new description and behavior
Make the word "To" in the compose box a clickable element to narrow conversation view to recipients in the to field.
This is a first pass at making the word "To" clickable as a "narrow view" button, this is intentionally inconsistent with the narrow stream UX which relies on a separate button.

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[x] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[x] Calls out remaining decisions and concerns.
[ ] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[x] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[x] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[ ] Corner cases, error conditions, and easily imagined bugs.

Thanks for picking this up @manila !
The intended design is for the word "To" on the left of the recipient field to be a link, not for the pills themselves to be links.

Ah, yes, I re-read and realized that this literally meant the "To" word. Thank you for clarifying. I just pushed a change to make this the case. I'm editing the PR details now

Updated PR and description to solve the problem as described

This is missing proper tests but the most recent commit includes the tooltip and disabling of the "link" if the narrow is already in the pm, this should give a fairly clear representation of the behavior described in issue #22756

A couple of things to fix:

[ ] "To" should not be a link when there are no recipients.
[ ] Bug repro:

Start a group PM and go to that conversation
Remove one of the addresses
Expected: "To" should become a link again
Actual: "To" does not become a link

Thanks!

Thanks @alya for testing and the bug report!
This is now fixed in the most recent commit, I tested removing a recipient when there are multiple and when there is just one

@timabbott since you reviewed this earlier, perhaps you'd like to take another look?

There's a few minor things left to fix here, but I think it's close enough to a working version that I'm test-deploying this on chat.zulip.org to get some insight into whether this UX direction is working for folks.

Addressed the feedback in latest commit

Thanks! Our current thinking is we want to go with a different UI design, prototyped in #21962; depending how that experiment is received, we'll see which PR we'll invest in integrating.

Sounds good! At any rate this was a fun exercise, thank you for reviewing
for what it's worth I feel the other implementation (#23059) is more discoverable and consistent with existing behavior :)

I definitely appreciate the work you did to help us run this experiment!

Closing in favor of #23059, thanks again for doing this experiment @manila!


Dryness

removed limiter
factored duplicated code into functions

It looks like you are cleaning up the program code. Nice! Now I can understand / read a lot better than before. Keep it up!

Appreciate your support @AkiraNorthstar! I naturally need to see clearer as I'm implementing https://github.com/laszlocph/drone-oss-08/issues/10


Support overrideMimeType() method

The FakeXMLHttpRequest class is missing the overrideMimeType method, which is part of the XMLHttpRequest specification: https://www.w3.org/TR/XMLHttpRequest/#the-overridemimetype()-method. Applications or libraries relying on this method will get an "undefined is not a function" exception when using FakeXMLHttpRequest.
This PR adds the missing method and mimics its original behaviour.

Thanks!


Question- Rotating Camera

I'm used your shader for a quick test, and I'm having trouble with a rotating camera.
Does your shader works in case the camera rotates, or I just used it in a wrong way?

What settings did you achieve to get the similar behavior as the gif you uploaded? The shader works but the dissolve effect seems to be opposite the further away the camera is from the object, the more dissolve intensity happens and the closer to the object it is the less dissolved it is


YARN-9880. In YARN ui2 attempts tab, The running Application Attempt's ElapsedTime is incorrect.

1651

 Quality gate: Failed
3 Issues

 3 Code issues

Details

 Quality gate: Failed
3 Issues

 3 Code issues

Details


Make AuthInterop and AppCheckInterop properties optional in Storage

The AuthInterop and AppCheckInterop instances returned by ComponentType<ProtocolName>.instance(for: ProtocolName.self, in: app.container) are nullable (e.g., if AppCheck or Auth aren't added to an app). This hasn't broken the Storage SDK because the instances are only used in StorageTokenAuthorizer, where they're nullable parameters.
#no-changelog

Note: We could consider making the method FIRComponentType
+ (T)instanceForProtocol:inContainer: return a nullable T instead.
This would force us to ensure we handle nil in cases like AuthInterop or AppCheckInterop but would require us to force-unwrap in cases like StorageProvider where we know the value won't be nil (or something is very wrong if it is).

@andrewheard Yes, I think it should return a nullable T.
Instead of force unwrapping, we should do if let ... else fatalError()


chore: cherry-pick #2141: adding logs for eth_call size and gas (#2141)

Description:
cherry-pick #2141
Related issue(s):
Fixes #
Notes for reviewer:

Checklist

[ ] Documented (Code comments, README, etc.)
[ ] Tested (unit, integration, etc.)

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 75.15%.  Consider uploading reports for the commit a1b81d0 to get more accurate results

Additional details and impacted files
@@              Coverage Diff              @@
##           release/0.42    #2143   +/-   ##
=============================================
  Coverage         75.15%   75.15%
=============================================
  Files                13       13
  Lines               644      644
  Branches            118      118
=============================================
  Hits                484      484
  Misses              115      115
  Partials             45       45

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Visually connect substitutions of same teacher or same class

It would improve readability if we somehow showed substitutions that correspond to each other. For example, we could use the interchanging background colour for that, so corresponding substitutions get the same background colour. This should also work together with issue #9

@SpyrexDE Is the latest version visually okay for you? I implemented a connection by putting corresponding substitutions into a div of the class subst-collection, we just might need to tweak the CSS.

@Orchomenos You're a CSS guy, do you want to have a look at it? (Do mind I'm talking about the object-oriented-refactor branch, not master)


Added TableUtil.Len() function

A function that returns the length of the dictionary. The length would be equal to the number of items in the dictionary. Similar to the len() method in Python.

Thanks for the PR, but I think for now that this won't fit into the scope of TableUtil. Might revisit later.


Feat/hostfile manipulation

Let's not have branches live to long. This adds mocked hostfile entries, and it works fine now.
When the configuration reader is done it should be easy to add your own entries.
We could need some tests, however I think the module that we use have tests, so it might not be that useful. A test cloud include:

Test that it's added correctly
Test that a mis configuration is giving a nice error message

@Volzy your wish is my command!


Suport MEF transformation with linear amplifier

It turns out that the SEA's flow cytometer can export data in FCS 2.0 in both linear and log scale, and 3.0 in linear scale with floating points. I got all three versions after one of my experiments, including several cell samples and beads. @JS3xton if you're interested in looking at them, I can put them on Dropbox or something.
This issue will be considered resolved when the three datasets result in the same MEF values for each cell sample when run through the Excel UI. There may be some issues in processing integer linear data, so at the very least integer log data and floating-point linear data should work.
I will now show the result of running the Excel UI with the three sets of files, as performed by the current floating-mef branch (43a9dcb5dad54e789e89416e768e838aab01c10e).
FCS2.0 with log amplifier, 10-bit integer
This is the setup that we currently support, so the following results are what we would consider correct.
Beads
Initial density/histogram plot:

2D Clustering:

Populations used for standard curve generation:

Standard curve:

Cell sample

FCS2.0 with linear amplifier, 10-bit integer
Beads
Initial density/histogram plot:

2D Clustering:

Populations used for standard curve generation:

Standard curve:

Cell sample

Obviously all of this is super incorrect. Interestingly, clustering seems to work fine.
FCS3.0 with linear amplifier, floating point
Beads
Initial density/histogram plot:

2D Clustering:

Populations used for standard curve generation:

Standard curve:

Cell sample

Also super incorrect. Note that the failure modes here seem to be similar to the case of FCS2.0 integer with linear amplifier, suggesting that amplification type and not resolution will be the major challenges.

First, I wanted to see whether data could be processed in a.u., and displayed correctly without the Excel UI. I wrote the following script:
import FlowCal

if __name__ == '__main__':
    d2lin = FlowCal.io.FCSData('FCFiles_2.0_linear/B_subtilis_Tube_024.fcs')
    d2log = FlowCal.io.FCSData('FCFiles_2.0_log/B_subtilis_Tube_024.fcs')
    d3 = FlowCal.io.FCSData('FCFiles_3.0/B_subtilis_Tube_024.fcs')
    data = [d2lin, d2log, d3]

    # Print channel names, ranges, amplification types
    for d, name in zip(data, ['2.0, lin', '2.0, log', '3.0']):
        print "\nFor file version {}:".format(name)
        for ch, r, a in zip(d.channels, d.range(), d.amplification_type()):
            print "Channel {:13}, range: {:15}, a.t.: {}, min: {:14}, max: {:14}".\
                format(ch, r, a, min(d[:,ch]), max(d[:,ch]))
    print ""

    # Transform to rfi
    print "Transforming to rfi..."
    data_rfi = []
    for d in data:
        data_rfi.append(FlowCal.transform.to_rfi(d))

    # Density gating
    print "Performing density gating..."
    data_gated = []
    gate_contour = []
    for d in data_rfi:
        g, __, c = FlowCal.gate.density2d(
            d,
            channels=['FSC-A', 'SSC-A'],
            gate_fraction=0.5,
            xscale='log',
            yscale='log',
            full_output=True)
        data_gated.append(g)
        gate_contour.append(c)

    # Plot FSC/SSC/APC-A
    print "Generating plots..."
    for d, dg, gc, name in \
            zip(data_rfi, data_gated, gate_contour, ['2_lin', '2_log', '3']):
        FlowCal.plot.density_and_hist(
            d,
            gated_data=dg,
            gate_contour=gc,
            density_channels=['FSC-A', 'SSC-A'],
            density_params={'xscale': 'log', 'yscale': 'log', 'mode': 'scatter'},
            hist_channels=['APC-A'],
            hist_params={'xscale': 'log', 'bins': 128},
            savefig='density_hist_{}'.format(name))

The resulting terminal output is:
For file version 2.0, lin:
Channel FSC-A        , range: [0.0, 1023.0]  , a.t.: (0.0, 0.0), min:              0, max:           1023
Channel SSC-A        , range: [0.0, 1023.0]  , a.t.: (0.0, 0.0), min:              2, max:            607
Channel FITC-A       , range: [0.0, 1023.0]  , a.t.: (0.0, 0.0), min:              0, max:              8
Channel PE-A         , range: [0.0, 1023.0]  , a.t.: (0.0, 0.0), min:              0, max:              4
Channel PerCP-Cy5-5-A, range: [0.0, 1023.0]  , a.t.: (0.0, 0.0), min:              0, max:              8
Channel PE-Cy7-A     , range: [0.0, 1023.0]  , a.t.: (0.0, 0.0), min:              0, max:             10
Channel APC-A        , range: [0.0, 1023.0]  , a.t.: (0.0, 0.0), min:              0, max:           1023
Channel APC-Cy7-A    , range: [0.0, 1023.0]  , a.t.: (0.0, 0.0), min:              0, max:             24
Channel Time         , range: [0.0, 1023.0]  , a.t.: (0.0, 0.0), min:              0, max:              7

For file version 2.0, log:
Channel FSC-A        , range: [0.0, 1023.0]  , a.t.: (4.0, 1.0), min:              0, max:           1023
Channel SSC-A        , range: [0.0, 1023.0]  , a.t.: (4.0, 1.0), min:            358, max:            965
Channel FITC-A       , range: [0.0, 1023.0]  , a.t.: (4.0, 1.0), min:              0, max:            487
Channel PE-A         , range: [0.0, 1023.0]  , a.t.: (4.0, 1.0), min:              0, max:            417
Channel PerCP-Cy5-5-A, range: [0.0, 1023.0]  , a.t.: (4.0, 1.0), min:              0, max:            495
Channel PE-Cy7-A     , range: [0.0, 1023.0]  , a.t.: (4.0, 1.0), min:              0, max:            516
Channel APC-A        , range: [0.0, 1023.0]  , a.t.: (4.0, 1.0), min:              0, max:           1023
Channel APC-Cy7-A    , range: [0.0, 1023.0]  , a.t.: (4.0, 1.0), min:              0, max:            608
Channel Time         , range: [0.0, 1023.0]  , a.t.: (0.0, 0.0), min:              0, max:              7

For file version 3.0:
Channel FSC-A        , range: [0.0, 262143.0], a.t.: (0.0, 0.0), min: -2440.37988281, max:       262143.0
Channel SSC-A        , range: [0.0, 262143.0], a.t.: (0.0, 0.0), min:<PHONE_NUMBER>03, max:<PHONE_NUMBER>5
Channel FITC-A       , range: [0.0, 262143.0], a.t.: (0.0, 0.0), min: -114.209999084, max:  2105.12988281
Channel PE-A         , range: [0.0, 262143.0], a.t.: (0.0, 0.0), min: -232.649993896, max:  1119.53991699
Channel PerCP-Cy5-5-A, range: [0.0, 262143.0], a.t.: (0.0, 0.0), min: -119.849998474, max:  2263.05004883
Channel PE-Cy7-A     , range: [0.0, 262143.0], a.t.: (0.0, 0.0), min: -573.869995117, max:  2739.62988281
Channel APC-A        , range: [0.0, 262143.0], a.t.: (0.0, 0.0), min: -455.129974365, max:       262143.0
Channel APC-Cy7-A    , range: [0.0, 262143.0], a.t.: (0.0, 0.0), min: -112.319992065, max:  6243.11962891
Channel Time         , range: [0.0, 262143.0], a.t.: (0.0, 0.0), min:            0.0, max:  2018.59997559

Transforming to rfi...
Performing density gating...
Generating plots...

Note that the FCS3.0 floating-point files have negative numbers, as expected from the standard.
The following plots are produced:
density_hist_2_lin.png:

density_hist_2_log.png

density_hist_3.png

Obviously, the numerical values are different from one another (arbitrary units). It really seems like the integer linear file is trying imitate what the floating-point linear file is doing, but chopping off a little more than the lowest 2 decades of info (since the lowest values for linear integer are zero and one). This results in a weird FSC/SSC diagram for integer linear. Nevertheless, density gating seems to perform well in all cases.
This shows that with the current develop version, a user could work with FlowCal's Python API in a.u. without issues. Logicle plots may be desirable, though. Besides that, the only remaining challenge to work with floating linear data seems to be MEFing.

I want to point out a few oddities about FCS file formats. I've seen in several places that FCS 2.0 files are associated with integer representation, and FCS 3.0 with integer or floating point, even though the standard allows for floating point in FCS2.0 as well. For example, this is what we have found with the file repository (#203, notice that no FCS2.0 are DATAYPE='F') and the acquisition software of the SEA's flow cytometer (FCS2.0 is saved as integer, 3.0 as floating point).
Another interesting way to refer to these file versions is "analog" (FCS 2.0) and "digital" (FCS 3.0) (http://docs.flowjo.com/vx/graphs-and-gating/gw-transform-overview/). More interestingly, the following is said in the article that initially described the logicle transformation (http://onlinelibrary.wiley.com/doi/10.1002/cyto.a.20258/abstract) (emphasis mine):

...Data sets resulting from computed compensation commonly  (and properly) include populations whose distributions extend below zero. (When analog compensation is used, such distributions should also appear, but the electronic implementations distort or truncate the distributions, so that negative values are suppressed).

What I get from this is that integer data saturates at both ends of its range, whereas floating-point data does not (remember that the standard does not require event values to be within 0 and $PnR).
Why is this relevant to us? Saturation leads to incorrect values, and that is why we use gate.high_low. However, this may not be necessary with floating point data. The Excel UI will probably need to distinguish between these two cases, and use gate.high_low only if necessary.

I think up to commit 4bd6c1e8e688bf052e2cd59e4cf4675bec0144b3 we're most of the way towards solving the issue. I will now show the current results:
MEFing with the Python API
The following was obtained using the Python API (no Excel UI). The beads files shown above were used to obtain transformation functions.
Standard curves
integer, linear

integer, log

float

Standard curve parameters
The bead model equation is the following:
m*log(fl_au[i]) + b = log(fl_mef_auto + fl_mef[i])
The following parameters were obtained from the three beads files:

beads file
m
b
fl_mef_auto

Integer, linear
1.01
2.55
104.75

Integer, log
1.01
0.26
112.21

Floating point
1.01
-3.05
111.88

It is interesting to note that the only parameter that changes significantly is the intercept b. fl_mef_auto is more similar between the integer log and the floating-point dataset. A slightly different standard curve is to be expected for the case of integer linear because the data is not that good, particularly for low fluorescence values. Note also in the plots above that the number of logs in the x axis is almost exactly the same as the number of logs that the standard curve covers in the y axis, which is a reflection of the slope parameter being so close to 1.
MEF'd data
Here I picked a sample with relatively high fluorescence. There are still problems with low fluorescence samples, as I will detail in a later post.
integer, linear

integer, log

float

Statistical analysis
All histograms above seem to have more or less the same MEF fluorescence value. Let's corroborate that by looking at the numbers:

dataset
median APC-A

Integer, linear
455.36

Integer, log
465.81

Floating point
467.35

The values are very similar to each other (CV = 1.15%), although the integer linear dataset is more different (2.27% difference between integer linear and log) to the other two, which differ by only 0.33% from each other.

The Excel UI has also been modified to work with floating-point files. The most important modifications are:

All data is shown and processed in log axes, even data acquired with a linear amplifier (because floating-point data is linear). The only exception is when "Channel" units are requested, because I assume the user wants in this case to see the raw data.
Fluorescence is explicitly transform to a.u. before being transformed to MEF.

Using the same commit, the results of running the example files with the Excel UI are pretty much the same, except for density gating of the beads:

Because everything is being processed in log scale, the FSC/SSC density diagram of beads looks different. However, elimination of the secondary peaks in the fluorescence channels is achieved anyway. I would argue that this is the most correct way to do gating, in terms of being consistent with everything else.
The identified peak values change a little bit, though, because the gate is now different. This is a comparison of the bead model parameters for B0002 FL1 with 1.0.0 and the current commit:

Version
m
b
fl_mef_auto

1.0.0
1.0571538506455078
2.43684936642
1180.28240707

4bd6c1e8e688bf052e2cd59e4cf4675bec0144b3
1.05720955531
2.43642936538
1180.03466155

Error (%)
0.0053
0.017
0.021

(Note that m from the model in 1.0.0 was converted to m from this model by using 256*m/log(10).
This changes the MEF values of the corresponding samples, although negligibly. The following shows percent difference between the different statistics of FL1 of the samples that use B0002 in percentage:

In summary, the only change that affects how we run our samples is the fact that beads are gated in log scale, which does not seem to affect the final MEF fluorescence of samples.

The following are some of the results of running the Excel UI agains the SEA dataset.
Beads
Beads plots produced by the Excel UI are almost identical to the plots presented above using the Python API. The parameters obtain in one run are the following:

dataset
m
b
fl_mef_auto

Integer, linear
1.01912269529
2.52996967802
104.313744082

Integer, log
1.01167477702
0.264344458589
112.16949497

Floating point
1.01315711837
-3.05889290482
111.522298167

Not very different from the numbers obtained with the Python API, even though the sequence of gating steps and the gating fraction were not identical.
Cell data with high fluorescence
Plots are also very similar to the ones presented above. Median fluorescence is as follows:
|dataset|median APC-A|
| ------------|-------------|----|
|Integer, linear|456.579903810335|
|Integer, log|469.519100415878|
|Floating point|466.794512171886|
Cell data with low fluorescence
It turns out that samples with low fluorescence are saturating to the left, so the data itself is not very useful. However, it shows some of the intricacies of floating-point data. Here are the median APC values:
|dataset|median APC-A|
| ------------|-------------|----|
|Integer, linear|12.5531254952804|
|Integer, log|16.3462793998462|
|Floating point|0.624765572644506|
Why they are so different can be understood by looking at the plots below.
Integer, linear

Linear integer data is probably not very reliable given the resolution, so not much can be said besides the data sucks.
Integer, log

A lot of saturated values are present. If these are eliminated (as the Excel UI would actually do, not shown here) almost half of the population is lost. The remaining events have a larger value than the population, therefore the median fluorescence increases.
Floating-point

Just by looking at the plot in the middle, one would be tempted to say that the median fluorescence is 10-20 MEF. However, the linear plot below shows that the population is actually symmetrical around zero, and there is another peak at the left (perhaps that's how floating point data saturates?). Nevertheless, the log plot is misleading at presenting the central tendency of the population, which actually seems more like zero in the linear plot. A logicle plot would improve visualization of floating-point data.
The problem with geometric statistics
Geometric statistics are, strictly speaking, not defined if negative elements exist. Since some events with negative or zero value exist in all samples, the Excel UI is currently not calculating geometric means for floating point data. This is not explicit, but an effect of numpy.gmean's results being nan and pandas writing them as empty cells in the output file. This is probably not bad for something like the file shown above, but it is problematic for samples like this:

There are 2 events less than zero, but the whole calculation of the geometric mean is invalidated. I think the best compromise is to calculate geometric statistics on events greater than zero, and throw a warning stating the percentage of events that are lower or equal to zero. That way, in combination with the histogram, the user can decide whether these statistics are meaningful or not.

Summary
Progress so far

The Python API and the Excel UI can process floating-point data
Example files, and the new dataset from the SEA's flow cytometer can be processed by both means.

Important changes to the MEF module

The MEF transformation function is now from a.u. to MEF instead of from channels to MEF.
Clustering and selection functions were expanded to rescale (to log) data if requested.
Standard curve function was replaced entirely to use a.u. values and the equation m*log(fl_au[i]) + b = log(fl_mef_auto + fl_mef[i]).

Important changes to the Excel UI

Everything is shown and processed in log scale, including plots and density gating. The exception is fluorescence data when channel units are requested.
high_low gating is not applied if data is floating-point.

To do

Logicle scale, which should be the default for plotting floating point data.
Again, I think the best way to proceed with geometric statistics of floating-point data is to discard values lower than zero and throw a warning. If logicle plots are available, the user can easily decide whether these statistics are meaningful or not.
Documentation
More testing: I want to run my old beads dataset of the whole lab against the final version of this issue.

@JS3xton if you have any feedback, now it's the time.

Logicle plotting is now implemented. It required additional classes in the plot module (for custom scaling in matplotlib). There was also a small addition to FCSData.hist_bins to handle the new scaling.
The following was run against f99ccc0e940377cf1902e361ac23b484024cfde7:
import FlowCal

d1 = FlowCal.io.FCSData('FCFiles_3.0/B_subtilis_Tube_001.fcs')
d2 = FlowCal.io.FCSData('FCFiles_3.0/B_subtilis_Tube_008.fcs')

FlowCal.plot.density2d(
        d1,
        channels=['PE-A', 'APC-A'],
        xscale='logicle',
        yscale='logicle',
        mode='scatter',
        savefig='logicle/fl_logicle.png')

FlowCal.plot.scatter2d(
        [d1, d2],
        channels=['FITC-A', 'APC-A'],
        xscale='logicle',
        yscale='logicle',
        savefig='logicle/scatter_logicle.png')

FlowCal.plot.scatter3d_and_projections(
        [d1, d2],
        channels=['FITC-A', 'PE-A', 'APC-A'],
        xscale='logicle',
        yscale='logicle',
        zscale='logicle',
        savefig='logicle/scatter3d_and_projections_logicle.png')

FlowCal.plot.hist1d(
        [d1, d2],
        channel='APC-A',
        xscale='logicle',
        savefig='logicle/hist_logicle_2.png')

I will now integrate this into the Excel UI. As per my previous discussion with @JS3xton, I'll try to make all default to logicle instead of log, and see how the plots with our old file look like.

sigma is still hardcoded to 10.0 for density2d(). Is this still appropriate? Some of the FSC-SSC plots looked like the smoothing was too much (this is entirely subjective and relative to what I've gotten used to with our current setup [i.e. FlowCal v1.0.0 on files from our flow cytometer]). I feel like this should be generalized to something proportional to the standard deviation or covariance of the FSC v SSC populations, though, unless there's some black magic in the transformations that degenerates that to a constant. Should keep in mind that this sigma value is being passed to a 2D Gaussian blur function which is agnostic to our efforts to scale the data (it just sees a 2D matrix I believe). Generalizing would basically require establishing an equivalence between the 2D matrix bin sizes and the effective range / spread of the data in a.u.?
how do the FSC-SSC plots look like with the logicle transform for beads? did you end up implementing the zoom to inner-quartile range to get a better view of gating for beads samples?
wanted to make sure you only did gate.high_low() when appropriate, and indeed you added a check if $DATATYPE is I; 👍
do the "integer, linear" FSC-SSC plots look better when you use mode=mesh instead of mode=scatter? May not matter anymore on a logicle scale, but they looked weird with purely log scale and mode=scatter.
making sure I understand the changes to the standard curve: the old standard curve model was:

m*fl_channel[i] + b = log(fl_mef_auto + fl_mef[i])
and the new model is:
m*log(fl_au[i]) + b = log(fl_mef_auto + fl_mef[i])
only difference being the introduction of log() around the measured fluorescence value. This is because we were previously calculating this standard curve to map channel values to MEF values, and our channel values are inherently in log(a.u.) scale because we have log amplifier + integer data. This doesn't generalize to linear amplifier + integer data or float data because both report channel values in a.u. scale, not log(a.u.) scale. To address this, we decided to just map everything to a.u. (which effectively exponentiates our log amp + int data) to serialize all 3 cases to a common scale. From there we fit a model mapping a.u. -> MEF. We still go to the trouble of fitting this model in a log space because we still think a logarithmically distributed error model is more appropriate? (this is now tied to our particular logarithmically distributed beads right? linear beads might be more well fit in linear space?). Cause otherwise, this is almost a straightforward line fit; I think you can rearrange as:
fl_mef[i] = 10^b * fl_au[i]^m - fl_mef_auto

the m parameter of the new standard curves seems to be fundamentally equivalent to 1; should we consider a simpler model without that term (only the intercept and autofluorescence)? As above, this becomes exactly a line fit:

fl_mef[i] = 10^b * fl_au[i] - fl_mef_auto
(which may still be more appropriately fit in log space)
(to be continued)

The new binning for bins has introduced some variation with respect to our previous results. However, variation introduced is small, and I don't think this is a problem. If we want to address this (which again I think we don't have to) using a smaller fixed value of sigma just for beads might be enough. I tried changing it to 5, but didn't see significant changes. 2 definitely made it terrible.

Yes I implemented zooming of beads FSC/SSC. This is an example of how that looks like.

Yeah that's why implemented .data_type.

It looks better.

vs

Yeah your understanding of the model is correct.

m does not exactly equal to one. This is the paper data (one sample at different gains) rerun with the latest floating-mef:

Which is why I'd rather not remove m from the model.

The new binning for bins has introduced some variation with respect to our previous results. However, variation introduced is small, and I don't think this is a problem. If we want to address this (which again I think we don't have to) using a smaller fixed value of sigma just for beads might be enough. I tried changing it to 5, but didn't see significant changes. 2 definitely made it terrible.

mmk. that's enough reason for me not to worry about it.

regarding mode=mesh vs. mode=scatter, might be nice if that was done automatically, because mode=mesh definitely makes a lot more sense for that particular use case. This is a very small issue, though (and still achievable via the Python interface), and I don't have any great ideas for doing it automatically.
regarding the model: I still feel dissatisfied regarding m.
Are you sure the minor deviation from 1.0 is not just an instance of overfitting?
If we had mapped to a.u. from the beginning (or fallen into the linear amp + int data or float data use cases), we would have started off mapping a.u. -> MEF (not log(a.u.) --> MEF). I feel like that would have been a linear transformation (no intercept). Bead autofluorescence might have necessitated an affine transformation again (added y-intercept term). Introduction of the m term (raising the a.u. value to a power) seems very unintuitive to me, though. That might make sense after looking at a.u. vs. MEF on log-log plots (which is only done because we think a logarithmic error model is more appropriate based on the specific beads we chose) and then noticing a deviation (which would be very small?) from a slope of 1. All of this being said, I haven't looked at a standard curve where m was hardcoded to 1; perhaps there really is a noticeable deviation from a slope of 1.
Also, if there are cytometers which employ log amplifiers and don't properly specify how to map back to RFI, then it might be nice to have the m term to fall back on. Not sure if that happens frequently, though.
👍 for warning on geometric statistics if values exist <= 0. Is that thrown in both the terminal output and the "Analysis" column?
can I combine scales? e.g. xscale=logicle and yscale=log? I would assume so, but haven't actually tried. All the downstream bins calculations and plotting works as expected?

(I'm on to reviewing code in #213)

regarding mode=mesh vs. mode=scatter, might be nice if that was done automatically, because mode=mesh definitely makes a lot more sense for that particular use case. This is a very small issue, though (and still achievable via the Python interface), and I don't have any great ideas for doing it automatically.

Yeah, I don't have good ideas on how to do this either.

regarding the model: I still feel dissatisfied regarding m.
Are you sure the minor deviation from 1.0 is not just an instance of overfitting?

I wouldn't call this overfitting. Overfitting occurs when the model is too complex for the data, such that slightly different data would give very different parameter fits (i.e. high variance). In this case, the fact that I'm consistently obtaining values slightly above 1 tells me that m is greater than one.

If we had mapped to a.u. from the beginning (or fallen into the linear amp + int data or float data use cases), we would have started off mapping a.u. -> MEF (not log(a.u.) --> MEF). I feel like that would have been a linear transformation (no intercept). Bead autofluorescence might have necessitated an affine transformation again (added y-intercept term). Introduction of the m term (raising the a.u. value to a power) seems very unintuitive to me, though. That might make sense after looking at a.u. vs. MEF on log-log plots (which is only done because we think a logarithmic error model is more appropriate based on the specific beads we chose) and then noticing a deviation (which would be very small?) from a slope of 1. All of this being said, I haven't looked at a standard curve where m was hardcoded to 1; perhaps there really is a noticeable deviation from a slope of 1.

Note that m in the previous model could also be derived theoretically from the amplifier characteristics (number of decades, bits, etc). In fact, Evan and I did that once, and found that the fitted value also consistently differed from the theoretical one. So this model is not more complex that the previous one.
Why is m different than one? I'm not sure. I vaguely attribute this to "detector nonlinearity" but I don't have a great explanation.

Also, if there are cytometers which employ log amplifiers and don't properly specify how to map back to RFI, then it might be nice to have the m term to fall back on. Not sure if that happens frequently, though.

The standard explicitly requires that log channels must have information enough to decode them properly.

👍 for warning on geometric statistics if values exist <= 0. Is that thrown in both the terminal output and the "Analysis" column?

Yes.

can I combine scales? e.g. xscale=logicle and yscale=log? I would assume so, but haven't actually tried. All the downstream bins calculations and plotting works as expected?

Yep.

#213 solves this.


I need help! How do I set NbT for actor?

It always crashes. 😭

@7dev7urandom @ricklove @karikera

it seems it's duplicated with the discussions.
I will close this and remove the question label for consistency.


Is it possible to have a visibleToMouse Panel that doesn't consume mouse events ?

I'm making a game using jme3 and nifty-gui.
My 3D word (in jme3) can be moved using either the mouse or the keyboard.
I also have some nifty controls (like scrollbars, chatbox) that can get focus and capture keyboard.
What I want to do is to remove focus from any nifty controls if the user click somewhere on the 3D world (outside of any nifty control), so that any keyboard input is transfered to jme and not consumed anymore.
I am able to do that by addind a transparent panel with size 100% under all the control, making it visibleToMouse. I add a clickHandler on my screen :
@NiftyEventSubscriber(pattern="gameArea")
public void onClick(String id, NiftyMousePrimaryClickedEvent event) {
	screen.getFocusHandler().resetFocusElements();
}

When I click anywhere outside another nifty element, the focus is being reset, and keyboard event are transfered to jme, as I want.
But now my problem is that this panel blocks mouse click event and hide them from jme. Is there a way to mark the event as not consumed, or send it back to jme ?
Or is there a better way to do it ? All I want is basically to be able to "focus" my 3D world by click on it.

Yes! There is a better way! :smile:
You can call nifty.setIgnoreMouseEvents(true) and/or nifty.setIgnoreKeyboardEvents(true) to disable event processing in Nifty completely. Doing so will make Nifty ignore all events which basically makes them available to your game.
This is explained in the manual, see: https://github.com/void256/nifty-gui/tree/1.4/nifty-core/manual on page 78 "NIFTY EVENT CONSUMING AND DISABLING EVENT PROCESSING (NIFTY 1.3.2)".
You can disable event processing for individual elements as well, if you want using the same methods but call it on the Nifty Element class.

Thanks for the answer, void256.
However, I don't think it solves my problem. I don't want my control to ignore Mouse or Keyboard events (I have chat control, and I want the rigth and left key to move the text cursor when this control has focus, for instance). In fact, what I want is that any nifty control that has focus loose it when I click somewhere outside any nifty control.
I finally solved it, by listening for mouse click in jme, and calling nifty.getCurrentScreen().getFocusHandler().resetFocusElements(); when a click go through to remove focus from all nifty control.
Then all keyboard and mouse event are transfered to jme.
My 3D world now works as if it was visibleToMouse="true" and focusable="true" (only it is only focusable by mouse click, but it is the intended behavior for me)


Help Host Admin to mark expenses as incomplete faster

As a Host Admin, I want to use the new "Mark as Incomplete" feature from the expenses list. I want to save time by not having to open the particular expense to mark it as incomplete.
As we already have a preview of the attachment accessible from the expenses list, as well as the "Go to Pay" action available, it seems that the "Mark as Incomplete" action is the piece missing here.
Strategic Priorities: Simplification
High frequency - High impact

cc @kewitz

Should be a menu on the status, like we do when the expense is paid

https://github.com/opencollective/opencollective-frontend/pull/8051#issuecomment-1199316481

Copying my comment here:


Enumeration of data model properties

I have a case where I have an enumeration that can return different String values. The @ApiModelProperty's allowableValues is close, but I need to have metadata associated with each possible value. Something like this:
@ApiModelProperty(...., allowableValues={
@ApiModelPropertyValue( value="registered", description="Yada yada...", discriminator="PUT" ),
@ApiModelPropertyValue( value="active", description="Yada yada...", discriminator="PUT,POST" ),
@ApiModelPropertyValue( value="closed", description="Yada yada...", discriminator="POST" )
});
It seems like any time there is a value, you'd need to at least describe the possible values.

Closing in favor of #348.


Google Home Local API change to Https

Hi, since a couple of weeks google start updating all the google home and make the local api unusable... But it still available with HTTPS on the port 8443 so may be we could update the component ?
Its all explained here  : https://gist.github.com/rithvikvibhu/1a0f4937af957ef6a78453e3be482c1f

Wow a rooted android device is a must for this....thats not gonna work for the majority of users here
https://gist.github.com/rithvikvibhu/1a0f4937af957ef6a78453e3be482c1f#getting-the-token

Already opened an issue about this here https://github.com/home-assistant/home-assistant/issues/25673

Oh ? ... I tough it was something we could integrate in the home Assistant google home component ... sorry

Continue the discussion here https://github.com/home-assistant/home-assistant/issues/25673


Enable setting sidebar panel function in web-component

The current settings panel setup utilises values in cookies to toggle things like the UI font size and light/dark mode. Ensure these values are set and uses in the web component.
Due to the projects site only being in light mode the web component in dark mode might look odd. When the settings tab is included in the web component, get the local storage keys working and toggling the theme and font size, check to see if the dark theme looks out of place and get opinion from @maxelkins. We may need to disable toggling dark mode as a result.

Defaulting to light mode 👍


Replace AsyncOperation with async await when adopting Swift 5.5

See https://docs.swift.org/swift-book/LanguageGuide/Concurrency.html.

Closing as won't fix. This kind of nebulous task is hard to track.

This is really most useful in terms of ensuring the lifecycle for updates is consistent across all operations and is lockless wherever possible.

Some of this is implemented in #604.

Database updates in #605.


No stack trace for panics in handlers

I have a bug somewhere in my code resulting in a nil pointer dereference, but unfortunately I have no idea where it is because pigeon converts panics into errors:
%!s(PANIC=runtime error: invalid memory address or nil pointer dereference)

Some way of not capturing panics would be nice I think.

Agreed, I added the -no-recover flag to the pigeon tool, and the Recover(bool) option func to the generated parser, so it can be turned off when called like this:
result, err := Parse("filename", data, Recover(false))

Brilliant, thanks!


SimpleOperationsTest.sscanIterates is sometimes failing (flaky test)

When I try building the mock and running the test, one test case sometimes (in about 40% of the attempts) fails:
sscanIterates(com.github.fppt.jedismock.comparisontests.SimpleOperationsTest)  Time elapsed: 0.007 sec  <<< FAILURE!
org.junit.experimental.theories.internal.ParameterizedAssertionError: sscanIterates("redis.clients.jedis.Jedis@647e447" <from jedis[0]>)
        at org.junit.Assert.fail(Assert.java:88)
        at org.junit.Assert.failNotEquals(Assert.java:834)
        at org.junit.Assert.assertEquals(Assert.java:645)
        at org.junit.Assert.assertEquals(Assert.java:631)
        at com.github.fppt.jedismock.comparisontests.SimpleOperationsTest.sscanIterates(SimpleOperationsTest.java:640)

When trying to use debugger, I found out that the test measures iterations in sscan, expecting it to take 5 iterations with 10 "page" size to fetch 45 elements.
However, sometimes I've seen in the debugger that higher amount of elements are returned per call (between 11 and 13 instead of 10), and as the sscan then completes in only 4 iterations instead of 5, it ends as assertion failure.
Possibly some race condition with other test case modifying default "page" size?
I am using OpenJDK 12 for the build.

Ya I have noticed this as well. Thanks for creating an issue for it. Seems to only happen to me locally. Will try to work it out.

Fixed! Thanks again @davidkus !


Idea: Extended Reach for arms, lifejacket/water walker

Read the title. basically I want to effect blocks from farther range, as well as an ability to float/walk on water.

Both good ideas! I'll see what I can do.

Obligatory Inspector Gadget


Adjust routing, fix logout, move session secret key to own variable

What are the relevant tickets?
mitodl/hq#5656
Description (What does it do?)
The main thing this does is moves most of the routes out of the configuration that requires OIDC. The app maintains a Django session, so that is sufficient, and having all the API routes run through the OIDC plugin mean that we end up with CORS errors and other weirdness when it invariably tries to punt the request through to Keycloak.
The routes that are still set to use the OIDC plugin are:

/cart - the cart test mule
/admin - the Django Admin
/establish_ession - establishes the session for a user (the frontend redirects here if you're not logged in)

The rest are located in the unauthenticated route. APISIX will not try to resolve a Keycloak session, which will leave the app to use the existing Django session if there is one. (Unauthenticated in this case is from the viewpoint of APISIX.)
This also fixes a couple other things:

Now setting a session secret - this was a thing that should have been set prior. The secret can be set via APISIX_SESSION_SECRET_KEY in the .env file and should have a reasonable default.
Updated the OIDC config to send the user to the UE_LOGOUT_URL setting after logging out.
Fixes logout so that it actually works now

Added an explicit route for /logout so that the OIDC plugin can intercept it. (Otherwise, the path doesn't match any known routes.)
Added a new route to rewrite /logout/ to /logout so both of these work.

How can this be tested?
Set UE_LOGOUT_URL to a reasonable value: UE_LOGOUT_URL=http://ue.odl.local:9080/auth/logout/
This route specifically will clear the Django session.
Optionally: set APISIX_SESSION_SECRET_KEY to a reasonable value. It does have a default, so you don't have to specify it. If you do set it, the key needs to be a non-numeric string of at least 16 characters. (In other words, if you just provide numbers APISIX will treat it as a number and will fail to parse the routes, and it will return 404 for all URLs.)

Go to an API route that requires auth. (The basket list one is a good choice.) You shouldn't get anything back.
Go to an API route that doesn't require auth. (The product list one is a good choice.) You should get data.
Set up a session. An easy way to do this is to just go to the cart test mule or to the Django Admin; both of these should redirect you through Keycloak.
Check the "me" endpoint: /api/v0/users/me/ You should see your account info.
Check other API routes. You should be able to get data from the authenticated and unauthenticated routes.
Go to /logout or /logout/. You should be redirect to whatever you have set for UE_LOGOUT_URL in your .env.

Additional Notes
Some notes for later use: APISIX's OIDC plugin will intercept a URI to handle logout properly (through the IdP). This URI is configurable, but doesn't support wildcards. Additionally, the URI needs to be in the URI set for the route that uses the OIDC plugin - it won't add it to the list. This is not necessarily noted anywhere so it was sort of confusing when it didn't work initially.
We may be able to continue to route the API requests through OIDC without forcing auth when the user doesn't have an APISIX session. This would allow us to capture account data changes - if the user adjusts their profile outside of UE, hitting the API would refresh their profile within UE too (which is how it works without these changes). However, the session is separate between routes I think so this may be more trouble than it's worth. We may instead want to use SCIM to sync user profile data into UE, like we do(?) elsewhere.

works well for me now. What did you change from last time?

Mainly moved the APISIX secret to its own setting and gave it a default that would work. (It has to be >16 characters, not less than as I thought earlier.)


Security recommendation/hardening guide for applications that use Kubernetes client

Create a security recommendation/hardening guide for applications that use the Kubernetes client. This could include different use-cases like:

Creating an application which runs kubectl commands.
An application that uses the Kubernetes client
A Kubernetes Operator

Hello, I'd like to contribute here. Just to be clear, the guide would focus on the security recommendations for applications interacting with the Kubernetes API? I can contribute in the following ways to recommend:

handling of sensitive data (e.g. config, secrets, user creds)
corruption of data or tampering
security controls for principle of least privilege
tightening up RBAC
dependency control and vulnerability management
enforcing network policy
security of apps to maximize availability
reduce attack vectors, and maintaining isolated workloads
compliance and audit requirements
supply chain attack prevention
establish zero-trust for apps interacting with Kubernetes

Is this issue resolved by PR, if yes then we can close this issue


New Subscription mode: key_block

I would like to suggest a new subscription mode that blocks a message key from being delivered to consumers while it has a message that did not get ack or timeout yet.
The use case is:
You have many messages with different keys on the same topic. The keys are repeating like another update on the same issue, and when they do the order needs to be guaranteed. Example topic:
Key:message
1:hello
2:good
1:world
2:bye
And we have many consumers, still we would like that 'hello' would be processed successfully before 'world' and 'good' would be processed successfully before 'bye' but we do not care for the order between 'hello' and 'good' as they have different keys.
From the currently available subscription modes:
Key_shared would stick all the 1 keys to one consumer which can cause overload of unprocessed messages with key 1 on the topic.
Shared would not guarantee the order of messages at all (not even with the same key).

@oznitecki Thanks for the feedback and suggestion.
A few questions to make sure I understand and understand your use case more:

Just to make sure I understand, would you want key 1 messages to be able to delivered to many consumers? But block on sending on sending any more messages until the latest key 1 message is processed? If Key 1, has many messages, this likely would be somewhat slow, as we can't pipeline messages and would need to have the broker doing lots of back and forth, but would let all other consumers continue with other keys. Is that what you are trying to solve?
For your use case, how many keys do you expect to be dealing with across how many consumers?

@oznitecki Thanks for the feedback and suggestion.
A few questions to make sure I understand and understand your use case more:

Just to make sure I understand, would you want key 1 messages to be able to delivered to many consumers? But block on sending on sending any more messages until the latest key 1 message is processed? If Key 1, has many messages, this likely would be somewhat slow, as we can't pipeline messages and would need to have the broker doing lots of back and forth, but would let all other consumers continue with other keys. Is that what you are trying to solve?
For your use case, how many keys do you expect to be dealing with across how many consumers?

Key 1 messages can be processed by many consumers but only one at a time (like in key_shared). Like you said at the same time key 1 is being processed by one consumer, the others are free to take any message with different key. I think that maybe messages with same key should clamp together in some way to make it faster to skip all of them, as the order only matters in the same key and not the queue as a whole.
I was thinking about 100,000 keys (1% of them update all the time and the others are sporadic) and about 10 consumers but would surely want to be able to scale (the number of consumers depends on performance)

Key 1 messages can be processed by many consumers but only one at a time (like in key_shared). Like you said at the same time key 1 is being processed by one consumer, the others are free to take any message with different key. I think that maybe messages with same key should clamp together in some way to make it faster to skip all of them, as the order only matters in the same key and not the queue as a whole.
I was thinking about 100,000 keys (1% of them update all the time and the others are sporadic) and about 10 consumers but would surely want to be able to scale (the number of consumers depends on performance)

@oznitecki I think you can try the keyHashRange(Range... ranges) on the Reader API. This one more like a key hash filter that will not the queue as a whole.

@oznitecki I think you can try the keyHashRange(Range... ranges) on the Reader API. This one more like a key hash filter that will not the queue as a whole.

@codelipenghui no, it will only let you control which keys are stuck with which consumer. I do not want the keys to be stuck with a specific consumer, just blocked from being sent while being processed by one of the consumers. It is a looser definition that can prevent the broker from being stuck waiting for a specific consumer for many different messages which are all in the same hash range

@codelipenghui no, it will only let you control which keys are stuck with which consumer. I do not want the keys to be stuck with a specific consumer, just blocked from being sent while being processed by one of the consumers. It is a looser definition that can prevent the broker from being stuck waiting for a specific consumer for many different messages which are all in the same hash range

Sorry @oznitecki , could you please give an example that the key_shared can’t works but key_block can works to make sure we are on the same page. Thanks.

Sorry @oznitecki , could you please give an example that the key_shared can’t works but key_block can works to make sure we are on the same page. Thanks.

@codelipenghui example:
Say you have 4 keys, 2 of them get 1000 messages per second and the other 2 get 1 message per second but you do not know in advance which is which (and to make it more complicated you could say the message overload picture change every couple of days). No matter how you will split the key range between 2 consumers there could be a case where both overloaded keys are attached to one consumer. In this case, one consumer would be idle but there would be many messages with the 2 overloaded keys waiting. If the block was by key and not specific consumer, the idle consumer could take 1 of the 2 overloaded keys.

@codelipenghui example:
Say you have 4 keys, 2 of them get 1000 messages per second and the other 2 get 1 message per second but you do not know in advance which is which (and to make it more complicated you could say the message overload picture change every couple of days). No matter how you will split the key range between 2 consumers there could be a case where both overloaded keys are attached to one consumer. In this case, one consumer would be idle but there would be many messages with the 2 overloaded keys waiting. If the block was by key and not specific consumer, the idle consumer could take 1 of the 2 overloaded keys.

@oznitecki From your last comment, I think the problem that you have described is the key range distribution problem, the current implementation does not consider the consumer overloaded and no re-assign key ranges mechanism.

If the block was by key and not specific consumer, the idle consumer could take 1 of the 2 overloaded keys.

@codelipenghui releasing the consumer key assignment (hash) take us back to the shared case where every message can be consumed by any consumer. Adding key block makes sure that the same key is not consumed on 2 consumers on the same time

The issue had no activity for 30 days, mark with Stale label.

Closed as stale. Please create a new issue if it's still relevant to the maintained versions.
Now, you can ask questions in https://github.com/apache/pulsar/discussions/categories/q-a instead, since we almost use issues to track actionable tasks.