module Data.Text.Punycode.Shared where import Data.Char (ord) base :: Int base :: Int base = Int 36 tmin :: Int tmin :: Int tmin = Int 1 tmax :: Int tmax :: Int tmax = Int 26 skew :: Int skew :: Int skew = Int 38 damp :: Int damp :: Int damp = Int 700 initial_bias :: Int initial_bias :: Int initial_bias = Int 72 initial_n :: Int initial_n :: Int initial_n = Int 128 adapt :: Int -> Int -> Bool -> Int adapt :: Int -> Int -> Bool -> Int adapt Int delta Int numpoints Bool firsttime = Int helper where helper :: Int helper = Int -> Int -> Int loop Int 0 (Int -> Int) -> Int -> Int forall a b. (a -> b) -> a -> b $ Int delta' Int -> Int -> Int forall a. Num a => a -> a -> a + (Int delta' Int -> Int -> Int forall a. Integral a => a -> a -> a `div` Int numpoints) where delta' :: Int delta' | Bool firsttime = Int delta Int -> Int -> Int forall a. Integral a => a -> a -> a `div` Int damp | Bool otherwise = Int delta Int -> Int -> Int forall a. Integral a => a -> a -> a `div` Int 2 loop :: Int -> Int -> Int loop Int k Int delta' | Int delta' Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > ((Int base Int -> Int -> Int forall a. Num a => a -> a -> a - Int tmin) Int -> Int -> Int forall a. Num a => a -> a -> a * Int tmax) Int -> Int -> Int forall a. Integral a => a -> a -> a `div` Int 2 = Int -> Int -> Int loop (Int k Int -> Int -> Int forall a. Num a => a -> a -> a + Int base) (Int -> Int) -> Int -> Int forall a b. (a -> b) -> a -> b $ Int delta' Int -> Int -> Int forall a. Integral a => a -> a -> a `div` (Int base Int -> Int -> Int forall a. Num a => a -> a -> a - Int tmin) | Bool otherwise = Int k Int -> Int -> Int forall a. Num a => a -> a -> a + (((Int base Int -> Int -> Int forall a. Num a => a -> a -> a - Int tmin Int -> Int -> Int forall a. Num a => a -> a -> a + Int 1) Int -> Int -> Int forall a. Num a => a -> a -> a * Int delta') Int -> Int -> Int forall a. Integral a => a -> a -> a `div` (Int delta' Int -> Int -> Int forall a. Num a => a -> a -> a + Int skew)) isBasic :: Char -> Bool isBasic :: Char -> Bool isBasic = (Int -> Int -> Bool forall a. Ord a => a -> a -> Bool < Int initial_n) (Int -> Bool) -> (Char -> Int) -> Char -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . Char -> Int ord