fix mypy version check

AMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSSUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUSAMONGUS

@DetachHead TODO: rebase onto upstream to get mypy fixes needed for this pr to work properly.


DRILL-8190: Fix mongo project pushdown for queries with joins

DRILL-8190: Fix mongo project pushdown for queries with joins
Description
Improved costs calculation for vertex drel to consider resulting columns number in its cost to make plans with the pushed project more preferable.
Added SINGLETON to rel nodes for which execution cannot be distributed to several drillbits.
Fixed deserialization of EnumerableSubScan.
Documentation
NA
Testing
Added unit test, existing tests pass.

Thanks for the explanations +1.


Blog Module Updated

Blog module need to rename to it's controller spell from controller => Controller

it's only spell mistake in controller so please change it


QUESTION: How to use regex to set active URL in menu?

The readme says the following:

To override this behavior, you can specify an active parameter with an array of active URLs, asterisks and regular expressions are supported.

So, in my menu I have the following:
[
              'text'    => 'Posts overview',
              'url'     => '/posts',
              'icon'    => 'list',
              'active'  => ['/posts'],
],

It matches the /posts URL fine, but I need it to also match /posts/{id}. I can not use /posts/* since that will make it active on /posts/create and other pages.
I'm stuck at how to implement the regex, I have tried:
[
              'text'    => 'Posts overview',
              'url'     => '/posts',
              'icon'    => 'list',
              'active'  => ['/posts', '/posts/[^0-9]'],
],

But it doesn't work unfortunately: Menu doesn't light up.
The controller is a resource controller, with the normal resource routes.
Small update:
I have also tried this: ^\/posts\/[0-9]+$, which unfortunately also doesn't work.
It does seem to match the correct URL's.
Regex101 Link
Any ideas on how to fix it?

You can try using the below pattern in your code:
/^/posts(/[0-9]+)?$/
This will work for the below test scenarios:
/posts
/posts/3829
/posts/921
/posts/1
You can check the requirement with the provided solution on
(https://regex101.com/r/xeseaH/3)
Hope it works!

It won't work. I have tried different types of regex which includes the '/^.*$/' which should work whatever link I click on but it just doesn't. When I look up the vendor/jeroennoten/laravel-adminlte/src/Menu/ActiveChecker.php which should be responsible for matching this, I saw that the function isActive depends on the checkPattern function, which uses the Str::is function in the Laravel API. The function definition of Str::is contains a preg_quote call which would basically escape out all the regex characters, so whatever way the pattern is inserted into the config file would still be not working.

It won't work. I have tried different types of regex which includes the /^.*$/ which should work whatever link I click on but it just doesn't. When I look up the vendor/jeroennoten/laravel-adminlte/src/Menu/ActiveChecker.php which should be responsible for matching this, I saw that the function isActive depends on the checkPattern function, which uses the Str::is function in the Laravel API. The function definition of Str::is contains a preg_quote call which would basically escape out all the regex characters, so whatever way the pattern is inserted into the config file would still be not working.

Yes, this is true. There's currently no way of utilising Regex to set a menu item as active.
In the pull request mentioned above, I made it so that you can prefix your regex pattern with regex: and it will compare the regex with the request path. This commit.
I've tested it for a number of links and it seems to be working correctly.

It was merged and will be released soon.


False errors shown in the stack trace after running all tests

Bug Report
Steps to Reproduce:
Checkout master
Run all tests
Expected Result:
No error messages in the stacktrace
Actual Result:
Various errors appear in stacktrace
Environment:
intellij local tests
Additional Context:
this was recently added, of you checkout master at 0f13c4f1 this does not occur

Note, this is the default behaviour within cucumber jvm, see https://github.com/cucumber/cucumber-jvm/blob/master/core/src/main/java/cucumber/runtime/formatter/DefaultSummaryPrinter.java
There may be ways to limit this behaviour however it may shield contributors from the presence/detail/source of errors.

i think this might be blocked pending further discussion on how we should be handling validation more generally


Refactor AesCbcHmacSha2 class #4870

Can one of the admins verify this patch?

Thanks for the contribution @mclay!  @g2vinay and @samvaity will review this soon.

Fixes https://github.com/Azure/azure-sdk-for-java/issues/4870

Thank you again for the contribution


Base info page

General information and also tabs for location settings like for nations #14

Currently working on ways to edit the information.


Dynamic Route Not Matching Expected URL Patterns /sitemap_*.xml or /sitemap_:id.xml

The current route definition app.get("/sitemap_*", sitemaps) isn't catching requests like /sitemap_823.xml. This happens because the asterisk (*) in the route isn't a proper match for such patterns.

From the docs:
Routes are matched in order of specificity, not by the order you register them:

- Highest priority - static routes, think “/hello/this/is/static”.
- Middle priority - parameter routes, think “/candy/:kind”, where value of :kind is retrieved by req.get_parameter(0).
- Lowest priority - wildcard routes, think “/hello/*”. In other words, the more specific a route is, the earlier it will match. This allows you to define wildcard routes that match a wide range of URLs and then “carve” out more specific behavior from that.

“any” routes, those who match any HTTP method, will match with lower priority than routes which specify their specific HTTP method (such as GET) if and only if the two routes otherwise are equally specific.

Can you give some reproducible example? How are your routes setup?

I use this
   app.get("/static/:path", static)     app.get("/*", catch_all)      app.get("/robots.txt", robots)      app.get("/sitemap_*", sitemaps)

I use this  app.get("/static/:path", static) app.get("/*", catch_all) app.get("/robots.txt", robots) app.get("/sitemap_*", sitemaps)
this need to be the last one:

app.get("/*", catch_all)

simple setup
`python
from socketify import App, AppOptions
def make_app(app:App):
app.get("/sitemap_*", lambda res, req: res.end("Hello World socketify from Python!"))
if name == "main":
app = App()
make_app(app)
app.listen(3000, lambda config: print("Listening on port http://localhost:%d now\n" % config.port))
app.run()
`
GET /sitemap_*                        => Response ok
GET /sitemap_dynamic           =>  Empty Response

Looks like uWS only support exactly matching "*" and not partial like /sitemap_*
https://github.com/uNetworking/uWebSockets/blob/master/src/HttpRouter.h#L185
An workaround would be /:path and manually check if the route starts with "/sitemap_"
Will need some improvements on the HttpRouter to support this.


feat: bathing water start

:tada: This PR is included in version 1.22.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Fix parameter names in documentation

Fix parameter names in RotateXTo and RotateYTo documentation.

Docs Build status updates of commit a8c3974:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error-UserAccountBuildPermissionInsufficientError] Owner davidbritch no longer has Read permission of the repository https://github.com/xamarin/Xamarin.Forms-api-docs. It might be due to recent GitHub changes on SSO. Please ask the owner davidbritch to logon to Docs Portal https://ops.microsoft.com once again. If it is not the case, please ask anyone of Admin permission of the repo to assign a new owner via Docs Portal https://ops.microsoft.com
[Warning-RepositoryOwnerPermissionInsufficient] Owner davidbritch of repository https://github.com/xamarin/Xamarin.Forms-api-docs has lost Admin permission. Please use Transfer Owner via Docs portal https://ops.microsoft.com to assign a new owner.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Microsoft support for Xamarin will end on May 1, 2024 for all Xamarin SDKs including Xamarin.Forms. In preparation for this, all issues and PRs in this repository are being closed.
.NET MAUI is the replacement for Xamarin.Forms, and its API docs are built from /// in the dotnet/maui repository. Therefore, any PRs for the .NET MAUI API docs should be opened in that repository.


Handle additional filetypes like sockets

Linux has more filetypes than directories, symlinks and files. They need to be backed up or ignored.

Fixed for now.

Sockets can just be ignored. Not useful to back them up.
Named pipes may be added later on.
Device files cannot be backed up.


Random fork/exec bug

Every now and then we get this running tests
fork/exec /var/folders/g4/457m2vdj7ql9wn4sgjtjf8t00000gn/T/go-build320028182/github.com/Tonkpils/snag/_test/snag.test: exec format error

Just a note - i've only ever seen this happen in the snag project itself, not other projects.

I just found the issue...It's a space in the test args


wbg: 1.1.0 -> 1.2.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/project/wbg/versions.
meta.description for wbg is: Wallpaper application for Wayland compositors
meta.homepage for wbg is: https://codeberg.org/dnkl/wbg
meta.changelog for wbg is: https://codeberg.org/dnkl/wbg/releases/tag/1.2.0
Updates performed

Version update

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.2.0 with grep in /nix/store/msyhsqpiy4zislv8db7kmdvx0bzkkakp-wbg-1.2.0
found 1.2.0 in filename of file in /nix/store/msyhsqpiy4zislv8db7kmdvx0bzkkakp-wbg-1.2.0

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

wbg

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/msyhsqpiy4zislv8db7kmdvx0bzkkakp-wbg-1.2.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A wbg https://github.com/r-ryantm/nixpkgs/archive/d1a894cd01caf99cdfe346adffba907fd53a2389.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/d1a894cd01caf99cdfe346adffba907fd53a2389#wbg

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/msyhsqpiy4zislv8db7kmdvx0bzkkakp-wbg-1.2.0
ls -la /nix/store/msyhsqpiy4zislv8db7kmdvx0bzkkakp-wbg-1.2.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review --extra-nixpkgs-config '{ allowInsecurePredicate = x: true; }' run on x86_64-linux 1

1 package built:

wbg

Maintainer pings
cc @AndersonTorres for testing.

I will migrate this to by-name. Please do not merge.


Decouple Navigation from Redux (Part 1)

Contributing to https://github.com/zulip/zulip-mobile/issues/3804.
Following #4273, which was merged today.
Some interesting things happening in this PR:

Add a NavigationService so we can talk directly to React Navigation instead of going through Redux
Use the NavigationService instead of Redux to read the navigation state, in all but a very few cases that will disappear naturally with further work
Transplant logic in our helpers in navReducer that handle some of our custom actions, i.e., actions that don't look like Navigation/POP and friends.

While my observations suggest that actions dispatched using NavigationService still affect state.nav in the ways we'd want them to [1], it seems safest to minimize the places where we read from the state.nav source before we stop updating it potentially alter how we update it to an extent that isn't known.
I take it that NavigationService is a safe source for the navigation state because

we've been quite comfortable using the navigation prop to read the navigation state, even with our react-navigation-redux-helpers setup; we use props.navigation.state.params quite often
the docs suggest that NavigationService can reasonably be considered a way to grab things from the navigation prop
empirically, I haven't yet seen NavigationService give the wrong nav state

The next main piece of work after this PR will be to use NavigationService to dispatch navigation actions, then it should be a pretty easy path to removing our react-navigation-redux-helpers setup completely.
[1] Also, an example app with react-navigation v2 and react-navigation-redux-helpers seems just as happy to dispatch navigation actions with the navigation prop (which is interesting for us and our NavigationService) as they are to do so with Redux's dispatch.

Thanks for the review! Just pushed my latest revision.

Thanks for the review! I've just addressed those comments.

Thanks again! I just responded to your comments, with one small question, and I also added one additional commit at the tip.

LGTM! Thanks for all the revisions. Merging.

Thanks for the review and merge!
I seemed to have dropped a ball here, and I didn't mark this PR as blocked by #4222 before this PR was merged.
In discussion, I'd said:

OK, I've just realized that #M4222 will make this a lot easier. With navigation state stored in Redux, it doesn't matter that the key hack in TranslationProvider unmounts and remounts the root navigator. But when we solely rely on that navigator for the navigation state, that key hack becomes a problem—changing the language puts you on LoadingScreen, 'loading' being the initialRouteName of AppNavigator, and you stay there indefinitely.

But having said that, I didn't then go and mark this PR as blocked, either on #4222 or a more complicated solution. Oops.
The effect is that, on master, changing the language is broken. The symptom I quoted above...isn't the one I'm seeing now, but it's still unstable and something we should fix.
Now, if I select a different language, it resets to the main-tabs screen. A lot (!) better than getting stuck indefinitely on the loading screen, but I'm not currently sure why it's not doing that anymore. I've pushed a revision for #4222 just now after resolving some conflicts.


reenable dev/devicelab/test/run_test.dart

I ran the test 10 times on Linux and Mac and it succeeded
consistently. Let's reenable until there are new reports that it's
flaky.
Fixes #5901


React Native: JSX namespace error thrown

🐛 Bug Report
Bug when rendering this file: ember.svg
I have created an SVG transformer for React Native.
When I use svgr to render the images inside the transformer file, React Native throws an error during the transform:
SyntaxError: /Users/kristerkari/Git/SVGDemo/logos/ember.svg:
Namespace tags are not supported by default.
React's JSX doesn't support namespace tags.
You can turn on the 'throwIfNamespace' flag to bypass this warning.

This happens because of the xmlns:svg="http://www.w3.org/2000/svg" attribute on the ember.svg image. If I remove that attribute, then the error is not thrown. The svg->svgr transform should probably take of that.
Link to repl or repo (highly encouraged)
App that I use for testing: https://github.com/kristerkari/react-native-svg-example
Images that I want to render: https://github.com/kristerkari/react-native-svg-example/tree/master/logos
Run npx envinfo --system --binaries --npmPackages @svgr/core,@svgr/cli,@svgr/webpack,@svgr/rollup --markdown --clipboard
Paste the results here:
## System:
 - OS: macOS High Sierra 10.13.6
 - CPU: x64 Intel(R) Core(TM) i7-7567U CPU @ 3.50GHz
 - Memory: 675.03 MB / 16.00 GB
 - Shell: 2.7.1 - /usr/local/bin/fish
## Binaries:
 - Node: 8.11.4 - /usr/local/bin/node
 - Yarn: 1.12.1 - /usr/local/bin/yarn
 - npm: 6.4.0 - /usr/local/bin/npm
 - Watchman: 4.9.0 - /usr/local/bin/watchman
## npmPackages:
 - @svgr/core: ^4.0.3 => 4.0.3
 - @svgr/webpack: ^4.0.0 => 4.0.0

Thanks for the issue. I don't have time to work on it. Anyone is welcome.

Also happens in React with svg props like <path style="stroke-width:1.000" d="....."/>

@danilofuchs, when you save the SVG in Inkscape as an "Optimized SVG", you do not get this error.

That's a solution, but I with svgr just ignored the tags

@danilofuchs, when you save the SVG in Inkscape as an "Optimized SVG", you do not get this error.

Still getting error. Can you describe the options used on prompt before save as Optimized SVG ?

I think the error is clear enough, namespaces are not supported in React Native.

@neoziro Shouldn't this be fixed in SVGR? It's transforming SVG images to a format that throws an error.

We can't handle it. I think it is not supported by react-native-svg.

But the error is not coming from react-native-svg, but from React.
The same error will be thrown even if you don't use React Native.

Yeah it is because of JSX, it does not support namespace tag. What should we do? SVGO takes care of removing them.

What should we do? SVGO takes care of removing them.

It could be changed to:
<svg xmlns="http://www.w3.org/2000/svg">
  <!-- more tags here -->
</svg>

https://developer.mozilla.org/en-US/docs/Web/SVG/Namespaces_Crash_Course#Declaring_namespaces


feat(#211): Fix Bug With Broken Decorator

Original problem wasn't related to bytecode check. Actually bytecode check alarmed about broken decorator class after transformation.
So, I fixed the bug and the problem is gone.
Closes: #211.

History:

feat(#211): use ugly classloader to check bytecode correctly
feat(#211): ignore original decorator
feat(#211): fix all qulice suggestions

PR-Codex overview
This PR focuses on improving the generation of distilled objects.
Detailed summary

Added an assertion to check that a specific error message is not present in the log.
Renamed the variable additional to generated.
Updated the log message to include the names and count of the generated classes.
Replaced the usage of additional with generated in the return statement.
Added a condition to skip a specific decorator during object replacement.

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

@rultor merge

@rultor merge

@volodya-lombrozo OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@volodya-lombrozo Done! FYI, the full log is here (took me 3min)


"Cannot find module" without outputs generator config

Hey Arthur,
First off, thank you so much for the generator. It's a game-changer!
I tried using this in my personal Prisma + NextJS project but ran into a Cannot find module '/<PROJECT_ROOT_PATH>/prisma' error.
The following snippet assumes that when outputs is not specified in the generator config, then options.generator.output?.value will be undefined. However, in my case, even though I am not specifying outputs in generator config, the value of overrideTarget or options.generator.output?.value is "/<PROJECT_ROOT_PATH>/prisma"
https://github.com/arthurfiorette/prisma-json-types-generator/blob/6c1505bafb5a1ed79b689eabfb76e3cf2637f3ed/src/file/reader.ts#L25-L33
I console-logged the options object from onGenerate() and below is the full output.
$ npx prisma generate
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
options.generator =  {
  "name": "json_gen",
  "provider": {
    "fromEnvVar": null,
    "value": "prisma-json-types-generator"
  },
  "output": {
    "value": "/<PROJECT_ROOT_PATH>/prisma",
    "fromEnvVar": "null"
  },
  "config": {
    "namespace": "IO"
  },
  "binaryTargets": [],
  "previewFeatures": []
}
Error:
✔ Generated Prisma Client (4.8.1 | library) to ./node_modules/@prisma/client in 148ms

Cannot find module '/<PROJECT_ROOT_PATH>/prisma'
Require stack:
- /<PROJECT_ROOT_PATH>/node_modules/prisma-json-types-generator/dist/file/reader.js
- /<PROJECT_ROOT_PATH>/node_modules/prisma-json-types-generator/dist/on-generate.js
- /<PROJECT_ROOT_PATH>/node_modules/prisma-json-types-generator/dist/generator.js
- /<PROJECT_ROOT_PATH>/node_modules/prisma-json-types-generator/dist/bin.js

When I hardcode the output = "/<PROJECT_ROOT_PATH>/node_modules/.prisma/client/index.d.ts", then everything works -- it essentially forces this execution branch
Set up
OS & Package Versions

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.1 LTS
Release:	22.04
Codename:	jammy

$ yarn list --pattern prisma prisma-json-types-generator
yarn list v1.22.19
├─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>│  └─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>│  └─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>│  ├─<EMAIL_ADDRESS>│  └─<EMAIL_ADDRESS>└─<EMAIL_ADDRESS>   └─<EMAIL_ADDRESS>
JSON Type Generator setup
// /<PROJECT_ROOT_PATH>/prisma/schema.prisma

generator client {
  provider      = "prisma-client-js"
  binaryTargets = ["native", "linux-musl"]
}

generator json_gen {
  provider = "prisma-json-types-generator"
  namespace = "IO"
}

// /<PROJECT_ROOT_PATH>/index.ts
declare global {
  export namespace IO {
    ... type delcarations ...
  }
}

Hey, have you tried using .prisma/client as the output value?

Yep, I did, and I got the same error: Cannot find module '/<PROJECT_ROOT_PATH>/prisma/.prisma/client'

generator json_gen {
  provider = "prisma-json-types-generator"
  namespace = "IO"
  target = ".prisma/client"
}

Actually, it work work with .prisma because here is startsWith('.') and not startsWith('./') 🤡

@JayNakrani just released 1.1.2 with the fix, can you test it again?

Seems like that the output name is a dedicated keyword that works differently...

Yep, 1.1.2 works great without outputs config. Thank you @arthurfiorette :raised_hands:

Haha, this PR might have been my fastest one. ⚡⚡⚡


Feature/javadoc

#7  Added JavaDoc to classes:

AbstractPlayableObjectDeserializer class
GsonFactory
AlbumFull

Modified gitignore file to ignore .idea folder

Hi @jzheng2017 , This PR is mainly for my git skill (I needed to learn more about git) and for AlbumFull class review. If I can get feedback for AlbumFull class, that would be great.  I will continue with the rest and will send PR. Thanks.

Hi @jzheng2017 , This PR is mainly for my git skill (I needed to learn more about git) and for AlbumFull class review. If I can get feedback for AlbumFull class, that would be great.  I will continue with the rest and will send PR. Thanks.


Independent advanced textures

Implement independent advanced textures that can be used separately from the main diffuse channel texture of the mesh(es). This would enable use of common advanced textures for several separate diffuse channel textures (see SSU/SSV orbiter texture loading, one common normal texture for Columbia/Challenger which are similar enough, same for Discovery, Atlantis and Endeavour).

SURFHANDLE oapiLoadAdditionalTextureMaps(const char* diff, const char* maps = NULL, bool bPath = false, SURFHANDLE hOld = NULL, bool bAll = true);
Function has been added to API. Not yet tested. Need to test that everything works fine.


Add and test canonical JSON serialization in lots of places

Slightly opinionated approach.
I am intending to introduce a lot of IPC using these objects so need reliable, clear JSON serialisation.

All done, @walec51

Review fixes in.

thanks, merged


How do you actually turn it on?

I finally managed to build HRBFfusion.
Now i have the executable which returns an error
HRBFfusion: /home/dima/HRBFFusion3D/Core/src/Utils/../Utils/parameterFile.h:37: void ParameterFile::addParameterFile(const string&): Assertion 0' failed.
Aborted (core dumped)
`
How do i actually make it work? How to add a config file

Ok, i actually managed to add the parameters file.
It should have been placed specifically in the folder above the built GUI.
But now i have another error
HRBFfusion: /home/dima/HRBFFusion3D/Core/src/Utils/Resolution.h:62: Resolution::Resolution(int, int): Assertion width > 0 && height > 0 && "You haven't initialised the Resolution class!"' failed.
Aborted (core dumped)`


Add Windows 11 Resource

Is your feature request related to a problem? Please describe.
Lacking support for an OS
Describe the solution you'd like
Tasks

[ ] Add resources for Windows 11

The static corrections have all been addressed in the static corrections file. However, when attempting to generate the resource, there are 6 warnings about registry keys that are definitely in Win11_23H2_corrections.csv. We expect no warnings about these registry keys.
WARNING: Failed to find a recommendation for Registry HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\FVE:FDVAllowSoftwareEncryptionFailover.
WARNING: Failed to find a recommendation for Registry HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\AppHVSI:AppHVSIClipboardFileType.
WARNING: Failed to find a recommendation for Registry HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging:EnableScriptBlockInvocationLogging.
WARNING: Failed to find a recommendation for Registry HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell\Transcription:OutputDirectory.
WARNING: Failed to find a recommendation for Registry HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell\Transcription:EnableInvocationHeader.
WARNING: Failed to find a recommendation for Registry HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WCN\Registrars:MaxWCNDeviceNumber.

When attempting to generate the WIN 11 23H2 resource, multiple errors related to null keys and null hashtables.
InvalidOperation: C:\Users\buch1\OneDrive - University of Illinois - Urbana\code\SecOps-Powershell-CISDSC\src\CISDSCResourceGeneration\functions\private\ConvertFrom-SystemAccessRawGPO.ps1:43:13
Line |
43 |              $SecuritySetting = $ValueData
|              ~~~~~~~~~~~~~~~~
| A null key is not allowed in a hash literal.

TerminatingError(Get-RecommendationFromGPOHash): "Cannot bind argument to parameter 'GPOHash' because it is null."

Get-RecommendationFromGPOHash: C:\Users\buch1\OneDrive - University of Illinois - Urbana\code\SecOps-Powershell-CISDSC\src\CISDSCResourceGeneration\functions\private\ConvertFrom-SystemAccessRawGPO.ps1:47:69
Line |
47 |  … um = Get-RecommendationFromGPOHash -GPOHash $SystemAccessHash -Type ' …
|                                                ~~~~~~~~~~~~~~~~~
| Cannot bind argument to parameter 'GPOHash' because it is null.

The static corrections issue has been fixed. The keys in question were not mapped to real recommendations in the actual benchmark. We did the corrections as a group and pasting back and forth between files. In most cases the recommendation number was left set to the Win 10 value accidentally. Chalk it up to human error. The null key issue is the only one that remains.

System Access subkey: AllowAdministratorLockout with value '1' seems to be the key causing all the null value errors.
In ConvertFrom-SystemAccessRawGPO the subkey gets passed in as $key, so 'AllowAdministratorLockout' is the key in this case. In this function it checks if that key is in the $script:SecurityOptionSettings.Keys or $script:AccountPolicySettings.keys and 'AllowAdministratorLockout' is the only one in neither. For future-proofing this should probably error if it doesn't enter either if statement.
if($script:SecurityOptionSettings.ContainsKey($Key)){
        $SecuritySetting = $script:SecurityOptionSettings[$key]
        $ResourceName = "SecurityOption"
    }
    elseif($script:AccountPolicySettings.ContainsKey($Key)){
        $SecuritySetting = $script:AccountPolicySettings[$key]
        $ResourceName = "AccountPolicy"
    }

They actual keys present in these two script context variables are:
EnableGuestAccount NewAdministratorName ForceLogoffWhenHourExpire LSAAnonymousNameLookup EnableAdminAccount NewGuestName
and
ClearTextPassword MaxRenewAge MaximumPasswordAge MaxTicketAge MaxClockSkew TicketValidateClient PasswordComplexity LockoutBadCount MaxServiceAge LockoutDuration MinimumPasswordAge MinimumPasswordLength ResetLockoutCount PasswordHistorySize
Will need to keep working backwards to figure out why AllowAdministratorLockout is not present in these keys

'AllowAdministratorLockout' was missing from the baseline dictionaries in CISDSCResourceGeneration.psm1
I've added it to $script:AccountPolicySettings and now the resource is generated without errors! There is very little info about this setting online because it is new. I used this Microsoft KB page to determine it was an AccountPolicy Setting and the value it should have: https://support.microsoft.com/en-us/topic/kb5020282-account-lockout-available-for-built-in-local-administrators-bce45c4d-f28d-43ad-b6fe-70156cb2dc00

Published to https://www.powershellgallery.com/packages/CISDSC/4.0.0


TypeError: process.getuid is not a function

Link to reproduction
No response
Describe the Bug
This error started appearing after I installed and configured cloud-storage-plugin. I configured s3 adpater + mongodb atlas. It is appearing after signing up/in to admin pages and everything stops to work. I did some research but could find only one page descring the issue which was totally useless.
Here is how I configured the s3 adapter:
cloudStorage({
      enabled: process.env.MY_CONDITION === 'true',
      collections: {
        'my-collection-slug': {
          adapter: s3Adapter({
            config: {
              endpoint: process.env.S3_ENDPOINT,
              forcePathStyle: process.env.S3_FORCE_PATH_STYLE === 'true',
              region: process.env.S3_REGION,
              credentials: {
                accessKeyId: process.env.S3_ACCESS_KEY_ID,
                secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
              },
            },
            bucket: process.env.S3_BUCKET,
          }),
        },
      },
    }),

If anyone knows at least someone that may help then pls reply me. If the information is not enough you can ask what you need.
To Reproduce

Create E-Commerce template project using payloadcms
Install cloud-storage-plugin and connect s3 bucket + mongodb
The error should appear after signing in or signing up to admin page

I use npm to install all the packages.
The versions of packages:
@payloadcms/db-mongodb: 1.4.1
@payloadcms/plugin-cloud-storage: 1.1.2
Payload Version
2.5.0
Adapters and Plugins
db-mongodb cloud-storage-plugin

Duplicate of https://github.com/payloadcms/payload/issues/4952


Email and Username case constraints

The database accepts the same email and username multiple times with different casing.
<EMAIL_ADDRESS>vs<EMAIL_ADDRESS>are treated as different emails with different accounts.
ExampleUserName vs exampleusername are treated as different usernames.

In the case of usernames, this behavior is as expected and desired. Things seem a little murkier for email addresses.
From what I can see from the RFCs, the local part of an email is case sensitive, so<EMAIL_ADDRESS>and<EMAIL_ADDRESS>are technically different addresses; however, the domain part is case insensitive, so<EMAIL_ADDRESS>and<EMAIL_ADDRESS>are technically the same.
Of course, most providers seem treat emails as simply case insensitive, so it may sense for us to follow suit and treat emails address strings with different case as the same address in every case.

I agree.
Are the usernames being used for anything other than logging in? Simplifying by dropping the username altogether and using email and password to log in would make the most sense to me. Easier to remember, no username conflicts to deal with. As far as I can tell, the ‘Name’ is the only data being displayed anywhere.
Obviously low priority for MVP, but putting it out there nonetheless.

Yeah, it's questionable whether usernames are even necessary to track for our purposes. They are useful in the current setup right now for having legible profile routes - https://<sitename>/users/<username>, but it's unclear whether that functionality itself is necessary.
Definitely something that could warrant further consideration, but yeah not going to make the difference between minimum-viable and not. On the other hand, it's not something we're going to be able to change easily once the system is actually in use.

I think it's arguable that it's useful to be able to disambiguate users with the same names using a human manageable string that is guaranteed unique but not a machine generated string, even for ad hoc admin purposes, so I'm going to err towards keeping the username field.

Closing this with the most recent PR


Anerdw: Blacklist 09973--715-113

Anerdw requests the blacklist of the number 09973--715-113. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

Approved by Dragonrage in Charcoal HQ


Add keyword support for Greater than equal, #144.

Signed-off-by: Pan Li<EMAIL_ADDRESS>

Codecov Report

Merging #182 into master will increase coverage by 0.04%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #182      +/-   ##
==========================================
+ Coverage    79.2%   79.24%   +0.04%
==========================================
  Files          38       38
  Lines         904      906       +2
  Branches      121      121
==========================================
+ Hits          716      718       +2
  Misses        128      128
  Partials       60       60

Impacted Files
Coverage Δ

...osmosdb/core/generator/AbstractQueryGenerator.java
90.9% <ø> (ø)
:arrow_up:

.../spring/data/cosmosdb/core/query/CriteriaType.java
72.72% <100%> (+1.75%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 4d76ed4...c5d8b9a. Read the comment docs.


Enable TOC preview

Docs Build status updates of commit e58d819:
:clock10: Full build: the average full build time is 199 min(s) 2 sec(s), this is based on the last 6 build(s) for this repository.
:warning: This is a FULL build due to a configuration change (usually in .openpublishing.publish.config.json and/or docfx.json). It is strongly suggested to merge this configuration change after the business hours, as it could impact the overall build performance of other PRs on the 'master' branch. For more detailed info, please click here.

Docs Build status updates of commit e58d819:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docfx.json
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

@mmacy Should I push the green button?

@sptramer Nope, not yet on this one--thanks for checking! I'll mark w/NO MERGE.


Upgrade Log In page to UI v3

Footer design (Figma)
Task

Update the login page component in the library web-login.
See doc on how to set update the style and theme of a component.

The login page will be provided by Keycloak (KC). It is possible to customize the theme of this page (see documentation).
For now this ticket is marked as Blocked until KC is fully integrated to the stack. @vpchung @rrchai

@vpchung Just saw your design of the login page in teleportHQ and it looks great! Now that we have an API gateway, the idea is that it will protect all the services behind, including Keycloak. That means that for now we won't make use of Keycloak login page and instead implement our own as planned initially.

Depends on #321


Remove Authentication from /blog

Description
The new Blog pages should not require authentication.
Current Behavior
When clicking on a Blog search result, it prompts a login if not logged in.
Steps to Reproduce

Log out, or have an expired auth token.
Go to crisiscleanup.org/blog.
Search for "working together."
Scroll to "On Working together."
Click the article.
Error: Taken to the login screen.

Tasks

It fixed itself. Yay.


How to work with multiple URL's in Same Issue (scanner import)

So, I have a question here with regards to multiple URL's reported in scanners for a same issue.
For Eg. An IBM Appscan report says XSS vulnerabilities found and it has around 10 URL's out of which 4 are false positives. How to tackle this problem.
I only get an option to tick the whole XSS issue as False positive. I would like to have few URL's / Parameters flagged as false positives and few as not.

Hi,
Any update on this?

This is currently not supported, and would probably require more than just a parser update.

Hi,
Thanks for the response. Any plans to support this feature in future?

Hello, any progress and discussions on this?
Kindly let me know,
Thanks.

Hello @gautammayekar, there is a notion of remediated endpoints that allow a user to mark a specific endpoint as remediated or still vulnerable. After remediation, it will be moved to another dropdown box in the finding view. Though it does not mark the endpoint as any of the status' a finding could have, it may be of good use to you. Currently, the remediation only applies to the host, but it should apply to the path instead. I can fix that for you. What do you think?

@cody-m-tibco please reference this issue in your PR when ready.

Fixed


[SPARK-14387][SQL] Enable Hive-1.x ORC compatibility with spark.sql.hive.convertMetastoreOrc

What changes were proposed in this pull request?
This PR improves ORCFileFormat to handle cases when schema stored in the ORC file does not match the schema stored in metastore.
ORC Data written by Hive-1.x had virtual column names (HIVE-4243). This is fixed in Hive-2.x, but for data stored using Hive-1.x spark would throw exceptions. To mitigate this, "spark.sql.hve.convertMetastoreOrc" was disabled via SPARK-15705.  However, that would incur
performance penalties as it would go via HiveTableScan and HadoopRDD.  This PR fixes this issue.
Related tickets:
SPARK-15705 : Change the default value of spark.sql.hive.convertMetastoreOrc to false.
SPARK-15705 : Spark won't read ORC schema from metastore for partitioned tables
SPARK-16628 : OrcConversions should not convert an ORC table represented by MetastoreRelation to HadoopFsRelation if metastore schema does not match schema stored in ORC files
How was this patch tested?
Manual testing by setting "spark.sql.hve.convertMetastoreOrc=true" and querying data stored via Hive-1.x in ORC format. Also ran unit-tests related to sql.
(If this patch involves UI changes, please attach a screenshot; otherwise, remove this)

Test build #63147 has started for PR 14471 at commit dc943a4.

Test build #63147 has finished for PR 14471 at commit dc943a4.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/63147/
Test FAILed.

Merged build finished. Test FAILed.

Fixed scalastyle issues

Test build #63150 has started for PR 14471 at commit 58162b9.

Test build #63150 has finished for PR 14471 at commit 58162b9.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/63150/
Test PASSed.

Can you add a test case?

also can you update the title? The current title is very generic. This ticket seems to be solving a specific problem.

Test build #63169 has started for PR 14471 at commit 046e0c4.

Thanks @rxin.
Changes:

Added test case. Also added sample orc file (392 bytes) from Hive 1.x with format "Type: struct<_col0:int,_col1:string>".   Without this PR change in OrcFileFormat, it would end up throwing "java.lang.IllegalArgumentException: Field "key" does not exist." for the same test case.

Fixed the title of the JIRA and the PR.

Test build #63169 has finished for PR 14471 at commit 046e0c4.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/63169/
Test PASSed.

Jenkins, retest this please.

Test build #65687 has started for PR 14471 at commit 046e0c4.

Test build #65687 has finished for PR 14471 at commit 046e0c4.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/65687/
Test PASSed.

Merged build finished. Test PASSed.

Hi, @rajeshbalamohan . I'll refer your commit for SPARK-19459 . You'll be the main author in case of merge.

Hi, @rajeshbalamohan .
SPARK-14387 is resolved now. Could you close this PR?


nvim doesn't scroll

vim works, but nvim doesn't delete old lines when scrolling. Investigate.

Fixed.


HTML
Meu VSCode não abre pra digitar em HTML, mas em outras linguagens pra colar ele abre, preciso de ajuda.

Does this issue occur when all extensions are disabled?: Yes/No

VS Code Version:
OS Version:

Steps to Reproduce:

translates to: vscode does not open to type in HTML, but in other languages when pasting it opens, need help

Sorry, I don't know what you mean/ Please provide more information. The best is to provide detailed steps and sample code.
Explain what you see and what you expect. Screenshots are also very helpfull.


How To Select optifine version

how?

you can't download and install optifine but you can launch it like others..
for example

the launch version is 1.17.1-OptiFine_HD_U_H1
var process = launcher.CreateProcess("1.17.1-OptiFine_HD_U_H1", new MLaunchOption
{
    MaximumRamMb = 2048,
    Session = MSession.GetOfflineSession("hello123"),
});

(actually its the ID not that)

If you want to download and install optifine,

Extract optifine from their default installer
Upload the optifine  fles to a your own server
Get them from the launcher with some code


[2.1.4] Understanding Class Diagram

Issue Details
Description
This tasks is to understand Class Diagrams in general so that the team is prepared to draft one out.
Goals
Understand Class Diagram
Success or Completion Criteria
Some helpful links or comments that would help the team to understand more on Class Diagrams.
Allocated Time
3 Days
Start Date: 25/09/23, 0900
End Date: 27/09/23, 2359

Issue Comments
Description
Researched about Class Diagram and shared some link for my team members.
Class Diagram #1
Class Diagram #2
Changes to success or completion criteria? y/n (if y, describe)
No Changes, Criteria Completed!
Start Date: 25/09/23, 0900
End Date: 27/09/23, 2359


Home drives are not refreshed after disk size changes

Describe the bug
The "Home" drives shortcuts are not being refreshed after disk size changes
To Reproduce
Steps to reproduce the behavior:

Go to Files app.
Click on any disk and remove/add files to it.
Go back to "Home" pane.
The disk size is not refreshed after the changes.

Expected behavior
The disks size to be automatically refreshed after each operation inside them.
Desktop (please complete the following information):

OS Version: [e.g. Windows 10 20H2 19042.804]
App version: [v<IP_ADDRESS>]

Additional context
After few minutes without refreshing the disk size, the app goes blue blocked and crashed.
Log file
debug_fulltrust.txt
debug.txt

Merging with #2242

@jakoss could you take a look at the last stacktrace in the posted log file?

Seems like there's an issue loading string from property Section in FileProperty. It's not used anywhere, but it shouldn't be serialized anyway, since it's a calculated property:

I think that adding [JsonIgnore] to this property (and the Name property to be safe) should solve that issue. But i'm not sure about the cause of that. Seems like GetLocalized() returns some weird string that cannot be serialized.
That said - it shouldn't be cause of the original issue, since it's in try/catch block. Failure in saving to persistent cache shouldn't have any effect on the rest of the app


[Spine-TS] Scale property doesn't work

Yeah, just like the alpha and the rotation, scale doesn't work when applied to the container group.
spineObjContainer.scale.x = 0.6   <-- Doesn't work
spineObjContainer.children[0].scale.x = 0.6   <-- works
My work around earlier was to do the latter, but since this spine positioning problem isn't solved yet, this complicates things since scaling the spine object itself makes the positioning unpredictable when I use it with the group.
EDIT: See issue #72, edit comment. I got rid of trying to set 0 to the spine object's [x,y,centerX, centerY], and just cancel out the root bone's position to bring it to 0,0. Scaling the children seems to work and is predictable. But the container group's scale property doesn't work on the spine object.

I tried doing a negative scale:
spineObjContainer.children[0].scale.x = -0.6
It's horrible. lol. I've yet to try a negative scale within spine itself and see what happens.

@AleBles
Just reporting that scale doesn't work on WebGL:
spineObjContainer.scale.x = 0.6 <-- Doesn't work
spineObjContainer.children[0].scale.x = 0.6 <-- Doesn't work
I was going to test out the position if it's fixed already, but I encountered this first.


Accessibility issue with Context Menu

Describe the bug
When we are trying to use ANDI tool for checking the accessibility issue for ngx-contextmenu, we are seeing the error the below error
[Element referenced by [aria-labelledby] with [id=menubutton] not found.]. This is happening because aria-labelledby="menubutton" doesn't exist anywhere.
To Reproduce
Steps to reproduce the behavior:
1.Go to https://perfectmemory.github.io/ngx-contextmenu/iframe.html?args=&globals=backgrounds.grid:!false;backgrounds.value:!hex(F8F8F8)&id=context-menu-demo--demo&viewMode=story
2.Right Click on the text to see the context menu
3.Open developer tool or use ANDI tool
4.See the below image highlighted with 'menubutton' as aria-labelledby for context-menu

Expected behavior
The aria-labelledby attribute value = 'menubutton' should exist.
Stackblitz Example
[Please fork this base example to demonstrate the issue you're experiencing.](https://perfectmemory.github.io/ngx-contextmenu/iframe.html?args=&globals=backgrounds.grid:!false;backgrounds.value:!hex(F8F8F8)&id=context-menu-demo--demo&viewMode=story)

Hi Team,
Can you please confirm if this is actually the issue or we need to add something from our end?
Thanks.

Hi @innov-richa76,
You are right this is an issue in the lib. I have two options:

remove the aria-labelledBy altogether
set the aria-labelledBy attribute value with the id of the context menu target item (if exists, otherwise go back to option 1)

For submenus the id should be placed on the menu that triggered the submenu, but that's not possible because it is a <ng-tempate>. So I am tempted to do option 1. What do you think ?

Hi @sroucheray ,
Thank you for getting back to me.
From accessibility point of view, adding aria-labelledBy attribute value with the id of the context menu target item would be great solution but since as you mentioned for sub menus it wont be possible, so its okay to remove the aria-labelledBy attribute altogether.
However, anything is fine with us as long as we have the accessibility in place.
Thanks.

Fixed in 16.0.1


Dockerfile - optional --build-arg for GPU dependenices

Installs dependencies for integrated GPU. I will add instructions to the wiki after this is merged, but basically you just need to run this to build:
docker build -f ./Dockerfile_gpu . -t openvino_notebooks

And this to run the image:
docker run -it --device /dev/dri -p 8888:8888 --shm-size 8G openvino_notebooks

I'm showing a demo on Tuesday on Tiger Lake laptop with Fedora. I have already tested and confirmed that this works. It uses the same approach for installing iGPU dependencies as OpenVINO Runtime and Model Server containers that we publish on Red Hat registry and Docker Hub.

Thanks @ryanloney ! Is it an option to just put this into our regular Dockerfile? The image is already large so it should not add that much (I can test), and that would avoid code duplication and maintenance effort.

@helena-intel yes, but we should not include this in default build, not everyone will need it, especially for our integration with ODH/ODS, which runs primarily on Xeon VMs in the cloud.
I suggest we use a "build-arg" for GPU. Something like  --build-arg GPU=True for our docker build command?
It will take me some time to figure this out. If you want to try, or have a suggestion for me to try please share it.

@helena-intel I updated the main Dockerfile so it installs the GPU dependencies when using the --build-arg flag to set GPU=True.
To build:
docker build --build-arg GPU=True . -t openvino_notebooks

To run:
docker run -it --device /dev/dri -p 8888:8888 --shm-size 8G openvino_notebooks

Thanks @ryanloney! I really like having it in the same file.
It does not work out of the box on my TGL laptop with Ubuntu 20.04. I get
[Warning] One or more build-args [GPU] were not consumed

I ran the 002 notebook in Docker to check if GPU was working anyway, but it was not.
I locally installed the GPU with apt install intel-opencl-icd and it works fine then:

If it works for you and you would like to merge now I can do that and look into this later.

@helena-intel I just pushed an update. ARG GPU=False needs to be set by default. I left it blank before. Can you try again?

@ryanloney It doesn't work for me with Ubuntu as well.

Let's do a clean up and see if this pull request is still relevant?

Hello,
I know this issue has been closed for a while, but I wanted to check in if there's a way to use openVINO with an iGPU through a docker container.
I've also attempted to build on Ubuntu 20.04 with the suggested Dockerfile with no luck.

@alberto139 see if the instructions from #793 can help you

@dtrawins do you have any advice on how to get OCL working in the container?


Remove println! in rewrite_static()

There's an extraneous println!() in rewrite_static in items.rs:
https://github.com/rust-lang/rustfmt/blob/e4944185ae09c99f59b460e358909f329010ea9c/src/items.rs#L1992-L2000
This causes rustfmt to add "rewriting static" to the top of every file that triggers rewrite_static() when formatting:

This PR removes the println!(). Nothing fancy, I assume this was a mistake.

Oops, sorry. Didn't see https://github.com/rust-lang/rustfmt/issues/6210 for some reason.


Odsp driver getFileLink swallows errors, making them more difficult to diagnose

https://github.com/microsoft/FluidFramework/blob/main/packages/drivers/odsp-driver/src/getFileLink.ts#L60
In getFileLink() in the event of an error we swallow the error and return undefined.  This makes it harder to distinguish between an error response vs. a 200 response with empty/malformed content, since both will return undefined.  An error will also produce a Performance _cancel event that can probably help distinguish, but this is additional challenge to correlate.  Also in the case of an error we should probably prefer to emit as an Error event rather than a Performance event in order to get the right response.

In addition, the response is not strictly validated, and so it's possible for malformed responses to result in undefined being placed in the fileLinkCache:
https://github.com/microsoft/FluidFramework/blob/main/packages/drivers/odsp-driver/src/getFileLink.ts#L116
Later this will blow up (when the undefined is retrieved from the cache) but it would be better to blow up prior to inserting the bad value into the cache, immediately after receiving the response).


Debugger widget

Description of Changes

[x] Added icons for panes: console-off, console-remote-off, debugger and dependencies.
[x] Added widget to show empty pane in debugger while no debugging sessions are active.

Affirmation
By submitting this Pull Request or typing my (user)name below,
I affirm the Developer Certificate of Origin
with respect to all commits and content included in this PR,
and understand I am releasing the same under Spyder's MIT (Expat) license.
I certify the above statement is true and correct:
@conradolandia

Hello @conradolandia! Thanks for opening this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file spyder/plugins/debugger/widgets/framesbrowser.py:

Line 134:1: W293 blank line contains whitespace
Line 157:1: W293 blank line contains whitespace