{"version":3,"file":"static/js/main.3170eaba.js","mappings":"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AAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,G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,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINzC,IAAK,CACH7tB,IAAK,EACLswB,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAE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CrBsd,EACAgZ,EACAq2D,EACA3B,GAEA,OAAO7uE,EAAOzV,KACZoqH,EAAUjtD,aAAah+B,WAAWn/B,KAAK4vB,GAAYq2D,EAAO9mD,WAAWn/B,KAAK4W,GAAU0tE,KAW3EhrF,EAAAA,KAAO,SAASu/D,EAAmBF,GAE9C,OAAOljD,EAAOzV,KAAKoqH,EAAUshG,KAAKvsL,WAAWn/B,KAAK64D,GAAY15B,WAAWn/B,KAAK24D,GAAa,MAGhFr/D,EAAAA,WAAa,SACxBu/D,EACAF,EACA2rB,GAKA,GAAyB,KAArBzrB,EAAUp/D,QAAsC,KAArBo/D,EAAUp/D,OACvC,MAAM,IAAIg0D,WAAW,gCAIvB,GAA0B,KAAtBkL,EAAWl/D,OACb,MAAM,IAAIg0D,WAAW,iCAGvB,OAAOh4C,EAAOzV,KACZoqN,EAAYuB,WAAWxsL,WAAWn/B,KAAK64D,GAAY15B,WAAWn/B,KAAK24D,GAAa2rB,gHClZpF,IAAMsnI,EAAmCn2M,EAAOzV,KAAK,CAEnD,GACA,IACA,IACA,EACA,EACA,EACA,EACA,GAEA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAEA,IACA,IACA,IACA,GACA,IACA,IACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,IACA,GACA,IACA,GACA,EACA,EACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,EACA,EACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,IACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,EACA,EACA,EACA,IACA,GACA,EACA,GACA,EAEA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,IAGI6rN,EAAqCp2M,EAAOzV,KAAK,CAErD,GACA,IACA,EACA,GACA,EACA,EACA,EACA,EACA,GAEA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAEA,IACA,IACA,IACA,GACA,IACA,IACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,IACA,GACA,IACA,GACA,EACA,EACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,EACA,EACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,GACA,EACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,EACA,EACA,EACA,IACA,GACA,EACA,GACA,EAEA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,IAGF1G,EAAAA,iBAA2B,SACzBq/D,EACAE,EACAyrB,QAAA,QAAAA,GAAAA,GAEA,IAAM/lF,EAASkX,EAAOzV,KACpBskF,EAAasnI,EAAmCC,GAIlD,OAFAlzJ,EAAWxxB,KAAK5oC,EAAQ+lF,EAAa,EAAI,GACzCzrB,EAAU1xB,KAAK5oC,EAAQ+lF,EAAa,IAAM,KACnC/lF,GAGTjF,EAAAA,iBAA2B,SAASq/D,GAClC,IAAMl/D,EAASk/D,EAAWl/D,OAGtBqzC,EAAQ,EACZ,GAAIrzC,EAASqzC,EAAQ,GAA2B,KAAtB6rB,EAAW7rB,GAAiB,OAAO,KAI7D,GAAIrzC,GAHJqzC,GAAS,GAGY,KAA2B,IAApB6rB,EAAW7rB,IAAgB,OAAO,KAE9D,IAAMg/K,EAA2B,IAApBnzJ,EAAW7rB,GAExB,GAAIg/K,EAAO,GAAKA,EAAO,EAAG,OAAO,KACjC,GAAIryN,GAFJqzC,GAAS,GAEYg/K,EAAM,OAAO,KAGlC,IAAMtyN,EAAMm/D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IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAG/6xC,SAASkpG,EAAQn1J,GACf,OAAIA,GAAa,OAEXA,GAAa,QAAWA,GAAa,OAChC,SACF,EAEF15C,EAAO4uM,EAAWl1J,GAAa,IAAgB,GAAZA,GAG5C,MAAO,CACLo1J,OAbe,gxxBAcfD,QAASA,GA3uByBthF,IAA1B,QAAC,OAAD,yFCJJwhF,EAAS,WAGTrjO,EAAO,GAUPsjO,EAAgB,QAChBC,EAAgB,aAChBC,EAAkB,4BAGlBxjK,EAAS,CACd,SAAY,kDACZ,YAAa,iDACb,gBAAiB,iBAKZrzD,EAAQD,KAAKC,MACb82N,EAAqBpuM,OAAOk2B,aAUlC,SAAS5vD,EAAM2I,GACd,MAAM,IAAIkqD,WAAWwR,EAAO17D,IA8B7B,SAASo/N,EAAUn2N,EAAQxR,GAC1B,IAAM0rC,EAAQl6B,EAAO0Z,MAAM,KACvB3nB,EAAS,GACTmoC,EAAMjtC,OAAS,IAGlB8E,EAASmoC,EAAM,GAAK,IACpBl6B,EAASk6B,EAAM,IAIhB,IACMk8L,EA/BP,SAAav0K,EAAOrzD,GAGnB,IAFA,IAAMuD,EAAS,GACX9E,EAAS40D,EAAM50D,OACZA,KACN8E,EAAO9E,GAAUuB,EAAGqzD,EAAM50D,IAE3B,OAAO8E,EAyBSgY,EAFhB/J,EAASA,EAAOkQ,QAAQ+lN,EAAiB,MACnBv8M,MAAM,KACAlrB,GAAIivB,KAAK,KACrC,OAAO1rB,EAASqkO,EAgBjB,SAASC,EAAWr2N,GAInB,IAHA,IAAMi4B,EAAS,GACXyqI,EAAU,EACRz1K,EAAS+S,EAAO/S,OACfy1K,EAAUz1K,GAAQ,CACxB,IAAMkB,EAAQ6R,EAAOs7B,WAAWonI,KAChC,GAAIv0K,GAAS,OAAUA,GAAS,OAAUu0K,EAAUz1K,EAAQ,CAE3D,IAAM+nH,EAAQh1G,EAAOs7B,WAAWonI,KACR,QAAX,MAAR1tD,GACJ/8E,EAAOtoC,OAAe,KAARxB,IAAkB,KAAe,KAAR6mH,GAAiB,QAIxD/8E,EAAOtoC,KAAKxB,GACZu0K,UAGDzqI,EAAOtoC,KAAKxB,GAGd,OAAO8pC,EAWR,IAmCMq+L,EAAe,SAASr1L,EAAOs1L,GAGpC,OAAOt1L,EAAQ,GAAK,IAAMA,EAAQ,MAAgB,GAARs1L,IAAc,IAQnDC,EAAQ,SAAShhL,EAAOihL,EAAWC,GACxC,IAAI/rM,EAAI,EAGR,IAFA6qB,EAAQkhL,EAAYt3N,EAAMo2C,EA1Kd,KA0K8BA,GAAS,EACnDA,GAASp2C,EAAMo2C,EAAQihL,GACOjhL,EAAQmhL,IAA2BhsM,GAAKl4B,EACrE+iD,EAAQp2C,EAAMo2C,EA3JM/iD,IA6JrB,OAAO2M,EAAMurB,EAAI,GAAsB6qB,GAASA,EAhLpC,MA0LPthB,EAAS,SAASv0B,GAEvB,IAtD6B8gE,EAsDvBxoC,EAAS,GACTggI,EAAct4J,EAAM1S,OACtBC,EAAI,EACJ+D,EA5LY,IA6LZ2lO,EA9Le,GAoMfC,EAAQl3N,EAAMu3B,YAlMD,KAmMb2/L,EAAQ,IACXA,EAAQ,GAGT,IAAK,IAAItlN,EAAI,EAAGA,EAAIslN,IAAStlN,EAExB5R,EAAM27B,WAAW/pB,IAAM,KAC1BnjB,EAAM,aAEP6pC,EAAOtoC,KAAKgQ,EAAM27B,WAAW/pB,IAM9B,IAAK,IAAI+uB,EAAQu2L,EAAQ,EAAIA,EAAQ,EAAI,EAAGv2L,EAAQ23H,GAAwC,CAQ3F,IADA,IAAI6+D,EAAO5pO,EACF22C,EAAI,EAAGlZ,EAAIl4B,GAA0Bk4B,GAAKl4B,EAAM,CAEpD6tC,GAAS23H,GACZ7pK,EAAM,iBAGP,IAAM6yC,GA9FqBw/B,EA8FA9gE,EAAM27B,WAAWgF,MA7F9B,GAAO,GACfmgC,EAAY,GAEhBA,EAAY,GAAO,GACfA,EAAY,GAEhBA,EAAY,GAAO,GACfA,EAAY,GAEbhuE,GAsFDwuC,GAASxuC,GAAQwuC,EAAQ7hC,GAAO02N,EAAS5oO,GAAK22C,KACjDz1C,EAAM,YAGPlB,GAAK+zC,EAAQ4C,EACb,IAAMD,EAAIjZ,GAAKisM,EA7OL,EA6OoBjsM,GAAKisM,EA5OzB,MA4O8CjsM,EAAIisM,EAE5D,GAAI31L,EAAQ2C,EACX,MAGD,IAAMmzL,EAAatkO,EAAOmxC,EACtBC,EAAIzkC,EAAM02N,EAASiB,IACtB3oO,EAAM,YAGPy1C,GAAKkzL,EAIN,IAAMlwL,EAAM5O,EAAOhrC,OAAS,EAC5B2pO,EAAOJ,EAAMtpO,EAAI4pO,EAAMjwL,EAAa,GAARiwL,GAIxB13N,EAAMlS,EAAI25C,GAAOivL,EAAS7kO,GAC7B7C,EAAM,YAGP6C,GAAKmO,EAAMlS,EAAI25C,GACf35C,GAAK25C,EAGL5O,EAAO67B,OAAO5mE,IAAK,EAAG+D,GAIvB,OAAO62B,OAAOkvM,cAAP,MAAAlvM,OAAwBmQ,IAU1B9E,EAAS,SAASxzB,GACvB,IAD8B,EACxBs4B,EAAS,GAMXggI,GAHJt4J,EAAQ02N,EAAW12N,IAGK1S,OAGpBgE,EA5RY,IA6RZukD,EAAQ,EACRohL,EA/Re,GAmRW,IAeHj3N,GAfG,IAe9B,IAAK,EAAL,qBAAkC,KAAvBwkM,EAAuB,QAC7BA,EAAe,KAClBlsK,EAAOtoC,KAAKumO,EAAmB/xB,KAjBH,8BAqB9B,IAAI8yB,EAAch/L,EAAOhrC,OACrBiqO,EAAiBD,EAWrB,IALIA,GACHh/L,EAAOtoC,KA9SS,KAkTVunO,EAAiBj/D,GAAa,CAIpC,IAJoC,EAIhC3mJ,EAAIwkN,EAJ4B,IAKTn2N,GALS,IAKpC,IAAK,EAAL,qBAAkC,KAAvBwkM,EAAuB,QAC7BA,GAAgBlzM,GAAKkzM,EAAe7yL,IACvCA,EAAI6yL,IAP8B,8BAapC,IAAMgzB,EAAwBD,EAAiB,EAC3C5lN,EAAIrgB,EAAImO,GAAO02N,EAAStgL,GAAS2hL,IACpC/oO,EAAM,YAGPonD,IAAUlkC,EAAIrgB,GAAKkmO,EACnBlmO,EAAIqgB,EAnBgC,UAqBT3R,GArBS,IAqBpC,IAAK,EAAL,qBAAkC,KAAvBwkM,EAAuB,QAIjC,GAHIA,EAAelzM,KAAOukD,EAAQsgL,GACjC1nO,EAAM,YAEH+1M,GAAgBlzM,EAAG,CAGtB,IADA,IAAIkhD,EAAIqD,EACC7qB,EAAIl4B,GAA0Bk4B,GAAKl4B,EAAM,CACjD,IAAMmxC,EAAIjZ,GAAKisM,EArVP,EAqVsBjsM,GAAKisM,EApV3B,MAoVgDjsM,EAAIisM,EAC5D,GAAIzkL,EAAIvO,EACP,MAED,IAAMwzL,EAAUjlL,EAAIvO,EACdmzL,EAAatkO,EAAOmxC,EAC1B3L,EAAOtoC,KACNumO,EAAmBI,EAAa1yL,EAAIwzL,EAAUL,EAAY,KAE3D5kL,EAAI/yC,EAAMg4N,EAAUL,GAGrB9+L,EAAOtoC,KAAKumO,EAAmBI,EAAankL,EAAG,KAC/CykL,EAAOJ,EAAMhhL,EAAO2hL,EAAuBD,GAAkBD,GAC7DzhL,EAAQ,IACN0hL,IA5CgC,gCAgDlC1hL,IACAvkD,EAGH,OAAOgnC,EAAOxa,KAAK,KA4Cd45M,EAAW,CAMhB,QAAW,QAQX,KAAQ,CACP,OAAUhB,EACV,OA3SiB,SAAAx0K,GAAK,OAAI/5B,OAAOkvM,cAAP,MAAAlvM,OAAM,EAAkB+5B,MA6SnD,OAAU3tB,EACV,OAAUf,EACV,QA/Be,SAASxzB,GACxB,OAAOw2N,EAAUx2N,GAAO,SAASK,GAChC,OAAOg2N,EAAc56N,KAAK4E,GACvB,OAASmzB,EAAOnzB,GAChBA,MA4BJ,UAnDiB,SAASL,GAC1B,OAAOw2N,EAAUx2N,GAAO,SAASK,GAChC,OAAO+1N,EAAc36N,KAAK4E,GACvBk0B,EAAOl0B,EAAOpG,MAAM,GAAGs7B,eACvBl1B,OAkDLnT,EAAOC,QAAUuqO,yBCvbhB,QAGG/hO,EAAO,CAAC,SAAY,eAAd,gBAAsC+hO,EAAUC,GACpD,OASE,SAASD,EAAUC,GAEzB,SAASC,EAAS7nK,EAAOu3I,EAAcxgC,GAGrC,IAFA,IAAI9jH,EAAS,GACT0e,EAAQg2J,EAASG,KAAKtjM,OAAOw7B,GACxBxiE,EAAI,EAAGA,EAAIm0E,EAAMp0E,OAAQC,IAAK,CACrC,IAAIuqO,EAAKp2J,EAAMn0E,GACXokG,EAAK+lI,EAASG,KAAKrkM,OAAO,CAACkuC,EAAMn0E,KACjCwqO,EAAYJ,EAAS1B,QAAQ6B,GAC7Br9D,EAASs9D,GAAa,GACtBj1K,EAAQi1K,GAAa,GAAM,EAC3Bp3L,EAASo3L,GAAa,EAAK,MAC3BzqO,EAAqB,GAAZyqO,EACTvpO,EAAQmpO,EAASzB,OAAOnsK,OAAOppB,EAAOrzC,GAC1C,GAAa,IAATw1D,GAAewkJ,GAAyB,EAAR7sC,EAClC,MAAM,IAAIjkK,MAAM,gBAAkBm7F,GAElB,IAAT7uC,EACPE,EAAOhzD,KAAKxB,GAEI,IAATs0D,EACPE,EAAOhzD,KAAK82K,EAAet4K,EAAQmjG,GAGnB,IAAT7uC,GACPE,EAAOhzD,KAAK2hG,GAKhB,OADe3uC,EAAOllC,KAAK,IAAI4iD,UAAU,OAI3C,SAASl/D,EAAQy3B,EAAQ6tI,EAAcwgC,QAEhBn4M,IAAjBm4M,IACFA,GAAe,GACjB,IAGIE,EAHaowB,EAAS3+L,EAAQquK,EAAcxgC,GAGxB/sJ,MAAM,KAc9B,OAXAytL,EAASA,EAAOp9L,KAAI,SAAS2lD,GAQ3B,OAPIA,EAAM74C,WAAW,QAEnB8gN,EADAjoK,EAAQ2nK,EAASnjM,OAAOw7B,EAAM9vD,UAAU,IACnBqnM,GAAc,GAGnC0wB,EAAcjoK,EAAOu3I,EAAcxgC,GAE9B/2G,MAGKjyC,KAAK,KAGrB,SAASk6M,EAAcjoK,EAAOu3I,EAAcxgC,GAG1C,GAAiB,MAAb/2G,EAAM,IAA2B,MAAbA,EAAM,GAC5B,MAAM,IAAIv5D,MAAM,sBAAwBu5D,GAI1C,GAAIA,EAAM74C,WAAW,MAAQ64C,EAAMszE,SAAS,KAC1C,MAAM,IAAI7sI,MAAM,sBAAwBu5D,GAK1C,GAAIA,EAAMh7C,SAAS,KACjB,MAAM,IAAIve,MAAM,sBAAwBu5D,GAE1C,GAAI6nK,EAAS7nK,EAAOu3I,EAAcxgC,KAAkB/2G,EAClD,MAAM,IAAIv5D,MAAM,sBAAwBu5D,GAI1C,IAAI4hC,EAAK5hC,EAAMkoK,YAAY,GAC3B,GAAIN,EAAS1B,QAAQtkI,GAAO,GAAO,GACjC,MAAM,IAAIn7F,MAAM,qCAAuCm7F,GAG3D,SAASviC,EAAQn2B,EAAQv3B,QACPvS,IAAZuS,IACFA,EAAU,IACZ,IAMInU,EANAu5K,IAAe,iBAAkBplK,IAAUA,EAAQolK,aACnDwgC,EAAe,iBAAkB5lM,GAAUA,EAAQ4lM,aACnD4wB,EAAkB,oBAAqBx2N,GAAUA,EAAQw2N,gBAEzDC,EADS32N,EAAQy3B,EAAQ6tI,EAAcwgC,GAAcvtL,MAAM,KACtC3P,IAAIstN,EAASU,SAClCC,EAAcF,EAAYr6M,KAAK,KAEnC,GAAIo6M,EAAiB,CACnB,GAAIG,EAAY/qO,OAAS,GAAK+qO,EAAY/qO,OAAS,IACjD,MAAM,IAAIkJ,MAAM,8BAAgC6hO,GAElD,IAAK9qO,EAAI,EAAGA,EAAI4qO,EAAY7qO,OAAQC,IAAK,CACvC,IAAIwiE,EAAQooK,EAAY5qO,GACxB,GAAIwiE,EAAMziE,OAAS,GAAKyiE,EAAMziE,OAAS,GACrC,MAAM,IAAIkJ,MAAM,+BAAiCu5D,IAGvD,OAAOsoK,EAGT,SAAShxB,EAAUpuK,EAAQv3B,GAIzB,YAHgBvS,IAAZuS,IACFA,EAAU,IAELF,EAAQy3B,GAAQ,EADJ,iBAAkBv3B,GAAUA,EAAQ4lM,cAIzD,MAAO,CACLD,UAAWA,EACXj4I,QAASA,GA7HAulF,CAAQ+iF,EAAUC,IADrB,gDCFVxqO,EAAQm1H,KAAO,SAAUlmF,EAAQyD,EAAQy4L,EAAMC,EAAMC,GACnD,IAAIjnO,EAAGogB,EACH8mN,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACTrrO,EAAI+qO,EAAQE,EAAS,EAAK,EAC1BxsN,EAAIssN,GAAQ,EAAI,EAChBjnO,EAAI+qC,EAAOyD,EAAStyC,GAOxB,IALAA,GAAKye,EAELza,EAAIF,GAAM,IAAOunO,GAAU,EAC3BvnO,KAAQunO,EACRA,GAASH,EACFG,EAAQ,EAAGrnO,EAAS,IAAJA,EAAW6qC,EAAOyD,EAAStyC,GAAIA,GAAKye,EAAG4sN,GAAS,GAKvE,IAHAjnN,EAAIpgB,GAAM,IAAOqnO,GAAU,EAC3BrnO,KAAQqnO,EACRA,GAASL,EACFK,EAAQ,EAAGjnN,EAAS,IAAJA,EAAWyqB,EAAOyD,EAAStyC,GAAIA,GAAKye,EAAG4sN,GAAS,GAEvE,GAAU,IAANrnO,EACFA,EAAI,EAAIonO,MACH,IAAIpnO,IAAMmnO,EACf,OAAO/mN,EAAIunK,IAAsB75H,KAAdhuD,GAAK,EAAI,GAE5BsgB,GAAQnS,KAAKw4B,IAAI,EAAGugM,GACpBhnO,GAAQonO,EAEV,OAAQtnO,GAAK,EAAI,GAAKsgB,EAAInS,KAAKw4B,IAAI,EAAGzmC,EAAIgnO,IAG5CprO,EAAQkvC,MAAQ,SAAUD,EAAQ5tC,EAAOqxC,EAAQy4L,EAAMC,EAAMC,GAC3D,IAAIjnO,EAAGogB,EAAG0Z,EACNotM,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBG,EAAe,KAATN,EAAc/4N,KAAKw4B,IAAI,GAAI,IAAMx4B,KAAKw4B,IAAI,GAAI,IAAM,EAC1DzqC,EAAI+qO,EAAO,EAAKE,EAAS,EACzBxsN,EAAIssN,EAAO,GAAK,EAChBjnO,EAAI7C,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQgR,KAAKuiC,IAAIvzC,GAEb2K,MAAM3K,IAAUA,IAAU6wD,KAC5B1tC,EAAIxY,MAAM3K,GAAS,EAAI,EACvB+C,EAAImnO,IAEJnnO,EAAIiO,KAAKC,MAAMD,KAAKuD,IAAIvU,GAASgR,KAAKk2E,KAClClnF,GAAS68B,EAAI7rB,KAAKw4B,IAAI,GAAIzmC,IAAM,IAClCA,IACA85B,GAAK,IAGL78B,GADE+C,EAAIonO,GAAS,EACNE,EAAKxtM,EAELwtM,EAAKr5N,KAAKw4B,IAAI,EAAG,EAAI2gM,IAEpBttM,GAAK,IACf95B,IACA85B,GAAK,GAGH95B,EAAIonO,GAASD,GACf/mN,EAAI,EACJpgB,EAAImnO,GACKnnO,EAAIonO,GAAS,GACtBhnN,GAAMnjB,EAAQ68B,EAAK,GAAK7rB,KAAKw4B,IAAI,EAAGugM,GACpChnO,GAAQonO,IAERhnN,EAAInjB,EAAQgR,KAAKw4B,IAAI,EAAG2gM,EAAQ,GAAKn5N,KAAKw4B,IAAI,EAAGugM,GACjDhnO,EAAI,IAIDgnO,GAAQ,EAAGn8L,EAAOyD,EAAStyC,GAAS,IAAJokB,EAAUpkB,GAAKye,EAAG2F,GAAK,IAAK4mN,GAAQ,GAI3E,IAFAhnO,EAAKA,GAAKgnO,EAAQ5mN,EAClB8mN,GAAQF,EACDE,EAAO,EAAGr8L,EAAOyD,EAAStyC,GAAS,IAAJgE,EAAUhE,GAAKye,EAAGza,GAAK,IAAKknO,GAAQ,GAE1Er8L,EAAOyD,EAAStyC,EAAIye,IAAU,IAAJ3a,sBCnFC,oBAAlBX,OAAO2C,OAEhBnG,EAAOC,QAAU,SAAkBoM,EAAMkrC,GACnCA,IACFlrC,EAAKmrC,OAASD,EACdlrC,EAAKrJ,UAAYQ,OAAO2C,OAAOoxC,EAAUv0C,UAAW,CAClDqC,YAAa,CACX/D,MAAO+K,EACPhJ,YAAY,EACZE,UAAU,EACVD,cAAc,OAOtBtD,EAAOC,QAAU,SAAkBoM,EAAMkrC,GACvC,GAAIA,EAAW,CACblrC,EAAKmrC,OAASD,EACd,IAAIE,EAAW,aACfA,EAASz0C,UAAYu0C,EAAUv0C,UAC/BqJ,EAAKrJ,UAAY,IAAIy0C,EACrBprC,EAAKrJ,UAAUqC,YAAcgH,wCCrBnC,IAAIu/N,EAAiB93N,EAAQ,KAARA,GAGjB+3N,EAFY/3N,EAAQ,MAERg4N,CAAU,6BAEtBC,EAAsB,SAAqBzqO,GAC9C,QAAIsqO,GAAkBtqO,GAA0B,kBAAVA,GAAsB0C,OAAOwE,eAAelH,IAGtD,uBAArBuqO,EAAUvqO,IAGd0qO,EAAoB,SAAqB1qO,GAC5C,QAAIyqO,EAAoBzqO,IAGP,OAAVA,GACW,kBAAVA,GACiB,kBAAjBA,EAAMlB,QACbkB,EAAMlB,QAAU,GACK,mBAArByrO,EAAUvqO,IACkB,sBAA5BuqO,EAAUvqO,EAAM2qO,SAGdC,EAA6B,WAChC,OAAOH,EAAoBjqO,WADK,GAIjCiqO,EAAoBC,kBAAoBA,EAExChsO,EAAOC,QAAUisO,EAA4BH,EAAsBC,kCC9BnE,IAEIG,EACAC,EAHAC,EAAUtpO,SAASC,UAAUoD,SAC7BkmO,EAAkC,kBAAZ5pO,SAAoC,OAAZA,SAAoBA,QAAQX,MAG9E,GAA4B,oBAAjBuqO,GAAgE,oBAA1B9oO,OAAOC,eACvD,IACC0oO,EAAe3oO,OAAOC,eAAe,GAAI,SAAU,CAClDgC,IAAK,WACJ,MAAM2mO,KAGRA,EAAmB,GAEnBE,GAAa,WAAc,MAAM,KAAO,KAAMH,GAC7C,MAAOnoN,GACJA,IAAMooN,IACTE,EAAe,WAIjBA,EAAe,KAGhB,IAAIC,EAAmB,cACnBC,EAAe,SAA4BlrO,GAC9C,IACC,IAAImrO,EAAQJ,EAAQ3nO,KAAKpD,GACzB,OAAOirO,EAAiBh+N,KAAKk+N,GAC5B,MAAOpoO,GACR,OAAO,IAaL+0G,EAAQ51G,OAAOR,UAAUoD,SAGzBwlO,EAAmC,oBAAX5nO,UAA2BA,OAAOwE,YAE1DkkO,EAAqC,kBAAbzyN,UAAiD,qBAAjBA,SAASmX,UAAwCnvB,IAAjBgY,SAASmX,IAAoBnX,SAASmX,IAAM,GAExIpxB,EAAOC,QAAUqsO,EACd,SAAoBhrO,GACrB,GAAIA,IAAUorO,EAAkB,OAAO,EACvC,IAAKprO,EAAS,OAAO,EACrB,GAAqB,oBAAVA,GAAyC,kBAAVA,EAAsB,OAAO,EACvE,GAAqB,oBAAVA,IAAyBA,EAAM0B,UAAa,OAAO,EAC9D,IACCspO,EAAahrO,EAAO,KAAM6qO,GACzB,MAAO9nO,GACR,GAAIA,IAAM+nO,EAAoB,OAAO,EAEtC,OAAQI,EAAalrO,IAEpB,SAAoBA,GACrB,GAAIA,IAAUorO,EAAkB,OAAO,EACvC,IAAKprO,EAAS,OAAO,EACrB,GAAqB,oBAAVA,GAAyC,kBAAVA,EAAsB,OAAO,EACvE,GAAqB,oBAAVA,IAAyBA,EAAM0B,UAAa,OAAO,EAC9D,GAAI4oO,EAAkB,OAlCA,SAA0BtqO,GACjD,IACC,OAAIkrO,EAAalrO,KACjB+qO,EAAQ3nO,KAAKpD,IACN,GACN,MAAO+C,GACR,OAAO,GA4BsBsoO,CAAkBrrO,GAC/C,GAAIkrO,EAAalrO,GAAU,OAAO,EAClC,IAAIsrO,EAAWxzH,EAAM10G,KAAKpD,GAC1B,MA3BY,sBA2BLsrO,GA1BM,+BA0BkBA,sBCxEjC5sO,EAAOC,QAIP,SAAqB0B,GACnB,IAAKA,EACH,OAAO,EAET,IAAIwR,EAAS/M,EAAS1B,KAAK/C,GAC3B,MAAkB,sBAAXwR,GACU,oBAAPxR,GAAgC,oBAAXwR,GACV,qBAAXqF,SAEN7W,IAAO6W,OAAOsF,YACdnc,IAAO6W,OAAOq0N,OACdlrO,IAAO6W,OAAOs0N,SACdnrO,IAAO6W,OAAO0uL,SAdpB,IAAI9gM,EAAW5C,OAAOR,UAAUoD,6CCAhC,IAcI+D,EAdAivG,EAAQ51G,OAAOR,UAAUoD,SACzBimO,EAAUtpO,SAASC,UAAUoD,SAC7B2mO,EAAY,sBACZnB,EAAiB93N,EAAQ,KAARA,GACjBxJ,EAAW9G,OAAOsB,eAYtB9E,EAAOC,QAAU,SAA6B0B,GAC7C,GAAkB,oBAAPA,EACV,OAAO,EAER,GAAIorO,EAAUx+N,KAAK89N,EAAQ3nO,KAAK/C,IAC/B,OAAO,EAER,IAAKiqO,EAEJ,MAAe,+BADLxyH,EAAM10G,KAAK/C,GAGtB,IAAK2I,EACJ,OAAO,EAER,GAAiC,qBAAtBH,EAAmC,CAC7C,IAAI6iO,EA1BiB,WACtB,IAAKpB,EACJ,OAAO,EAER,IACC,OAAO7oO,SAAS,wBAATA,GACN,MAAOsB,KAoBY4oO,GACpB9iO,IAAoB6iO,GAAgB1iO,EAAS0iO,GAE9C,OAAO1iO,EAAS3I,KAAQwI,sBC9BzBnK,EAAOC,QAAU,SAAuBwT,GACtC,GAAmB,kBAARA,EACT,MAAM,IAAInK,MAAM,2EAA8EmK,EAAO,mCAGvG,MAA2B,OAApBA,EAAI1G,MAAM,EAAG,mCCPtB/M,EAAOC,QAAU,SAAeqB,GAC/B,OAAOA,IAAUA,sCCHlB,IAAI07L,EAAWlpL,EAAQ,OACnBrL,EAASqL,EAAQ,MAEjB8pL,EAAiB9pL,EAAQ,MACzBo5N,EAAcp5N,EAAQ,OACtBq5N,EAAOr5N,EAAQ,MAEfqjM,EAAWna,EAASkwC,IAAe5/M,QAIvC7kB,EAAO0uM,EAAU,CAChB+1B,YAAaA,EACbtvC,eAAgBA,EAChBuvC,KAAMA,IAGPntO,EAAOC,QAAUk3M,sCCjBjB,IAAIvZ,EAAiB9pL,EAAQ,MAE7B9T,EAAOC,QAAU,WAChB,OAAIqtB,OAAOrhB,OAASqhB,OAAOrhB,MAAM+/K,OAAS1+J,OAAOrhB,MAAM,KAC/CqhB,OAAOrhB,MAER2xL,sCCNR,IAAIn1L,EAASqL,EAAQ,MACjBo5N,EAAcp5N,EAAQ,OAI1B9T,EAAOC,QAAU,WAChB,IAAIk3M,EAAW+1B,IAMf,OALAzkO,EAAO6kB,OAAQ,CAAErhB,MAAOkrM,GAAY,CACnClrM,MAAO,WACN,OAAOqhB,OAAOrhB,QAAUkrM,KAGnBA,mCCZR,IAAM13B,EAAW,SAAAlxC,GAAM,OACX,OAAXA,GACkB,kBAAXA,GACgB,oBAAhBA,EAAOnqH,MAEfq7J,EAASl8K,SAAW,SAAAgrI,GAAM,OACzBkxC,EAASlxC,KACW,IAApBA,EAAOhrI,UACkB,oBAAlBgrI,EAAOf,QACmB,kBAA1Be,EAAOsnE,gBAEfp2B,EAAS7uC,SAAW,SAAArC,GAAM,OACzBkxC,EAASlxC,KACW,IAApBA,EAAOqC,UACiB,oBAAjBrC,EAAOT,OACmB,kBAA1BS,EAAOunE,gBAEfr2B,EAAS2tD,OAAS,SAAA7+F,GAAM,OACvBkxC,EAASl8K,SAASgrI,IAClBkxC,EAAS7uC,SAASrC,IAEnBkxC,EAASr8H,UAAY,SAAAmrF,GAAM,OAC1BkxC,EAAS2tD,OAAO7+F,IACa,oBAAtBA,EAAO2zD,YAEfliM,EAAOC,QAAUw/K,sCCzBjB,IAAI/3K,EAAUoM,EAAQ,OAClBu5N,EAAuBv5N,EAAQ,OAC/Bg4N,EAAYh4N,EAAQ,OAEpB+3N,EAAYC,EAAU,6BACtBF,EAAiB93N,EAAQ,KAARA,GAEjBk0C,EAA0B,qBAAf94C,WAA6Bi6H,EAAAA,EAASj6H,WACjDo+N,EAAcD,IAEdpwC,EAAW6uC,EAAU,2BAA2B,IAAS,SAAiB92K,EAAO1zD,GACpF,IAAK,IAAIjB,EAAI,EAAGA,EAAI20D,EAAM50D,OAAQC,GAAK,EACtC,GAAI20D,EAAM30D,KAAOiB,EAChB,OAAOjB,EAGT,OAAQ,GAELktO,EAASzB,EAAU,0BACnB0B,EAAY,GACZC,EAAO35N,EAAQ,OACfhP,EAAiBtB,OAAOsB,eACxB8mO,GAAkB6B,GAAQ3oO,GAC7B4C,EAAQ4lO,GAAa,SAAUI,GAC9B,IAAIxtO,EAAM,IAAI8nD,EAAE0lL,GAChB,GAAI1pO,OAAOwE,eAAetI,EAAK,CAC9B,IAAI02H,EAAQ9xH,EAAe5E,GACvBkD,EAAaqqO,EAAK72G,EAAO5yH,OAAOwE,aACpC,IAAKpF,EAAY,CAChB,IAAIqqM,EAAa3oM,EAAe8xH,GAChCxzH,EAAaqqO,EAAKhgC,EAAYzpM,OAAOwE,aAEtCglO,EAAUE,GAActqO,EAAWqC,QAiBtCzF,EAAOC,QAAU,SAAsBqB,GACtC,IAAKA,GAA0B,kBAAVA,EAAsB,OAAO,EAClD,IAAKsqO,KAAoB5nO,OAAOwE,eAAelH,GAAQ,CACtD,IAAIw+F,EAAMytI,EAAO1B,EAAUvqO,GAAQ,GAAI,GACvC,OAAO27L,EAASqwC,EAAaxtI,IAAQ,EAEtC,QAAK2tI,GAlBe,SAA2BnsO,GAC/C,IAAIqsO,GAAU,EAQd,OAPAjmO,EAAQ8lO,GAAW,SAAUzqK,EAAQ2qK,GACpC,IAAKC,EACJ,IACCA,EAAU5qK,EAAOr+D,KAAKpD,KAAWosO,EAChC,MAAOrpO,QAGJspO,EAUAC,CAAetsO,uBC1DvBtB,EAAOC,QAAe6hL,EACtBA,EAAazZ,OAASwlE,EACtB/rD,EAAa/yG,MAAS++J,EAEtB,IAAI1nO,EAAW5C,OAAOR,UAAUoD,SAC5B+vD,EAAQ,CACR,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,8BAA8B,EAC9B,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,GAG7B,SAAS2rH,EAAa5hL,GACpB,OACK2tO,EAAmB3tO,IACnB4tO,EAAkB5tO,GAIzB,SAAS2tO,EAAmB3tO,GAC1B,OACKA,aAAeqmO,WACfrmO,aAAesmO,YACftmO,aAAe+kI,YACf/kI,aAAe4lC,YACf5lC,aAAewmO,mBACfxmO,aAAe2/H,aACf3/H,aAAeqqL,aACfrqL,aAAemmO,cACfnmO,aAAe47H,aAItB,SAASgyG,EAAkB5tO,GACzB,OAAOi2D,EAAM/vD,EAAS1B,KAAKxE,yCCrC7B,IAAM6tO,EAAOj6N,EAAAA,OAAAA,GACPk6N,EAAkBl6N,EAAQ,OAc1Bm6N,EAAgB,SAAhBA,EAAyBC,EAAY15N,GACzC,KAAK5S,gBAAgBqsO,GACnB,OAAO,IAAIA,EAAcC,EAAY15N,GAGlCA,IACHA,EAAU,IAGZ5S,KAAK4S,QAAU,CACb25N,QAAoC,qBAApB35N,EAAQ25N,QAA0B35N,EAAQ25N,QAAU,KACpErU,SAAsC,qBAArBtlN,EAAQslN,SAA2BtlN,EAAQslN,SAAW,KACvE9wN,UAAwC,qBAAtBwL,EAAQxL,UAA4BwL,EAAQxL,UAAY,WAAa,OAAO+kO,KAC9Fl3N,QAAoC,qBAApBrC,EAAQqC,QAA0BrC,EAAQqC,QAAU,EACpEu3N,mBAA0D,mBAA/B55N,EAAQ45N,oBAAmC55N,EAAQ45N,oBAGhFxsO,KAAKssO,WAAaA,GAGpBluO,EAAOC,QAAUguO,EAWjBA,EAAcjrO,UAAU8oB,QAAU,SAASziB,EAAQoY,EAAQ0D,EAAIqK,GAC7D,IA6CIjS,EA7CE5c,EAAOiB,KACTkqB,EAAU,KAGRuiN,EAAU9tO,MAAME,QAAQ4I,IAA6B,oBAAXoY,EAEhD,GAA6B,IAAzB7f,KAAK4S,QAAQqC,SAAiBw3N,EAChC,MAAM,IAAIjsO,UAAU,0CAMtB,GAAGisO,IAFYA,GAAWhlO,GAA4B,kBAAXA,GAAyC,oBAAXoY,EAGvE+N,EAAW/N,EACXqK,EAAUziB,MACL,CACY,oBAAP8b,IACRqK,EAAWrK,EAEXA,OAAKljB,GAGP,IAAMqsO,EAAkC,oBAAb9+M,EAE3B,IACE1D,EAAUkiN,EAAgB3kO,EAAQoY,EAAQ0D,EAAI,CAC5Cnc,UAAWpH,KAAK4S,QAAQxL,UACxB6N,QAASjV,KAAK4S,QAAQqC,QACtBu3N,mBAAoBxsO,KAAK4S,QAAQ45N,qBAEnC,MAAMpsO,GACN,GAAGssO,EACD,OAAO9+M,EAASxtB,GAElB,MAAMA,EAIR,IAAIssO,EACF,OAAOxiN,EAMX,IACEvO,EAAUoH,KAAKoE,UAAU+C,EAASlqB,KAAK4S,QAAQslN,UAC/C,MAAM93N,GACN,OAAOwtB,EAASxtB,GAQlB,OALAJ,KAAKssO,WAAW3wN,GAAS,SAASvb,EAAKguB,GACrCrvB,EAAK4tO,eAAevsO,EAAKguB,EAAUR,MAI9B1D,GAUTmiN,EAAcjrO,UAAUurO,eAAiB,SAASvsO,EAAKk3K,EAAc1pJ,GACnE,GAAGxtB,EACDwtB,EAASxtB,OADX,CAKA,IAAIk3K,EAGF,OAAO1pJ,IAGT,IAAIQ,EACJ,IACEA,EAAWrL,KAAKC,MAAMs0J,EAAct3K,KAAK4S,QAAQ25N,SACjD,MAAMnsO,GACN,OAAOwtB,EAASxtB,GAGlB,GAAuB,IAApBwtB,EAASpvB,OAAc,CAIxB,GAAGG,MAAME,QAAQuvB,GAAW,CAG1B,IAAM6vI,EAAU,SAASl3I,GACvB,MAA4B,qBAAdA,EAAIpnB,OAOpB,OAAOiuB,EAAS,KAAMQ,EAASzoB,OAAOs4J,GAAU7vI,EAASzoB,QAJtC,SAAUohB,GAC3B,OAAQk3I,EAAQl3I,OAQlB,OAAO6G,EAAS,KAAMQ,EAASzuB,MAAOyuB,EAAS9qB,QAMnDsqB,EAAS,KAAMQ,yCC/JjB,IAAM+9M,EAAOj6N,EAAAA,OAAAA,GA4Db9T,EAAOC,QA7CiB,SAASoJ,EAAQoY,EAAQ0D,EAAI3Q,GACnD,GAAqB,kBAAXnL,EACR,MAAM,IAAIjH,UAAUiH,EAAS,qBAM/B,IAAMwN,EAAqC,kBAH3CrC,EAAUA,GAAW,IAGUqC,QAAuBrC,EAAQqC,QAAU,EACxE,GAAgB,IAAZA,GAA6B,IAAZA,EACnB,MAAM,IAAIzU,UAAUyU,EAAU,mBAGhC,IAAMiV,EAAU,CACdziB,OAAQA,GAOV,GAJe,IAAZwN,IACDiV,EAAQwD,QAAU,OAGjB7N,EAAQ,CAET,GAAqB,kBAAXA,IAAwBlhB,MAAME,QAAQghB,GAC9C,MAAM,IAAIrf,UAAUqf,EAAS,wCAE/BqK,EAAQrK,OAASA,EAInB,GAAkB,qBAAR0D,EAAqB,CAC7B,IAAMnc,EAAyC,oBAAtBwL,EAAQxL,UAA2BwL,EAAQxL,UAAY,WAAa,OAAO+kO,KACpGjiN,EAAQ3G,GAAKnc,EAAU8iB,EAAStX,QACX,IAAZqC,GAAwB,OAAPsO,EAEtB3Q,EAAQ45N,qBACVtiN,EAAQ3G,GAAK,MAGf2G,EAAQ3G,GAAKA,EAGf,OAAO2G,6FC3DT,+BASA,WACE,aAEA,IAAI0iN,MAAQ,wBACRC,OAA2B,kBAAXj2N,OAChBkB,KAAO+0N,OAASj2N,OAAS,GACzBkB,KAAKg1N,sBACPD,QAAS,GAEX,IAAIE,YAAcF,QAA0B,kBAAT9tO,KAC/BiuO,SAAWl1N,KAAKm1N,sBAA2C,kBAAZv6N,SAAwBA,QAAQmjI,UAAYnjI,QAAQmjI,SAASzqE,KAC5G4hK,QACFl1N,KAAOyvH,oBAAAA,EACEwlG,aACTj1N,KAAO/Y,MAET,IAAI85M,WAAa/gM,KAAKo1N,wBAAwD9uO,OAAOC,QACjF8uO,IAAsCtmO,oBAAAA,KACtCumO,cAAgBt1N,KAAKu1N,2BAAoD,qBAAhB17G,YACzDonF,UAAY,mBAAmB9tL,MAAM,IACrCqiN,MAAQ,EAAE,WAAY,QAAS,MAAO,KACtCt0B,MAAQ,CAAC,GAAI,GAAI,EAAG,GACpB30H,EAAI,CACN,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UACpF,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UACpF,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAElF80H,aAAe,CAAC,MAAO,QAAS,SAAU,eAE1C7gL,OAAS,IAETxgB,KAAKm1N,sBAAyBtuO,MAAME,UACtCF,MAAME,QAAU,SAAU6E,GACxB,MAA+C,mBAAxC9B,OAAOR,UAAUoD,SAAS1B,KAAKY,MAItC0pO,eAAiBt1N,KAAKy1N,mCAAsC57G,YAAYC,SAC1ED,YAAYC,OAAS,SAAUluH,GAC7B,MAAsB,kBAARA,GAAoBA,EAAI4pC,QAAU5pC,EAAI4pC,OAAO7pC,cAAgBkuH,cAI/E,IAAIynF,mBAAqB,SAAUv2I,EAAY2qK,GAC7C,OAAO,SAAU7xN,GACf,OAAO,IAAI8xN,OAAOD,GAAO,GAAM/xM,OAAO9f,GAASknD,OAI/C22I,aAAe,SAAUg0B,GAC3B,IAAI/lO,EAAS2xM,mBAAmB,MAAOo0B,GACnCR,UACFvlO,EAASimO,SAASjmO,EAAQ+lO,IAE5B/lO,EAAOlD,OAAS,WACd,OAAO,IAAIkpO,OAAOD,IAEpB/lO,EAAOg0B,OAAS,SAAU9f,GACxB,OAAOlU,EAAOlD,SAASk3B,OAAO9f,IAEhC,IAAK,IAAIld,EAAI,EAAGA,EAAI06M,aAAa36M,SAAUC,EAAG,CAC5C,IAAI6J,EAAO6wM,aAAa16M,GACxBgJ,EAAOa,GAAQ8wM,mBAAmB9wM,EAAMklO,GAE1C,OAAO/lO,GAGLimO,SAAW,SAAXA,SAAqBjmO,OAAQ+lO,OAC/B,IAAIxpM,OAASugM,KAAK,qBACd/pN,OAAS+pN,KAAK,4BACdvrC,UAAYw0C,MAAQ,SAAW,SAC/BG,WAAa,SAAUhyN,GACzB,GAAuB,kBAAZA,EACT,OAAOqoB,OAAO27B,WAAWq5H,WAAWv9J,OAAO9f,EAAS,QAAQ2wB,OAAO,OAEnE,GAAgB,OAAZ3wB,QAAgCtb,IAAZsb,EACtB,MAAM,IAAIjU,MAAMklO,OAKpB,OAJajxN,EAAQlY,cAAgBkuH,cACjCh2G,EAAU,IAAIuoB,WAAWvoB,IAGzBhd,MAAME,QAAQ8c,IAAYg2G,YAAYC,OAAOj2G,IAC/CA,EAAQlY,cAAgB+W,OACjBwpB,OAAO27B,WAAWq5H,WAAWv9J,OAAO,IAAIjhB,OAAOmB,IAAU2wB,OAAO,OAEhE7kC,OAAOkU,IAGlB,OAAOgyN,YAGLC,uBAAyB,SAAU/qK,EAAY2qK,GACjD,OAAO,SAAUjuO,EAAKoc,GACpB,OAAO,IAAIkyN,WAAWtuO,EAAKiuO,GAAO,GAAM/xM,OAAO9f,GAASknD,OAIxDirK,iBAAmB,SAAUN,GAC/B,IAAI/lO,EAASmmO,uBAAuB,MAAOJ,GAC3C/lO,EAAOlD,OAAS,SAAUhF,GACxB,OAAO,IAAIsuO,WAAWtuO,EAAKiuO,IAE7B/lO,EAAOg0B,OAAS,SAAUl8B,EAAKoc,GAC7B,OAAOlU,EAAOlD,OAAOhF,GAAKk8B,OAAO9f,IAEnC,IAAK,IAAIld,EAAI,EAAGA,EAAI06M,aAAa36M,SAAUC,EAAG,CAC5C,IAAI6J,EAAO6wM,aAAa16M,GACxBgJ,EAAOa,GAAQslO,uBAAuBtlO,EAAMklO,GAE9C,OAAO/lO,GAGT,SAASgmO,OAAOD,EAAOO,GACjBA,GACFz1M,OAAO,GAAKA,OAAO,IAAMA,OAAO,GAAKA,OAAO,GAAKA,OAAO,GACtDA,OAAO,GAAKA,OAAO,GAAKA,OAAO,GAAKA,OAAO,GAC3CA,OAAO,GAAKA,OAAO,GAAKA,OAAO,IAAMA,OAAO,IAC5CA,OAAO,IAAMA,OAAO,IAAMA,OAAO,IAAMA,OAAO,IAAM,EACtDt4B,KAAKs4B,OAASA,QAEdt4B,KAAKs4B,OAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAG7Dk1M,GACFxtO,KAAK2hI,GAAK,WACV3hI,KAAK4hI,GAAK,UACV5hI,KAAK8gF,GAAK,UACV9gF,KAAK+gF,GAAK,WACV/gF,KAAK6hI,GAAK,WACV7hI,KAAK8hI,GAAK,WACV9hI,KAAK+hI,GAAK,WACV/hI,KAAKgiI,GAAK,aAEVhiI,KAAK2hI,GAAK,WACV3hI,KAAK4hI,GAAK,WACV5hI,KAAK8gF,GAAK,WACV9gF,KAAK+gF,GAAK,WACV/gF,KAAK6hI,GAAK,WACV7hI,KAAK8hI,GAAK,WACV9hI,KAAK+hI,GAAK,UACV/hI,KAAKgiI,GAAK,YAGZhiI,KAAKq4D,MAAQr4D,KAAKsnC,MAAQtnC,KAAK+rC,MAAQ/rC,KAAKguO,OAAS,EACrDhuO,KAAKiuO,UAAYjuO,KAAK6yE,QAAS,EAC/B7yE,KAAKm/D,OAAQ,EACbn/D,KAAKwtO,MAAQA,EA4Qf,SAASK,WAAWtuO,EAAKiuO,EAAOO,GAC9B,IAAItvO,EAAG6J,SAAc/I,EACrB,GAAa,WAAT+I,EAAmB,CACrB,IAAgD2Z,EAA5C8pB,EAAQ,GAAIvtC,EAASe,EAAIf,OAAQqzC,EAAQ,EAC7C,IAAKpzC,EAAI,EAAGA,EAAID,IAAUC,GACxBwjB,EAAO1iB,EAAIstC,WAAWpuC,IACX,IACTstC,EAAM8F,KAAW5vB,EACRA,EAAO,MAChB8pB,EAAM8F,KAAY,IAAQ5vB,GAAQ,EAClC8pB,EAAM8F,KAAY,IAAe,GAAP5vB,GACjBA,EAAO,OAAUA,GAAQ,OAClC8pB,EAAM8F,KAAY,IAAQ5vB,GAAQ,GAClC8pB,EAAM8F,KAAY,IAAS5vB,GAAQ,EAAK,GACxC8pB,EAAM8F,KAAY,IAAe,GAAP5vB,IAE1BA,EAAO,QAAoB,KAAPA,IAAiB,GAA6B,KAAtB1iB,EAAIstC,aAAapuC,IAC7DstC,EAAM8F,KAAY,IAAQ5vB,GAAQ,GAClC8pB,EAAM8F,KAAY,IAAS5vB,GAAQ,GAAM,GACzC8pB,EAAM8F,KAAY,IAAS5vB,GAAQ,EAAK,GACxC8pB,EAAM8F,KAAY,IAAe,GAAP5vB,GAG9B1iB,EAAMwsC,MACD,CACL,GAAa,WAATzjC,EAWF,MAAM,IAAIZ,MAAMklO,OAVhB,GAAY,OAARrtO,EACF,MAAM,IAAImI,MAAMklO,OACX,GAAIQ,cAAgB7tO,EAAIkE,cAAgBkuH,YAC7CpyH,EAAM,IAAI2kC,WAAW3kC,QAChB,IAAKZ,MAAME,QAAQU,MACnB6tO,eAAiBz7G,YAAYC,OAAOryH,IACvC,MAAM,IAAImI,MAAMklO,OAQpBrtO,EAAIf,OAAS,KACfe,EAAO,IAAIkuO,OAAOD,GAAO,GAAO/xM,OAAOl8B,GAAK6zD,SAG9C,IAAI86K,EAAU,GAAIC,EAAU,GAC5B,IAAK1vO,EAAI,EAAGA,EAAI,KAAMA,EAAG,CACvB,IAAI8nC,EAAIhnC,EAAId,IAAM,EAClByvO,EAAQzvO,GAAK,GAAO8nC,EACpB4nM,EAAQ1vO,GAAK,GAAO8nC,EAGtBknM,OAAO3qO,KAAK9C,KAAMwtO,EAAOO,GAEzB/tO,KAAKy7B,OAAO0yM,GACZnuO,KAAKkuO,QAAUA,EACfluO,KAAK6pG,OAAQ,EACb7pG,KAAK+tO,aAAeA,EAjUtBN,OAAOrsO,UAAUq6B,OAAS,SAAU9f,GAClC,IAAI3b,KAAKiuO,UAAT,CAGA,IAAIp0B,EAAWvxM,SAAcqT,EAC7B,GAAa,WAATrT,EAAmB,CACrB,GAAa,WAATA,EAWF,MAAM,IAAIZ,MAAMklO,OAVhB,GAAgB,OAAZjxN,EACF,MAAM,IAAIjU,MAAMklO,OACX,GAAIQ,cAAgBzxN,EAAQlY,cAAgBkuH,YACjDh2G,EAAU,IAAIuoB,WAAWvoB,QACpB,IAAKhd,MAAME,QAAQ8c,MACnByxN,eAAiBz7G,YAAYC,OAAOj2G,IACvC,MAAM,IAAIjU,MAAMklO,OAMtB/yB,GAAY,EAId,IAFA,IAAI53L,EAAiBxjB,EAAXozC,EAAQ,EAAMrzC,EAASmd,EAAQnd,OAAQ85B,EAASt4B,KAAKs4B,OAExDuZ,EAAQrzC,GAAQ,CAUrB,GATIwB,KAAK6yE,SACP7yE,KAAK6yE,QAAS,EACdv6C,EAAO,GAAKt4B,KAAKq4D,MACjB//B,EAAO,IAAMA,EAAO,GAAKA,EAAO,GAAKA,EAAO,GAC1CA,EAAO,GAAKA,EAAO,GAAKA,EAAO,GAAKA,EAAO,GAC3CA,EAAO,GAAKA,EAAO,GAAKA,EAAO,IAAMA,EAAO,IAC5CA,EAAO,IAAMA,EAAO,IAAMA,EAAO,IAAMA,EAAO,IAAM,GAGpDuhL,EACF,IAAKp7M,EAAIuB,KAAKsnC,MAAOuK,EAAQrzC,GAAUC,EAAI,KAAMozC,EAC/CvZ,EAAO75B,GAAK,IAAMkd,EAAQk2B,IAAUmnK,MAAY,EAANv6M,UAG5C,IAAKA,EAAIuB,KAAKsnC,MAAOuK,EAAQrzC,GAAUC,EAAI,KAAMozC,GAC/C5vB,EAAOtG,EAAQkxB,WAAWgF,IACf,IACTvZ,EAAO75B,GAAK,IAAMwjB,GAAQ+2L,MAAY,EAANv6M,KACvBwjB,EAAO,MAChBqW,EAAO75B,GAAK,KAAO,IAAQwjB,GAAQ,IAAO+2L,MAAY,EAANv6M,KAChD65B,EAAO75B,GAAK,KAAO,IAAe,GAAPwjB,IAAiB+2L,MAAY,EAANv6M,MACzCwjB,EAAO,OAAUA,GAAQ,OAClCqW,EAAO75B,GAAK,KAAO,IAAQwjB,GAAQ,KAAQ+2L,MAAY,EAANv6M,KACjD65B,EAAO75B,GAAK,KAAO,IAASwjB,GAAQ,EAAK,KAAU+2L,MAAY,EAANv6M,KACzD65B,EAAO75B,GAAK,KAAO,IAAe,GAAPwjB,IAAiB+2L,MAAY,EAANv6M,OAElDwjB,EAAO,QAAoB,KAAPA,IAAiB,GAAqC,KAA9BtG,EAAQkxB,aAAagF,IACjEvZ,EAAO75B,GAAK,KAAO,IAAQwjB,GAAQ,KAAQ+2L,MAAY,EAANv6M,KACjD65B,EAAO75B,GAAK,KAAO,IAASwjB,GAAQ,GAAM,KAAU+2L,MAAY,EAANv6M,KAC1D65B,EAAO75B,GAAK,KAAO,IAASwjB,GAAQ,EAAK,KAAU+2L,MAAY,EAANv6M,KACzD65B,EAAO75B,GAAK,KAAO,IAAe,GAAPwjB,IAAiB+2L,MAAY,EAANv6M,MAKxDuB,KAAK85M,cAAgBr7M,EACrBuB,KAAK+rC,OAASttC,EAAIuB,KAAKsnC,MACnB7oC,GAAK,IACPuB,KAAKq4D,MAAQ//B,EAAO,IACpBt4B,KAAKsnC,MAAQ7oC,EAAI,GACjBuB,KAAK+kB,OACL/kB,KAAK6yE,QAAS,GAEd7yE,KAAKsnC,MAAQ7oC,EAOjB,OAJIuB,KAAK+rC,MAAQ,aACf/rC,KAAKguO,QAAUhuO,KAAK+rC,MAAQ,YAAc,EAC1C/rC,KAAK+rC,MAAQ/rC,KAAK+rC,MAAQ,YAErB/rC,OAGTytO,OAAOrsO,UAAU24M,SAAW,WAC1B,IAAI/5M,KAAKiuO,UAAT,CAGAjuO,KAAKiuO,WAAY,EACjB,IAAI31M,EAASt4B,KAAKs4B,OAAQ75B,EAAIuB,KAAK85M,cACnCxhL,EAAO,IAAMt4B,KAAKq4D,MAClB//B,EAAO75B,GAAK,IAAM6uO,MAAU,EAAJ7uO,GACxBuB,KAAKq4D,MAAQ//B,EAAO,IAChB75B,GAAK,KACFuB,KAAK6yE,QACR7yE,KAAK+kB,OAEPuT,EAAO,GAAKt4B,KAAKq4D,MACjB//B,EAAO,IAAMA,EAAO,GAAKA,EAAO,GAAKA,EAAO,GAC1CA,EAAO,GAAKA,EAAO,GAAKA,EAAO,GAAKA,EAAO,GAC3CA,EAAO,GAAKA,EAAO,GAAKA,EAAO,IAAMA,EAAO,IAC5CA,EAAO,IAAMA,EAAO,IAAMA,EAAO,IAAMA,EAAO,IAAM,GAExDA,EAAO,IAAMt4B,KAAKguO,QAAU,EAAIhuO,KAAK+rC,QAAU,GAC/CzT,EAAO,IAAMt4B,KAAK+rC,OAAS,EAC3B/rC,KAAK+kB,SAGP0oN,OAAOrsO,UAAU2jB,KAAO,WACtB,IACqCjC,EAAGmuK,EAAIrwG,EAAIwtJ,EAAK3sJ,EAAY4sJ,EAAIl8B,EAAIm8B,EAAIC,EADzEttO,EAAIjB,KAAK2hI,GAAIp7F,EAAIvmC,KAAK4hI,GAAIrlG,EAAIv8B,KAAK8gF,GAAI5jE,EAAIld,KAAK+gF,GAAIt+E,EAAIzC,KAAK6hI,GAAIl/H,EAAI3C,KAAK8hI,GAAI17E,EAAIpmD,KAAK+hI,GACzF9oH,EAAIjZ,KAAKgiI,GAAI1pG,EAASt4B,KAAKs4B,OAE7B,IAAKxV,EAAI,GAAIA,EAAI,KAAMA,EAGrBmuK,IADAxvG,EAAKnpD,EAAOxV,EAAI,OACF,EAAM2+D,GAAM,KAASA,IAAO,GAAOA,GAAM,IAAQA,IAAO,EAEtEb,IADAa,EAAKnpD,EAAOxV,EAAI,MACF,GAAO2+D,GAAM,KAASA,IAAO,GAAOA,GAAM,IAAQA,IAAO,GACvEnpD,EAAOxV,GAAKwV,EAAOxV,EAAI,IAAMmuK,EAAK34J,EAAOxV,EAAI,GAAK89D,GAAM,EAI1D,IADA2tJ,EAAKhoM,EAAIhK,EACJzZ,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACnB9iB,KAAKm/D,OACHn/D,KAAKwtO,OACPa,EAAK,OAELp1N,GADAwoE,EAAKnpD,EAAO,GAAK,YACR,WAAa,EACtBpb,EAAIukE,EAAK,UAAY,IAErB4sJ,EAAK,UAELp1N,GADAwoE,EAAKnpD,EAAO,GAAK,WACR,YAAc,EACvBpb,EAAIukE,EAAK,WAAa,GAExBzhF,KAAKm/D,OAAQ,IAEb8xH,GAAOhwL,IAAM,EAAMA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAASA,IAAM,GAAOA,GAAK,IAG9EmtO,GADAC,EAAKptO,EAAIslC,GACGtlC,EAAIs7B,EAAKgyM,EAIrBt1N,EAAIiE,GAFJukE,EAAKxoE,GAJL2nE,GAAOn+E,IAAM,EAAMA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAGxEA,EAAIE,GAAOF,EAAI2jD,GACFi+B,EAAEvhE,GAAKwV,EAAOxV,KAEnB,EACd5F,EAAIukE,GAFCwvG,EAAKm9C,IAEK,GAEjBn9C,GAAO/zK,IAAM,EAAMA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAASA,IAAM,GAAOA,GAAK,IAG9EkxN,GADAj8B,EAAKj1L,EAAIjc,GACGic,EAAIqpB,EAAK8nM,EAIrBjoL,EAAI7pB,GAFJklD,EAAKr7B,GAJLw6B,GAAO3nE,IAAM,EAAMA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAGxEA,EAAIxW,GAAOwW,EAAItW,GACF0hF,EAAEvhE,EAAI,GAAKwV,EAAOxV,EAAI,KAE3B,EAEdmuK,IADA10J,EAAIklD,GAFCwvG,EAAKm9C,IAEK,KACF,EAAM7xM,GAAK,KAASA,IAAM,GAAOA,GAAK,KAASA,IAAM,GAAOA,GAAK,IAG9E6xM,GADAE,EAAK/xM,EAAIrf,GACGqf,EAAIt7B,EAAKkxM,EAIrBxvM,EAAI4jC,GAFJk7C,EAAK9+E,GAJLi+E,GAAOx6B,IAAM,EAAMA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAGxEA,EAAIntC,GAAOmtC,EAAI3jD,GACF4hF,EAAEvhE,EAAI,GAAKwV,EAAOxV,EAAI,KAE3B,EAEdmuK,IADA1qJ,EAAIk7C,GAFCwvG,EAAKm9C,IAEK,KACF,EAAM7nM,GAAK,KAASA,IAAM,GAAOA,GAAK,KAASA,IAAM,GAAOA,GAAK,IAG9E6nM,GADAG,EAAKhoM,EAAIhK,GACGgK,EAAIrpB,EAAKoxN,EAIrB7rO,EAAIxB,GAFJwgF,EAAKh/E,GAJLm+E,GAAOj+E,IAAM,EAAMA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAGxEA,EAAIyjD,GAAOzjD,EAAIsW,GACForE,EAAEvhE,EAAI,GAAKwV,EAAOxV,EAAI,KAE3B,EACd7hB,EAAIwgF,GAFCwvG,EAAKm9C,IAEK,EAGjBpuO,KAAK2hI,GAAK3hI,KAAK2hI,GAAK1gI,GAAK,EACzBjB,KAAK4hI,GAAK5hI,KAAK4hI,GAAKr7F,GAAK,EACzBvmC,KAAK8gF,GAAK9gF,KAAK8gF,GAAKvkD,GAAK,EACzBv8B,KAAK+gF,GAAK/gF,KAAK+gF,GAAK7jE,GAAK,EACzBld,KAAK6hI,GAAK7hI,KAAK6hI,GAAKp/H,GAAK,EACzBzC,KAAK8hI,GAAK9hI,KAAK8hI,GAAKn/H,GAAK,EACzB3C,KAAK+hI,GAAK/hI,KAAK+hI,GAAK37E,GAAK,EACzBpmD,KAAKgiI,GAAKhiI,KAAKgiI,GAAK/oH,GAAK,GAG3Bw0N,OAAOrsO,UAAUu6B,IAAM,WACrB37B,KAAK+5M,WAEL,IAAIp4E,EAAK3hI,KAAK2hI,GAAIC,EAAK5hI,KAAK4hI,GAAI9gD,EAAK9gF,KAAK8gF,GAAIC,EAAK/gF,KAAK+gF,GAAI8gD,EAAK7hI,KAAK6hI,GAAIC,EAAK9hI,KAAK8hI,GAClFC,EAAK/hI,KAAK+hI,GAAIC,EAAKhiI,KAAKgiI,GAEtBrmG,EAAMo9K,UAAWp3E,GAAM,GAAM,IAAQo3E,UAAWp3E,GAAM,GAAM,IAC9Do3E,UAAWp3E,GAAM,GAAM,IAAQo3E,UAAWp3E,GAAM,GAAM,IACtDo3E,UAAWp3E,GAAM,GAAM,IAAQo3E,UAAWp3E,GAAM,EAAK,IACrDo3E,UAAWp3E,GAAM,EAAK,IAAQo3E,UAAe,GAALp3E,GACxCo3E,UAAWn3E,GAAM,GAAM,IAAQm3E,UAAWn3E,GAAM,GAAM,IACtDm3E,UAAWn3E,GAAM,GAAM,IAAQm3E,UAAWn3E,GAAM,GAAM,IACtDm3E,UAAWn3E,GAAM,GAAM,IAAQm3E,UAAWn3E,GAAM,EAAK,IACrDm3E,UAAWn3E,GAAM,EAAK,IAAQm3E,UAAe,GAALn3E,GACxCm3E,UAAWj4H,GAAM,GAAM,IAAQi4H,UAAWj4H,GAAM,GAAM,IACtDi4H,UAAWj4H,GAAM,GAAM,IAAQi4H,UAAWj4H,GAAM,GAAM,IACtDi4H,UAAWj4H,GAAM,GAAM,IAAQi4H,UAAWj4H,GAAM,EAAK,IACrDi4H,UAAWj4H,GAAM,EAAK,IAAQi4H,UAAe,GAALj4H,GACxCi4H,UAAWh4H,GAAM,GAAM,IAAQg4H,UAAWh4H,GAAM,GAAM,IACtDg4H,UAAWh4H,GAAM,GAAM,IAAQg4H,UAAWh4H,GAAM,GAAM,IACtDg4H,UAAWh4H,GAAM,GAAM,IAAQg4H,UAAWh4H,GAAM,EAAK,IACrDg4H,UAAWh4H,GAAM,EAAK,IAAQg4H,UAAe,GAALh4H,GACxCg4H,UAAWl3E,GAAM,GAAM,IAAQk3E,UAAWl3E,GAAM,GAAM,IACtDk3E,UAAWl3E,GAAM,GAAM,IAAQk3E,UAAWl3E,GAAM,GAAM,IACtDk3E,UAAWl3E,GAAM,GAAM,IAAQk3E,UAAWl3E,GAAM,EAAK,IACrDk3E,UAAWl3E,GAAM,EAAK,IAAQk3E,UAAe,GAALl3E,GACxCk3E,UAAWj3E,GAAM,GAAM,IAAQi3E,UAAWj3E,GAAM,GAAM,IACtDi3E,UAAWj3E,GAAM,GAAM,IAAQi3E,UAAWj3E,GAAM,GAAM,IACtDi3E,UAAWj3E,GAAM,GAAM,IAAQi3E,UAAWj3E,GAAM,EAAK,IACrDi3E,UAAWj3E,GAAM,EAAK,IAAQi3E,UAAe,GAALj3E,GACxCi3E,UAAWh3E,GAAM,GAAM,IAAQg3E,UAAWh3E,GAAM,GAAM,IACtDg3E,UAAWh3E,GAAM,GAAM,IAAQg3E,UAAWh3E,GAAM,GAAM,IACtDg3E,UAAWh3E,GAAM,GAAM,IAAQg3E,UAAWh3E,GAAM,EAAK,IACrDg3E,UAAWh3E,GAAM,EAAK,IAAQg3E,UAAe,GAALh3E,GAO1C,OANK/hI,KAAKwtO,QACR7xM,GAAOo9K,UAAW/2E,GAAM,GAAM,IAAQ+2E,UAAW/2E,GAAM,GAAM,IAC3D+2E,UAAW/2E,GAAM,GAAM,IAAQ+2E,UAAW/2E,GAAM,GAAM,IACtD+2E,UAAW/2E,GAAM,GAAM,IAAQ+2E,UAAW/2E,GAAM,EAAK,IACrD+2E,UAAW/2E,GAAM,EAAK,IAAQ+2E,UAAe,GAAL/2E,IAErCrmG,GAGT8xM,OAAOrsO,UAAUoD,SAAWipO,OAAOrsO,UAAUu6B,IAE7C8xM,OAAOrsO,UAAUkrC,OAAS,WACxBtsC,KAAK+5M,WAEL,IAAIp4E,EAAK3hI,KAAK2hI,GAAIC,EAAK5hI,KAAK4hI,GAAI9gD,EAAK9gF,KAAK8gF,GAAIC,EAAK/gF,KAAK+gF,GAAI8gD,EAAK7hI,KAAK6hI,GAAIC,EAAK9hI,KAAK8hI,GAClFC,EAAK/hI,KAAK+hI,GAAIC,EAAKhiI,KAAKgiI,GAEtB1jI,EAAM,CACPqjI,GAAM,GAAM,IAAOA,GAAM,GAAM,IAAOA,GAAM,EAAK,IAAW,IAALA,EACvDC,GAAM,GAAM,IAAOA,GAAM,GAAM,IAAOA,GAAM,EAAK,IAAW,IAALA,EACvD9gD,GAAM,GAAM,IAAOA,GAAM,GAAM,IAAOA,GAAM,EAAK,IAAW,IAALA,EACvDC,GAAM,GAAM,IAAOA,GAAM,GAAM,IAAOA,GAAM,EAAK,IAAW,IAALA,EACvD8gD,GAAM,GAAM,IAAOA,GAAM,GAAM,IAAOA,GAAM,EAAK,IAAW,IAALA,EACvDC,GAAM,GAAM,IAAOA,GAAM,GAAM,IAAOA,GAAM,EAAK,IAAW,IAALA,EACvDC,GAAM,GAAM,IAAOA,GAAM,GAAM,IAAOA,GAAM,EAAK,IAAW,IAALA,GAK1D,OAHK/hI,KAAKwtO,OACRlvO,EAAI4C,KAAM8gI,GAAM,GAAM,IAAOA,GAAM,GAAM,IAAOA,GAAM,EAAK,IAAW,IAALA,GAE5D1jI,GAGTmvO,OAAOrsO,UAAUgyD,MAAQq6K,OAAOrsO,UAAUkrC,OAE1CmhM,OAAOrsO,UAAU44M,YAAc,WAC7Bh6M,KAAK+5M,WAEL,IAAIzsK,EAAS,IAAIqkF,YAAY3xH,KAAKwtO,MAAQ,GAAK,IAC3CgB,EAAW,IAAInK,SAAS/2L,GAW5B,OAVAkhM,EAASC,UAAU,EAAGzuO,KAAK2hI,IAC3B6sG,EAASC,UAAU,EAAGzuO,KAAK4hI,IAC3B4sG,EAASC,UAAU,EAAGzuO,KAAK8gF,IAC3B0tJ,EAASC,UAAU,GAAIzuO,KAAK+gF,IAC5BytJ,EAASC,UAAU,GAAIzuO,KAAK6hI,IAC5B2sG,EAASC,UAAU,GAAIzuO,KAAK8hI,IAC5B0sG,EAASC,UAAU,GAAIzuO,KAAK+hI,IACvB/hI,KAAKwtO,OACRgB,EAASC,UAAU,GAAIzuO,KAAKgiI,IAEvB10F,GA6DTugM,WAAWzsO,UAAY,IAAIqsO,OAE3BI,WAAWzsO,UAAU24M,SAAW,WAE9B,GADA0zB,OAAOrsO,UAAU24M,SAASj3M,KAAK9C,MAC3BA,KAAK6pG,MAAO,CACd7pG,KAAK6pG,OAAQ,EACb,IAAI6kI,EAAY1uO,KAAKozD,QACrBq6K,OAAO3qO,KAAK9C,KAAMA,KAAKwtO,MAAOxtO,KAAK+tO,cACnC/tO,KAAKy7B,OAAOz7B,KAAKkuO,SACjBluO,KAAKy7B,OAAOizM,GACZjB,OAAOrsO,UAAU24M,SAASj3M,KAAK9C,QAInC,IAAI3B,QAAUm7M,eACdn7M,QAAQm9B,OAASn9B,QACjBA,QAAQ4rG,OAASuvG,cAAa,GAC9Bn7M,QAAQm9B,OAAOuuE,KAAO+jI,mBACtBzvO,QAAQ4rG,OAAOF,KAAO+jI,kBAAiB,GAEnCj1B,UACFz6M,OAAOC,QAAUA,SAEjByZ,KAAK0jB,OAASn9B,QAAQm9B,OACtB1jB,KAAKmyF,OAAS5rG,QAAQ4rG,OAClBkjI,MACFtmO,8BAAAA,WACE,OAAOxI,SADH,2IAvfZ,8BCTA,aASA,WACE,aAEA,IAAIswO,EAAc,wBAEd9B,EAA2B,kBAAXj2N,OAChBkB,EAAO+0N,EAASj2N,OAAS,GACzBkB,EAAK82N,oBACP/B,GAAS,GAEX,IAAIE,GAAcF,GAA0B,kBAAT9tO,MACpB+Y,EAAK8gM,oBAAyC,kBAAZlmM,GAAwBA,EAAQmjI,UAAYnjI,EAAQmjI,SAASzqE,KAE5GtzD,EAAOyvH,EAAAA,EACEwlG,IACTj1N,EAAO/Y,MAET,IAAI85M,GAAa/gM,EAAKghM,sBAAsD16M,EAAOC,QAC/E8uO,EAAsCtmO,EAAAA,KACtCumO,GAAgBt1N,EAAK+2N,yBAAkD,qBAAhBl9G,YACvDonF,EAAY,mBAAmB9tL,MAAM,IAErC6jN,EAAiB,CAAC,EAAG,KAAM,OAAQ,UAGnC91B,EAAQ,CAAC,EAAG,EAAG,GAAI,IACnBC,EAAK,CAAC,EAAG,EAAG,MAAO,EAAG,MAAO,WAAY,WAAY,WAAY,MAAO,EAAG,WAC7E,EAAG,WAAY,WAAY,MAAO,WAAY,IAAK,EAAG,IAAK,EAAG,WAAY,EAC1E,WAAY,EAAG,WAAY,EAAG,IAAK,WAAY,MAAO,WAAY,MAClE,WAAY,MAAO,WAAY,IAAK,WAAY,MAAO,EAAG,WAAY,WACtE,WAAY,WAAY,MAAO,WAAY,WAAY,EAAG,WAAY,YACpEC,EAAO,CAAC,IAAK,IAAK,IAAK,KACvB61B,EAAa,CAAC,IAAK,KACnB51B,EAAe,CAAC,MAAO,SAAU,cAAe,QAAS,UACzD61B,EAAiB,CACnB,IAAO,IACP,IAAO,MAGLl3N,EAAK8gM,oBAAuBj6M,MAAME,UACpCF,MAAME,QAAU,SAAU6E,GACxB,MAA+C,mBAAxC9B,OAAOR,UAAUoD,SAAS1B,KAAKY,MAItC0pO,IAAiBt1N,EAAKm3N,iCAAoCt9G,YAAYC,SACxED,YAAYC,OAAS,SAAUluH,GAC7B,MAAsB,kBAARA,GAAoBA,EAAI4pC,QAAU5pC,EAAI4pC,OAAO7pC,cAAgBkuH,cAgG/E,IA5FA,IAAIynF,EAAqB,SAAU/sK,EAAMhyB,EAASwoD,GAChD,OAAO,SAAUlnD,GACf,OAAO,IAAI09L,EAAOhtK,EAAMhyB,EAASgyB,GAAM5Q,OAAO9f,GAASknD,OAIvDy2I,EAA0B,SAAUjtK,EAAMhyB,EAASwoD,GACrD,OAAO,SAAUlnD,EAAS49L,GACxB,OAAO,IAAIF,EAAOhtK,EAAMhyB,EAASk/L,GAAY99K,OAAO9f,GAASknD,OAI7DqsK,EAA2B,SAAU7iM,EAAMhyB,EAASwoD,GACtD,OAAO,SAAUlnD,EAAS49L,EAAY/2M,EAAGD,GACvC,OAAO4zF,EAAQ,SAAW9pD,GAAM5Q,OAAO9f,EAAS49L,EAAY/2M,EAAGD,GAAGsgE,OAIlEssK,EAAyB,SAAU9iM,EAAMhyB,EAASwoD,GACpD,OAAO,SAAUtjE,EAAKoc,EAAS49L,EAAYh3M,GACzC,OAAO4zF,EAAQ,OAAS9pD,GAAM5Q,OAAOl8B,EAAKoc,EAAS49L,EAAYh3M,GAAGsgE,OAIlEusK,EAAsB,SAAU3nO,EAAQ+xM,EAAcntK,EAAMhyB,GAC9D,IAAK,IAAI5b,EAAI,EAAGA,EAAI06M,EAAa36M,SAAUC,EAAG,CAC5C,IAAI6J,EAAO6wM,EAAa16M,GACxBgJ,EAAOa,GAAQkxM,EAAantK,EAAMhyB,EAAS/R,GAE7C,OAAOb,GAGL+xM,EAAe,SAAUntK,EAAMhyB,GACjC,IAAI5S,EAAS2xM,EAAmB/sK,EAAMhyB,EAAS,OAO/C,OANA5S,EAAOlD,OAAS,WACd,OAAO,IAAI80M,EAAOhtK,EAAMhyB,EAASgyB,IAEnC5kC,EAAOg0B,OAAS,SAAU9f,GACxB,OAAOlU,EAAOlD,SAASk3B,OAAO9f,IAEzByzN,EAAoB3nO,EAAQ2xM,EAAoB/sK,EAAMhyB,IA0C3Dy+K,EAAa,CACf,CAAEpuL,KAAM,SAAU2P,QA/GC,CAAC,EAAG,IAAK,MAAO,UA+GQgyB,KAAM6sK,EAAMM,aAAcA,GACrE,CAAE9uM,KAAM,OAAQ2P,QA/GJ,CAAC,EAAG,KAAM,OAAQ,WA+GIgyB,KAAM6sK,EAAMM,aAAcA,GAC5D,CAAE9uM,KAAM,QAAS2P,QAnHC,CAAC,GAAI,KAAM,QAAS,WAmHGgyB,KAAM0iM,EAAYv1B,aA1CrC,SAAUntK,EAAMhyB,GACtC,IAAI5S,EAAS6xM,EAAwBjtK,EAAMhyB,EAAS,OAOpD,OANA5S,EAAOlD,OAAS,SAAUg1M,GACxB,OAAO,IAAIF,EAAOhtK,EAAMhyB,EAASk/L,IAEnC9xM,EAAOg0B,OAAS,SAAU9f,EAAS49L,GACjC,OAAO9xM,EAAOlD,OAAOg1M,GAAY99K,OAAO9f,IAEnCyzN,EAAoB3nO,EAAQ6xM,EAAyBjtK,EAAMhyB,KAmClE,CAAE3P,KAAM,SAAU2P,QAASy0N,EAAgBziM,KAAM0iM,EAAYv1B,aAhCtC,SAAUntK,EAAMhyB,GACvC,IAAI+6B,EAAI45L,EAAe3iM,GACnB5kC,EAASynO,EAAyB7iM,EAAMhyB,EAAS,OAWrD,OAVA5S,EAAOlD,OAAS,SAAUg1M,EAAY/2M,EAAGD,GACvC,OAAKC,GAAMD,EAGF,IAAI82M,EAAOhtK,EAAMhyB,EAASk/L,GAAY81B,QAAQ,CAAC7sO,EAAGD,GAAI6yC,GAFtD+gD,EAAQ,QAAU9pD,GAAM9nC,OAAOg1M,IAK1C9xM,EAAOg0B,OAAS,SAAU9f,EAAS49L,EAAY/2M,EAAGD,GAChD,OAAOkF,EAAOlD,OAAOg1M,EAAY/2M,EAAGD,GAAGk5B,OAAO9f,IAEzCyzN,EAAoB3nO,EAAQynO,EAA0B7iM,EAAMhyB,KAoBnE,CAAE3P,KAAM,OAAQ2P,QAASy0N,EAAgBziM,KAAM0iM,EAAYv1B,aAjBtC,SAAUntK,EAAMhyB,GACrC,IAAI+6B,EAAI45L,EAAe3iM,GACnB5kC,EAAS0nO,EAAuB9iM,EAAMhyB,EAAS,OAOnD,OANA5S,EAAOlD,OAAS,SAAUhF,EAAKg6M,EAAYh3M,GACzC,OAAO,IAAI+sO,EAAKjjM,EAAMhyB,EAASk/L,GAAY81B,QAAQ,CAAC,OAAQ9sO,GAAI6yC,GAAGi6L,QAAQ,CAAC9vO,GAAM61C,IAEpF3tC,EAAOg0B,OAAS,SAAUl8B,EAAKoc,EAAS49L,EAAYh3M,GAClD,OAAOkF,EAAOlD,OAAOhF,EAAKg6M,EAAYh3M,GAAGk5B,OAAO9f,IAE3CyzN,EAAoB3nO,EAAQ0nO,EAAwB9iM,EAAMhyB,MAW/D87E,EAAU,GAAIsjH,EAAc,GAEvBh7M,EAAI,EAAGA,EAAIq6L,EAAWt6L,SAAUC,EAGvC,IAFA,IAAIu6L,EAAYF,EAAWr6L,GACvB4tC,EAAO2sJ,EAAU3sJ,KACZvpB,EAAI,EAAGA,EAAIupB,EAAK7tC,SAAUskB,EAAG,CACpC,IAAIwzE,EAAa0iG,EAAUtuL,KAAO,IAAM2hC,EAAKvpB,GAG7C,GAFA22L,EAAYv4M,KAAKo1F,GACjBH,EAAQG,GAAc0iG,EAAUwgB,aAAantK,EAAKvpB,GAAIk2K,EAAU3+K,SACzC,SAAnB2+K,EAAUtuL,KAAiB,CAC7B,IAAI6kO,EAAgBv2C,EAAUtuL,KAAO2hC,EAAKvpB,GAC1C22L,EAAYv4M,KAAKquO,GACjBp5I,EAAQo5I,GAAiBp5I,EAAQG,IAKvC,SAAS+iH,EAAOhtK,EAAMhyB,EAASk/L,GAC7Bv5M,KAAKs4B,OAAS,GACdt4B,KAAKuC,EAAI,GACTvC,KAAKqa,QAAUA,EACfra,KAAKu5M,WAAaA,EAClBv5M,KAAKkK,OAAQ,EACblK,KAAKiuO,WAAY,EACjBjuO,KAAKq4D,MAAQ,EACbr4D,KAAKsnC,MAAQ,EACbtnC,KAAK05M,WAAc,MAAQrtK,GAAQ,IAAO,EAC1CrsC,KAAK25M,UAAY35M,KAAK05M,YAAc,EACpC15M,KAAK45M,aAAeL,GAAc,EAClCv5M,KAAK8jL,YAA2B,GAAby1B,IAAoB,EAEvC,IAAK,IAAI96M,EAAI,EAAGA,EAAI,KAAMA,EACxBuB,KAAKuC,EAAE9D,GAAK,EAyQhB,SAAS6wO,EAAKjjM,EAAMhyB,EAASk/L,GAC3BF,EAAOv2M,KAAK9C,KAAMqsC,EAAMhyB,EAASk/L,GAtQnCF,EAAOj4M,UAAUq6B,OAAS,SAAU9f,GAClC,GAAI3b,KAAKiuO,UACP,MAAM,IAAIvmO,MA/KO,2BAiLnB,IAAImyM,EAAWvxM,SAAcqT,EAC7B,GAAa,WAATrT,EAAmB,CACrB,GAAa,WAATA,EAWF,MAAM,IAAIZ,MAAMinO,GAVhB,GAAgB,OAAZhzN,EACF,MAAM,IAAIjU,MAAMinO,GACX,GAAIvB,GAAgBzxN,EAAQlY,cAAgBkuH,YACjDh2G,EAAU,IAAIuoB,WAAWvoB,QACpB,IAAKhd,MAAME,QAAQ8c,MACnByxN,IAAiBz7G,YAAYC,OAAOj2G,IACvC,MAAM,IAAIjU,MAAMinO,GAMtB90B,GAAY,EAKd,IAHA,IACuDp7M,EAAGwjB,EADtDqW,EAASt4B,KAAKs4B,OAAQqhL,EAAY35M,KAAK25M,UAAWn7M,EAASmd,EAAQnd,OACrEk7M,EAAa15M,KAAK05M,WAAY7nK,EAAQ,EAAGtvC,EAAIvC,KAAKuC,EAE7CsvC,EAAQrzC,GAAQ,CACrB,GAAIwB,KAAKkK,MAGP,IAFAlK,KAAKkK,OAAQ,EACbouB,EAAO,GAAKt4B,KAAKq4D,MACZ55D,EAAI,EAAGA,EAAIi7M,EAAa,IAAKj7M,EAChC65B,EAAO75B,GAAK,EAGhB,GAAIo7M,EACF,IAAKp7M,EAAIuB,KAAKsnC,MAAOuK,EAAQrzC,GAAUC,EAAIk7M,IAAa9nK,EACtDvZ,EAAO75B,GAAK,IAAMkd,EAAQk2B,IAAUmnK,EAAY,EAANv6M,UAG5C,IAAKA,EAAIuB,KAAKsnC,MAAOuK,EAAQrzC,GAAUC,EAAIk7M,IAAa9nK,GACtD5vB,EAAOtG,EAAQkxB,WAAWgF,IACf,IACTvZ,EAAO75B,GAAK,IAAMwjB,GAAQ+2L,EAAY,EAANv6M,KACvBwjB,EAAO,MAChBqW,EAAO75B,GAAK,KAAO,IAAQwjB,GAAQ,IAAO+2L,EAAY,EAANv6M,KAChD65B,EAAO75B,GAAK,KAAO,IAAe,GAAPwjB,IAAiB+2L,EAAY,EAANv6M,MACzCwjB,EAAO,OAAUA,GAAQ,OAClCqW,EAAO75B,GAAK,KAAO,IAAQwjB,GAAQ,KAAQ+2L,EAAY,EAANv6M,KACjD65B,EAAO75B,GAAK,KAAO,IAASwjB,GAAQ,EAAK,KAAU+2L,EAAY,EAANv6M,KACzD65B,EAAO75B,GAAK,KAAO,IAAe,GAAPwjB,IAAiB+2L,EAAY,EAANv6M,OAElDwjB,EAAO,QAAoB,KAAPA,IAAiB,GAAqC,KAA9BtG,EAAQkxB,aAAagF,IACjEvZ,EAAO75B,GAAK,KAAO,IAAQwjB,GAAQ,KAAQ+2L,EAAY,EAANv6M,KACjD65B,EAAO75B,GAAK,KAAO,IAASwjB,GAAQ,GAAM,KAAU+2L,EAAY,EAANv6M,KAC1D65B,EAAO75B,GAAK,KAAO,IAASwjB,GAAQ,EAAK,KAAU+2L,EAAY,EAANv6M,KACzD65B,EAAO75B,GAAK,KAAO,IAAe,GAAPwjB,IAAiB+2L,EAAY,EAANv6M,MAKxD,GADAuB,KAAK85M,cAAgBr7M,EACjBA,GAAKk7M,EAAW,CAGlB,IAFA35M,KAAKsnC,MAAQ7oC,EAAIk7M,EACjB35M,KAAKq4D,MAAQ//B,EAAOohL,GACfj7M,EAAI,EAAGA,EAAIi7M,IAAcj7M,EAC5B8D,EAAE9D,IAAM65B,EAAO75B,GAEjBkE,EAAEJ,GACFvC,KAAKkK,OAAQ,OAEblK,KAAKsnC,MAAQ7oC,EAGjB,OAAOuB,MAGTq5M,EAAOj4M,UAAUsjC,OAAS,SAAU4K,EAAGrD,GACrC,IAAIhqC,EAAQ,IAAJqtC,EAAS9sC,EAAI,EACjBupC,EAAQ,CAAC9pC,GAGb,IADAA,EAAQ,KADRqtC,IAAS,GAEFrtC,EAAI,GACT8pC,EAAMrD,QAAQzmC,GAEdA,EAAQ,KADRqtC,IAAS,KAEP9sC,EAQJ,OANIypC,EACFF,EAAM7qC,KAAKsB,GAEXupC,EAAMrD,QAAQlmC,GAEhBxC,KAAKy7B,OAAOsQ,GACLA,EAAMvtC,QAGf66M,EAAOj4M,UAAUouO,aAAe,SAAU39N,GACxC,IAAIgoM,EAAWvxM,SAAcuJ,EAC7B,GAAa,WAATvJ,EAAmB,CACrB,GAAa,WAATA,EAWF,MAAM,IAAIZ,MAAMinO,GAVhB,GAAY,OAAR98N,EACF,MAAM,IAAInK,MAAMinO,GACX,GAAIvB,GAAgBv7N,EAAIpO,cAAgBkuH,YAC7C9/G,EAAM,IAAIqyB,WAAWryB,QAChB,IAAKlT,MAAME,QAAQgT,MACnBu7N,IAAiBz7G,YAAYC,OAAO//G,IACvC,MAAM,IAAInK,MAAMinO,GAMtB90B,GAAY,EAEd,IAAI9tK,EAAQ,EAAGvtC,EAASqT,EAAIrT,OAC5B,GAAIq7M,EACF9tK,EAAQvtC,OAER,IAAK,IAAIC,EAAI,EAAGA,EAAIoT,EAAIrT,SAAUC,EAAG,CACnC,IAAIwjB,EAAOpQ,EAAIg7B,WAAWpuC,GACtBwjB,EAAO,IACT8pB,GAAS,EACA9pB,EAAO,KAChB8pB,GAAS,EACA9pB,EAAO,OAAUA,GAAQ,MAClC8pB,GAAS,GAET9pB,EAAO,QAAoB,KAAPA,IAAiB,GAA6B,KAAtBpQ,EAAIg7B,aAAapuC,IAC7DstC,GAAS,GAMf,OAFAA,GAAS/rC,KAAK0kC,OAAe,EAARqH,GACrB/rC,KAAKy7B,OAAO5pB,GACLk6B,GAGTstK,EAAOj4M,UAAUiuO,QAAU,SAAUI,EAAMr6L,GAEzC,IADA,IAAIrJ,EAAQ/rC,KAAK0kC,OAAO0Q,GACf32C,EAAI,EAAGA,EAAIgxO,EAAKjxO,SAAUC,EACjCstC,GAAS/rC,KAAKwvO,aAAaC,EAAKhxO,IAElC,IAAIixO,EAAet6L,EAAIrJ,EAAQqJ,EAC3BxM,EAAQ,GAGZ,OAFAA,EAAMpqC,OAASkxO,EACf1vO,KAAKy7B,OAAOmN,GACL5oC,MAGTq5M,EAAOj4M,UAAU24M,SAAW,WAC1B,IAAI/5M,KAAKiuO,UAAT,CAGAjuO,KAAKiuO,WAAY,EACjB,IAAI31M,EAASt4B,KAAKs4B,OAAQ75B,EAAIuB,KAAK85M,cAAeJ,EAAa15M,KAAK05M,WAAYn3M,EAAIvC,KAAKuC,EAEzF,GADA+1B,EAAO75B,GAAK,IAAMuB,KAAKqa,QAAY,EAAJ5b,GAC3BuB,KAAK85M,gBAAkB95M,KAAK25M,UAE9B,IADArhL,EAAO,GAAKA,EAAOohL,GACdj7M,EAAI,EAAGA,EAAIi7M,EAAa,IAAKj7M,EAChC65B,EAAO75B,GAAK,EAIhB,IADA65B,EAAOohL,EAAa,IAAM,WACrBj7M,EAAI,EAAGA,EAAIi7M,IAAcj7M,EAC5B8D,EAAE9D,IAAM65B,EAAO75B,GAEjBkE,EAAEJ,KAGJ82M,EAAOj4M,UAAUoD,SAAW60M,EAAOj4M,UAAUu6B,IAAM,WACjD37B,KAAK+5M,WAKL,IAHA,IAEc1hJ,EAFVqhJ,EAAa15M,KAAK05M,WAAYn3M,EAAIvC,KAAKuC,EAAGq3M,EAAe55M,KAAK45M,aAChE91B,EAAa9jL,KAAK8jL,WAAYrlL,EAAI,EAAGqkB,EAAI,EACvC6Y,EAAM,GACH7Y,EAAI82L,GAAc,CACvB,IAAKn7M,EAAI,EAAGA,EAAIi7M,GAAc52L,EAAI82L,IAAgBn7M,IAAKqkB,EACrDu1C,EAAQ91D,EAAE9D,GACVk9B,GAAOo9K,EAAW1gJ,GAAS,EAAK,IAAQ0gJ,EAAkB,GAAR1gJ,GAChD0gJ,EAAW1gJ,GAAS,GAAM,IAAQ0gJ,EAAW1gJ,GAAS,EAAK,IAC3D0gJ,EAAW1gJ,GAAS,GAAM,IAAQ0gJ,EAAW1gJ,GAAS,GAAM,IAC5D0gJ,EAAW1gJ,GAAS,GAAM,IAAQ0gJ,EAAW1gJ,GAAS,GAAM,IAE5Dv1C,EAAI42L,IAAe,IACrB/2M,EAAEJ,GACF9D,EAAI,GAaR,OAVIqlL,IACFzrH,EAAQ91D,EAAE9D,GACVk9B,GAAOo9K,EAAW1gJ,GAAS,EAAK,IAAQ0gJ,EAAkB,GAAR1gJ,GAC9CyrH,EAAa,IACfnoJ,GAAOo9K,EAAW1gJ,GAAS,GAAM,IAAQ0gJ,EAAW1gJ,GAAS,EAAK,KAEhEyrH,EAAa,IACfnoJ,GAAOo9K,EAAW1gJ,GAAS,GAAM,IAAQ0gJ,EAAW1gJ,GAAS,GAAM,MAGhE18B,GAGT09K,EAAOj4M,UAAU44M,YAAc,WAC7Bh6M,KAAK+5M,WAEL,IAGIzsK,EAHAosK,EAAa15M,KAAK05M,WAAYn3M,EAAIvC,KAAKuC,EAAGq3M,EAAe55M,KAAK45M,aAChE91B,EAAa9jL,KAAK8jL,WAAYrlL,EAAI,EAAGqkB,EAAI,EACvCipB,EAAQ/rC,KAAKu5M,YAAc,EAG7BjsK,EADEw2I,EACO,IAAInyD,YAAaioF,EAAe,GAAM,GAEtC,IAAIjoF,YAAY5lF,GAG3B,IADA,IAAIqnB,EAAQ,IAAIu1H,YAAYr7I,GACrBxqB,EAAI82L,GAAc,CACvB,IAAKn7M,EAAI,EAAGA,EAAIi7M,GAAc52L,EAAI82L,IAAgBn7M,IAAKqkB,EACrDswC,EAAMtwC,GAAKvgB,EAAE9D,GAEXqkB,EAAI42L,IAAe,GACrB/2M,EAAEJ,GAON,OAJIuhL,IACF1wH,EAAM30D,GAAK8D,EAAE9D,GACb6uC,EAASA,EAAOniC,MAAM,EAAG4gC,IAEpBuB,GAGT+rK,EAAOj4M,UAAUksC,OAAS+rK,EAAOj4M,UAAU44M,YAE3CX,EAAOj4M,UAAUkrC,OAAS+sK,EAAOj4M,UAAUgyD,MAAQ,WACjDpzD,KAAK+5M,WAKL,IAHA,IAEgBhpK,EAAQsnB,EAFpBqhJ,EAAa15M,KAAK05M,WAAYn3M,EAAIvC,KAAKuC,EAAGq3M,EAAe55M,KAAK45M,aAChE91B,EAAa9jL,KAAK8jL,WAAYrlL,EAAI,EAAGqkB,EAAI,EACvCswC,EAAQ,GACLtwC,EAAI82L,GAAc,CACvB,IAAKn7M,EAAI,EAAGA,EAAIi7M,GAAc52L,EAAI82L,IAAgBn7M,IAAKqkB,EACrDiuB,EAASjuB,GAAK,EACdu1C,EAAQ91D,EAAE9D,GACV20D,EAAMriB,GAAkB,IAARsnB,EAChBjF,EAAMriB,EAAS,GAAMsnB,GAAS,EAAK,IACnCjF,EAAMriB,EAAS,GAAMsnB,GAAS,GAAM,IACpCjF,EAAMriB,EAAS,GAAMsnB,GAAS,GAAM,IAElCv1C,EAAI42L,IAAe,GACrB/2M,EAAEJ,GAcN,OAXIuhL,IACF/yI,EAASjuB,GAAK,EACdu1C,EAAQ91D,EAAE9D,GACV20D,EAAMriB,GAAkB,IAARsnB,EACZyrH,EAAa,IACf1wH,EAAMriB,EAAS,GAAMsnB,GAAS,EAAK,KAEjCyrH,EAAa,IACf1wH,EAAMriB,EAAS,GAAMsnB,GAAS,GAAM,MAGjCjF,GAOTk8K,EAAKluO,UAAY,IAAIi4M,EAErBi2B,EAAKluO,UAAU24M,SAAW,WAExB,OADA/5M,KAAK0kC,OAAO1kC,KAAKu5M,YAAY,GACtBF,EAAOj4M,UAAU24M,SAASj3M,KAAK9C,OAGxC,IAAI2C,EAAI,SAAUJ,GAChB,IAAI0W,EAAG0zB,EAAGnqC,EAAG2kL,EAAInoG,EAAInN,EAAIooI,EAAIC,EAAIC,EAAIC,EAAIC,EAAIl4H,EAAIm4H,EAC/C/8J,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAImhF,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAK65E,EAAKC,EAC3EC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAC3EC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAC7E,IAAKh6M,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB2kL,EAAK5kL,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCy8E,EAAKz8E,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCsvE,EAAKtvE,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC03M,EAAK13M,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC23M,EAAK33M,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC43M,EAAK53M,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC63M,EAAK73M,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC83M,EAAK93M,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAItC0W,GAHAkpE,EAAK5/E,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,MAG3BsvE,GAAM,EAAMooI,IAAO,IAC9BttK,GAHA2tK,EAAK/3M,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,MAG3B03M,GAAM,EAAMpoI,IAAO,IAC9BtvE,EAAE,IAAM0W,EACR1W,EAAE,IAAMoqC,EACRpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACTpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACTpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACTpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACT1zB,EAAIkuK,GAAO+yB,GAAM,EAAMC,IAAO,IAC9BxtK,EAAIqyC,GAAOm7H,GAAM,EAAMD,IAAO,IAC9B33M,EAAE,IAAM0W,EACR1W,EAAE,IAAMoqC,EACRpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACTpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACTpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACTpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACT1zB,EAAI44D,GAAOuoI,GAAM,EAAMC,IAAO,IAC9B1tK,EAAIstK,GAAOI,GAAM,EAAMD,IAAO,IAC9B73M,EAAE,IAAM0W,EACR1W,EAAE,IAAMoqC,EACRpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACTpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACTpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACTpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACT1zB,EAAIihM,GAAO/3H,GAAM,EAAMm4H,IAAO,IAC9B3tK,EAAIwtK,GAAOG,GAAM,EAAMn4H,IAAO,IAC9B5/E,EAAE,IAAM0W,EACR1W,EAAE,IAAMoqC,EACRpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACTpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACTpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACTpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACT1zB,EAAImhM,GAAOjzB,GAAM,EAAMnoG,IAAO,IAC9BryC,EAAI0tK,GAAOr7H,GAAM,EAAMmoG,IAAO,IAC9B5kL,EAAE,IAAM0W,EACR1W,EAAE,IAAMoqC,EACRpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACTpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACTpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EACTpqC,EAAE,KAAO0W,EACT1W,EAAE,KAAOoqC,EAET4Q,EAAKh7C,EAAE,GACPm7C,EAAKn7C,EAAE,GACPg5M,EAAOh5M,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCi5M,EAAOj5M,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCk+H,EAAOl+H,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCm+H,EAAOn+H,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC85M,GAAO95M,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC+5M,GAAO/5M,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC44M,EAAO54M,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC64M,EAAO74M,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCo4M,EAAOp4M,EAAE,IAAM,EAAMA,EAAE,KAAO,GAC9Bq4M,EAAOr4M,EAAE,IAAM,EAAMA,EAAE,KAAO,GAC9Bs7C,EAAMt7C,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChCy7C,EAAMz7C,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChCk5M,EAAOl5M,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCm5M,EAAOn5M,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCg4M,EAAOh4M,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCi4M,EAAOj4M,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCg6M,GAAOh6M,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCi6M,GAAOj6M,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCw5M,GAAOx5M,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/By5M,GAAOz5M,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/Bs4M,EAAOt4M,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCu4M,EAAOv4M,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC47C,EAAM57C,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC+7C,EAAM/7C,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChCo5M,EAAOp5M,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCq5M,EAAOr5M,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCk4M,EAAOl4M,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCm4M,EAAOn4M,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjC89H,EAAO99H,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/B+9H,EAAO/9H,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/B05M,GAAO15M,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjC25M,GAAO35M,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCw4M,EAAOx4M,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCy4M,EAAOz4M,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCk8C,EAAMl8C,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChCq8C,EAAMr8C,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChCs5M,EAAOt5M,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCu5M,GAAOv5M,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjC84M,EAAO94M,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/B+4M,EAAO/4M,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/Bg+H,EAAOh+H,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCi+H,EAAOj+H,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC45M,GAAO55M,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC65M,GAAO75M,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC04M,EAAO14M,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC24M,EAAO34M,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCw8C,EAAMx8C,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC28C,EAAM38C,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAEhCA,EAAE,GAAKg7C,GAAOM,EAAKM,EACnB57C,EAAE,GAAKm7C,GAAOM,EAAKM,EACnB/7C,EAAE,IAAM89H,GAAQE,EAAME,EACtBl+H,EAAE,IAAM+9H,GAAQE,EAAME,EACtBn+H,EAAE,IAAMo4M,GAAQE,EAAME,EACtBx4M,EAAE,IAAMq4M,GAAQE,EAAME,EACtBz4M,EAAE,IAAM84M,GAAQE,EAAME,EACtBl5M,EAAE,IAAM+4M,GAAQE,EAAME,EACtBn5M,EAAE,IAAMw5M,IAAQE,GAAME,GACtB55M,EAAE,IAAMy5M,IAAQE,GAAME,GACtB75M,EAAE,GAAKs7C,GAAOM,EAAKM,EACnBl8C,EAAE,GAAKy7C,GAAOM,EAAKM,EACnBr8C,EAAE,IAAMg+H,GAAQE,EAAM85E,EACtBh4M,EAAE,IAAMi+H,GAAQE,EAAM85E,EACtBj4M,EAAE,IAAMs4M,GAAQE,EAAME,EACtB14M,EAAE,IAAMu4M,GAAQE,EAAME,EACtB34M,EAAE,IAAMg5M,GAAQE,EAAME,EACtBp5M,EAAE,IAAMi5M,GAAQE,EAAME,EACtBr5M,EAAE,IAAM05M,IAAQE,GAAME,GACtB95M,EAAE,IAAM25M,IAAQE,GAAME,GACtB/5M,EAAE,GAAK47C,GAAOM,EAAKM,EACnBx8C,EAAE,GAAK+7C,GAAOM,EAAKM,EACnB38C,EAAE,IAAMk+H,GAAQ85E,EAAME,EACtBl4M,EAAE,IAAMm+H,GAAQ85E,EAAME,EACtBn4M,EAAE,IAAMw4M,GAAQE,EAAME,EACtB54M,EAAE,IAAMy4M,GAAQE,EAAME,EACtB74M,EAAE,IAAMk5M,GAAQE,EAAME,EACtBt5M,EAAE,IAAMm5M,GAAQE,EAAME,GACtBv5M,EAAE,IAAM45M,IAAQE,GAAME,GACtBh6M,EAAE,IAAM65M,IAAQE,GAAME,GACtBj6M,EAAE,GAAKk8C,GAAOM,EAAKxB,EACnBh7C,EAAE,GAAKq8C,GAAOM,EAAKxB,EACnBn7C,EAAE,IAAMg4M,GAAQE,EAAMp6E,EACtB99H,EAAE,IAAMi4M,GAAQE,EAAMp6E,EACtB/9H,EAAE,IAAM04M,GAAQE,EAAMR,EACtBp4M,EAAE,IAAM24M,GAAQE,EAAMR,EACtBr4M,EAAE,IAAMo5M,GAAQE,EAAMR,EACtB94M,EAAE,IAAMq5M,GAAQE,GAAMR,EACtB/4M,EAAE,IAAM85M,IAAQE,GAAMR,GACtBx5M,EAAE,IAAM+5M,IAAQE,GAAMR,GACtBz5M,EAAE,GAAKw8C,GAAOxB,EAAKM,EACnBt7C,EAAE,GAAK28C,GAAOxB,EAAKM,EACnBz7C,EAAE,IAAMk4M,GAAQp6E,EAAME,EACtBh+H,EAAE,IAAMm4M,GAAQp6E,EAAME,EACtBj+H,EAAE,IAAM44M,GAAQR,EAAME,EACtBt4M,EAAE,IAAM64M,GAAQR,EAAME,EACtBv4M,EAAE,IAAMs5M,GAAQR,EAAME,EACtBh5M,EAAE,IAAMu5M,IAAQR,EAAME,EACtBj5M,EAAE,IAAMg6M,IAAQR,GAAME,GACtB15M,EAAE,IAAMi6M,IAAQR,GAAME,GAEtB35M,EAAE,IAAM02M,EAAGz2M,GACXD,EAAE,IAAM02M,EAAGz2M,EAAI,IAInB,GAAIq2M,EACFz6M,EAAOC,QAAU83F,MACZ,CACL,IAAK13F,EAAI,EAAGA,EAAIg7M,EAAYj7M,SAAUC,EACpCqZ,EAAK2hM,EAAYh7M,IAAM03F,EAAQsjH,EAAYh7M,IAEzC0uO,SACI,KAANtmO,EAAAA,WACE,OAAOsvF,GADH,gCAjoBZ,oECSA/3F,EAAOC,QAAU,SAAgCqiN,GAC/C,OAAO,SAAC5yL,EAAK/G,EAAK/jB,EAAMyzC,GAKtB,IAAImqK,EAKAC,EAAuBC,EAJrBH,EAAc,IAAI9gN,SAAQ,SAACV,GAC/ByhN,EAAqBzhN,KAKjB4hN,EAAS,6BAAG,qFAEhBD,GAAgB,EAEhB99M,GAAK,SAAC4qB,GACJizL,EAAwBjzL,EACxBgzL,OANc,SAQVD,EARU,2CAAH,qDAWfD,EAAgB5yL,EAAK/G,EAAKg6L,GACvBjhN,KADH,YACQ,kFACAghN,EADA,gCAEIH,EAFJ,OAGFE,EAAsB,MAHpB,sBAKFpqK,EAAI,MALF,4CAQLvoB,OAAM,SAACvuB,GACFkhN,EACFA,EAAsBlhN,GAEtB82C,EAAI92C,2BCvDdvB,EAAOC,QAAU,SAAmCgwI,GAClD,OAAO,SAACvgH,EAAK/G,EAAK/jB,EAAMyzC,GACtB,IAAMmhD,EAAUy2C,EAASvgH,EAAIrmB,QAE7B,YAAgBpH,IAAZu3F,EACK50F,IAGc,oBAAZ40F,EACFA,EAAQ9pE,EAAK/G,EAAK/jB,EAAMyzC,IAGjC1vB,EAAIzjB,OAASs0F,EACNnhD,0BCbXr4C,EAAOC,QAEP,SAAoBiV,GAElB,IAAImlB,GADJnlB,EAAOA,GAAQ,IACAmlB,KAAO/M,OAAOo3C,iBACzBm+I,EAAkC,qBAAf3tM,EAAKg0B,MAAwBh0B,EAAKg0B,MAAQ52B,KAAKC,MAAMD,KAAKW,SAAWonB,GAE5F,OAAO,WAEL,OADAwoL,GAAwBxoL,EACjBwoL,6BCTX,IAAI5/K,EAAuB,qBAATte,KAAuBA,KAAO7Q,EAAQ,OAExD9T,EAAOC,QAAU,SAAUqF,EAAK4P,GACvBA,IAAMA,EAAO,IACE,oBAATA,IAAqBA,EAAO,CAAEwjC,IAAKxjC,IAC9C,IAAI0hG,EAAQ1hG,EAAK0hG,OAAS,GACL,kBAAVA,IAAoBA,EAAQr2G,MAAMq2G,EAAM,GAAGhmF,KAAK,MAC3D,IAGiCrsB,EAH7BgtO,EAAiC,mBAAhBr8N,EAAKq8N,QAAwBr8N,EAAKq8N,OACnDzX,EAAW5kN,EAAK4kN,UAAY,SAAS34N,EAAKG,GAAS,OAAOA,GAE1Do3C,EAAMxjC,EAAKwjC,MAAkBn0C,EAQ9B2Q,EAAKwjC,IAPG,SAAUs0B,GACb,OAAO,SAAUnqE,EAAGslC,GAChB,IAAIqpM,EAAO,CAAErwO,IAAK0B,EAAGvB,MAAO0rE,EAAKnqE,IAC7B4uO,EAAO,CAAEtwO,IAAKgnC,EAAG7mC,MAAO0rE,EAAK7kC,IACjC,OAAO5jC,EAAEitO,EAAMC,MAKvB/jJ,EAAO,GACX,OAAQ,SAAS3kE,EAAW2oC,EAAQvwD,EAAK6rE,EAAMkL,GAC3C,IAAIhiC,EAAS0gE,EAAS,KAAO,IAAIr2G,MAAM23E,EAAQ,GAAGtnD,KAAKgmF,GAAU,GAC7D86H,EAAiB96H,EAAQ,KAAO,IAQpC,GANI5pC,GAAQA,EAAKzyB,QAAiC,oBAAhByyB,EAAKzyB,SACnCyyB,EAAOA,EAAKzyB,eAKHt4C,KAFb+qE,EAAO8sJ,EAASp1N,KAAKgtD,EAAQvwD,EAAK6rE,IAElC,CAGA,GAAoB,kBAATA,GAA8B,OAATA,EAC5B,OAAO/pC,EAAKla,UAAUikD,GAE1B,GAAIvsE,EAAQusE,GAAO,CAEf,IADA,IAAIhzB,EAAM,GACD35C,EAAI,EAAGA,EAAI2sE,EAAK5sE,OAAQC,IAAK,CAClC,IAAIosC,EAAO1jB,EAAUikD,EAAM3sE,EAAG2sE,EAAK3sE,GAAI63E,EAAM,IAAMj1C,EAAKla,UAAU,MAClEixB,EAAIl3C,KAAKozC,EAAS0gE,EAAQnqE,GAE9B,MAAO,IAAMuN,EAAIppB,KAAK,KAAOslB,EAAS,IAGtC,IAA4B,IAAxBw3C,EAAKrnF,QAAQ2mE,GAAc,CAC3B,GAAIukK,EAAQ,OAAOtuM,EAAKla,UAAU,aAClC,MAAM,IAAI3mB,UAAU,yCAEnBsrF,EAAK5qF,KAAKkqE,GAEf,IAAI5lE,EAAOuqO,EAAW3kK,GAAMjgC,KAAK2L,GAAOA,EAAIs0B,IAE5C,IADIhzB,EAAM,GACD35C,EAAI,EAAGA,EAAI+G,EAAKhH,OAAQC,IAAK,CAClC,IACIiB,EAAQynB,EAAUikD,EADlB7rE,EAAMiG,EAAK/G,GACkB2sE,EAAK7rE,GAAM+2E,EAAM,GAElD,GAAI52E,EAAJ,CAEA,IAAI+yD,EAAWpxB,EAAKla,UAAU5nB,GACxBuwO,EACApwO,EAEN04C,EAAIl3C,KAAKozC,EAAS0gE,EAAQviD,IAG9B,OADAq5B,EAAKzmB,OAAOymB,EAAKrnF,QAAQ2mE,GAAO,GACzB,IAAMhzB,EAAIppB,KAAK,KAAOslB,EAAS,KA9CtC,CAgDL,CAAE,GAAI5wC,GAAO,GAAIA,EAAK,IAG7B,IAAI7E,EAAUF,MAAME,SAAW,SAAUywC,GACrC,MAA+B,mBAAxB,GAAG9qC,SAAS1B,KAAKwsC,IAGxBygM,EAAanuO,OAAO4D,MAAQ,SAAU9B,GACtC,IAAIsJ,EAAMpL,OAAOR,UAAUkF,gBAAkB,WAAc,OAAO,GAC9Dd,EAAO,GACX,IAAK,IAAIjG,KAAOmE,EACRsJ,EAAIlK,KAAKY,EAAKnE,IAAMiG,EAAKtE,KAAK3B,GAEtC,OAAOiG,0BClFXnH,EAAQ2kB,MAAQ,EAAhB3kB,OACAA,EAAQ8oB,UAAY,EAApB9oB,0BCDA,IAAI0T,EACA8wF,EAWA1jF,EA4IAzf,EAtJAswO,EAAU,CACN,IAAM,IACN,KAAM,KACN,IAAM,IACNzpM,EAAM,KACN5jC,EAAM,KACNH,EAAM,KACNka,EAAM,KACNy4B,EAAM,MAIVx1C,EAAQ,SAAUkjB,GAEd,KAAM,CACFnY,KAAS,cACTiR,QAASkH,EACT9Q,GAASA,EACToN,KAASA,IAIjBnc,EAAO,SAAUu5B,GAWb,OATIA,GAAKA,IAAMsmE,GACXljG,EAAM,aAAe48B,EAAI,iBAAmBsmE,EAAK,KAMrDA,EAAK1jF,EAAKjU,OAAO6G,GACjBA,GAAM,EACC8wF,GAGX/sD,EAAS,WAEL,IAAIA,EACAvkC,EAAS,GAMb,IAJW,MAAPsxF,IACAtxF,EAAS,IACTvO,EAAK,MAEF6/F,GAAM,KAAOA,GAAM,KACtBtxF,GAAUsxF,EACV7/F,IAEJ,GAAW,MAAP6/F,EAEA,IADAtxF,GAAU,IACHvO,KAAU6/F,GAAM,KAAOA,GAAM,KAChCtxF,GAAUsxF,EAGlB,GAAW,MAAPA,GAAqB,MAAPA,EAOd,IANAtxF,GAAUsxF,EACV7/F,IACW,MAAP6/F,GAAqB,MAAPA,IACdtxF,GAAUsxF,EACV7/F,KAEG6/F,GAAM,KAAOA,GAAM,KACtBtxF,GAAUsxF,EACV7/F,IAIR,GADA8yC,GAAUvkC,EACLkmG,SAAS3hE,GAGV,OAAOA,EAFPn2C,EAAM,eAMd4R,EAAS,WAEL,IAAIoqB,EACAl9B,EAEAwxO,EADA1+N,EAAS,GAIb,GAAW,MAAPsxF,EACA,KAAO7/F,KAAQ,CACX,GAAW,MAAP6/F,EAEA,OADA7/F,IACOuO,EACJ,GAAW,OAAPsxF,EAEP,GADA7/F,IACW,MAAP6/F,EAAY,CAEZ,IADAotI,EAAQ,EACHxxO,EAAI,EAAGA,EAAI,IACZk9B,EAAM9rB,SAAS7M,IAAQ,IAClBy0G,SAAS97E,IAFCl9B,GAAK,EAKpBwxO,EAAgB,GAARA,EAAat0M,EAEzBpqB,GAAU8nB,OAAOk2B,aAAa0gL,OAC3B,IAA2B,kBAAhBD,EAAQntI,GAGtB,MAFAtxF,GAAUy+N,EAAQntI,QAKtBtxF,GAAUsxF,EAItBljG,EAAM,eAGVwoK,EAAQ,WAIJ,KAAOtlE,GAAMA,GAAM,KACf7/F,KAkCRowD,EAAQ,WAIJ,IAAIA,EAAQ,GAEZ,GAAW,MAAPyvC,EAAY,CAGZ,GAFA7/F,EAAK,KACLmlK,IACW,MAAPtlE,EAEA,OADA7/F,EAAK,KACEowD,EAEX,KAAOyvC,GAAI,CAGP,GAFAzvC,EAAMlyD,KAAKxB,KACXyoK,IACW,MAAPtlE,EAEA,OADA7/F,EAAK,KACEowD,EAEXpwD,EAAK,KACLmlK,KAGRxoK,EAAM,cAGV2F,EAAS,WAIL,IAAI/F,EACA+F,EAAS,GAEb,GAAW,MAAPu9F,EAAY,CAGZ,GAFA7/F,EAAK,KACLmlK,IACW,MAAPtlE,EAEA,OADA7/F,EAAK,KACEsC,EAEX,KAAOu9F,GAAI,CASP,GARAtjG,EAAMgS,IACN42J,IACAnlK,EAAK,KACDpB,OAAO0E,eAAexD,KAAKwC,EAAQ/F,IACnCI,EAAM,kBAAoBJ,EAAM,KAEpC+F,EAAO/F,GAAOG,IACdyoK,IACW,MAAPtlE,EAEA,OADA7/F,EAAK,KACEsC,EAEXtC,EAAK,KACLmlK,KAGRxoK,EAAM,eAGdD,EAAQ,WAMJ,OADAyoK,IACQtlE,GACR,IAAK,IACD,OAAOv9F,IACX,IAAK,IACD,OAAO8tD,IACX,IAAK,IACD,OAAO7hD,IACX,IAAK,IACD,OAAOukC,IACX,QACI,OAAO+sD,GAAM,KAAOA,GAAM,IAAM/sD,IA3G7B,WAIH,OAAQ+sD,GACR,IAAK,IAKD,OAJA7/F,EAAK,KACLA,EAAK,KACLA,EAAK,KACLA,EAAK,MACE,EACX,IAAK,IAMD,OALAA,EAAK,KACLA,EAAK,KACLA,EAAK,KACLA,EAAK,KACLA,EAAK,MACE,EACX,IAAK,IAKD,OAJAA,EAAK,KACLA,EAAK,KACLA,EAAK,KACLA,EAAK,KACE,KAEXrD,EAAM,eAAiBkjG,EAAK,KAkFeprD,KAOnDr5C,EAAOC,QAAU,SAAUwH,EAAQ0mO,GAC/B,IAAIjpO,EAiBJ,OAfA6b,EAAOtZ,EACPkM,EAAK,EACL8wF,EAAK,IACLv/F,EAAS5D,IACTyoK,IACItlE,GACAljG,EAAM,gBASgB,oBAAZ4sO,EAA0B,SAAS2D,EAAKC,EAAQ5wO,GAC1D,IAAI28B,EAAGtjB,EAAGlZ,EAAQywO,EAAO5wO,GACzB,GAAIG,GAA0B,kBAAVA,EAChB,IAAKw8B,KAAKx8B,EACFkC,OAAOR,UAAUkF,eAAexD,KAAKpD,EAAOw8B,UAElC77B,KADVuY,EAAIs3N,EAAKxwO,EAAOw8B,IAEZx8B,EAAMw8B,GAAKtjB,SAEJlZ,EAAMw8B,IAK7B,OAAOqwM,EAAQzpO,KAAKqtO,EAAQ5wO,EAAKG,GAdG,CAetC,CAAC,GAAI4D,GAAS,IAAOA,sBC/Q3B,IAEI8sO,EACA97L,EAUAu4I,EAZAwjD,EAAY,2HAGZ1/H,EAAO,CACH,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,IAAM,MACN,KAAM,QAId,SAASi1H,EAAMr0N,GAOX,OADA8+N,EAAU5uD,UAAY,EACf4uD,EAAU1jO,KAAK4E,GAAU,IAAMA,EAAOkQ,QAAQ4uN,GAAW,SAAUpvO,GACtE,IAAIs7B,EAAIo0E,EAAK1vG,GACb,MAAoB,kBAANs7B,EAAiBA,EAC3B,OAAS,OAASt7B,EAAE4rC,WAAW,GAAGroC,SAAS,KAAK2G,OAAO,MAC1D,IAAM,IAAMoG,EAAS,IAG9B,SAASM,EAAItS,EAAK4wO,GAEd,IAAI1xO,EACAy9B,EACAtjB,EACApa,EAEA+hK,EADA+vE,EAAOF,EAEP1wO,EAAQywO,EAAO5wO,GAenB,OAZIG,GAA0B,kBAAVA,GACY,oBAAjBA,EAAMi5C,SACjBj5C,EAAQA,EAAMi5C,OAAOp5C,IAKN,oBAARstL,IACPntL,EAAQmtL,EAAI/pL,KAAKqtO,EAAQ5wO,EAAKG,WAInBA,GACX,IAAK,SACD,OAAOkmO,EAAMlmO,GAEjB,IAAK,SAED,OAAO+3G,SAAS/3G,GAAS25B,OAAO35B,GAAS,OAE7C,IAAK,UACL,IAAK,OAID,OAAO25B,OAAO35B,GAElB,IAAK,SACD,IAAKA,EAAO,MAAO,OAKnB,GAJA0wO,GAAO97L,EACPisH,EAAU,GAGqC,mBAA3C3+J,OAAOR,UAAUoD,SAASrE,MAAMT,GAA6B,CAE7D,IADAlB,EAASkB,EAAMlB,OACVC,EAAI,EAAGA,EAAID,EAAQC,GAAK,EACzB8hK,EAAQ9hK,GAAKoT,EAAIpT,EAAGiB,IAAU,OASlC,OAJAkZ,EAAuB,IAAnB2nJ,EAAQ/hK,OAAe,KAAO4xO,EAC9B,MAAQA,EAAM7vE,EAAQvxI,KAAK,MAAQohN,GAAO,KAAOE,EAAO,IACxD,IAAM/vE,EAAQvxI,KAAK,KAAO,IAC9BohN,EAAME,EACC13N,EAKX,GAAIi0K,GAAsB,kBAARA,EAEd,IADAruL,EAASquL,EAAIruL,OACRC,EAAI,EAAGA,EAAID,EAAQC,GAAK,EAER,kBADjBy9B,EAAI2wJ,EAAIpuL,MAEJma,EAAI/G,EAAIqqB,EAAGx8B,KAEP6gK,EAAQr/J,KAAK0kO,EAAM1pM,IAAMk0M,EAAM,KAAO,KAAOx3N,QAOzD,IAAKsjB,KAAKx8B,EACFkC,OAAOR,UAAUkF,eAAexD,KAAKpD,EAAOw8B,KAC5CtjB,EAAI/G,EAAIqqB,EAAGx8B,KAEP6gK,EAAQr/J,KAAK0kO,EAAM1pM,IAAMk0M,EAAM,KAAO,KAAOx3N,GAajE,OAJAA,EAAuB,IAAnB2nJ,EAAQ/hK,OAAe,KAAO4xO,EAC9B,MAAQA,EAAM7vE,EAAQvxI,KAAK,MAAQohN,GAAO,KAAOE,EAAO,IACxD,IAAM/vE,EAAQvxI,KAAK,KAAO,IAC9BohN,EAAME,EACC13N,GAIfxa,EAAOC,QAAU,SAAUqB,EAAOw4N,EAAUljH,GACxC,IAAIv2G,EAMJ,GALA2xO,EAAM,GACN97L,EAAS,GAIY,kBAAV0gE,EACP,IAAKv2G,EAAI,EAAGA,EAAIu2G,EAAOv2G,GAAK,EACxB61C,GAAU,QAIQ,kBAAV0gE,IACZ1gE,EAAS0gE,GAMb,GADA63E,EAAMqrC,EACFA,GAAgC,oBAAbA,IACC,kBAAbA,GAAoD,kBAApBA,EAAS15N,QAChD,MAAM,IAAIkJ,MAAM,kBAKpB,OAAOmK,EAAI,GAAI,CAAC,GAAInS,4BCxJxBtB,EAAOC,QAAU6T,EAAQ,MAARA,CAAqBA,EAAQ,+BCA9C,IAAMq+N,EAAer+N,EAAQ,MACvBs+N,EAAct+N,EAAQ,OAE5B9T,EAAOC,QAAU,SAAUoyO,GACzB,IAAMp3B,EAASk3B,EAAaE,GACtBC,EAAQF,EAAYC,GAE1B,OAAO,SAAUz3C,EAAWpmL,GAE1B,OADkC,kBAAdomL,EAAyBA,EAAUvyJ,cAAgBuyJ,GAErE,IAAK,YAAa,OAAO,IAAIqgB,EAAO,KAAM,IAAK,KAAM,IAAKzmM,GAC1D,IAAK,YAAa,OAAO,IAAIymM,EAAO,KAAM,IAAK,KAAM,IAAKzmM,GAC1D,IAAK,YAAa,OAAO,IAAIymM,EAAO,IAAK,IAAK,KAAM,IAAKzmM,GACzD,IAAK,YAAa,OAAO,IAAIymM,EAAO,IAAK,KAAM,KAAM,IAAKzmM,GAE1D,IAAK,WAAY,OAAO,IAAIymM,EAAO,KAAM,IAAK,EAAM,IAAKzmM,GACzD,IAAK,WAAY,OAAO,IAAIymM,EAAO,KAAM,IAAK,EAAM,IAAKzmM,GACzD,IAAK,WAAY,OAAO,IAAIymM,EAAO,IAAK,IAAK,EAAM,IAAKzmM,GACxD,IAAK,WAAY,OAAO,IAAIymM,EAAO,IAAK,KAAM,EAAM,IAAKzmM,GAEzD,IAAK,WAAY,OAAO,IAAI89N,EAAM,KAAM,IAAK,GAAM99N,GACnD,IAAK,WAAY,OAAO,IAAI89N,EAAM,KAAM,IAAK,GAAM99N,GAEnD,QAAS,MAAM,IAAIlL,MAAM,qBAAuBsxL,6HCvB9CrG,EAAczgL,EAAQ,OAAtBygL,UAERv0L,EAAOC,QAAU,SAACoyO,GAAD,kDACf,WAAaE,EAAMC,EAAUC,EAAiBC,EAAel+N,GAAS,wBACpE,cAAMA,IAEDm+N,MAAQJ,EACb,EAAKK,UAAYJ,EACjB,EAAKK,iBAAmBJ,EACxB,EAAKK,eAAiBJ,EACtB,EAAKt2M,SAAW5nB,EAEhB,EAAK2kF,OAAS,IAAIk5I,EAClB,EAAKl5I,OAAOk3B,WAAWkiH,EAAMC,GAC7B,EAAK7J,YAAa,EAXkD,EADvD,oCAef,SAAY9uI,EAAOuuB,EAAU54F,GAC3B,IAAIjuB,EAAQ,KACZ,IACEK,KAAKy7B,OAAOw8D,EAAOuuB,GACnB,MAAOpmH,GACPT,EAAQS,EAGVwtB,EAASjuB,KAvBI,oBA0Bf,SAAQiuB,GACN,IAAIjuB,EAAQ,KACZ,IACEK,KAAKkB,KAAKlB,KAAKssC,UACf,MAAOlsC,GACPT,EAAQS,EAGVwtB,EAASjuB,KAlCI,oBAqCf,SAAQ4iB,EAAMikG,GACZ,IAAKhsG,EAAO2sB,SAAS5kB,IAAyB,kBAATA,EAAmB,MAAM,IAAI/hB,UAAU,qCAC5E,GAAIR,KAAK+mO,WAAY,MAAM,IAAIr/N,MAAM,yBAKrC,OAJK8S,EAAO2sB,SAAS5kB,KAAOA,EAAO/H,EAAOzV,KAAKwd,EAAMikG,IAErDxmH,KAAKu3F,OAAO45I,OAAO5uN,GAEZviB,OA5CM,oBA+Cf,SAAQwmH,GACN,GAAIxmH,KAAK+mO,WAAY,MAAM,IAAIr/N,MAAM,yBACrC1H,KAAK+mO,YAAa,EAEd/mO,KAAKixO,kBAAkBjxO,KAAKu3F,OAAO65I,kBAAkBpxO,KAAKixO,kBAC9D,IAAI3kM,EAAStsC,KAAKu3F,OAAO85I,QAAQrxO,KAAKkxO,eAAiB,GAKvD,YAJiB7wO,IAAbmmH,IAAwBl6E,EAASA,EAAO9nC,SAASgiH,IAErDxmH,KAAKsxO,cAEEhlM,IAzDM,yBA6Df,WAEE,OADAtsC,KAAKu3F,OAAOk3B,WAAWzuH,KAAK+wO,MAAO/wO,KAAKgxO,WACjChxO,OA/DM,oBAmEf,WACE,IAAM63C,EAAQ,IAAIwhK,EAAOr5M,KAAK+wO,MAAO/wO,KAAKgxO,UAAWhxO,KAAKixO,iBAAkBjxO,KAAKkxO,eAAgBlxO,KAAKw6B,UAItG,OAHAx6B,KAAKu3F,OAAOrrD,KAAK2L,EAAM0/C,QACvB1/C,EAAMkvL,WAAa/mO,KAAK+mO,WAEjBlvL,MAxEM,GAAsC86I,4HCF/CA,EAAczgL,EAAQ,OAAtBygL,UAERv0L,EAAOC,QAAU,SAACoyO,GAAD,kDACf,WAAaE,EAAMC,EAAUC,EAAiBj+N,GAAS,wBACrD,cAAMA,IAEDm+N,MAAQJ,EACb,EAAKK,UAAYJ,EACjB,EAAKK,iBAAmBJ,EACxB,EAAKr2M,SAAW5nB,EAEhB,EAAK2kF,OAAS,IAAIk5I,EAClB,EAAKl5I,OAAOk3B,WAAWkiH,EAAMC,GAC7B,EAAK7J,YAAa,EAVmC,EADxC,oCAcf,SAAY9uI,EAAOuuB,EAAU54F,GAC3B,IAAIjuB,EAAQ,KACZ,IACEK,KAAKy7B,OAAOw8D,EAAOuuB,GACnB,MAAOpmH,GACPT,EAAQS,EAGVwtB,EAASjuB,KAtBI,oBAyBf,cAzBe,mBA2Bf,SAAO2d,GACLtd,KAAKkB,KAAKlB,KAAKqxO,QAAQ/zN,MA5BV,oBA+Bf,SAAQiF,EAAMikG,GACZ,IAAKhsG,EAAO2sB,SAAS5kB,IAAyB,kBAATA,EAAmB,MAAM,IAAI/hB,UAAU,qCAC5E,GAAIR,KAAK+mO,WAAY,MAAM,IAAIr/N,MAAM,0BAKrC,OAJK8S,EAAO2sB,SAAS5kB,KAAOA,EAAO/H,EAAOzV,KAAKwd,EAAMikG,IAErDxmH,KAAKu3F,OAAO45I,OAAO5uN,GAEZviB,OAtCM,qBAyCf,SAASuxO,EAAgB/qH,GAClBxmH,KAAK+mO,aACR/mO,KAAK+mO,YAAa,EAClB/mO,KAAKu3F,OAAO65I,kBAAkBpxO,KAAKixO,mBAGrC,IAAI1uN,EAAOviB,KAAKu3F,OAAO85I,QAAQE,GAG/B,YAFiBlxO,IAAbmmH,IAAwBjkG,EAAOA,EAAK/d,SAASgiH,IAE1CjkG,IAlDM,yBAqDf,WAEE,OADAviB,KAAKu3F,OAAOk3B,WAAWzuH,KAAK+wO,MAAO/wO,KAAKgxO,WACjChxO,OAvDM,oBA0Df,WACE,IAAM63C,EAAQ,IAAI64L,EAAM1wO,KAAK+wO,MAAO/wO,KAAKgxO,UAAWhxO,KAAKixO,iBAAkBjxO,KAAKw6B,UAIhF,OAHAx6B,KAAKu3F,OAAOrrD,KAAK2L,EAAM0/C,QACvB1/C,EAAMkvL,WAAa/mO,KAAK+mO,WAEjBlvL,MA/DM,GAAqC86I,yBCFtD,IAAM6+C,EAAwB,CAAC,EAAG,EAAG,MAAO,EAAG,MAAO,WAAY,WAAY,WAAY,MAAO,EAAG,WAAY,EAAG,WAAY,WAAY,MAAO,WAAY,IAAK,EAAG,IAAK,EAAG,WAAY,EAAG,WAAY,EAAG,WAAY,EAAG,IAAK,WAAY,MAAO,WAAY,MAAO,WAAY,MAAO,WAAY,IAAK,WAAY,MAAO,EAAG,WAAY,WAAY,WAAY,WAAY,MAAO,WAAY,WAAY,EAAG,WAAY,YAE9ZnzO,EAAQozO,MAAQ,SAAUlvO,GACxB,IAAK,IAAIkgD,EAAQ,EAAGA,EAAQ,KAAMA,EAAO,CAEvC,IAAMivL,EAAMnvO,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvCovO,EAAMpvO,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvCqvO,EAAMrvO,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvCsvO,EAAMtvO,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvCuvO,EAAMvvO,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvCwvO,EAAMxvO,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvCyvO,EAAMzvO,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvC0vO,EAAM1vO,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvC2vO,EAAM3vO,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvC4vO,EAAM5vO,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAEzCs2C,EAAKq5L,GAAON,GAAO,EAAIC,IAAQ,IAC/Bn4L,EAAKy4L,GAAON,GAAO,EAAID,IAAQ,IAC7BQ,EAAS7vO,EAAE,GAAKs2C,EAChBw5L,EAAS9vO,EAAE,GAAKm3C,EAChB44L,EAAS/vO,EAAE,IAAMs2C,EACjB05L,EAAShwO,EAAE,IAAMm3C,EACjB84L,EAAUjwO,EAAE,IAAMs2C,EAClB45L,EAAUlwO,EAAE,IAAMm3C,EAClBg5L,EAAUnwO,EAAE,IAAMs2C,EAClB85L,EAAUpwO,EAAE,IAAMm3C,EAClBk5L,EAAUrwO,EAAE,IAAMs2C,EAClBg6L,EAAUtwO,EAAE,IAAMm3C,EACxBb,EAAK64L,GAAOI,GAAO,EAAIC,IAAQ,IAC/Br4L,EAAKi4L,GAAOI,GAAO,EAAID,IAAQ,IAC/B,IAAMgB,EAASvwO,EAAE,GAAKs2C,EAChBk6L,EAASxwO,EAAE,GAAKm3C,EAChBs5L,EAASzwO,EAAE,IAAMs2C,EACjBo6L,EAAS1wO,EAAE,IAAMm3C,EACjBw5L,EAAU3wO,EAAE,IAAMs2C,EAClBs6L,EAAU5wO,EAAE,IAAMm3C,EAClB05L,EAAU7wO,EAAE,IAAMs2C,EAClBw6L,EAAU9wO,EAAE,IAAMm3C,EAClB45L,EAAU/wO,EAAE,IAAMs2C,EAClB06L,EAAUhxO,EAAE,IAAMm3C,EACxBb,EAAK+4L,GAAOI,GAAO,EAAIC,IAAQ,IAC/Bv4L,EAAKm4L,GAAOI,GAAO,EAAID,IAAQ,IAC/B,IAAMwB,EAASjxO,EAAE,GAAKs2C,EAChB46L,EAASlxO,EAAE,GAAKm3C,EAChBg6L,EAASnxO,EAAE,IAAMs2C,EACjB86L,EAASpxO,EAAE,IAAMm3C,EACjBk6L,EAAUrxO,EAAE,IAAMs2C,EAClBg7L,EAAUtxO,EAAE,IAAMm3C,EAClBo6L,EAAUvxO,EAAE,IAAMs2C,EAClBk7L,EAAUxxO,EAAE,IAAMm3C,EAClBs6L,EAAUzxO,EAAE,IAAMs2C,EAClBo7L,EAAU1xO,EAAE,IAAMm3C,EACxBb,EAAKi5L,GAAOI,GAAO,EAAIC,IAAQ,IAC/Bz4L,EAAKq4L,GAAOI,GAAO,EAAID,IAAQ,IAC/B,IAAMgC,EAAS3xO,EAAE,GAAKs2C,EAChBs7L,EAAS5xO,EAAE,GAAKm3C,EAChB06L,EAAS7xO,EAAE,IAAMs2C,EACjBw7L,EAAS9xO,EAAE,IAAMm3C,EACjB46L,EAAU/xO,EAAE,IAAMs2C,EAClB07L,EAAUhyO,EAAE,IAAMm3C,EAClB86L,EAAUjyO,EAAE,IAAMs2C,EAClB47L,EAAUlyO,EAAE,IAAMm3C,EAClBg7L,EAAUnyO,EAAE,IAAMs2C,EAClB87L,GAAUpyO,EAAE,IAAMm3C,EACxBb,EAAKm5L,GAAON,GAAO,EAAIC,IAAQ,IAC/Bj4L,EAAKu4L,GAAON,GAAO,EAAID,IAAQ,IAC/B,IAAMkD,GAASryO,EAAE,GAAKs2C,EAChBg8L,GAAStyO,EAAE,GAAKm3C,EAChBo7L,GAASvyO,EAAE,IAAMs2C,EACjBk8L,GAASxyO,EAAE,IAAMm3C,EACjBs7L,GAAUzyO,EAAE,IAAMs2C,EAClBo8L,GAAU1yO,EAAE,IAAMm3C,EAClBw7L,GAAU3yO,EAAE,IAAMs2C,EAClBs8L,GAAU5yO,EAAE,IAAMm3C,EAClB07L,GAAU7yO,EAAE,IAAMs2C,EAClBw8L,GAAU9yO,EAAE,IAAMm3C,EAGlB47L,GAASlD,EACTmD,GAASlD,EACTmD,GAAWjD,GAAU,EAAID,IAAW,GACpCmD,GAAWnD,GAAU,EAAIC,IAAW,GACpCmD,GAAUlD,GAAW,EAAIC,IAAY,GACrCkD,GAAUlD,GAAW,EAAID,IAAY,GACrCoD,GAAWjD,GAAW,EAAID,IAAY,GACtCmD,GAAWnD,GAAW,EAAIC,IAAY,GACtCmD,GAAWlD,GAAW,GAAKC,IAAY,GACvCkD,GAAWlD,GAAW,GAAKD,IAAY,GACvCoD,GAAWlD,GAAU,EAAIC,IAAW,GACpCkD,GAAWlD,GAAU,EAAID,IAAW,GACpCoD,GAAUjD,GAAU,GAAKD,IAAW,GACpCmD,GAAUnD,GAAU,GAAKC,IAAW,GACpCmD,GAAWlD,GAAW,GAAKC,IAAY,GACvCkD,GAAWlD,GAAW,GAAKD,IAAY,GACvCoD,GAAUjD,GAAW,GAAKD,IAAY,GACtCmD,GAAUnD,GAAW,GAAKC,IAAY,GACtCmD,GAAWlD,GAAW,EAAIC,IAAY,GACtCkD,GAAWlD,GAAW,EAAID,IAAY,GACtCoD,GAAWjD,GAAU,GAAKD,IAAW,EACrCmD,GAAWnD,GAAU,GAAKC,IAAW,EACrCmD,GAAWlD,GAAU,EAAIC,IAAW,GACpCkD,GAAWlD,GAAU,EAAID,IAAW,GACpCoD,GAAUjD,GAAW,GAAKD,IAAY,GACtCmD,GAAUnD,GAAW,GAAKC,IAAY,GACtCmD,GAAWlD,GAAW,GAAKC,IAAY,GACvCkD,GAAWlD,GAAW,GAAKD,IAAY,GACvCoD,GAAUjD,GAAW,GAAKD,IAAY,EACtCmD,GAAUnD,GAAW,GAAKC,IAAY,EACtCmD,GAAUlD,GAAU,GAAKC,IAAW,EACpCkD,GAAUlD,GAAU,GAAKD,IAAW,EACpCoD,GAAWjD,GAAU,GAAKD,IAAW,EACrCmD,GAAWnD,GAAU,GAAKC,IAAW,EACrCmD,GAAWlD,GAAW,GAAKC,IAAY,EACvCkD,GAAWlD,GAAW,GAAKD,IAAY,EACvCoD,GAAUlD,GAAW,GAAKC,IAAY,GACtCkD,GAAUlD,GAAW,GAAKD,IAAY,GACtCoD,GAAWjD,IAAW,GAAKD,IAAY,EACvCmD,GAAWnD,GAAW,GAAKC,KAAY,EACvCmD,GAAWlD,IAAU,GAAKC,KAAW,EACrCkD,GAAWlD,IAAU,GAAKD,KAAW,EACrCoD,GAAUlD,IAAU,GAAKC,KAAW,GACpCkD,GAAUlD,IAAU,GAAKD,KAAW,GACpCoD,GAAWjD,IAAW,EAAID,KAAY,GACtCmD,GAAWnD,IAAW,EAAIC,KAAY,GACtCmD,GAAWlD,IAAW,EAAIC,KAAY,GACtCkD,GAAWlD,IAAW,EAAID,KAAY,GACtCoD,GAAUlD,IAAW,GAAKC,KAAY,GACtCkD,GAAUlD,IAAW,GAAKD,KAAY,GAG5C7yO,EAAE,GAAK+yO,IAAWY,GAASY,GAC3Bv0O,EAAE,GAAKgzO,IAAWY,GAASY,GAC3Bx0O,EAAE,IAAM60O,IAAWY,GAAStC,GAC5BnzO,EAAE,IAAM80O,IAAWY,GAAStC,GAC5BpzO,EAAE,IAAMyzO,IAAYY,GAAUY,GAC9Bj1O,EAAE,IAAM0zO,IAAYY,GAAUY,GAC9Bl1O,EAAE,IAAMu1O,IAAYtC,GAAUY,GAC9B7zO,EAAE,IAAMw1O,IAAYtC,GAAUY,GAC9B9zO,EAAE,IAAMm0O,IAAYY,GAAUY,GAC9B31O,EAAE,IAAMo0O,IAAYY,GAAUY,GAC9B51O,EAAE,GAAK2zO,IAAWY,GAASY,GAC3Bn1O,EAAE,GAAK4zO,IAAWY,GAASY,GAC3Bp1O,EAAE,IAAMy1O,IAAWtC,GAASY,GAC5B/zO,EAAE,IAAM01O,IAAWtC,GAASY,GAC5Bh0O,EAAE,IAAMq0O,IAAYY,GAAUY,GAC9B71O,EAAE,IAAMs0O,IAAYY,GAAUY,GAC9B91O,EAAE,IAAMizO,IAAYY,GAAUY,GAC9Bz0O,EAAE,IAAMkzO,IAAYY,GAAUY,GAC9B10O,EAAE,IAAM+0O,IAAYY,GAAUtC,GAC9BrzO,EAAE,IAAMg1O,IAAYY,GAAUtC,GAC9BtzO,EAAE,GAAKu0O,IAAWY,GAASY,GAC3B/1O,EAAE,GAAKw0O,IAAWY,GAASY,GAC3Bh2O,EAAE,IAAMmzO,IAAWY,GAASY,GAC5B30O,EAAE,IAAMozO,IAAWY,GAASY,GAC5B50O,EAAE,IAAMi1O,IAAYY,GAAUtC,GAC9BvzO,EAAE,IAAMk1O,IAAYY,GAAUtC,GAC9BxzO,EAAE,IAAM6zO,IAAYY,GAAUY,GAC9Br1O,EAAE,IAAM8zO,IAAYY,GAAUY,GAC9Bt1O,EAAE,IAAM21O,IAAYtC,GAAUY,GAC9Bj0O,EAAE,IAAM41O,IAAYtC,GAAUY,GAC9Bl0O,EAAE,GAAKm1O,IAAWY,GAAShD,GAC3B/yO,EAAE,GAAKo1O,IAAWY,GAAShD,GAC3BhzO,EAAE,IAAM+zO,IAAWY,GAASE,GAC5B70O,EAAE,IAAMg0O,IAAWY,GAASE,GAC5B90O,EAAE,IAAM61O,IAAYtC,GAAUE,GAC9BzzO,EAAE,IAAM81O,IAAYtC,GAAUE,GAC9B1zO,EAAE,IAAMy0O,IAAYY,GAAUE,GAC9Bv1O,EAAE,IAAM00O,IAAYY,GAAUE,GAC9Bx1O,EAAE,IAAMqzO,IAAYY,GAAUE,GAC9Bn0O,EAAE,IAAMszO,IAAYY,GAAUE,GAC9Bp0O,EAAE,GAAK+1O,IAAWhD,GAASY,GAC3B3zO,EAAE,GAAKg2O,IAAWhD,GAASY,GAC3B5zO,EAAE,IAAM20O,IAAWE,GAASY,GAC5Bz1O,EAAE,IAAM40O,IAAWE,GAASY,GAC5B11O,EAAE,IAAMuzO,IAAYE,GAAUY,GAC9Br0O,EAAE,IAAMwzO,IAAYE,GAAUY,GAC9Bt0O,EAAE,IAAMq1O,IAAYE,GAAUtC,GAC9BjzO,EAAE,IAAMs1O,IAAYE,GAAUtC,GAC9BlzO,EAAE,IAAMi0O,IAAYE,GAAUY,GAC9B/0O,EAAE,IAAMk0O,IAAYE,GAAUY,GAG9Bh1O,EAAE,IAAMivO,EAA8B,EAAR/uL,GAC9BlgD,EAAE,IAAMivO,EAA8B,EAAR/uL,EAAY,kDCvLxC+1L,EAActmO,EAAQ,OAE5B,SAASmnM,IAEPr5M,KAAKwH,MAAQ,CACX,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,GAGdxH,KAAKojG,UAAY,KACjBpjG,KAAK+yC,MAAQ,EACb/yC,KAAKy4O,WAAY,EAGnBp/B,EAAOj4M,UAAUqtH,WAAa,SAAUkiH,EAAMC,GAC5C,IAAK,IAAInyO,EAAI,EAAGA,EAAI,KAAMA,EAAGuB,KAAKwH,MAAM/I,GAAK,EAC7CuB,KAAKojG,UAAYutI,EAAO,EACxB3wO,KAAK+yC,MAAQ,EACb/yC,KAAKy4O,WAAY,GAGnBp/B,EAAOj4M,UAAU+vO,OAAS,SAAU5uN,GAClC,IAAK,IAAI9jB,EAAI,EAAGA,EAAI8jB,EAAK/jB,SAAUC,EACjCuB,KAAKwH,SAASxH,KAAK+yC,MAAQ,KAAOxwB,EAAK9jB,IAAYuB,KAAK+yC,MAAQ,EAAlB,EAC9C/yC,KAAK+yC,OAAS,EACV/yC,KAAK+yC,QAAU/yC,KAAKojG,YACtBo1I,EAAY/G,MAAMzxO,KAAKwH,OACvBxH,KAAK+yC,MAAQ,IAKnBsmK,EAAOj4M,UAAUgwO,kBAAoB,SAAU/kM,GAC7CrsC,KAAKwH,SAASxH,KAAK+yC,MAAQ,KAAO1G,GAAcrsC,KAAK+yC,MAAQ,EAAlB,EACrB,KAAV,IAAP1G,IAAsBrsC,KAAK+yC,QAAW/yC,KAAKojG,UAAY,GAAIo1I,EAAY/G,MAAMzxO,KAAKwH,OACvFxH,KAAKwH,UAAUxH,KAAKojG,UAAY,GAAK,KAAO,MAAepjG,KAAKojG,UAAY,GAAK,EAA5B,EACrDo1I,EAAY/G,MAAMzxO,KAAKwH,OACvBxH,KAAK+yC,MAAQ,EACb/yC,KAAKy4O,WAAY,GAGnBp/B,EAAOj4M,UAAUiwO,QAAU,SAAU7yO,GAC9BwB,KAAKy4O,WAAWz4O,KAAKoxO,kBAAkB,GAG5C,IADA,IAAM5nM,EAAShvB,EAAOqZ,MAAMr1B,GACnBC,EAAI,EAAGA,EAAID,IAAUC,EAC5B+qC,EAAO/qC,GAAMuB,KAAKwH,SAASxH,KAAK+yC,MAAQ,MAAc/yC,KAAK+yC,MAAQ,EAAlB,EAAyB,IAC1E/yC,KAAK+yC,OAAS,EACV/yC,KAAK+yC,QAAU/yC,KAAKojG,YACtBo1I,EAAY/G,MAAMzxO,KAAKwH,OACvBxH,KAAK+yC,MAAQ,GAIjB,OAAOvJ,GAGT6vK,EAAOj4M,UAAU8qC,KAAO,SAAU0K,GAChC,IAAK,IAAIn4C,EAAI,EAAGA,EAAI,KAAMA,EAAGm4C,EAAKpvC,MAAM/I,GAAKuB,KAAKwH,MAAM/I,GACxDm4C,EAAKwsD,UAAYpjG,KAAKojG,UACtBxsD,EAAK7D,MAAQ/yC,KAAK+yC,MAClB6D,EAAK6hM,UAAYz4O,KAAKy4O,WAGxBr6O,EAAOC,QAAUg7M,oCCzDjB,IAGIq/B,EAAiB,4BAOjB51K,EAAmB,iBAGnB61K,EAAU,qBAMVC,EAAU,oBAKVC,EAAY,kBA2BZC,EAAe,8BAGfC,EAAW,mBAGXC,EAAiB,GACrBA,EAxBiB,yBAwBYA,EAvBZ,yBAwBjBA,EAvBc,sBAuBYA,EAtBX,uBAuBfA,EAtBe,uBAsBYA,EArBZ,uBAsBfA,EArBsB,8BAqBYA,EApBlB,wBAqBhBA,EApBgB,yBAoBY,EAC5BA,EAAeL,GAAWK,EAjDX,kBAkDfA,EAhCqB,wBAgCYA,EAhDnB,oBAiDdA,EAhCkB,qBAgCYA,EAhDhB,iBAiDdA,EAhDe,kBAgDYA,EAAeJ,GAC1CI,EA9Ca,gBA8CYA,EA7CT,mBA8ChBA,EAAeH,GAAaG,EA1CZ,mBA2ChBA,EA1Ca,gBA0CYA,EAzCT,mBA0ChBA,EAxCiB,qBAwCY,EAG7B,IAAIC,EAA8B,iBAAV1xG,EAAAA,GAAsBA,EAAAA,GAAUA,EAAAA,EAAO3lI,SAAWA,QAAU2lI,EAAAA,EAGhF2xG,EAA0B,iBAARn6O,MAAoBA,MAAQA,KAAK6C,SAAWA,QAAU7C,KAGxE+Y,EAAOmhO,GAAcC,GAAY/3O,SAAS,cAATA,GAGjCg4O,EAA4C96O,IAAYA,EAAQmkJ,UAAYnkJ,EAG5E+6O,EAAaD,GAA4C/6O,IAAWA,EAAOokJ,UAAYpkJ,EAGvFi7O,EAAgBD,GAAcA,EAAW/6O,UAAY86O,EAGrDG,EAAcD,GAAiBJ,EAAWvmO,QAG1C6mO,EAAY,WACd,IAEE,IAAIlwM,EAAQ+vM,GAAcA,EAAWlnO,SAAWknO,EAAWlnO,QAAQ,QAAQm3B,MAE3E,OAAIA,GAKGiwM,GAAeA,EAAYE,SAAWF,EAAYE,QAAQ,QACjE,MAAO/2O,KAXK,GAeZg3O,EAAmBF,GAAYA,EAASr5D,aAY5C,SAAS//K,EAAM2uE,EAAM+vG,EAAS5+K,GAC5B,OAAQA,EAAKzB,QACX,KAAK,EAAG,OAAOswE,EAAKhsE,KAAK+7K,GACzB,KAAK,EAAG,OAAO/vG,EAAKhsE,KAAK+7K,EAAS5+K,EAAK,IACvC,KAAK,EAAG,OAAO6uE,EAAKhsE,KAAK+7K,EAAS5+K,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAO6uE,EAAKhsE,KAAK+7K,EAAS5+K,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAO6uE,EAAK3uE,MAAM0+K,EAAS5+K,GA8D7B,IAPiB6uE,EAAMttB,EAOnBk4L,EAAa/6O,MAAMyC,UACnBu4O,EAAYx4O,SAASC,UACrBw4O,EAAch4O,OAAOR,UAGrBy4O,EAAa/hO,EAAK,sBAGlBgiO,EAAeH,EAAUn1O,SAGzB8B,EAAiBszO,EAAYtzO,eAG7ByzO,EAAc,WAChB,IAAIC,EAAM,SAAShyM,KAAK6xM,GAAcA,EAAWr0O,MAAQq0O,EAAWr0O,KAAKy0O,UAAY,IACrF,OAAOD,EAAO,iBAAmBA,EAAO,GAFxB,GAUdE,EAAuBN,EAAYp1O,SAGnC21O,EAAmBL,EAAah3O,KAAKlB,QAGrCw4O,EAAahzM,OAAO,IACtB0yM,EAAah3O,KAAKwD,GAAgBmb,QA7KjB,sBA6KuC,QACvDA,QAAQ,yDAA0D,SAAW,KAI5EjH,EAAS6+N,EAAgBvhO,EAAK0C,YAASna,EACvC+B,EAAS0V,EAAK1V,OACd8hC,EAAapsB,EAAKosB,WAClB8H,EAAcxxB,EAASA,EAAOwxB,iBAAc3rC,EAC5Cg6O,GA/CavrK,EA+CUltE,OAAOsB,eA/CXs+C,EA+C2B5/C,OA9CzC,SAASpC,GACd,OAAOsvE,EAAKttB,EAAUhiD,MA8CtB86O,EAAe14O,OAAO2C,OACtBynK,EAAuB4tE,EAAY5tE,qBACnC3mG,EAASq0K,EAAWr0K,OACpBk1K,EAAiBn4O,EAASA,EAAOwE,iBAAcvG,EAE/CwB,EAAkB,WACpB,IACE,IAAIitE,EAAO0rK,GAAU54O,OAAQ,kBAE7B,OADAktE,EAAK,GAAI,GAAI,IACNA,EACP,MAAOrsE,KALW,GASlBg4O,EAAiBjgO,EAASA,EAAO2sB,cAAW9mC,EAC5Cq6O,EAAYhqO,KAAK+nB,IACjBkiN,EAAY5qO,KAAKqX,IAGjBra,EAAMytO,GAAU1iO,EAAM,OACtB8iO,EAAeJ,GAAU54O,OAAQ,UAUjCi5O,EAAc,WAChB,SAASv1O,KACT,OAAO,SAAS0vH,GACd,IAAK10B,GAAS00B,GACZ,MAAO,GAET,GAAIslH,EACF,OAAOA,EAAatlH,GAEtB1vH,EAAOlE,UAAY4zH,EACnB,IAAI1xH,EAAS,IAAIgC,EAEjB,OADAA,EAAOlE,eAAYf,EACZiD,GAZO,GAuBlB,SAASsmG,EAAKvuF,GACZ,IAAIw2B,GAAS,EACTrzC,EAAoB,MAAX6c,EAAkB,EAAIA,EAAQ7c,OAG3C,IADAwB,KAAKob,UACIy2B,EAAQrzC,GAAQ,CACvB,IAAIkL,EAAQ2R,EAAQw2B,GACpB7xC,KAAKiN,IAAIvD,EAAM,GAAIA,EAAM,KA+F7B,SAASoxO,EAAUz/N,GACjB,IAAIw2B,GAAS,EACTrzC,EAAoB,MAAX6c,EAAkB,EAAIA,EAAQ7c,OAG3C,IADAwB,KAAKob,UACIy2B,EAAQrzC,GAAQ,CACvB,IAAIkL,EAAQ2R,EAAQw2B,GACpB7xC,KAAKiN,IAAIvD,EAAM,GAAIA,EAAM,KA4G7B,SAASqxO,EAAS1/N,GAChB,IAAIw2B,GAAS,EACTrzC,EAAoB,MAAX6c,EAAkB,EAAIA,EAAQ7c,OAG3C,IADAwB,KAAKob,UACIy2B,EAAQrzC,GAAQ,CACvB,IAAIkL,EAAQ2R,EAAQw2B,GACpB7xC,KAAKiN,IAAIvD,EAAM,GAAIA,EAAM,KA8F7B,SAASsxO,EAAM3/N,GACb,IAAIkH,EAAOviB,KAAKi7O,SAAW,IAAIH,EAAUz/N,GACzCrb,KAAKsd,KAAOiF,EAAKjF,KAmGnB,SAAS49N,EAAcx7O,EAAO4gK,GAC5B,IAAI66E,EAAQt8O,GAAQa,GAChB07O,GAASD,GAASE,GAAY37O,GAC9B47O,GAAUH,IAAUC,GAASj0M,GAASznC,GACtC67O,GAAUJ,IAAUC,IAAUE,GAAUp7D,GAAaxgL,GACrD87O,EAAcL,GAASC,GAASE,GAAUC,EAC1Cj4O,EAASk4O,EAzjBf,SAAmBh5O,EAAG2vK,GAIpB,IAHA,IAAItgI,GAAS,EACTvuC,EAAS3E,MAAM6D,KAEVqvC,EAAQrvC,GACfc,EAAOuuC,GAASsgI,EAAStgI,GAE3B,OAAOvuC,EAkjBoBm4O,CAAU/7O,EAAMlB,OAAQ66B,QAAU,GACzD76B,EAAS8E,EAAO9E,OAEpB,IAAK,IAAIe,KAAOG,GACT4gK,IAAah6J,EAAexD,KAAKpD,EAAOH,IACvCi8O,IAEQ,UAAPj8O,GAEC+7O,IAAkB,UAAP/7O,GAA0B,UAAPA,IAE9Bg8O,IAAkB,UAAPh8O,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDm8O,GAAQn8O,EAAKf,KAElB8E,EAAOpC,KAAK3B,GAGhB,OAAO+D,EAYT,SAASq4O,GAAiBr2O,EAAQ/F,EAAKG,SACtBW,IAAVX,IAAwBmoD,GAAGviD,EAAO/F,GAAMG,SAC9BW,IAAVX,KAAyBH,KAAO+F,KACnCs2O,GAAgBt2O,EAAQ/F,EAAKG,GAcjC,SAASuhL,GAAY37K,EAAQ/F,EAAKG,GAChC,IAAIm8O,EAAWv2O,EAAO/F,GAChB+G,EAAexD,KAAKwC,EAAQ/F,IAAQsoD,GAAGg0L,EAAUn8O,UACxCW,IAAVX,GAAyBH,KAAO+F,IACnCs2O,GAAgBt2O,EAAQ/F,EAAKG,GAYjC,SAASo8O,GAAa1oL,EAAO7zD,GAE3B,IADA,IAAIf,EAAS40D,EAAM50D,OACZA,KACL,GAAIqpD,GAAGuL,EAAM50D,GAAQ,GAAIe,GACvB,OAAOf,EAGX,OAAQ,EAYV,SAASo9O,GAAgBt2O,EAAQ/F,EAAKG,GACzB,aAAPH,GAAsBsC,EACxBA,EAAeyD,EAAQ/F,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAASG,EACT,UAAY,IAGd4F,EAAO/F,GAAOG,EA3alBkqG,EAAKxoG,UAAUga,MAvEf,WACEpb,KAAKi7O,SAAWL,EAAeA,EAAa,MAAQ,GACpD56O,KAAKsd,KAAO,GAsEdssF,EAAKxoG,UAAL,OAzDA,SAAoB7B,GAClB,IAAI+D,EAAStD,KAAKgN,IAAIzN,WAAeS,KAAKi7O,SAAS17O,GAEnD,OADAS,KAAKsd,MAAQha,EAAS,EAAI,EACnBA,GAuDTsmG,EAAKxoG,UAAUyC,IA3Cf,SAAiBtE,GACf,IAAIgjB,EAAOviB,KAAKi7O,SAChB,GAAIL,EAAc,CAChB,IAAIt3O,EAASif,EAAKhjB,GAClB,OAAO+D,IAAWo1O,OAAiBr4O,EAAYiD,EAEjD,OAAOgD,EAAexD,KAAKyf,EAAMhjB,GAAOgjB,EAAKhjB,QAAOc,GAsCtDupG,EAAKxoG,UAAU4L,IA1Bf,SAAiBzN,GACf,IAAIgjB,EAAOviB,KAAKi7O,SAChB,OAAOL,OAA8Bv6O,IAAdkiB,EAAKhjB,GAAsB+G,EAAexD,KAAKyf,EAAMhjB,IAyB9EqqG,EAAKxoG,UAAU6L,IAZf,SAAiB1N,EAAKG,GACpB,IAAI6iB,EAAOviB,KAAKi7O,SAGhB,OAFAj7O,KAAKsd,MAAQtd,KAAKgN,IAAIzN,GAAO,EAAI,EACjCgjB,EAAKhjB,GAAQq7O,QAA0Bv6O,IAAVX,EAAuBg5O,EAAiBh5O,EAC9DM,MAuHT86O,EAAU15O,UAAUga,MApFpB,WACEpb,KAAKi7O,SAAW,GAChBj7O,KAAKsd,KAAO,GAmFdw9N,EAAU15O,UAAV,OAvEA,SAAyB7B,GACvB,IAAIgjB,EAAOviB,KAAKi7O,SACZppM,EAAQiqM,GAAav5N,EAAMhjB,GAE/B,QAAIsyC,EAAQ,KAIRA,GADYtvB,EAAK/jB,OAAS,EAE5B+jB,EAAKxX,MAELs6D,EAAOviE,KAAKyf,EAAMsvB,EAAO,KAEzB7xC,KAAKsd,MACA,IA0DTw9N,EAAU15O,UAAUyC,IA9CpB,SAAsBtE,GACpB,IAAIgjB,EAAOviB,KAAKi7O,SACZppM,EAAQiqM,GAAav5N,EAAMhjB,GAE/B,OAAOsyC,EAAQ,OAAIxxC,EAAYkiB,EAAKsvB,GAAO,IA2C7CipM,EAAU15O,UAAU4L,IA/BpB,SAAsBzN,GACpB,OAAOu8O,GAAa97O,KAAKi7O,SAAU17O,IAAQ,GA+B7Cu7O,EAAU15O,UAAU6L,IAlBpB,SAAsB1N,EAAKG,GACzB,IAAI6iB,EAAOviB,KAAKi7O,SACZppM,EAAQiqM,GAAav5N,EAAMhjB,GAQ/B,OANIsyC,EAAQ,KACR7xC,KAAKsd,KACPiF,EAAKrhB,KAAK,CAAC3B,EAAKG,KAEhB6iB,EAAKsvB,GAAO,GAAKnyC,EAEZM,MAyGT+6O,EAAS35O,UAAUga,MAtEnB,WACEpb,KAAKsd,KAAO,EACZtd,KAAKi7O,SAAW,CACd,KAAQ,IAAIrxI,EACZ,IAAO,IAAK78F,GAAO+tO,GACnB,OAAU,IAAIlxI,IAkElBmxI,EAAS35O,UAAT,OArDA,SAAwB7B,GACtB,IAAI+D,EAASy4O,GAAW/7O,KAAMT,GAAjB,OAAgCA,GAE7C,OADAS,KAAKsd,MAAQha,EAAS,EAAI,EACnBA,GAmDTy3O,EAAS35O,UAAUyC,IAvCnB,SAAqBtE,GACnB,OAAOw8O,GAAW/7O,KAAMT,GAAKsE,IAAItE,IAuCnCw7O,EAAS35O,UAAU4L,IA3BnB,SAAqBzN,GACnB,OAAOw8O,GAAW/7O,KAAMT,GAAKyN,IAAIzN,IA2BnCw7O,EAAS35O,UAAU6L,IAdnB,SAAqB1N,EAAKG,GACxB,IAAI6iB,EAAOw5N,GAAW/7O,KAAMT,GACxB+d,EAAOiF,EAAKjF,KAIhB,OAFAiF,EAAKtV,IAAI1N,EAAKG,GACdM,KAAKsd,MAAQiF,EAAKjF,MAAQA,EAAO,EAAI,EAC9Btd,MAwGTg7O,EAAM55O,UAAUga,MA3EhB,WACEpb,KAAKi7O,SAAW,IAAIH,EACpB96O,KAAKsd,KAAO,GA0Ed09N,EAAM55O,UAAN,OA9DA,SAAqB7B,GACnB,IAAIgjB,EAAOviB,KAAKi7O,SACZ33O,EAASif,EAAI,OAAWhjB,GAG5B,OADAS,KAAKsd,KAAOiF,EAAKjF,KACVha,GA0DT03O,EAAM55O,UAAUyC,IA9ChB,SAAkBtE,GAChB,OAAOS,KAAKi7O,SAASp3O,IAAItE,IA8C3By7O,EAAM55O,UAAU4L,IAlChB,SAAkBzN,GAChB,OAAOS,KAAKi7O,SAASjuO,IAAIzN,IAkC3By7O,EAAM55O,UAAU6L,IArBhB,SAAkB1N,EAAKG,GACrB,IAAI6iB,EAAOviB,KAAKi7O,SAChB,GAAI14N,aAAgBu4N,EAAW,CAC7B,IAAIkB,EAAQz5N,EAAK04N,SACjB,IAAKluO,GAAQivO,EAAMx9O,OAASy9O,IAG1B,OAFAD,EAAM96O,KAAK,CAAC3B,EAAKG,IACjBM,KAAKsd,OAASiF,EAAKjF,KACZtd,KAETuiB,EAAOviB,KAAKi7O,SAAW,IAAIF,EAASiB,GAItC,OAFAz5N,EAAKtV,IAAI1N,EAAKG,GACdM,KAAKsd,KAAOiF,EAAKjF,KACVtd,MAkIT,IAsWuBk8O,GAtWnBC,GAuWK,SAAS72O,EAAQ6sK,EAAUiqE,GAMhC,IALA,IAAIvqM,GAAS,EACT1nC,EAAWvI,OAAO0D,GAClB/D,EAAQ66O,EAAS92O,GACjB9G,EAAS+C,EAAM/C,OAEZA,KAAU,CACf,IAAIe,EAAMgC,EAAM26O,GAAY19O,IAAWqzC,GACvC,IAA+C,IAA3CsgI,EAAShoK,EAAS5K,GAAMA,EAAK4K,GAC/B,MAGJ,OAAO7E,GA1WX,SAAS+2O,GAAW38O,GAClB,OAAa,MAATA,OACeW,IAAVX,EA7xBQ,qBANL,gBAqyBJ66O,GAAkBA,KAAkB34O,OAAOlC,GA6YrD,SAAmBA,GACjB,IAAIymO,EAAQ7/N,EAAexD,KAAKpD,EAAO66O,GACnCr8I,EAAMx+F,EAAM66O,GAEhB,IACE76O,EAAM66O,QAAkBl6O,EACxB,IAAIi8O,GAAW,EACf,MAAO75O,IAET,IAAIa,EAAS42O,EAAqBp3O,KAAKpD,GACnC48O,IACEnW,EACFzmO,EAAM66O,GAAkBr8I,SAEjBx+F,EAAM66O,IAGjB,OAAOj3O,EA7ZHi5O,CAAU78O,GAwhBhB,SAAwBA,GACtB,OAAOw6O,EAAqBp3O,KAAKpD,GAxhB7BusK,CAAevsK,GAUrB,SAAS88O,GAAgB98O,GACvB,OAAO+8O,GAAa/8O,IAAU28O,GAAW38O,IAAUi5O,EAWrD,SAAS+D,GAAah9O,GACpB,SAAK4gG,GAAS5gG,IAodhB,SAAkBovE,GAChB,QAASirK,GAAeA,KAAcjrK,EArdd6tK,CAASj9O,MAGnBqhL,GAAWrhL,GAAS06O,EAAatB,GAChCnsO,KAgmBjB,SAAkBmiE,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOgrK,EAAah3O,KAAKgsE,GACzB,MAAOrsE,IACT,IACE,OAAQqsE,EAAO,GACf,MAAOrsE,KAEX,MAAO,GAzmBam6O,CAASl9O,IAsB/B,SAASm9O,GAAWv3O,GAClB,IAAKg7F,GAASh7F,GACZ,OAmdJ,SAAsBA,GACpB,IAAIhC,EAAS,GACb,GAAc,MAAVgC,EACF,IAAK,IAAI/F,KAAOqC,OAAO0D,GACrBhC,EAAOpC,KAAK3B,GAGhB,OAAO+D,EA1dEw5O,CAAax3O,GAEtB,IAAIy3O,EAAUC,GAAY13O,GACtBhC,EAAS,GAEb,IAAK,IAAI/D,KAAO+F,GACD,eAAP/F,IAAyBw9O,GAAYz2O,EAAexD,KAAKwC,EAAQ/F,KACrE+D,EAAOpC,KAAK3B,GAGhB,OAAO+D,EAcT,SAAS25O,GAAU33O,EAAQO,EAAQq3O,EAAUC,EAAY1xL,GACnDnmD,IAAWO,GAGfs2O,GAAQt2O,GAAQ,SAASu3O,EAAU79O,GAEjC,GADAksD,IAAUA,EAAQ,IAAIuvL,GAClB16I,GAAS88I,IA+BjB,SAAuB93O,EAAQO,EAAQtG,EAAK29O,EAAUG,EAAWF,EAAY1xL,GAC3E,IAAIowL,EAAWyB,GAAQh4O,EAAQ/F,GAC3B69O,EAAWE,GAAQz3O,EAAQtG,GAC3Bg+O,EAAU9xL,EAAM5nD,IAAIu5O,GAExB,GAAIG,EAEF,YADA5B,GAAiBr2O,EAAQ/F,EAAKg+O,GAGhC,IAAIvhN,EAAWmhN,EACXA,EAAWtB,EAAUuB,EAAW79O,EAAM,GAAK+F,EAAQO,EAAQ4lD,QAC3DprD,EAEAm9O,OAAwBn9O,IAAb27B,EAEf,GAAIwhN,EAAU,CACZ,IAAIrC,EAAQt8O,GAAQu+O,GAChB9B,GAAUH,GAASh0M,GAASi2M,GAC5BK,GAAWtC,IAAUG,GAAUp7D,GAAak9D,GAEhDphN,EAAWohN,EACPjC,GAASG,GAAUmC,EACjB5+O,GAAQg9O,GACV7/M,EAAW6/M,EA2oBVY,GADkB/8O,EAxoBMm8O,IAyoBD6B,GAAYh+O,GAxoBpCs8B,EAsHR,SAAmBn2B,EAAQutD,GACzB,IAAIvhB,GAAS,EACTrzC,EAASqH,EAAOrH,OAEpB40D,IAAUA,EAAQz0D,MAAMH,IACxB,OAASqzC,EAAQrzC,GACf40D,EAAMvhB,GAAShsC,EAAOgsC,GAExB,OAAOuhB,EA9HUuqL,CAAU9B,GAEdP,GACPkC,GAAW,EACXxhN,EAqER,SAAqBsR,EAAQswM,GAC3B,GAAIA,EACF,OAAOtwM,EAAOniC,QAEhB,IAAI3M,EAAS8uC,EAAO9uC,OAChB8E,EAAS0oC,EAAcA,EAAYxtC,GAAU,IAAI8uC,EAAO7pC,YAAYjF,GAGxE,OADA8uC,EAAOpB,KAAK5oC,GACLA,EA7EUu6O,CAAYT,GAAU,IAE1BK,GACPD,GAAW,EACXxhN,EAiGR,SAAyB8vM,EAAY8R,GACnC,IAAItwM,EAASswM,EAff,SAA0B5jC,GACxB,IAAI12M,EAAS,IAAI02M,EAAYv2M,YAAYu2M,EAAYn1K,YAErD,OADA,IAAIX,EAAW5gC,GAAQ2J,IAAI,IAAIi3B,EAAW81K,IACnC12M,EAYew6O,CAAiBhS,EAAWx+L,QAAUw+L,EAAWx+L,OACvE,OAAO,IAAIw+L,EAAWroO,YAAY6pC,EAAQw+L,EAAW/yI,WAAY+yI,EAAWttO,QAnG3Du/O,CAAgBX,GAAU,IAGrCphN,EAAW,GAmyBnB,SAAuBt8B,GACrB,IAAK+8O,GAAa/8O,IAAU28O,GAAW38O,IAAUm5O,EAC/C,OAAO,EAET,IAAI7jH,EAAQqlH,EAAa36O,GACzB,GAAc,OAAVs1H,EACF,OAAO,EAET,IAAIgpH,EAAO13O,EAAexD,KAAKkyH,EAAO,gBAAkBA,EAAMvxH,YAC9D,MAAsB,mBAARu6O,GAAsBA,aAAgBA,GAClDlE,EAAah3O,KAAKk7O,IAAS7D,EA1yBlBp9D,CAAcqgE,IAAa/B,GAAY+B,IAC9CphN,EAAW6/M,EACPR,GAAYQ,GACd7/M,EAq1BR,SAAuBt8B,GACrB,OA5tBF,SAAoBmG,EAAQtE,EAAO+D,EAAQ63O,GACzC,IAAI58F,GAASj7I,EACbA,IAAWA,EAAS,IAEpB,IAAIusC,GAAS,EACTrzC,EAAS+C,EAAM/C,OAEnB,OAASqzC,EAAQrzC,GAAQ,CACvB,IAAIe,EAAMgC,EAAMswC,GAEZ7V,EAAWmhN,EACXA,EAAW73O,EAAO/F,GAAMsG,EAAOtG,GAAMA,EAAK+F,EAAQO,QAClDxF,OAEaA,IAAb27B,IACFA,EAAWn2B,EAAOtG,IAEhBghJ,EACFq7F,GAAgBt2O,EAAQ/F,EAAKy8B,GAE7BilJ,GAAY37K,EAAQ/F,EAAKy8B,GAG7B,OAAO12B,EAqsBA24O,CAAWv+O,EAAOw+O,GAAOx+O,IAt1Bfy+O,CAActC,GAEjBv7I,GAASu7I,KAAa96D,GAAW86D,KACzC7/M,EAwQR,SAAyB12B,GACvB,MAAqC,mBAAtBA,EAAO7B,aAA8Bu5O,GAAY13O,GAE5D,GADAu1O,EAAWR,EAAa/0O,IA1QX84O,CAAgBhB,KAI7BI,GAAW,EA+mBjB,IAA2B99O,EA5mBrB89O,IAEF/xL,EAAMx+C,IAAImwO,EAAUphN,GACpBqhN,EAAUrhN,EAAUohN,EAAUF,EAAUC,EAAY1xL,GACpDA,EAAK,OAAW2xL,IAElBzB,GAAiBr2O,EAAQ/F,EAAKy8B,GAzF1BqiN,CAAc/4O,EAAQO,EAAQtG,EAAK29O,EAAUD,GAAWE,EAAY1xL,OAEjE,CACH,IAAIzvB,EAAWmhN,EACXA,EAAWG,GAAQh4O,EAAQ/F,GAAM69O,EAAW79O,EAAM,GAAK+F,EAAQO,EAAQ4lD,QACvEprD,OAEaA,IAAb27B,IACFA,EAAWohN,GAEbzB,GAAiBr2O,EAAQ/F,EAAKy8B,MAE/BkiN,IAwFL,SAASI,GAASxvK,EAAMxnC,GACtB,OAAOi3M,GA6WT,SAAkBzvK,EAAMxnC,EAAOka,GAE7B,OADAla,EAAQozM,OAAoBr6O,IAAVinC,EAAuBwnC,EAAKtwE,OAAS,EAAK8oC,EAAO,GAC5D,WAML,IALA,IAAIrnC,EAAOC,UACP2xC,GAAS,EACTrzC,EAASk8O,EAAUz6O,EAAKzB,OAAS8oC,EAAO,GACxC8rB,EAAQz0D,MAAMH,KAETqzC,EAAQrzC,GACf40D,EAAMvhB,GAAS5xC,EAAKqnC,EAAQuK,GAE9BA,GAAS,EAET,IADA,IAAI2sM,EAAY7/O,MAAM2oC,EAAQ,KACrBuK,EAAQvK,GACfk3M,EAAU3sM,GAAS5xC,EAAK4xC,GAG1B,OADA2sM,EAAUl3M,GAASka,EAAU4R,GACtBjzD,EAAM2uE,EAAM9uE,KAAMw+O,IA9XRC,CAAS3vK,EAAMxnC,EAAOo3M,IAAW5vK,EAAO,IAW7D,IAAI6vK,GAAmB98O,EAA4B,SAASitE,EAAMv9D,GAChE,OAAO1P,EAAeitE,EAAM,WAAY,CACtC,cAAgB,EAChB,YAAc,EACd,OA+3BcpvE,EA/3BI6R,EAg4Bb,WACL,OAAO7R,IAh4BP,UAAY,IA83BhB,IAAkBA,GAn4BsBg/O,GA8KxC,SAAS3C,GAAWzgO,EAAK/b,GACvB,IAAIgjB,EAAOjH,EAAI2/N,SACf,OA2GF,SAAmBv7O,GACjB,IAAI4I,SAAc5I,EAClB,MAAgB,UAAR4I,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAV5I,EACU,OAAVA,EA/GEk/O,CAAUr/O,GACbgjB,EAAmB,iBAAPhjB,EAAkB,SAAW,QACzCgjB,EAAKjH,IAWX,SAASk/N,GAAUl1O,EAAQ/F,GACzB,IAAIG,EAnhCN,SAAkB4F,EAAQ/F,GACxB,OAAiB,MAAV+F,OAAiBjF,EAAYiF,EAAO/F,GAkhC/Bs/O,CAASv5O,EAAQ/F,GAC7B,OAAOm9O,GAAah9O,GAASA,OAAQW,EAmDvC,SAASq7O,GAAQh8O,EAAOlB,GACtB,IAAI8J,SAAc5I,EAGlB,SAFAlB,EAAmB,MAAVA,EAAiBskE,EAAmBtkE,KAGlC,UAAR8J,GACU,UAARA,GAAoBywO,EAASpsO,KAAKjN,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQlB,EA2DjD,SAASw+O,GAAYt9O,GACnB,IAAIs+O,EAAOt+O,GAASA,EAAM+D,YAG1B,OAAO/D,KAFqB,mBAARs+O,GAAsBA,EAAK58O,WAAcw4O,GAyE/D,SAAS0D,GAAQh4O,EAAQ/F,GACvB,IAAY,gBAARA,GAAgD,oBAAhB+F,EAAO/F,KAIhC,aAAPA,EAIJ,OAAO+F,EAAO/F,GAWhB,IAAIg/O,GAWJ,SAAkBzvK,GAChB,IAAI/7B,EAAQ,EACR+rM,EAAa,EAEjB,OAAO,WACL,IAAIC,EAAQpE,IACRhnH,EA75CO,IA65CiBorH,EAAQD,GAGpC,GADAA,EAAaC,EACTprH,EAAY,GACd,KAAM5gF,GAl6CI,IAm6CR,OAAO7yC,UAAU,QAGnB6yC,EAAQ,EAEV,OAAO+7B,EAAK3uE,WAAME,EAAWH,YA3Bf8+O,CAASL,IAkF3B,SAAS92L,GAAGnoD,EAAOk0E,GACjB,OAAOl0E,IAAUk0E,GAAUl0E,IAAUA,GAASk0E,IAAUA,EAqB1D,IAAIynK,GAAcmB,GAAgB,WAAa,OAAOt8O,UAApB,IAAsCs8O,GAAkB,SAAS98O,GACjG,OAAO+8O,GAAa/8O,IAAU4G,EAAexD,KAAKpD,EAAO,YACtDssK,EAAqBlpK,KAAKpD,EAAO,WA0BlCb,GAAUF,MAAME,QA2BpB,SAAS6+O,GAAYh+O,GACnB,OAAgB,MAATA,GAAiBu/O,GAASv/O,EAAMlB,UAAYuiL,GAAWrhL,GAiDhE,IAAIynC,GAAWszM,GAsUf,WACE,OAAO,GApTT,SAAS15D,GAAWrhL,GAClB,IAAK4gG,GAAS5gG,GACZ,OAAO,EAIT,IAAIw+F,EAAMm+I,GAAW38O,GACrB,OAAOw+F,GAAO06I,GA1mDH,8BA0mDc16I,GA/mDZ,0BA+mD6BA,GArmD7B,kBAqmDgDA,EA6B/D,SAAS+gJ,GAASv/O,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAASojE,EA4B7C,SAASw9B,GAAS5gG,GAChB,IAAI4I,SAAc5I,EAClB,OAAgB,MAATA,IAA0B,UAAR4I,GAA4B,YAARA,GA2B/C,SAASm0O,GAAa/8O,GACpB,OAAgB,MAATA,GAAiC,iBAATA,EA6DjC,IAAIwgL,GAAeu5D,EAvnDnB,SAAmB3qK,GACjB,OAAO,SAASpvE,GACd,OAAOovE,EAAKpvE,IAqnDsBw/O,CAAUzF,GAj7BhD,SAA0B/5O,GACxB,OAAO+8O,GAAa/8O,IAClBu/O,GAASv/O,EAAMlB,WAAaw6O,EAAeqD,GAAW38O,KAo+B1D,SAASw+O,GAAO54O,GACd,OAAOo4O,GAAYp4O,GAAU41O,EAAc51O,GAAQ,GAAQu3O,GAAWv3O,GAkCxE,IAxvBwB65O,GAwvBpBnuL,IAxvBoBmuL,GAwvBG,SAAS75O,EAAQO,EAAQq3O,GAClDD,GAAU33O,EAAQO,EAAQq3O,IAxvBnBoB,IAAS,SAASh5O,EAAQ85O,GAC/B,IAAIvtM,GAAS,EACTrzC,EAAS4gP,EAAQ5gP,OACjB2+O,EAAa3+O,EAAS,EAAI4gP,EAAQ5gP,EAAS,QAAK6B,EAChDg/O,EAAQ7gP,EAAS,EAAI4gP,EAAQ,QAAK/+O,EAWtC,IATA88O,EAAcgC,GAAS3gP,OAAS,GAA0B,mBAAd2+O,GACvC3+O,IAAU2+O,QACX98O,EAEAg/O,GAuIR,SAAwB3/O,EAAOmyC,EAAOvsC,GACpC,IAAKg7F,GAASh7F,GACZ,OAAO,EAET,IAAIgD,SAAcupC,EAClB,SAAY,UAARvpC,EACKo1O,GAAYp4O,IAAWo2O,GAAQ7pM,EAAOvsC,EAAO9G,QACrC,UAAR8J,GAAoBupC,KAASvsC,IAE7BuiD,GAAGviD,EAAOusC,GAAQnyC,GAhJZ4/O,CAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClDlC,EAAa3+O,EAAS,OAAI6B,EAAY88O,EACtC3+O,EAAS,GAEX8G,EAAS1D,OAAO0D,KACPusC,EAAQrzC,GAAQ,CACvB,IAAIqH,EAASu5O,EAAQvtM,GACjBhsC,GACFs5O,GAAS75O,EAAQO,EAAQgsC,EAAOsrM,GAGpC,OAAO73O,MA+wBX,SAASo5O,GAASh/O,GAChB,OAAOA,EAoBTtB,EAAOC,QAAU2yD,0BCx7DjB,IAAIuuL,EAAYrtO,EAAQ,OACpBstO,EAAattO,EAAQ,OACrButO,EAAUvtO,EAAQ,OAClBwtO,EAAUxtO,EAAQ,OAClBytO,EAAUztO,EAAQ,OAStB,SAAS03F,EAAKvuF,GACZ,IAAIw2B,GAAS,EACTrzC,EAAoB,MAAX6c,EAAkB,EAAIA,EAAQ7c,OAG3C,IADAwB,KAAKob,UACIy2B,EAAQrzC,GAAQ,CACvB,IAAIkL,EAAQ2R,EAAQw2B,GACpB7xC,KAAKiN,IAAIvD,EAAM,GAAIA,EAAM,KAK7BkgG,EAAKxoG,UAAUga,MAAQmkO,EACvB31I,EAAKxoG,UAAL,OAA2Bo+O,EAC3B51I,EAAKxoG,UAAUyC,IAAM47O,EACrB71I,EAAKxoG,UAAU4L,IAAM0yO,EACrB91I,EAAKxoG,UAAU6L,IAAM0yO,EAErBvhP,EAAOC,QAAUurG,yBC/BjB,IAAIg2I,EAAiB1tO,EAAQ,OACzB2tO,EAAkB3tO,EAAQ,MAC1B4tO,EAAe5tO,EAAQ,OACvB6tO,EAAe7tO,EAAQ,OACvB8tO,EAAe9tO,EAAQ,OAS3B,SAAS4oO,EAAUz/N,GACjB,IAAIw2B,GAAS,EACTrzC,EAAoB,MAAX6c,EAAkB,EAAIA,EAAQ7c,OAG3C,IADAwB,KAAKob,UACIy2B,EAAQrzC,GAAQ,CACvB,IAAIkL,EAAQ2R,EAAQw2B,GACpB7xC,KAAKiN,IAAIvD,EAAM,GAAIA,EAAM,KAK7BoxO,EAAU15O,UAAUga,MAAQwkO,EAC5B9E,EAAU15O,UAAV,OAAgCy+O,EAChC/E,EAAU15O,UAAUyC,IAAMi8O,EAC1BhF,EAAU15O,UAAU4L,IAAM+yO,EAC1BjF,EAAU15O,UAAU6L,IAAM+yO,EAE1B5hP,EAAOC,QAAUy8O,yBC/BjB,IAII/tO,EAJYmF,EAAQ,MAIdsoO,CAHCtoO,EAAQ,OAGO,OAE1B9T,EAAOC,QAAU0O,yBCNjB,IAAIkzO,EAAgB/tO,EAAQ,OACxBguO,EAAiBhuO,EAAQ,MACzBiuO,EAAcjuO,EAAQ,OACtBkuO,EAAcluO,EAAQ,OACtBmuO,EAAcnuO,EAAQ,OAS1B,SAAS6oO,EAAS1/N,GAChB,IAAIw2B,GAAS,EACTrzC,EAAoB,MAAX6c,EAAkB,EAAIA,EAAQ7c,OAG3C,IADAwB,KAAKob,UACIy2B,EAAQrzC,GAAQ,CACvB,IAAIkL,EAAQ2R,EAAQw2B,GACpB7xC,KAAKiN,IAAIvD,EAAM,GAAIA,EAAM,KAK7BqxO,EAAS35O,UAAUga,MAAQ6kO,EAC3BlF,EAAS35O,UAAT,OAA+B8+O,EAC/BnF,EAAS35O,UAAUyC,IAAMs8O,EACzBpF,EAAS35O,UAAU4L,IAAMozO,EACzBrF,EAAS35O,UAAU6L,IAAMozO,EAEzBjiP,EAAOC,QAAU08O,yBC/BjB,IAGI34O,EAHO8P,EAAQ,OAGD9P,OAElBhE,EAAOC,QAAU+D,yBCLjB,IAAIq5O,EAAYvpO,EAAQ,OACpBmpO,EAAcnpO,EAAQ,OACtBrT,EAAUqT,EAAQ,OAClBi1B,EAAWj1B,EAAQ,MACnBwpO,EAAUxpO,EAAQ,OAClBguK,EAAehuK,EAAQ,OAMvB5L,EAHc1E,OAAOR,UAGQkF,eAqCjClI,EAAOC,QA3BP,SAAuBqB,EAAO4gK,GAC5B,IAAI66E,EAAQt8O,EAAQa,GAChB07O,GAASD,GAASE,EAAY37O,GAC9B47O,GAAUH,IAAUC,GAASj0M,EAASznC,GACtC67O,GAAUJ,IAAUC,IAAUE,GAAUp7D,EAAaxgL,GACrD87O,EAAcL,GAASC,GAASE,GAAUC,EAC1Cj4O,EAASk4O,EAAcC,EAAU/7O,EAAMlB,OAAQ66B,QAAU,GACzD76B,EAAS8E,EAAO9E,OAEpB,IAAK,IAAIe,KAAOG,GACT4gK,IAAah6J,EAAexD,KAAKpD,EAAOH,IACvCi8O,IAEQ,UAAPj8O,GAEC+7O,IAAkB,UAAP/7O,GAA0B,UAAPA,IAE9Bg8O,IAAkB,UAAPh8O,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDm8O,EAAQn8O,EAAKf,KAElB8E,EAAOpC,KAAK3B,GAGhB,OAAO+D,0BC7CT,IAAIukD,EAAK31C,EAAQ,OAoBjB9T,EAAOC,QAVP,SAAsB+0D,EAAO7zD,GAE3B,IADA,IAAIf,EAAS40D,EAAM50D,OACZA,KACL,GAAIqpD,EAAGuL,EAAM50D,GAAQ,GAAIe,GACvB,OAAOf,EAGX,OAAQ,0BCjBV,IAAI4D,EAAS8P,EAAQ,OACjBqqO,EAAYrqO,EAAQ,OACpB+5J,EAAiB/5J,EAAQ,OAOzBqoO,EAAiBn4O,EAASA,EAAOwE,iBAAcvG,EAkBnDjC,EAAOC,QATP,SAAoBqB,GAClB,OAAa,MAATA,OACeW,IAAVX,EAdQ,qBADL,gBAiBJ66O,GAAkBA,KAAkB34O,OAAOlC,GAC/C68O,EAAU78O,GACVusK,EAAevsK,0BCxBrB,IAAI28O,EAAanqO,EAAQ,OACrBuqO,EAAevqO,EAAQ,OAgB3B9T,EAAOC,QAJP,SAAyBqB,GACvB,OAAO+8O,EAAa/8O,IAVR,sBAUkB28O,EAAW38O,2BCd3C,IAAIqhL,EAAa7uK,EAAQ,OACrByqO,EAAWzqO,EAAQ,KACnBouF,EAAWpuF,EAAQ,MACnB0qO,EAAW1qO,EAAQ,OASnB4mO,EAAe,8BAGfa,EAAYx4O,SAASC,UACrBw4O,EAAch4O,OAAOR,UAGrB04O,EAAeH,EAAUn1O,SAGzB8B,EAAiBszO,EAAYtzO,eAG7B8zO,EAAahzM,OAAO,IACtB0yM,EAAah3O,KAAKwD,GAAgBmb,QAjBjB,sBAiBuC,QACvDA,QAAQ,yDAA0D,SAAW,KAmBhFrjB,EAAOC,QARP,SAAsBqB,GACpB,SAAK4gG,EAAS5gG,IAAUi9O,EAASj9O,MAGnBqhL,EAAWrhL,GAAS06O,EAAatB,GAChCnsO,KAAKiwO,EAASl9O,4BC3C/B,IAAI28O,EAAanqO,EAAQ,OACrB+sO,EAAW/sO,EAAQ,OACnBuqO,EAAevqO,EAAQ,OA8BvB8mO,EAAiB,GACrBA,EAZiB,yBAYYA,EAXZ,yBAYjBA,EAXc,sBAWYA,EAVX,uBAWfA,EAVe,uBAUYA,EATZ,uBAUfA,EATsB,8BASYA,EARlB,wBAShBA,EARgB,yBAQY,EAC5BA,EAjCc,sBAiCYA,EAhCX,kBAiCfA,EApBqB,wBAoBYA,EAhCnB,oBAiCdA,EApBkB,qBAoBYA,EAhChB,iBAiCdA,EAhCe,kBAgCYA,EA/Bb,qBAgCdA,EA/Ba,gBA+BYA,EA9BT,mBA+BhBA,EA9BgB,mBA8BYA,EA7BZ,mBA8BhBA,EA7Ba,gBA6BYA,EA5BT,mBA6BhBA,EA5BiB,qBA4BY,EAc7B56O,EAAOC,QALP,SAA0BqB,GACxB,OAAO+8O,EAAa/8O,IAClBu/O,EAASv/O,EAAMlB,WAAaw6O,EAAeqD,EAAW38O,4BCxD1D,IAAIs9O,EAAc9qO,EAAQ,OACtBouO,EAAapuO,EAAQ,OAMrB5L,EAHc1E,OAAOR,UAGQkF,eAsBjClI,EAAOC,QAbP,SAAkBiH,GAChB,IAAK03O,EAAY13O,GACf,OAAOg7O,EAAWh7O,GAEpB,IAAIhC,EAAS,GACb,IAAK,IAAI/D,KAAOqC,OAAO0D,GACjBgB,EAAexD,KAAKwC,EAAQ/F,IAAe,eAAPA,GACtC+D,EAAOpC,KAAK3B,GAGhB,OAAO+D,sBCPTlF,EAAOC,QAVP,SAAmBmE,EAAG2vK,GAIpB,IAHA,IAAItgI,GAAS,EACTvuC,EAAS3E,MAAM6D,KAEVqvC,EAAQrvC,GACfc,EAAOuuC,GAASsgI,EAAStgI,GAE3B,OAAOvuC,sBCHTlF,EAAOC,QANP,SAAmBywE,GACjB,OAAO,SAASpvE,GACd,OAAOovE,EAAKpvE,4BCThB,IAGIm6O,EAHO3nO,EAAQ,OAGG,sBAEtB9T,EAAOC,QAAUw7O,yBCJjB,IAAIZ,EAA8B,iBAAV1xG,EAAAA,GAAsBA,EAAAA,GAAUA,EAAAA,EAAO3lI,SAAWA,QAAU2lI,EAAAA,EAEpFnpI,EAAOC,QAAU46O,yBCHjB,IAAI2F,EAAY1sO,EAAQ,OAiBxB9T,EAAOC,QAPP,SAAoBid,EAAK/b,GACvB,IAAIgjB,EAAOjH,EAAI2/N,SACf,OAAO2D,EAAUr/O,GACbgjB,EAAmB,iBAAPhjB,EAAkB,SAAW,QACzCgjB,EAAKjH,4BCdX,IAAIohO,EAAexqO,EAAQ,OACvB2sO,EAAW3sO,EAAQ,OAevB9T,EAAOC,QALP,SAAmBiH,EAAQ/F,GACzB,IAAIG,EAAQm/O,EAASv5O,EAAQ/F,GAC7B,OAAOm9O,EAAah9O,GAASA,OAAQW,0BCbvC,IAAI+B,EAAS8P,EAAQ,OAGjB0nO,EAAch4O,OAAOR,UAGrBkF,EAAiBszO,EAAYtzO,eAO7B4zO,EAAuBN,EAAYp1O,SAGnC+1O,EAAiBn4O,EAASA,EAAOwE,iBAAcvG,EA6BnDjC,EAAOC,QApBP,SAAmBqB,GACjB,IAAIymO,EAAQ7/N,EAAexD,KAAKpD,EAAO66O,GACnCr8I,EAAMx+F,EAAM66O,GAEhB,IACE76O,EAAM66O,QAAkBl6O,EACxB,IAAIi8O,GAAW,EACf,MAAO75O,IAET,IAAIa,EAAS42O,EAAqBp3O,KAAKpD,GAQvC,OAPI48O,IACEnW,EACFzmO,EAAM66O,GAAkBr8I,SAEjBx+F,EAAM66O,IAGVj3O,sBC9BTlF,EAAOC,QAJP,SAAkBiH,EAAQ/F,GACxB,OAAiB,MAAV+F,OAAiBjF,EAAYiF,EAAO/F,2BCT7C,IAAIq7O,EAAe1oO,EAAQ,OAc3B9T,EAAOC,QALP,WACE2B,KAAKi7O,SAAWL,EAAeA,EAAa,MAAQ,GACpD56O,KAAKsd,KAAO,sBCKdlf,EAAOC,QANP,SAAoBkB,GAClB,IAAI+D,EAAStD,KAAKgN,IAAIzN,WAAeS,KAAKi7O,SAAS17O,GAEnD,OADAS,KAAKsd,MAAQha,EAAS,EAAI,EACnBA,0BCbT,IAAIs3O,EAAe1oO,EAAQ,OASvB5L,EAHc1E,OAAOR,UAGQkF,eAoBjClI,EAAOC,QATP,SAAiBkB,GACf,IAAIgjB,EAAOviB,KAAKi7O,SAChB,GAAIL,EAAc,CAChB,IAAIt3O,EAASif,EAAKhjB,GAClB,MArBiB,8BAqBV+D,OAA4BjD,EAAYiD,EAEjD,OAAOgD,EAAexD,KAAKyf,EAAMhjB,GAAOgjB,EAAKhjB,QAAOc,0BC1BtD,IAAIu6O,EAAe1oO,EAAQ,OAMvB5L,EAHc1E,OAAOR,UAGQkF,eAgBjClI,EAAOC,QALP,SAAiBkB,GACf,IAAIgjB,EAAOviB,KAAKi7O,SAChB,OAAOL,OAA8Bv6O,IAAdkiB,EAAKhjB,GAAsB+G,EAAexD,KAAKyf,EAAMhjB,2BCnB9E,IAAIq7O,EAAe1oO,EAAQ,OAsB3B9T,EAAOC,QAPP,SAAiBkB,EAAKG,GACpB,IAAI6iB,EAAOviB,KAAKi7O,SAGhB,OAFAj7O,KAAKsd,MAAQtd,KAAKgN,IAAIzN,GAAO,EAAI,EACjCgjB,EAAKhjB,GAAQq7O,QAA0Bv6O,IAAVX,EAfV,4BAekDA,EAC9DM,yBClBT,IAGI+4O,EAAW,mBAoBf36O,EAAOC,QAVP,SAAiBqB,EAAOlB,GACtB,IAAI8J,SAAc5I,EAGlB,SAFAlB,EAAmB,MAAVA,EAfY,iBAewBA,KAGlC,UAAR8J,GACU,UAARA,GAAoBywO,EAASpsO,KAAKjN,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQlB,sBCPjDJ,EAAOC,QAPP,SAAmBqB,GACjB,IAAI4I,SAAc5I,EAClB,MAAgB,UAAR4I,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAV5I,EACU,OAAVA,wBCXP,IAAIm6O,EAAa3nO,EAAQ,OAGrB6nO,EAAc,WAChB,IAAIC,EAAM,SAAShyM,KAAK6xM,GAAcA,EAAWr0O,MAAQq0O,EAAWr0O,KAAKy0O,UAAY,IACrF,OAAOD,EAAO,iBAAmBA,EAAO,GAFxB,GAgBlB57O,EAAOC,QAJP,SAAkBywE,GAChB,QAASirK,GAAeA,KAAcjrK,sBCfxC,IAAI8qK,EAAch4O,OAAOR,UAgBzBhD,EAAOC,QAPP,SAAqBqB,GACnB,IAAIs+O,EAAOt+O,GAASA,EAAM+D,YAG1B,OAAO/D,KAFqB,mBAARs+O,GAAsBA,EAAK58O,WAAcw4O,uBCA/Dx7O,EAAOC,QALP,WACE2B,KAAKi7O,SAAW,GAChBj7O,KAAKsd,KAAO,yBCTd,IAAIw+N,EAAe5pO,EAAQ,OAMvBmzD,EAHa1mE,MAAMyC,UAGCikE,OA4BxBjnE,EAAOC,QAjBP,SAAyBkB,GACvB,IAAIgjB,EAAOviB,KAAKi7O,SACZppM,EAAQiqM,EAAav5N,EAAMhjB,GAE/B,QAAIsyC,EAAQ,KAIRA,GADYtvB,EAAK/jB,OAAS,EAE5B+jB,EAAKxX,MAELs6D,EAAOviE,KAAKyf,EAAMsvB,EAAO,KAEzB7xC,KAAKsd,MACA,2BC/BT,IAAIw+N,EAAe5pO,EAAQ,OAkB3B9T,EAAOC,QAPP,SAAsBkB,GACpB,IAAIgjB,EAAOviB,KAAKi7O,SACZppM,EAAQiqM,EAAav5N,EAAMhjB,GAE/B,OAAOsyC,EAAQ,OAAIxxC,EAAYkiB,EAAKsvB,GAAO,2BCf7C,IAAIiqM,EAAe5pO,EAAQ,OAe3B9T,EAAOC,QAJP,SAAsBkB,GACpB,OAAOu8O,EAAa97O,KAAKi7O,SAAU17O,IAAQ,0BCZ7C,IAAIu8O,EAAe5pO,EAAQ,OAyB3B9T,EAAOC,QAbP,SAAsBkB,EAAKG,GACzB,IAAI6iB,EAAOviB,KAAKi7O,SACZppM,EAAQiqM,EAAav5N,EAAMhjB,GAQ/B,OANIsyC,EAAQ,KACR7xC,KAAKsd,KACPiF,EAAKrhB,KAAK,CAAC3B,EAAKG,KAEhB6iB,EAAKsvB,GAAO,GAAKnyC,EAEZM,6BCtBT,IAAI4pG,EAAO13F,EAAQ,OACf4oO,EAAY5oO,EAAQ,OACpBnF,EAAMmF,EAAQ,OAkBlB9T,EAAOC,QATP,WACE2B,KAAKsd,KAAO,EACZtd,KAAKi7O,SAAW,CACd,KAAQ,IAAIrxI,EACZ,IAAO,IAAK78F,GAAO+tO,GACnB,OAAU,IAAIlxI,0BChBlB,IAAImyI,EAAa7pO,EAAQ,OAiBzB9T,EAAOC,QANP,SAAwBkB,GACtB,IAAI+D,EAASy4O,EAAW/7O,KAAMT,GAAjB,OAAgCA,GAE7C,OADAS,KAAKsd,MAAQha,EAAS,EAAI,EACnBA,0BCdT,IAAIy4O,EAAa7pO,EAAQ,OAezB9T,EAAOC,QAJP,SAAqBkB,GACnB,OAAOw8O,EAAW/7O,KAAMT,GAAKsE,IAAItE,2BCZnC,IAAIw8O,EAAa7pO,EAAQ,OAezB9T,EAAOC,QAJP,SAAqBkB,GACnB,OAAOw8O,EAAW/7O,KAAMT,GAAKyN,IAAIzN,2BCZnC,IAAIw8O,EAAa7pO,EAAQ,OAqBzB9T,EAAOC,QATP,SAAqBkB,EAAKG,GACxB,IAAI6iB,EAAOw5N,EAAW/7O,KAAMT,GACxB+d,EAAOiF,EAAKjF,KAIhB,OAFAiF,EAAKtV,IAAI1N,EAAKG,GACdM,KAAKsd,MAAQiF,EAAKjF,MAAQA,EAAO,EAAI,EAC9Btd,6BClBT,IAGI46O,EAHY1oO,EAAQ,MAGLsoO,CAAU54O,OAAQ,UAErCxD,EAAOC,QAAUu8O,yBCLjB,IAGI0F,EAHUpuO,EAAQ,MAGLquO,CAAQ3+O,OAAO4D,KAAM5D,QAEtCxD,EAAOC,QAAUiiP,oCCLjB,IAAIrH,EAAa/mO,EAAQ,OAGrBinO,EAA4C96O,IAAYA,EAAQmkJ,UAAYnkJ,EAG5E+6O,EAAaD,GAA4C/6O,IAAWA,EAAOokJ,UAAYpkJ,EAMvFk7O,EAHgBF,GAAcA,EAAW/6O,UAAY86O,GAGtBF,EAAWvmO,QAG1C6mO,EAAY,WACd,IAEE,IAAIlwM,EAAQ+vM,GAAcA,EAAWlnO,SAAWknO,EAAWlnO,QAAQ,QAAQm3B,MAE3E,OAAIA,GAKGiwM,GAAeA,EAAYE,SAAWF,EAAYE,QAAQ,QACjE,MAAO/2O,KAXK,GAchBrE,EAAOC,QAAUk7O,qBC5BjB,IAOIW,EAPct4O,OAAOR,UAOcoD,SAavCpG,EAAOC,QAJP,SAAwBqB,GACtB,OAAOw6O,EAAqBp3O,KAAKpD,uBCJnCtB,EAAOC,QANP,SAAiBywE,EAAMttB,GACrB,OAAO,SAAShiD,GACd,OAAOsvE,EAAKttB,EAAUhiD,6BCV1B,IAAIy5O,EAAa/mO,EAAQ,OAGrBgnO,EAA0B,iBAARn6O,MAAoBA,MAAQA,KAAK6C,SAAWA,QAAU7C,KAGxE+Y,EAAOmhO,GAAcC,GAAY/3O,SAAS,cAATA,GAErC/C,EAAOC,QAAUyZ,qBCPjB,IAGIgiO,EAHY34O,SAASC,UAGIoD,SAqB7BpG,EAAOC,QAZP,SAAkBywE,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOgrK,EAAah3O,KAAKgsE,GACzB,MAAOrsE,IACT,IACE,OAAQqsE,EAAO,GACf,MAAOrsE,KAEX,MAAO,uBCcTrE,EAAOC,QAJP,SAAYqB,EAAOk0E,GACjB,OAAOl0E,IAAUk0E,GAAUl0E,IAAUA,GAASk0E,IAAUA,0BCjC1D,IAAI4oK,EAAkBtqO,EAAQ,MAC1BuqO,EAAevqO,EAAQ,OAGvB0nO,EAAch4O,OAAOR,UAGrBkF,EAAiBszO,EAAYtzO,eAG7B0lK,EAAuB4tE,EAAY5tE,qBAoBnCqvE,EAAcmB,EAAgB,WAAa,OAAOt8O,UAApB,IAAsCs8O,EAAkB,SAAS98O,GACjG,OAAO+8O,EAAa/8O,IAAU4G,EAAexD,KAAKpD,EAAO,YACtDssK,EAAqBlpK,KAAKpD,EAAO,WAGtCtB,EAAOC,QAAUg9O,qBCZjB,IAAIx8O,EAAUF,MAAME,QAEpBT,EAAOC,QAAUQ,yBCzBjB,IAAIkiL,EAAa7uK,EAAQ,OACrB+sO,EAAW/sO,EAAQ,OA+BvB9T,EAAOC,QAJP,SAAqBqB,GACnB,OAAgB,MAATA,GAAiBu/O,EAASv/O,EAAMlB,UAAYuiL,EAAWrhL,qCC7BhE,IAAIoY,EAAO5F,EAAQ,OACfsuO,EAAYtuO,EAAQ,OAGpBinO,EAA4C96O,IAAYA,EAAQmkJ,UAAYnkJ,EAG5E+6O,EAAaD,GAA4C/6O,IAAWA,EAAOokJ,UAAYpkJ,EAMvFoc,EAHgB4+N,GAAcA,EAAW/6O,UAAY86O,EAG5BrhO,EAAK0C,YAASna,EAsBvC8mC,GAnBiB3sB,EAASA,EAAO2sB,cAAW9mC,IAmBfmgP,EAEjCpiP,EAAOC,QAAU8oC,yBCrCjB,IAAIk1M,EAAanqO,EAAQ,OACrBouF,EAAWpuF,EAAQ,MAmCvB9T,EAAOC,QAVP,SAAoBqB,GAClB,IAAK4gG,EAAS5gG,GACZ,OAAO,EAIT,IAAIw+F,EAAMm+I,EAAW38O,GACrB,MA5BY,qBA4BLw+F,GA3BI,8BA2BcA,GA7BZ,0BA6B6BA,GA1B7B,kBA0BgDA,sBCC/D9/F,EAAOC,QALP,SAAkBqB,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GA9Bb,oCC6BvBtB,EAAOC,QALP,SAAkBqB,GAChB,IAAI4I,SAAc5I,EAClB,OAAgB,MAATA,IAA0B,UAAR4I,GAA4B,YAARA,uBCC/ClK,EAAOC,QAJP,SAAsBqB,GACpB,OAAgB,MAATA,GAAiC,iBAATA,0BCzBjC,IAAI+gP,EAAmBvuO,EAAQ,OAC3BgtO,EAAYhtO,EAAQ,OACpBqnO,EAAWrnO,EAAQ,OAGnBunO,EAAmBF,GAAYA,EAASr5D,aAmBxCA,EAAeu5D,EAAmByF,EAAUzF,GAAoBgH,EAEpEriP,EAAOC,QAAU6hL,yBC1BjB,IAAIg7D,EAAgBhpO,EAAQ,OACxBwuO,EAAWxuO,EAAQ,OACnBwrO,EAAcxrO,EAAQ,OAkC1B9T,EAAOC,QAJP,SAAciH,GACZ,OAAOo4O,EAAYp4O,GAAU41O,EAAc51O,GAAUo7O,EAASp7O,2BCjChE,IAAIy1O,EAAW7oO,EAAQ,OAiDvB,SAASyuO,EAAQ7xK,EAAM8mJ,GACrB,GAAmB,mBAAR9mJ,GAAmC,MAAZ8mJ,GAAuC,mBAAZA,EAC3D,MAAM,IAAIp1N,UAhDQ,uBAkDpB,IAAIogP,EAAW,SAAXA,IACF,IAAI3gP,EAAOC,UACPX,EAAMq2N,EAAWA,EAASz1N,MAAMH,KAAMC,GAAQA,EAAK,GACnD+iE,EAAQ49K,EAAS59K,MAErB,GAAIA,EAAMh2D,IAAIzN,GACZ,OAAOyjE,EAAMn/D,IAAItE,GAEnB,IAAI+D,EAASwrE,EAAK3uE,MAAMH,KAAMC,GAE9B,OADA2gP,EAAS59K,MAAQA,EAAM/1D,IAAI1N,EAAK+D,IAAW0/D,EACpC1/D,GAGT,OADAs9O,EAAS59K,MAAQ,IAAK29K,EAAQE,OAAS9F,GAChC6F,EAITD,EAAQE,MAAQ9F,EAEhB38O,EAAOC,QAAUsiP,qBCxDjBviP,EAAOC,QAJP,gCCKAD,EAAOC,QAJP,WACE,OAAO,0BCdT,SAMC,SAAUyZ,EAAMgpO,GACb,aAEIj6O,EAMA,WAIJ,IAAI2yB,EAAO,aACPunN,EAAgB,YAChBC,SAAepqO,SAAWmqO,UAA0BnqO,OAAOpF,YAAcuvO,GACzE,kBAAkBp0O,KAAKiK,OAAOpF,UAAUkwB,WAGxCu/M,EAAa,CACb,QACA,QACA,OACA,OACA,SAIJ,SAASC,EAAWx9O,EAAK4yF,GACrB,IAAI7uF,EAAS/D,EAAI4yF,GACjB,GAA2B,oBAAhB7uF,EAAOzG,KACd,OAAOyG,EAAOzG,KAAK0C,GAEnB,IACI,OAAOvC,SAASC,UAAUJ,KAAK8B,KAAK2E,EAAQ/D,GAC9C,MAAOjB,GAEL,OAAO,WACH,OAAOtB,SAASC,UAAUjB,MAAMA,MAAMsH,EAAQ,CAAC/D,EAAKxD,cAOpE,SAASihP,IACD5pN,QAAQtjB,MACJsjB,QAAQtjB,IAAI9T,MACZo3B,QAAQtjB,IAAI9T,MAAMo3B,QAASr3B,WAG3BiB,SAASC,UAAUjB,MAAMA,MAAMo3B,QAAQtjB,IAAK,CAACsjB,QAASr3B,aAG1Dq3B,QAAQ6pN,OAAO7pN,QAAQ6pN,QAK/B,SAASC,EAAW/qJ,GAKhB,MAJmB,UAAfA,IACAA,EAAa,cAGN/+D,UAAYwpN,IAEG,UAAfzqJ,GAA0B0qJ,EAC1BG,OACwB9gP,IAAxBk3B,QAAQ++D,GACR4qJ,EAAW3pN,QAAS++D,QACJj2F,IAAhBk3B,QAAQtjB,IACRitO,EAAW3pN,QAAS,OAEpBiC,GAMf,SAAS8nN,EAAsBhrK,EAAOirK,GAElC,IAAK,IAAI9iP,EAAI,EAAGA,EAAIwiP,EAAWziP,OAAQC,IAAK,CACxC,IAAI63F,EAAa2qJ,EAAWxiP,GAC5BuB,KAAKs2F,GAAe73F,EAAI63E,EACpB98C,EACAx5B,KAAKwhP,cAAclrJ,EAAYhgB,EAAOirK,GAI9CvhP,KAAKiU,IAAMjU,KAAK21E,MAKpB,SAAS8rK,EAAgCnrJ,EAAYhgB,EAAOirK,GACxD,OAAO,kBACQhqN,UAAYwpN,IACnBO,EAAsBx+O,KAAK9C,KAAMs2E,EAAOirK,GACxCvhP,KAAKs2F,GAAYn2F,MAAMH,KAAME,aAOzC,SAASwhP,EAAqBprJ,EAAYhgB,EAAOirK,GAE7C,OAAOF,EAAW/qJ,IACXmrJ,EAAgCthP,MAAMH,KAAME,WAGvD,SAASopE,EAAO5+D,EAAMi3O,EAAc97F,GAClC,IACI+7F,EADA7iP,EAAOiB,KAEX2hP,EAA+B,MAAhBA,EAAuB,OAASA,EAE/C,IAAIv3J,EAAa,WAOjB,SAASy3J,EAAuBC,GAC5B,IAAIC,GAAad,EAAWa,IAAa,UAAUzuL,cAEnD,UAAWz8C,SAAWmqO,GAAkB32J,EAAxC,CAGA,IAEI,YADAxzE,OAAOkR,aAAasiE,GAAc23J,GAEpC,MAAOhxK,IAGT,IACIn6D,OAAOyB,SAAS8mK,OACdx9I,mBAAmByoD,GAAc,IAAM23J,EAAY,IACvD,MAAOhxK,MAGb,SAASixK,IACL,IAAIC,EAEJ,UAAWrrO,SAAWmqO,GAAkB32J,EAAxC,CAEA,IACI63J,EAAcrrO,OAAOkR,aAAasiE,GACpC,MAAOrZ,IAGT,UAAWkxK,IAAgBlB,EACvB,IACI,IAAI5hE,EAASvoK,OAAOyB,SAAS8mK,OACzBpgK,EAAWogK,EAAO16K,QAClBk9B,mBAAmByoD,GAAc,MACnB,IAAdrrE,IACAkjO,EAAc,WAAWj6M,KAAKm3I,EAAOh0K,MAAM4T,IAAW,IAE5D,MAAOgyD,IAQb,YAJiC1wE,IAA7BtB,EAAKy3E,OAAOyrK,KACZA,OAAc5hP,GAGX4hP,GAGX,SAASC,IACL,UAAWtrO,SAAWmqO,GAAkB32J,EAAxC,CAGA,IAEI,YADAxzE,OAAOkR,aAAaG,WAAWmiE,GAEjC,MAAOrZ,IAGT,IACIn6D,OAAOyB,SAAS8mK,OACdx9I,mBAAmByoD,GAAc,2CACrC,MAAOrZ,MAlEO,kBAATrmE,EACT0/E,GAAc,IAAM1/E,EACK,kBAATA,IAChB0/E,OAAa/pF,GAwEftB,EAAK2L,KAAOA,EAEZ3L,EAAKy3E,OAAS,CAAE,MAAS,EAAG,MAAS,EAAG,KAAQ,EAAG,KAAQ,EACvD,MAAS,EAAG,OAAU,GAE1Bz3E,EAAKyiP,cAAgB37F,GAAW67F,EAEhC3iP,EAAKojP,SAAW,WACZ,OAAOP,GAGX7iP,EAAKwqI,SAAW,SAAUjzD,EAAOg0E,GAI7B,GAHqB,kBAAVh0E,QAA2Dj2E,IAArCtB,EAAKy3E,OAAOF,EAAMjjB,iBAC/CijB,EAAQv3E,EAAKy3E,OAAOF,EAAMjjB,kBAET,kBAAVijB,GAAsBA,GAAS,GAAKA,GAASv3E,EAAKy3E,OAAO4rK,QAUhE,KAAM,6CAA+C9rK,EAJrD,GALAsrK,EAAetrK,GACC,IAAZg0E,GACAu3F,EAAuBvrK,GAE3BgrK,EAAsBx+O,KAAK/D,EAAMu3E,EAAO5rE,UAC7B6sB,UAAYwpN,GAAiBzqK,EAAQv3E,EAAKy3E,OAAO4rK,OACxD,MAAO,oCAOnBrjP,EAAKsjP,gBAAkB,SAAU/rK,GAC7BqrK,EAAerrK,EACV0rK,KACDjjP,EAAKwqI,SAASjzD,GAAO,IAI7Bv3E,EAAKujP,WAAa,WACdvjP,EAAKwqI,SAASo4G,GAAc,GAC5BO,KAGJnjP,EAAKwjP,UAAY,SAASj4F,GACtBvrJ,EAAKwqI,SAASxqI,EAAKy3E,OAAOgsK,MAAOl4F,IAGrCvrJ,EAAK0jP,WAAa,SAASn4F,GACvBvrJ,EAAKwqI,SAASxqI,EAAKy3E,OAAO4rK,OAAQ93F,IAItC,IAAIo4F,EAAeV,IACC,MAAhBU,IACAA,EAAef,GAEnB5iP,EAAKwqI,SAASm5G,GAAc,GAS9B,IAAIC,EAAgB,IAAIr5K,EAEpBs5K,EAAiB,GACrBD,EAAcE,UAAY,SAAmBn4O,GACzC,GAAqB,kBAATA,GAAqC,kBAATA,GAA+B,KAATA,EAC5D,MAAM,IAAIlK,UAAU,kDAGtB,IAAI6oE,EAASu5K,EAAel4O,GAK5B,OAJK2+D,IACHA,EAASu5K,EAAel4O,GAAQ,IAAI4+D,EAClC5+D,EAAMi4O,EAAcR,WAAYQ,EAAcnB,gBAE3Cn4K,GAIX,IAAIkN,SAAe3/D,SAAWmqO,EAAiBnqO,OAAO3C,SAAM5T,EAiB5D,OAhBAsiP,EAAcG,WAAa,WAMvB,cALWlsO,SAAWmqO,GACfnqO,OAAO3C,MAAQ0uO,IAClB/rO,OAAO3C,IAAMsiE,GAGVosK,GAGXA,EAAcI,WAAa,WACvB,OAAOH,GAIXD,EAAa,QAAcA,EAEpBA,QA9RG,+DAHb,0BCND,IAAIK,EAAK9wO,EAAQ,OACjB8wO,EAAK5hP,UAAU6hP,YAAc,WAC5B,aAKA,IAJA,IAAaC,EAAKC,EAAKC,EACnBC,EAAK,GAEL/kP,EAAI0B,KAAKN,MACLjB,EAAE,EAAEA,EAAEH,EAAIE,OAAOC,IACP,IAAdH,EAAIG,GAAG6J,MAAwB,IAAdhK,EAAIG,GAAG6J,KAC1B+6O,EAAKniP,KAAK,CAACxB,MAAoB,IAAdpB,EAAIG,GAAG6J,KAAShK,EAAIG,GAAG65I,KAAKh6I,EAAIG,GAAGiB,MAAM4I,KAAK,IAE1C,KAAdhK,EAAIG,GAAG6J,KACd+6O,EAAKniP,KAAK,CAACxB,MAAMpB,EAAIG,GAAG65I,KAAKhwI,KAAK,IAEb,IAAdhK,EAAIG,GAAG6J,KACd+6O,EAAKA,EAAK7kP,OAAO,GAAG,CAACkB,MAAMpB,EAAIG,GAAG65I,MAAmB,KAAbh6I,EAAIG,GAAG65I,KAAU,IAAI,IAAI+qG,EAAKA,EAAK7kP,OAAO,GAAGkB,OAAoB,KAAbpB,EAAIG,GAAG65I,KAAU,IAAI,IAAIhwI,KAAK,GAErG,IAAdhK,EAAIG,GAAG6J,KACd+6O,EAAKA,EAAK7kP,OAAO,GAAG,CAACkB,OAAiC,GAA1B2jP,EAAKA,EAAK7kP,OAAO,GAAG8J,KAAQ,IAAI,IAAI+6O,EAAKA,EAAK7kP,OAAO,GAAGkB,OAAiC,GAA1B2jP,EAAKA,EAAK7kP,OAAO,GAAG8J,KAAQ,IAAI,IAAIhK,EAAIG,GAAG65I,KAAKhwI,KAAK,GAE3H,KAAdhK,EAAIG,GAAG6J,MACd46O,EAAKG,EAAKt4O,MACVo4O,EAAKE,EAAKt4O,MACO,MAAdzM,EAAIG,GAAG65I,MAA0B,MAAdh6I,EAAIG,GAAG65I,KAAW+qG,EAAKniP,KAAK,CAACxB,MAAM,QAAQyjP,EAAKzjP,MAAM,SAASpB,EAAIG,GAAG65I,KAAK,QAAQ4qG,EAAKxjP,MAAM,SAAS4I,KAAK,KAC7H+6O,EAAKniP,KAAK,CAACxB,OAAkB,GAAXyjP,EAAK76O,KAAQ,IAAI,IAAI66O,EAAKzjP,OAAkB,GAAXyjP,EAAK76O,KAAQ,IAAI,IAAI,QAAQ46O,EAAKxjP,MAAM,SAAS4I,KAAK,KAEzF,IAAdhK,EAAIG,GAAG6J,MAAwB,IAAdhK,EAAIG,GAAG6J,MAC/B46O,EAAKG,EAAKt4O,MACVo4O,EAAKE,EAAKt4O,MACVs4O,EAAKniP,KAAK,CAACxB,OAAkB,GAAXyjP,EAAK76O,KAAQ,IAAI,IAAI66O,EAAKzjP,OAAkB,GAAXyjP,EAAK76O,KAAQ,IAAI,IAAIhK,EAAIG,GAAG65I,MAAiB,GAAX4qG,EAAK56O,KAAQ,IAAI,IAAI46O,EAAKxjP,OAAkB,GAAXwjP,EAAK56O,KAAQ,IAAI,IAAIA,KAAKhK,EAAIG,GAAG6J,QAElI,KAAdhK,EAAIG,GAAG6J,OACd46O,EAAKG,EAAKt4O,MACVo4O,EAAKE,EAAKt4O,MACVq4O,EAAKC,EAAKt4O,MACVs4O,EAAKniP,KAAK,CAACxB,MAAMpB,EAAIG,GAAG65I,KAAK,IAAI8qG,EAAK1jP,MAAM,IAAIyjP,EAAKzjP,MAAM,IAAIwjP,EAAKxjP,MAAM,IAAI4I,KAAK,MAGrF,OAAO+6O,EAAK,GAAG3jP,OAEhBtB,EAAOC,QAAQ2kP,sCCvCf,IAAIA,EAAO9wO,EAAQ,OACnB,SAAS69B,EAAKzxC,EAAK8P,GACjB,IAAK,IAAI3P,EAAI,EAAGA,EAAIH,EAAIE,OAAQC,IAC9BH,EAAIG,IAAM2P,EAEZ,OAAO9P,EAET,IAAIy7K,EAAQ,CACV,MACA,MACA,MACA,KACA,IACA,IACA,IACA,IACA,IACA,OACA,OACA,OACA,IACA,IACA,IACA,MACA,OACA,QACA,KACA,IACA,OACA,IACA,IACA,IACA,IACA,IACA,OACA,QACA,MACA,IACA,IACA,IACA,IACA,OACA,QACA,IACA,MACA,IACA,IACA,IACA,IACA,IACA,QACA,IACA,KACA,MACA,KAEEzhC,EAAO,CACT,MACA,MACA,MACA,OACA,IACA,IACA,IACA,IACA,IACA,OACA,OACA,OACA,IACA,IACA,IACA,MACA,OACA,QACA,MACA,IACA,OACA,IACA,IACA,IACA,WACA,IACA,OACA,QACA,QACA,IACA,IACA,IACA,UACA,OACA,QACA,IACA,OACA,IACA,IACA,IACA,IACA,IACA,UACA,IACA,OACA,MACA,KAEEgrG,EAAM,CACRN,EAAKO,KAAK1hM,IACVmhM,EAAKO,KAAK7hM,IACVshM,EAAKO,KAAKC,IACV,KACA,IACA,IACAR,EAAKO,KAAK19D,EACVm9D,EAAKO,KAAKr9L,EACV,IAAIu9L,OACJT,EAAKO,KAAKG,KACVV,EAAKO,KAAKI,KACVX,EAAKO,KAAKK,KACV,IACA,IACA,IACAlzO,KAAKC,MACLqyO,EAAKO,KAAKM,KACVb,EAAKO,KAAKO,MACVpzO,KAAKuD,IACLvD,KAAKw4B,IACLx4B,KAAKy4C,KACL,IACA,IACA,IACA65L,EAAKO,KAAKn+L,IACV49L,EAAKO,KAAKQ,KACVf,EAAKO,KAAKS,KACVhB,EAAKO,KAAKU,MACVjB,EAAKO,KAAKnqO,IACV,IACA,IACA,IACA4pO,EAAKO,KA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,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,YAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,KACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,iBAAkB,MAClB,iBAAkB,MAClB,iBAAkB,MAClB,iBAAkB,QAGpB7nE,EAAQslK,MAAQ/hK,OAAOskE,OAAO,CAC5B,EAAK,WAGL,GAAM,OACN,GAAM,WACN,GAAM,WACN,GAAM,eACN,GAAM,WACN,GAAM,WACN,GAAM,WACN,GAAM,WACN,GAAM,YACN,GAAM,YACN,GAAM,aACN,GAAM,aACN,GAAM,aACN,GAAM,aAEN,GAAM,cACN,GAAM,aAEN,IAAM,MACN,IAAM,MAGN,MAAQ,YACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,YACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cAGR,MAAQ,aACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,aACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,cACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,KAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,iBACR,MAAQ,iBACR,MAAQ,iBACR,MAAQ,mBAGV7nE,EAAQ4pP,eAAiBrmP,OAAOskE,OAAO,CACrC,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GAEN,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GA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","sources":["../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/construct.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/get.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/isNativeFunction.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/objectSpread2.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../node_modules/@babel/runtime/regenerator/index.js","utils/constants.js","utils/dates.js","utils/strings.js","../node_modules/@coinbase/wallet-sdk/dist/CoinbaseWalletSDK.js","../node_modules/@coinbase/wallet-sdk/dist/assets/wallet-logo.js","../node_modules/@coinbase/wallet-sdk/dist/components/LinkFlow.js","../node_modules/@coinbase/wallet-sdk/dist/components/QRCode.js","../node_modules/@coinbase/wallet-sdk/dist/components/Snackbar-css.js","../node_modules/@coinbase/wallet-sdk/dist/components/Snackbar.js","../node_modules/@coinbase/wallet-sdk/dist/components/Spinner-css.js","../node_modules/@coinbase/wallet-sdk/dist/components/Spinner.js","../node_modules/@coinbase/wallet-sdk/dist/components/TryExtensionLinkDialog-css.js","../node_modules/@coinbase/wallet-sdk/dist/components/TryExtensionLinkDialog.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/QRLogo.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/globe-icon-svg.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/link-icon-svg.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/lock-icon-svg.js","../node_modules/@coinbase/wallet-sdk/dist/connection/ClientMessage.js","../node_modules/@coinbase/wallet-sdk/dist/connection/DiagnosticLogger.js","../node_modules/@coinbase/wallet-sdk/dist/connection/RxWebSocket.js","../node_modules/@coinbase/wallet-sdk/dist/connection/ServerMessage.js","../node_modules/@coinbase/wallet-sdk/dist/connection/WalletSDKConnection.js","../node_modules/@coinbase/wallet-sdk/dist/index.js","../node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js","../node_modules/@coinbase/wallet-sdk/dist/lib/cssReset-css.js","../node_modules/@coinbase/wallet-sdk/dist/lib/cssReset.js","../node_modules/@coinbase/wallet-sdk/dist/provider/CoinbaseWalletProvider.js","../node_modules/@coinbase/wallet-sdk/dist/provider/FilterPolyfill.js","../node_modules/@coinbase/wallet-sdk/dist/provider/JSONRPC.js","../node_modules/@coinbase/wallet-sdk/dist/provider/SubscriptionManager.js","../node_modules/@coinbase/wallet-sdk/dist/provider/WalletSDKUI.js","../node_modules/@coinbase/wallet-sdk/dist/provider/WalletUIError.js","../node_modules/@coinbase/wallet-sdk/dist/relay/RelayMessage.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Session.js","../node_modules/@coinbase/wallet-sdk/dist/relay/WalletSDKRelay.js","../node_modules/@coinbase/wallet-sdk/dist/relay/WalletSDKRelayAbstract.js","../node_modules/@coinbase/wallet-sdk/dist/relay/WalletSDKRelayEventManager.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Web3Method.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Web3RequestCanceledMessage.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Web3RequestMessage.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Web3Response.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Web3ResponseMessage.js","../node_modules/@coinbase/wallet-sdk/dist/relay/aes256gcm.js","../node_modules/@coinbase/wallet-sdk/dist/types.js","../node_modules/@coinbase/wallet-sdk/dist/util.js","../node_modules/@coinbase/wallet-sdk/dist/vendor-js/eth-eip712-util/abi.js","../node_modules/@coinbase/wallet-sdk/dist/vendor-js/eth-eip712-util/index.js","../node_modules/@coinbase/wallet-sdk/dist/vendor-js/eth-eip712-util/util.js","../node_modules/@coinbase/wallet-sdk/dist/vendor-js/qrcode-svg/index.js","../node_modules/@coinbase/wallet-sdk/dist/version.js","../node_modules/@coinbase/wallet-sdk/node_modules/bn.js/lib/bn.js","../../src/classes.ts","../../src/error-constants.ts","../../src/errors.ts","../../src/index.ts","../../src/utils.ts","../node_modules/@coinbase/wallet-sdk/node_modules/qs/lib/formats.js","../node_modules/@coinbase/wallet-sdk/node_modules/qs/lib/index.js","../node_modules/@coinbase/wallet-sdk/node_modules/qs/lib/parse.js","../node_modules/@coinbase/wallet-sdk/node_modules/qs/lib/stringify.js","../node_modules/@coinbase/wallet-sdk/node_modules/qs/lib/utils.js","../node_modules/@ethereumjs/common/src/chains/index.ts","../node_modules/@ethereumjs/common/src/eips/index.ts","../node_modules/@ethereumjs/common/src/hardforks/index.ts","../node_modules/@ethereumjs/common/src/index.ts","../node_modules/@ethereumjs/common/node_modules/bn.js/lib/bn.js","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/account.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/address.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/bytes.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/constants.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/externals.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/hash.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/helpers.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/index.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/internal.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/object.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/signature.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/types.ts","../node_modules/@ethereumjs/tx/src/baseTransaction.ts","../node_modules/@ethereumjs/tx/src/eip1559Transaction.ts","../node_modules/@ethereumjs/tx/src/eip2930Transaction.ts","../node_modules/@ethereumjs/tx/src/index.ts","../node_modules/@ethereumjs/tx/src/legacyTransaction.ts","../node_modules/@ethereumjs/tx/src/transactionFactory.ts","../node_modules/@ethereumjs/tx/src/types.ts","../node_modules/@ethereumjs/tx/src/util.ts","../node_modules/@ethereumjs/tx/node_modules/bn.js/lib/bn.js","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/account.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/address.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/bytes.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/constants.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/externals.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/hash.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/helpers.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/index.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/internal.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/object.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/signature.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/types.ts","../node_modules/@ethersproject/abi/src.ts/_version.ts","../node_modules/@ethersproject/abi/src.ts/fragments.ts","../node_modules/@ethersproject/abi/src.ts/coders/abstract-coder.ts","../node_modules/@ethersproject/abi/src.ts/coders/address.ts","../node_modules/@ethersproject/abi/src.ts/coders/anonymous.ts","../node_modules/@ethersproject/abi/src.ts/coders/array.ts","../node_modules/@ethersproject/strings/src.ts/utf8.ts","../node_modules/@ethersproject/abi/src.ts/coders/boolean.ts","../node_modules/@ethersproject/abi/src.ts/coders/bytes.ts","../node_modules/@ethersproject/abi/src.ts/coders/fixed-bytes.ts","../node_modules/@ethersproject/abi/src.ts/coders/null.ts","../node_modules/@ethersproject/abi/src.ts/coders/number.ts","../node_modules/@ethersproject/strings/src.ts/_version.ts","../node_modules/@ethersproject/abi/src.ts/coders/string.ts","../node_modules/@ethersproject/abi/src.ts/coders/tuple.ts","../node_modules/@ethersproject/abi/src.ts/abi-coder.ts","../node_modules/@ethersproject/address/src.ts/index.ts","../node_modules/@ethersproject/address/src.ts/_version.ts","../node_modules/@ethersproject/bignumber/src.ts/bignumber.ts","../node_modules/@ethersproject/bignumber/src.ts/_version.ts","../node_modules/@ethersproject/bignumber/node_modules/bn.js/lib/bn.js","../node_modules/@ethersproject/bytes/src.ts/index.ts","../node_modules/@ethersproject/bytes/src.ts/_version.ts","../node_modules/@ethersproject/constants/src.ts/bignumbers.ts","../node_modules/@ethersproject/keccak256/src.ts/index.ts","../node_modules/@ethersproject/logger/src.ts/index.ts","../node_modules/@ethersproject/logger/src.ts/_version.ts","../node_modules/@ethersproject/properties/src.ts/index.ts","../node_modules/@ethersproject/properties/src.ts/_version.ts","../node_modules/@ethersproject/signing-key/node_modules/bn.js/lib/bn.js","../node_modules/@ethersproject/rlp/src.ts/index.ts","../node_modules/@ethersproject/rlp/src.ts/_version.ts","../node_modules/node_modules/minimalistic-assert/index.js","../node_modules/node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/node_modules/elliptic/lib/elliptic/utils.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/base.js","../node_modules/node_modules/inherits/inherits_browser.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/short.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/index.js","../node_modules/node_modules/elliptic/lib/elliptic/curves.js","../node_modules/node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/key.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/signature.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/index.js","../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../node_modules/node_modules/elliptic/lib/elliptic.js","../node_modules/@ethersproject/signing-key/src.ts/index.ts","../node_modules/@ethersproject/signing-key/src.ts/_version.ts","../node_modules/@ethersproject/transactions/src.ts/_version.ts","../node_modules/@ethersproject/transactions/src.ts/index.ts","../node_modules/@ledgerhq/errors/src/helpers.ts","../node_modules/@ledgerhq/errors/src/index.ts","../node_modules/@ledgerhq/hw-transport/src/Transport.ts","../node_modules/@metamask/obs-store/src/ComposedStore.ts","../node_modules/@metamask/obs-store/src/MergedStore.ts","../node_modules/@metamask/obs-store/src/ObservableStore.ts","../node_modules/@metamask/obs-store/src/asStream.ts","../node_modules/@metamask/obs-store/src/index.ts","../node_modules/@metamask/obs-store/src/transform.ts","../index.ts","../../src/Layout.ts","../node_modules/superstruct/src/utils.ts","../node_modules/superstruct/src/error.ts","../node_modules/superstruct/src/struct.ts","../node_modules/superstruct/src/structs/utilities.ts","../node_modules/superstruct/src/structs/types.ts","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/superstruct/src/structs/coercions.ts","../node_modules/@solana/web3.js/src/util/to-buffer.ts","../node_modules/@solana/web3.js/node_modules/minimalistic-assert/index.js","../node_modules/@solana/web3.js/node_modules/inherits/inherits_browser.js","../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/utils.js","../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/common.js","../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/sha/common.js","../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/sha/1.js","../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/sha/256.js","../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/sha/224.js","../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/sha/512.js","../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/sha/384.js","../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/sha.js","../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/ripemd.js","../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/hmac.js","../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash.js","../node_modules/@solana/web3.js/node_modules/@ethersproject/logger/lib.esm/index.js","../node_modules/@solana/web3.js/node_modules/@ethersproject/logger/lib.esm/_version.js","../node_modules/@solana/web3.js/node_modules/@ethersproject/bytes/lib.esm/_version.js","../node_modules/@solana/web3.js/node_modules/@ethersproject/bytes/lib.esm/index.js","../node_modules/@solana/web3.js/node_modules/@ethersproject/sha2/lib.esm/sha2.js","../node_modules/@solana/web3.js/node_modules/@ethersproject/sha2/lib.esm/_version.js","../node_modules/@solana/web3.js/src/util/borsh-schema.ts","../node_modules/@solana/web3.js/src/publickey.ts","../node_modules/@solana/web3.js/src/bpf-loader-deprecated.ts","../node_modules/@solana/web3.js/src/transaction-constants.ts","../node_modules/@solana/web3.js/src/layout.ts","../node_modules/@solana/web3.js/src/util/shortvec-encoding.ts","../node_modules/@solana/web3.js/src/message.ts","../node_modules/@solana/web3.js/src/transaction.ts","../node_modules/@solana/web3.js/src/util/assert.ts","../node_modules/@solana/web3.js/src/sysvar.ts","../node_modules/@solana/web3.js/src/util/send-and-confirm-transaction.ts","../node_modules/@solana/web3.js/src/util/sleep.ts","../node_modules/@solana/web3.js/src/instruction.ts","../node_modules/@solana/web3.js/src/fee-calculator.ts","../node_modules/@solana/web3.js/src/util/bigint.ts","../node_modules/@solana/web3.js/src/nonce-account.ts","../node_modules/@solana/web3.js/src/system-program.ts","../node_modules/@solana/web3.js/src/loader.ts","../node_modules/@solana/web3.js/src/bpf-loader.ts","../node_modules/@solana/web3.js/src/compute-budget.ts","../node_modules/@solana/web3.js/node_modules/fast-stable-stringify/index.js","../node_modules/@solana/web3.js/src/epoch-schedule.ts","../node_modules/@solana/web3.js/src/errors.ts","../node_modules/@solana/web3.js/src/__forks__/browser/fetch-impl.ts","../node_modules/@solana/web3.js/src/util/tx-expiry-custom-errors.ts","../node_modules/@solana/web3.js/src/connection.ts","../node_modules/@solana/web3.js/src/util/url.ts","../node_modules/@solana/web3.js/src/keypair.ts","../node_modules/@solana/web3.js/src/ed25519-program.ts","../node_modules/@solana/web3.js/src/stake-program.ts","../node_modules/@solana/web3.js/src/secp256k1-program.ts","../node_modules/@solana/web3.js/src/validator-info.ts","../node_modules/@solana/web3.js/src/vote-account.ts","../node_modules/@solana/web3.js/src/vote-program.ts","../node_modules/@solana/web3.js/src/util/cluster.ts","../node_modules/@solana/web3.js/src/index.ts","../node_modules/@solana/web3.js/node_modules/bn.js/lib/bn.js","../node_modules/@solana/web3.js/node_modules/buffer/index.js","../node_modules/@solana/web3.js/node_modules/tweetnacl/nacl-fast.js","../node_modules/@toruslabs/eccrypto/browser.js","../node_modules/@toruslabs/http-helpers/src/index.ts","../node_modules/@toruslabs/openlogin-utils/src/url.ts","../node_modules/@toruslabs/openlogin-utils/src/utils.ts","../node_modules/@toruslabs/openlogin-jrpc/src/basePostMessageStream.ts","../node_modules/@toruslabs/openlogin-jrpc/src/safeEventEmitter.ts","../node_modules/@toruslabs/openlogin-jrpc/src/serializableError.ts","../node_modules/@toruslabs/openlogin-jrpc/src/jrpc.ts","../node_modules/@toruslabs/openlogin-utils/src/randomId.ts","../node_modules/@toruslabs/openlogin-jrpc/src/jrpcEngine.ts","../node_modules/@toruslabs/openlogin-jrpc/src/substream.ts","../node_modules/@toruslabs/openlogin-jrpc/src/mux.ts","../node_modules/@toruslabs/torus.js/node_modules/bn.js/lib/bn.js","../node_modules/@visx/shape/lib/shapes/Line.js","../node_modules/@walletconnect/browser-utils/node_modules/detect-browser/es/index.js","../../src/browser.ts","../../src/json.ts","../../src/index.ts","../../src/local.ts","../../src/mobile.ts","../../src/registry.ts","../../src/crypto.ts","../../src/env.ts","../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../node_modules/@walletconnect/qrcode-modal/src/browser/assets/logo.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/constants/index.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/components/Header.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/ConnectButton.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/WalletButton.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/assets/caret.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/components/WalletIcon.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/LinkDisplay.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/Notification.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/QRCodeDisplay.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/Modal.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/de.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/index.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/en.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/es.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/fr.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/ko.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/pt.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/zh.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/fa.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/index.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/assets/style.ts","../node_modules/@walletconnect/qrcode-modal/src/index.ts","../node_modules/@walletconnect/qrcode-modal/src/node.ts","../node_modules/@walletconnect/qrcode-modal/node_modules/buffer/index.js","../node_modules/@walletconnect/qrcode-modal/node_modules/isarray/index.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/constants.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/options.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/component.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/render.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/create-context.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/util.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/create-element.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/diff/children.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/diff/props.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/diff/index.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/clone-element.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/diff/catch-error.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/hooks/src/index.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/util.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/PureComponent.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/memo.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/forwardRef.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/Children.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/suspense.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/suspense-list.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/portals.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/render.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/events.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/index.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/browser.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/can-promise.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/alignment-pattern.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/alphanumeric-data.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/bit-buffer.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/bit-matrix.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/byte-data.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/error-correction-code.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/error-correction-level.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/finder-pattern.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/format-info.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/galois-field.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/kanji-data.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/mask-pattern.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/mode.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/numeric-data.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/polynomial.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/qrcode.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/reed-solomon-encoder.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/regex.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/segments.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/utils.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/version-check.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/version.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/renderer/canvas.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/renderer/svg-tag.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/renderer/utils.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/utils/typedarray-buffer.js","../node_modules/@walletconnect/socket-transport/node_modules/ws/browser.js","../node_modules/@walletconnect/utils/node_modules/bn.js/lib/bn.js","../node_modules/asn1.js/lib/asn1.js","../node_modules/asn1.js/lib/asn1/api.js","../node_modules/asn1.js/lib/asn1/base/buffer.js","../node_modules/asn1.js/lib/asn1/base/index.js","../node_modules/asn1.js/lib/asn1/base/node.js","../node_modules/asn1.js/lib/asn1/base/reporter.js","../node_modules/asn1.js/lib/asn1/constants/der.js","../node_modules/asn1.js/lib/asn1/constants/index.js","../node_modules/asn1.js/lib/asn1/decoders/der.js","../node_modules/asn1.js/lib/asn1/decoders/index.js","../node_modules/asn1.js/lib/asn1/decoders/pem.js","../node_modules/asn1.js/lib/asn1/encoders/der.js","../node_modules/asn1.js/lib/asn1/encoders/index.js","../node_modules/asn1.js/lib/asn1/encoders/pem.js","../node_modules/assert/build/assert.js","../node_modules/assert/build/internal/assert/assertion_error.js","../node_modules/assert/build/internal/errors.js","../node_modules/assert/build/internal/util/comparisons.js","../node_modules/async-mutex/lib/Mutex.js","../node_modules/async-mutex/lib/Semaphore.js","../node_modules/async-mutex/lib/index.js","../node_modules/async-mutex/lib/withTimeout.js","../node_modules/async/asyncify.js","../node_modules/async/eachLimit.js","../node_modules/async/eachOf.js","../node_modules/async/eachOfLimit.js","../node_modules/async/eachSeries.js","../node_modules/async/internal/breakLoop.js","../node_modules/async/internal/doLimit.js","../node_modules/async/internal/doParallel.js","../node_modules/async/internal/eachOfLimit.js","../node_modules/async/internal/getIterator.js","../node_modules/async/internal/initialParams.js","../node_modules/async/internal/iterator.js","../node_modules/async/internal/map.js","../node_modules/async/internal/once.js","../node_modules/async/internal/onlyOnce.js","../node_modules/async/internal/parallel.js","../node_modules/async/internal/setImmediate.js","../node_modules/async/internal/slice.js","../node_modules/async/internal/withoutIndex.js","../node_modules/async/internal/wrapAsync.js","../node_modules/async/map.js","../node_modules/async/parallel.js","../node_modules/async/waterfall.js","../node_modules/axios/index.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/utils.js","../node_modules/balanced-match/index.js","../node_modules/base-x/src/index.js","../node_modules/base64-js/index.js","../node_modules/base64url/dist/base64url.js","../node_modules/base64url/dist/pad-string.js","../node_modules/base64url/index.js","../node_modules/bigint-buffer/dist/browser.js","../node_modules/bignumber.js/bignumber.js","../node_modules/bind-decorator/index.js","../node_modules/bn.js/lib/bn.js","../node_modules/borsh/lib/index.js","../node_modules/borsh/node_modules/bn.js/lib/bn.js","../node_modules/brorand/index.js","../node_modules/browserify-aes/aes.js","../node_modules/browserify-aes/authCipher.js","../node_modules/browserify-aes/browser.js","../node_modules/browserify-aes/decrypter.js","../node_modules/browserify-aes/encrypter.js","../node_modules/browserify-aes/ghash.js","../node_modules/browserify-aes/incr32.js","../node_modules/browserify-aes/modes/cbc.js","../node_modules/browserify-aes/modes/cfb.js","../node_modules/browserify-aes/modes/cfb1.js","../node_modules/browserify-aes/modes/cfb8.js","../node_modules/browserify-aes/modes/ctr.js","../node_modules/browserify-aes/modes/ecb.js","../node_modules/browserify-aes/modes/index.js","../node_modules/browserify-aes/modes/ofb.js","../node_modules/browserify-aes/streamCipher.js","../node_modules/browserify-cipher/browser.js","../node_modules/browserify-des/index.js","../node_modules/browserify-des/modes.js","../node_modules/browserify-rsa/index.js","../node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js","../node_modules/browserify-sign/algos.js","../node_modules/browserify-sign/browser/index.js","../node_modules/browserify-sign/browser/sign.js","../node_modules/browserify-sign/browser/verify.js","../node_modules/browserify-sign/node_modules/bn.js/lib/bn.js","../node_modules/bs58/index.js","../node_modules/buffer-xor/index.js","../node_modules/buffer/index.js","../node_modules/builtin-status-codes/browser.js","../node_modules/call-bind/callBound.js","../node_modules/call-bind/index.js","../node_modules/cids/node_modules/buffer/index.js","../node_modules/cids/node_modules/multibase/src/base.js","../node_modules/cids/node_modules/multibase/src/base16.js","../node_modules/cids/node_modules/multibase/src/base32.js","../node_modules/cids/node_modules/multibase/src/base64.js","../node_modules/cids/node_modules/multibase/src/constants.js","../node_modules/cids/node_modules/multibase/src/index.js","../node_modules/cids/node_modules/multicodec/src/constants.js","../node_modules/cids/node_modules/multicodec/src/index.js","../node_modules/cids/node_modules/multicodec/src/int-table.js","../node_modules/cids/node_modules/multicodec/src/print.js","../node_modules/cids/node_modules/multicodec/src/util.js","../node_modules/cids/node_modules/multicodec/src/varint-table.js","../node_modules/cids/src/cid-util.js","../node_modules/cids/src/index.js","../node_modules/cipher-base/index.js","../node_modules/class-is/index.js","../node_modules/classnames/index.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/content-hash/src/helpers.js","../node_modules/content-hash/src/index.js","../node_modules/content-hash/src/profiles.js","../node_modules/cookiejar/cookiejar.js","../node_modules/copy-to-clipboard/index.js","../node_modules/core-util-is/lib/util.js","../node_modules/crc-32/crc32.js","../node_modules/create-ecdh/browser.js","../node_modules/create-hash/browser.js","../node_modules/create-hash/md5.js","../node_modules/create-hmac/browser.js","../node_modules/create-hmac/legacy.js","../node_modules/crypto-browserify/index.js","../node_modules/decode-uri-component/index.js","../node_modules/define-properties/index.js","../node_modules/des.js/lib/des.js","../node_modules/des.js/lib/des/cbc.js","../node_modules/des.js/lib/des/cipher.js","../node_modules/des.js/lib/des/des.js","../node_modules/des.js/lib/des/ede.js","../node_modules/des.js/lib/des/utils.js","../node_modules/diffie-hellman/browser.js","../node_modules/diffie-hellman/lib/dh.js","../node_modules/diffie-hellman/lib/generatePrime.js","../node_modules/dijkstrajs/dijkstra.js","../node_modules/elliptic/lib/elliptic.js","../node_modules/elliptic/lib/elliptic/curve/base.js","../node_modules/elliptic/lib/elliptic/curve/edwards.js","../node_modules/elliptic/lib/elliptic/curve/index.js","../node_modules/elliptic/lib/elliptic/curve/mont.js","../node_modules/elliptic/lib/elliptic/curve/short.js","../node_modules/elliptic/lib/elliptic/curves.js","../node_modules/elliptic/lib/elliptic/ec/index.js","../node_modules/elliptic/lib/elliptic/ec/key.js","../node_modules/elliptic/lib/elliptic/ec/signature.js","../node_modules/elliptic/lib/elliptic/eddsa/index.js","../node_modules/elliptic/lib/elliptic/eddsa/key.js","../node_modules/elliptic/lib/elliptic/eddsa/signature.js","../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../node_modules/elliptic/lib/elliptic/utils.js","../node_modules/encode-utf8/index.js","../node_modules/end-of-stream/index.js","../node_modules/es5-ext/global.js","../node_modules/es6-object-assign/index.js","../node_modules/eth-block-tracker/src/base.js","../node_modules/eth-block-tracker/src/polling.js","../node_modules/eth-ens-namehash/index.js","../node_modules/eth-ens-namehash/node_modules/js-sha3/src/sha3.js","../node_modules/eth-json-rpc-filters/base-filter-history.js","../node_modules/eth-json-rpc-filters/base-filter.js","../node_modules/eth-json-rpc-filters/block-filter.js","../node_modules/eth-json-rpc-filters/getBlocksForRange.js","../node_modules/eth-json-rpc-filters/hexUtils.js","../node_modules/eth-json-rpc-filters/index.js","../node_modules/eth-json-rpc-filters/log-filter.js","../../src/JsonRpcEngine.ts","../../src/createAsyncMiddleware.ts","../../src/createScaffoldMiddleware.ts","../../src/getUniqueId.ts","../../src/idRemapMiddleware.ts","../../src/mergeMiddleware.ts","../node_modules/eth-json-rpc-filters/node_modules/pify/index.js","../node_modules/eth-json-rpc-filters/subscriptionManager.js","../node_modules/eth-json-rpc-filters/tx-filter.js","../node_modules/eth-json-rpc-middleware/block-cache.js","../node_modules/eth-json-rpc-middleware/cache-utils.js","../node_modules/eth-json-rpc-middleware/scaffold.js","../node_modules/eth-lib/lib/account.js","../node_modules/eth-lib/lib/array.js","../node_modules/eth-lib/lib/bytes.js","../node_modules/eth-lib/lib/hash.js","../node_modules/eth-lib/lib/nat.js","../node_modules/eth-lib/lib/rlp.js","../node_modules/eth-query/index.js","../node_modules/eth-sig-util/index.js","../node_modules/ethereum-bloom-filters/dist/index.js","../node_modules/ethereum-bloom-filters/dist/utils.js","../node_modules/ethereum-cryptography/src/hash-utils.ts","../node_modules/ethereum-cryptography/src/keccak.ts","../node_modules/ethereum-cryptography/src/random.ts","../node_modules/ethereum-cryptography/src/secp256k1.ts","../node_modules/ethereumjs-abi/index.js","../node_modules/ethereumjs-abi/lib/index.js","../../src/account.ts","../../src/bytes.ts","../../src/constants.ts","../../src/hash.ts","../../src/object.ts","../../src/secp256k1v3-adapter.ts","../../src/secp256k1v3-lib/der.ts","../../src/secp256k1v3-lib/index.ts","../../src/signature.ts","../node_modules/ethereumjs-tx/es5/index.js","../node_modules/ethereumjs-util/dist/index.js","../node_modules/ethereumjs-util/dist/secp256k1-adapter.js","../node_modules/ethereumjs-util/dist/secp256k1-lib/der.js","../node_modules/ethereumjs-util/dist/secp256k1-lib/index.js","../node_modules/ethjs-unit/lib/index.js","../node_modules/ethjs-unit/node_modules/bn.js/lib/bn.js","../node_modules/ethjs-util/lib/index.js","../node_modules/eventemitter3/index.js","../node_modules/events/events.js","../node_modules/evp_bytestokey/index.js","../node_modules/fast-deep-equal/index.js","../node_modules/fast-safe-stringify/index.js","../node_modules/file-saver/src/FileSaver.js","../node_modules/for-each/index.js","../node_modules/fortmatic/dist/cjs/fortmatic.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/get-intrinsic/index.js","../node_modules/global/window.js","../node_modules/has-property-descriptors/index.js","../node_modules/has-symbols/index.js","../node_modules/has-symbols/shams.js","../node_modules/has-tostringtag/shams.js","../node_modules/has/src/index.js","../node_modules/hash-base/index.js","../node_modules/hash.js/lib/hash.js","../node_modules/hash.js/lib/hash/common.js","../node_modules/hash.js/lib/hash/hmac.js","../node_modules/hash.js/lib/hash/ripemd.js","../node_modules/hash.js/lib/hash/sha.js","../node_modules/hash.js/lib/hash/sha/1.js","../node_modules/hash.js/lib/hash/sha/224.js","../node_modules/hash.js/lib/hash/sha/256.js","../node_modules/hash.js/lib/hash/sha/384.js","../node_modules/hash.js/lib/hash/sha/512.js","../node_modules/hash.js/lib/hash/sha/common.js","../node_modules/hash.js/lib/hash/utils.js","../node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/https-browserify/index.js","../node_modules/idna-uts46-hx/idna-map.js","../node_modules/idna-uts46-hx/node_modules/punycode/punycode.js","../node_modules/idna-uts46-hx/uts46.js","../node_modules/ieee754/index.js","../node_modules/inherits/inherits_browser.js","../node_modules/is-arguments/index.js","../node_modules/is-callable/index.js","../node_modules/is-function/index.js","../node_modules/is-generator-function/index.js","../node_modules/is-hex-prefixed/src/index.js","../node_modules/is-nan/implementation.js","../node_modules/is-nan/index.js","../node_modules/is-nan/polyfill.js","../node_modules/is-nan/shim.js","../node_modules/is-stream/index.js","../node_modules/is-typed-array/index.js","../node_modules/is-typedarray/index.js","../node_modules/jayson/lib/client/browser/index.js","../node_modules/jayson/lib/generateRequest.js","../node_modules/js-sha256/src/sha256.js","../node_modules/js-sha3/src/sha3.js","../node_modules/json-rpc-engine/src/createAsyncMiddleware.js","../node_modules/json-rpc-engine/src/createScaffoldMiddleware.js","../node_modules/json-rpc-random-id/index.js","../node_modules/json-stable-stringify/index.js","../node_modules/jsonify/index.js","../node_modules/jsonify/lib/parse.js","../node_modules/jsonify/lib/stringify.js","../node_modules/keccak/js.js","../node_modules/keccak/lib/api/index.js","../node_modules/keccak/lib/api/keccak.js","../node_modules/keccak/lib/api/shake.js","../node_modules/keccak/lib/keccak-state-unroll.js","../node_modules/keccak/lib/keccak.js","../node_modules/lodash.merge/index.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_root.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/eq.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/memoize.js","../node_modules/lodash/noop.js","../node_modules/lodash/stubFalse.js","../node_modules/loglevel/lib/loglevel.js","../node_modules/math-expression-evaluator/src/formula_evaluator.js","../node_modules/math-expression-evaluator/src/lexer.js","../node_modules/math-expression-evaluator/src/math_function.js","../node_modules/math-expression-evaluator/src/postfix.js","../node_modules/math-expression-evaluator/src/postfix_evaluator.js","../node_modules/md5.js/index.js","../node_modules/miller-rabin/lib/mr.js","../node_modules/minimalistic-assert/index.js","../node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/multibase/node_modules/buffer/index.js","../node_modules/multibase/src/base.js","../node_modules/multibase/src/base16.js","../node_modules/multibase/src/base32.js","../node_modules/multibase/src/base64.js","../node_modules/multibase/src/constants.js","../node_modules/multibase/src/index.js","../node_modules/multicodec/src/constants.js","../node_modules/multicodec/src/index.js","../node_modules/multicodec/src/int-table.js","../node_modules/multicodec/src/print.js","../node_modules/multicodec/src/util.js","../node_modules/multicodec/src/varint-table.js","../node_modules/multihashes/node_modules/buffer/index.js","../node_modules/multihashes/src/constants.js","../node_modules/multihashes/src/index.js","../node_modules/number-to-bn/node_modules/bn.js/lib/bn.js","../node_modules/number-to-bn/src/index.js","../node_modules/object-assign/index.js","../node_modules/object-inspect/index.js","../node_modules/object-is/implementation.js","../node_modules/object-is/index.js","../node_modules/object-is/polyfill.js","../node_modules/object-is/shim.js","../node_modules/object-keys/implementation.js","../node_modules/object-keys/index.js","../node_modules/object-keys/isArguments.js","../node_modules/oboe/dist/oboe-browser.js","../node_modules/once/once.js","../node_modules/os-browserify/main.js","../node_modules/parse-asn1/asn1.js","../node_modules/parse-asn1/certificate.js","../node_modules/parse-asn1/fixProc.js","../node_modules/parse-asn1/index.js","../node_modules/parse-headers/parse-headers.js","../node_modules/pbkdf2/browser.js","../node_modules/pbkdf2/lib/async.js","../node_modules/pbkdf2/lib/default-encoding.js","../node_modules/pbkdf2/lib/precondition.js","../node_modules/pbkdf2/lib/sync-browser.js","../node_modules/pbkdf2/lib/to-buffer.js","../node_modules/pify/index.js","../node_modules/preact/src/constants.js","../node_modules/preact/src/util.js","../node_modules/preact/src/options.js","../node_modules/preact/src/create-element.js","../node_modules/preact/src/component.js","../node_modules/preact/src/create-context.js","../node_modules/preact/src/diff/children.js","../node_modules/preact/src/diff/props.js","../node_modules/preact/src/diff/index.js","../node_modules/preact/src/render.js","../node_modules/preact/src/clone-element.js","../node_modules/preact/src/diff/catch-error.js","../node_modules/preact/hooks/src/index.js","../node_modules/process-nextick-args/index.js","../node_modules/process/browser.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/public-encrypt/browser.js","../node_modules/public-encrypt/mgf.js","../node_modules/public-encrypt/privateDecrypt.js","../node_modules/public-encrypt/publicEncrypt.js","../node_modules/public-encrypt/withPublic.js","../node_modules/public-encrypt/xor.js","../node_modules/pump/index.js","../node_modules/qrcode/lib/browser.js","../node_modules/qrcode/lib/can-promise.js","../node_modules/qrcode/lib/core/alignment-pattern.js","../node_modules/qrcode/lib/core/alphanumeric-data.js","../node_modules/qrcode/lib/core/bit-buffer.js","../node_modules/qrcode/lib/core/bit-matrix.js","../node_modules/qrcode/lib/core/byte-data.js","../node_modules/qrcode/lib/core/error-correction-code.js","../node_modules/qrcode/lib/core/error-correction-level.js","../node_modules/qrcode/lib/core/finder-pattern.js","../node_modules/qrcode/lib/core/format-info.js","../node_modules/qrcode/lib/core/galois-field.js","../node_modules/qrcode/lib/core/kanji-data.js","../node_modules/qrcode/lib/core/mask-pattern.js","../node_modules/qrcode/lib/core/mode.js","../node_modules/qrcode/lib/core/numeric-data.js","../node_modules/qrcode/lib/core/polynomial.js","../node_modules/qrcode/lib/core/qrcode.js","../node_modules/qrcode/lib/core/reed-solomon-encoder.js","../node_modules/qrcode/lib/core/regex.js","../node_modules/qrcode/lib/core/segments.js","../node_modules/qrcode/lib/core/utils.js","../node_modules/qrcode/lib/core/version-check.js","../node_modules/qrcode/lib/core/version.js","../node_modules/qrcode/lib/renderer/canvas.js","../node_modules/qrcode/lib/renderer/svg-tag.js","../node_modules/qrcode/lib/renderer/utils.js","../node_modules/query-string/index.js","../node_modules/querystring/decode.js","../node_modules/querystring/encode.js","../node_modules/querystring/index.js","../node_modules/randombytes/browser.js","../node_modules/randomfill/browser.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/goober/dist/goober.modern.js","../node_modules/react-hot-toast/src/core/types.ts","../node_modules/react-hot-toast/src/core/store.ts","../node_modules/react-hot-toast/src/core/utils.ts","../node_modules/react-hot-toast/src/core/toast.ts","../node_modules/react-hot-toast/src/core/use-toaster.ts","../node_modules/react-hot-toast/src/components/error.tsx","../node_modules/react-hot-toast/src/components/loader.tsx","../node_modules/react-hot-toast/src/components/checkmark.tsx","../node_modules/react-hot-toast/src/components/toast-icon.tsx","../node_modules/react-hot-toast/src/components/toast-bar.tsx","../node_modules/react-hot-toast/src/components/toaster.tsx","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/readable-stream/errors-browser.js","../node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/readable-stream/lib/_stream_readable.js","../node_modules/readable-stream/lib/_stream_transform.js","../node_modules/readable-stream/lib/_stream_writable.js","../node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/readable-stream/node_modules/string_decoder/lib/string_decoder.js","../node_modules/readable-stream/readable-browser.js","../node_modules/reduce-css-calc/index.js","../node_modules/reduce-css-calc/node_modules/balanced-match/index.js","../node_modules/reduce-function-call/index.js","../node_modules/ripemd160/index.js","../node_modules/rlp/src/index.ts","../node_modules/rlp/node_modules/bn.js/lib/bn.js","../node_modules/rpc-websockets/dist/index.browser.js","../node_modules/rpc-websockets/dist/lib/client.js","../node_modules/rpc-websockets/dist/lib/client/websocket.browser.js","../node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts","../node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts","../node_modules/rxjs/src/internal/scheduler/animationFrame.ts","../node_modules/rxjs/src/internal/scheduler/VirtualTimeScheduler.ts","../node_modules/rxjs/src/internal/util/isObservable.ts","../node_modules/rxjs/src/internal/observable/bindCallback.ts","../node_modules/rxjs/src/internal/observable/bindNodeCallback.ts","../node_modules/rxjs/src/internal/observable/forkJoin.ts","../node_modules/rxjs/src/internal/observable/fromEvent.ts","../node_modules/rxjs/src/internal/observable/fromEventPattern.ts","../node_modules/rxjs/src/internal/observable/generate.ts","../node_modules/rxjs/src/internal/observable/iif.ts","../node_modules/rxjs/src/internal/observable/interval.ts","../node_modules/rxjs/src/internal/observable/never.ts","../node_modules/rxjs/src/internal/observable/onErrorResumeNext.ts","../node_modules/rxjs/src/internal/observable/pairs.ts","../node_modules/rxjs/src/internal/observable/partition.ts","../node_modules/rxjs/src/internal/observable/range.ts","../node_modules/rxjs/src/internal/observable/using.ts","../node_modules/rxjs/src/internal/AsyncSubject.ts","../node_modules/rxjs/src/internal/BehaviorSubject.ts","../node_modules/rxjs/src/internal/Notification.ts","../node_modules/rxjs/src/internal/Observable.ts","../node_modules/rxjs/src/internal/util/toSubscriber.ts","../node_modules/rxjs/src/internal/Observer.ts","../node_modules/rxjs/src/internal/OuterSubscriber.ts","../node_modules/rxjs/src/internal/ReplaySubject.ts","../node_modules/rxjs/src/internal/Scheduler.ts","../node_modules/rxjs/src/internal/Subject.ts","../node_modules/rxjs/src/internal/SubjectSubscription.ts","../node_modules/rxjs/src/internal/Subscriber.ts","../node_modules/rxjs/src/internal/Subscription.ts","../node_modules/rxjs/src/internal/config.ts","../node_modules/rxjs/src/internal/innerSubscribe.ts","../node_modules/rxjs/src/internal/observable/ConnectableObservable.ts","../node_modules/rxjs/src/internal/observable/combineLatest.ts","../node_modules/rxjs/src/internal/observable/concat.ts","../node_modules/rxjs/src/internal/observable/defer.ts","../node_modules/rxjs/src/internal/observable/empty.ts","../node_modules/rxjs/src/internal/observable/from.ts","../node_modules/rxjs/src/internal/observable/fromArray.ts","../node_modules/rxjs/src/internal/observable/merge.ts","../node_modules/rxjs/src/internal/observable/of.ts","../node_modules/rxjs/src/internal/observable/race.ts","../node_modules/rxjs/src/internal/observable/throwError.ts","../node_modules/rxjs/src/internal/observable/timer.ts","../node_modules/rxjs/src/internal/observable/zip.ts","../node_modules/rxjs/src/internal/operators/concatAll.ts","../node_modules/rxjs/src/internal/operators/filter.ts","../node_modules/rxjs/src/internal/operators/groupBy.ts","../node_modules/rxjs/src/internal/operators/map.ts","../node_modules/rxjs/src/internal/operators/mergeAll.ts","../node_modules/rxjs/src/internal/operators/mergeMap.ts","../node_modules/rxjs/src/internal/operators/observeOn.ts","../node_modules/rxjs/src/internal/operators/refCount.ts","../node_modules/rxjs/src/internal/scheduled/scheduleArray.ts","../node_modules/rxjs/src/internal/scheduled/scheduled.ts","../node_modules/rxjs/src/internal/util/isInteropObservable.ts","../node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts","../node_modules/rxjs/src/internal/scheduled/schedulePromise.ts","../node_modules/rxjs/src/internal/util/isIterable.ts","../node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts","../node_modules/rxjs/src/internal/scheduler/AsyncAction.ts","../node_modules/rxjs/src/internal/scheduler/Action.ts","../node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts","../node_modules/rxjs/src/internal/util/Immediate.ts","../node_modules/rxjs/src/internal/scheduler/AsapAction.ts","../node_modules/rxjs/src/internal/scheduler/AsapScheduler.ts","../node_modules/rxjs/src/internal/scheduler/asap.ts","../node_modules/rxjs/src/internal/scheduler/async.ts","../node_modules/rxjs/src/internal/scheduler/QueueAction.ts","../node_modules/rxjs/src/internal/scheduler/QueueScheduler.ts","../node_modules/rxjs/src/internal/scheduler/queue.ts","../node_modules/rxjs/src/internal/symbol/iterator.ts","../node_modules/rxjs/src/internal/symbol/rxSubscriber.ts","../node_modules/rxjs/src/internal/util/ArgumentOutOfRangeError.ts","../node_modules/rxjs/src/internal/util/EmptyError.ts","../node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts","../node_modules/rxjs/src/internal/util/TimeoutError.ts","../node_modules/rxjs/src/internal/util/UnsubscriptionError.ts","../node_modules/rxjs/src/internal/util/canReportError.ts","../node_modules/rxjs/src/internal/util/hostReportError.ts","../node_modules/rxjs/src/internal/util/identity.ts","../node_modules/rxjs/src/internal/util/isFunction.ts","../node_modules/rxjs/src/internal/util/isNumeric.ts","../node_modules/rxjs/src/internal/util/isObject.ts","../node_modules/rxjs/src/internal/util/isPromise.ts","../node_modules/rxjs/src/internal/util/isScheduler.ts","../node_modules/rxjs/src/internal/util/not.ts","../node_modules/rxjs/src/internal/util/pipe.ts","../node_modules/rxjs/src/internal/util/subscribeTo.ts","../node_modules/rxjs/src/internal/util/subscribeToObservable.ts","../node_modules/rxjs/src/internal/util/subscribeToPromise.ts","../node_modules/rxjs/src/internal/util/subscribeToIterable.ts","../node_modules/rxjs/src/internal/util/subscribeToArray.ts","../node_modules/rxjs/src/internal/InnerSubscriber.ts","../node_modules/rxjs/src/internal/util/subscribeToResult.ts","../node_modules/rxjs/src/internal/operators/audit.ts","../node_modules/rxjs/src/internal/operators/auditTime.ts","../node_modules/rxjs/src/internal/operators/buffer.ts","../node_modules/rxjs/src/internal/operators/bufferCount.ts","../node_modules/rxjs/src/internal/operators/bufferTime.ts","../node_modules/rxjs/src/internal/operators/bufferToggle.ts","../node_modules/rxjs/src/internal/operators/bufferWhen.ts","../node_modules/rxjs/src/internal/operators/catchError.ts","../node_modules/rxjs/src/internal/operators/combineAll.ts","../node_modules/rxjs/src/internal/operators/combineLatest.ts","../node_modules/rxjs/src/internal/operators/concat.ts","../node_modules/rxjs/src/internal/operators/concatMap.ts","../node_modules/rxjs/src/internal/operators/concatMapTo.ts","../node_modules/rxjs/src/internal/operators/count.ts","../node_modules/rxjs/src/internal/operators/debounce.ts","../node_modules/rxjs/src/internal/operators/debounceTime.ts","../node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts","../node_modules/rxjs/src/internal/util/isDate.ts","../node_modules/rxjs/src/internal/operators/delay.ts","../node_modules/rxjs/src/internal/operators/delayWhen.ts","../node_modules/rxjs/src/internal/operators/dematerialize.ts","../node_modules/rxjs/src/internal/operators/distinct.ts","../node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts","../node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts","../node_modules/rxjs/src/internal/operators/throwIfEmpty.ts","../node_modules/rxjs/src/internal/operators/take.ts","../node_modules/rxjs/src/internal/operators/elementAt.ts","../node_modules/rxjs/src/internal/operators/endWith.ts","../node_modules/rxjs/src/internal/operators/every.ts","../node_modules/rxjs/src/internal/operators/exhaust.ts","../node_modules/rxjs/src/internal/operators/exhaustMap.ts","../node_modules/rxjs/src/internal/operators/expand.ts","../node_modules/rxjs/src/internal/operators/finalize.ts","../node_modules/rxjs/src/internal/operators/find.ts","../node_modules/rxjs/src/internal/operators/findIndex.ts","../node_modules/rxjs/src/internal/operators/first.ts","../node_modules/rxjs/src/internal/operators/ignoreElements.ts","../node_modules/rxjs/src/internal/operators/isEmpty.ts","../node_modules/rxjs/src/internal/operators/takeLast.ts","../node_modules/rxjs/src/internal/operators/last.ts","../node_modules/rxjs/src/internal/operators/mapTo.ts","../node_modules/rxjs/src/internal/operators/materialize.ts","../node_modules/rxjs/src/internal/operators/scan.ts","../node_modules/rxjs/src/internal/operators/reduce.ts","../node_modules/rxjs/src/internal/operators/max.ts","../node_modules/rxjs/src/internal/operators/merge.ts","../node_modules/rxjs/src/internal/operators/mergeMapTo.ts","../node_modules/rxjs/src/internal/operators/mergeScan.ts","../node_modules/rxjs/src/internal/operators/min.ts","../node_modules/rxjs/src/internal/operators/multicast.ts","../node_modules/rxjs/src/internal/operators/onErrorResumeNext.ts","../node_modules/rxjs/src/internal/operators/pairwise.ts","../node_modules/rxjs/src/internal/operators/partition.ts","../node_modules/rxjs/src/internal/operators/pluck.ts","../node_modules/rxjs/src/internal/operators/publish.ts","../node_modules/rxjs/src/internal/operators/publishBehavior.ts","../node_modules/rxjs/src/internal/operators/publishLast.ts","../node_modules/rxjs/src/internal/operators/publishReplay.ts","../node_modules/rxjs/src/internal/operators/race.ts","../node_modules/rxjs/src/internal/operators/repeat.ts","../node_modules/rxjs/src/internal/operators/repeatWhen.ts","../node_modules/rxjs/src/internal/operators/retry.ts","../node_modules/rxjs/src/internal/operators/retryWhen.ts","../node_modules/rxjs/src/internal/operators/sample.ts","../node_modules/rxjs/src/internal/operators/sampleTime.ts","../node_modules/rxjs/src/internal/operators/sequenceEqual.ts","../node_modules/rxjs/src/internal/operators/share.ts","../node_modules/rxjs/src/internal/operators/shareReplay.ts","../node_modules/rxjs/src/internal/operators/single.ts","../node_modules/rxjs/src/internal/operators/skip.ts","../node_modules/rxjs/src/internal/operators/skipLast.ts","../node_modules/rxjs/src/internal/operators/skipUntil.ts","../node_modules/rxjs/src/internal/operators/skipWhile.ts","../node_modules/rxjs/src/internal/operators/startWith.ts","../node_modules/rxjs/src/internal/observable/SubscribeOnObservable.ts","../node_modules/rxjs/src/internal/operators/subscribeOn.ts","../node_modules/rxjs/src/internal/operators/switchMap.ts","../node_modules/rxjs/src/internal/operators/switchAll.ts","../node_modules/rxjs/src/internal/operators/switchMapTo.ts","../node_modules/rxjs/src/internal/operators/takeUntil.ts","../node_modules/rxjs/src/internal/operators/takeWhile.ts","../node_modules/rxjs/src/internal/operators/tap.ts","../node_modules/rxjs/src/internal/operators/throttle.ts","../node_modules/rxjs/src/internal/operators/throttleTime.ts","../node_modules/rxjs/src/internal/operators/timeInterval.ts","../node_modules/rxjs/src/internal/operators/timeoutWith.ts","../node_modules/rxjs/src/internal/operators/timeout.ts","../node_modules/rxjs/src/internal/operators/timestamp.ts","../node_modules/rxjs/src/internal/operators/toArray.ts","../node_modules/rxjs/src/internal/operators/window.ts","../node_modules/rxjs/src/internal/operators/windowCount.ts","../node_modules/rxjs/src/internal/operators/windowTime.ts","../node_modules/rxjs/src/internal/operators/windowToggle.ts","../node_modules/rxjs/src/internal/operators/windowWhen.ts","../node_modules/rxjs/src/internal/operators/withLatestFrom.ts","../node_modules/rxjs/src/internal/operators/zip.ts","../node_modules/rxjs/src/internal/operators/zipAll.ts","../node_modules/rxjs/node_modules/tslib/tslib.es6.js","../node_modules/safe-buffer/index.js","../node_modules/safe-event-emitter/index.js","../node_modules/safer-buffer/safer.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/scrypt-js/scrypt.js","../node_modules/secp256k1/elliptic.js","../node_modules/secp256k1/lib/elliptic.js","../node_modules/secp256k1/lib/index.js","../node_modules/semaphore/lib/semaphore.js","../node_modules/sha.js/hash.js","../node_modules/sha.js/index.js","../node_modules/sha.js/sha.js","../node_modules/sha.js/sha1.js","../node_modules/sha.js/sha224.js","../node_modules/sha.js/sha256.js","../node_modules/sha.js/sha384.js","../node_modules/sha.js/sha512.js","../node_modules/side-channel/index.js","../node_modules/split-on-first/index.js","../node_modules/stream-browserify/index.js","../node_modules/stream-http/index.js","../node_modules/stream-http/lib/capability.js","../node_modules/stream-http/lib/request.js","../node_modules/stream-http/lib/response.js","../node_modules/strict-uri-encode/index.js","../node_modules/string_decoder/index.js","../node_modules/strip-hex-prefix/src/index.js","../node_modules/swarm-js/lib/api-browser.js","../node_modules/swarm-js/lib/pick.js","../node_modules/swarm-js/lib/swarm-hash.js","../node_modules/swarm-js/lib/swarm.js","../node_modules/swarm-js/node_modules/eth-lib/lib/array.js","../node_modules/swarm-js/node_modules/eth-lib/lib/bytes.js","../node_modules/swarm-js/node_modules/eth-lib/lib/hash.js","../node_modules/through2/node_modules/isarray/index.js","../node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/through2/node_modules/readable-stream/lib/internal/streams/BufferList.js","../node_modules/through2/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/through2/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/through2/node_modules/readable-stream/readable-browser.js","../node_modules/through2/node_modules/safe-buffer/index.js","../node_modules/through2/node_modules/string_decoder/lib/string_decoder.js","../node_modules/through2/through2.js","../node_modules/toggle-selection/index.js","../node_modules/tslib/tslib.es6.js","../node_modules/typedarray-to-buffer/index.js","../node_modules/url-set-query/index.js","../node_modules/url/node_modules/punycode/punycode.js","../node_modules/url/url.js","../node_modules/url/util.js","../node_modules/utf8/utf8.js","../node_modules/util-deprecate/browser.js","../node_modules/util/support/isBufferBrowser.js","../node_modules/util/support/types.js","../node_modules/util/util.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/regex.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/validate.js","../node_modules/uuid/dist/esm-browser/v4.js","../node_modules/varint/decode.js","../node_modules/varint/encode.js","../node_modules/varint/index.js","../node_modules/varint/length.js","../node_modules/web3-bzz/lib/index.js","../node_modules/web3-core-helpers/lib/errors.js","../node_modules/web3-core-helpers/lib/formatters.js","../node_modules/web3-core-helpers/lib/index.js","../node_modules/web3-core-method/lib/index.js","../node_modules/web3-core-promievent/lib/index.js","../node_modules/web3-core-promievent/node_modules/eventemitter3/index.js","../node_modules/web3-core-requestmanager/lib/batch.js","../node_modules/web3-core-requestmanager/lib/givenProvider.js","../node_modules/web3-core-requestmanager/lib/index.js","../node_modules/web3-core-requestmanager/lib/jsonrpc.js","../node_modules/web3-core-subscriptions/lib/index.js","../node_modules/web3-core-subscriptions/lib/subscription.js","../node_modules/web3-core-subscriptions/node_modules/eventemitter3/index.js","../node_modules/web3-core/lib/extend.js","../node_modules/web3-core/lib/index.js","../node_modules/web3-eth-abi/lib/index.js","../node_modules/web3-eth-accounts/lib/index.js","../node_modules/web3-eth-accounts/node_modules/bn.js/lib/bn.js","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/account.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/address.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/bytes.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/constants.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/externals.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/hash.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/helpers.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/index.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/internal.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/object.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/signature.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/types.ts","../node_modules/web3-eth-accounts/node_modules/uuid/index.js","../node_modules/web3-eth-accounts/node_modules/uuid/lib/bytesToUuid.js","../node_modules/web3-eth-accounts/node_modules/uuid/lib/rng-browser.js","../node_modules/web3-eth-accounts/node_modules/uuid/v1.js","../node_modules/web3-eth-accounts/node_modules/uuid/v4.js","../node_modules/web3-eth-contract/lib/index.js","../node_modules/web3-eth-ens/lib/ENS.js","../node_modules/web3-eth-ens/lib/config.js","../node_modules/web3-eth-ens/lib/contracts/Registry.js","../node_modules/web3-eth-ens/lib/index.js","../node_modules/web3-eth-ens/lib/lib/ResolverMethodHandler.js","../node_modules/web3-eth-ens/lib/lib/contentHash.js","../node_modules/web3-eth-ens/lib/resources/ABI/Registry.js","../node_modules/web3-eth-ens/lib/resources/ABI/Resolver.js","../node_modules/web3-eth-iban/lib/index.js","../node_modules/web3-eth-iban/node_modules/bn.js/lib/bn.js","../node_modules/web3-eth-personal/lib/index.js","../node_modules/web3-eth/lib/getNetworkType.js","../node_modules/web3-eth/lib/index.js","../node_modules/web3-net/lib/index.js","../node_modules/web3-provider-engine/index.js","../node_modules/web3-provider-engine/subproviders/cache.js","../node_modules/web3-provider-engine/subproviders/filters.js","../node_modules/web3-provider-engine/subproviders/fixture.js","../node_modules/web3-provider-engine/subproviders/hooked-wallet.js","../node_modules/web3-provider-engine/subproviders/json-rpc-engine-middleware.js","../node_modules/web3-provider-engine/subproviders/nonce-tracker.js","../node_modules/web3-provider-engine/subproviders/subprovider.js","../node_modules/web3-provider-engine/subproviders/subscriptions.js","../node_modules/web3-provider-engine/util/create-payload.js","../node_modules/web3-provider-engine/util/estimate-gas.js","../node_modules/web3-provider-engine/util/random-id.js","../node_modules/web3-provider-engine/util/rpc-cache-utils.js","../node_modules/web3-provider-engine/util/stoplight.js","../node_modules/web3-providers-http/lib/index.js","../node_modules/web3-providers-ipc/lib/index.js","../node_modules/web3-providers-ws/lib/helpers.js","../node_modules/web3-providers-ws/lib/index.js","../node_modules/web3-providers-ws/node_modules/eventemitter3/index.js","../node_modules/web3-shh/lib/index.js","../node_modules/web3-utils/lib/index.js","../node_modules/web3-utils/lib/soliditySha3.js","../node_modules/web3-utils/lib/utils.js","../node_modules/web3-utils/node_modules/bn.js/lib/bn.js","../node_modules/web3-utils/node_modules/ethereumjs-util/src/account.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/address.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/bytes.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/constants.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/externals.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/hash.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/helpers.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/index.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/internal.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/object.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/signature.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/types.ts","../node_modules/web3/lib/index.js","../Web3Modal/webpack/universalModuleDefinition","../Web3Modal/webpack/bootstrap","../Web3Modal/node_modules/tslib/tslib.es6.js","../Web3Modal/node_modules/react/index.js","../Web3Modal/src/constants/index.ts","../Web3Modal/src/helpers/index.ts","../Web3Modal/src/themes/index.ts","../Web3Modal/src/providers/index.ts","../Web3Modal/node_modules/react-is/index.js","../Web3Modal/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../Web3Modal/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","../Web3Modal/node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","../Web3Modal/node_modules/object-assign/index.js","../Web3Modal/src/helpers/utils.ts","../Web3Modal/node_modules/process/browser.js","../Web3Modal/src/providers/injected/index.ts","../Web3Modal/src/providers/logos/opera.svg","../Web3Modal/src/providers/logos/frame.svg","../Web3Modal/src/providers/logos/sequence.svg","../Web3Modal/src/components/index.ts","../Web3Modal/node_modules/styled-components/dist/styled-components.browser.esm.js","../Web3Modal/src/components/Provider.tsx","../Web3Modal/src/controllers/index.ts","../Web3Modal/src/controllers/events.ts","../Web3Modal/node_modules/shallowequal/index.js","../Web3Modal/node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../Web3Modal/node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../Web3Modal/src/index.ts","../Web3Modal/src/core/index.tsx","../Web3Modal/node_modules/react/cjs/react.production.min.js","../Web3Modal/node_modules/react-dom/index.js","../Web3Modal/node_modules/react-dom/cjs/react-dom.production.min.js","../Web3Modal/node_modules/scheduler/index.js","../Web3Modal/node_modules/scheduler/cjs/scheduler.production.min.js","../Web3Modal/src/helpers/local.ts","../Web3Modal/node_modules/detect-browser/es/index.js","../Web3Modal/src/constants/chains.ts","../Web3Modal/src/constants/classNames.ts","../Web3Modal/src/constants/events.ts","../Web3Modal/src/constants/keys.ts","../Web3Modal/src/themes/light.ts","../Web3Modal/src/themes/dark.ts","../Web3Modal/src/providers/connectors/index.ts","../Web3Modal/src/providers/connectors/injected.ts","../Web3Modal/src/providers/connectors/boltx.ts","../Web3Modal/src/providers/connectors/walletconnect.ts","../Web3Modal/src/providers/connectors/portis.ts","../Web3Modal/src/providers/connectors/fortmatic.ts","../Web3Modal/src/providers/connectors/torus.ts","../Web3Modal/src/providers/connectors/venly.ts","../Web3Modal/src/providers/connectors/authereum.ts","../Web3Modal/src/providers/connectors/burnerconnect.ts","../Web3Modal/src/providers/connectors/mewconnect.ts","../Web3Modal/src/providers/connectors/dcentwallet.ts","../Web3Modal/src/providers/connectors/bitski.ts","../Web3Modal/src/providers/connectors/frame.ts","../Web3Modal/src/providers/connectors/binancechainwallet.ts","../Web3Modal/src/providers/connectors/coinbasewallet.ts","../Web3Modal/src/providers/connectors/sequence.ts","../Web3Modal/src/providers/connectors/clvwallet.ts","../Web3Modal/src/providers/connectors/opera.ts","../Web3Modal/src/providers/logos/web3-default.svg","../Web3Modal/src/providers/logos/metamask.svg","../Web3Modal/src/providers/logos/safe.svg","../Web3Modal/src/providers/logos/niftyWallet.png","../Web3Modal/src/providers/logos/trust.svg","../Web3Modal/src/providers/logos/dapper.png","../Web3Modal/src/providers/logos/coinbase.svg","../Web3Modal/src/providers/logos/cipher.svg","../Web3Modal/src/providers/logos/imtoken.svg","../Web3Modal/src/providers/logos/status.svg","../Web3Modal/src/providers/logos/tokenary.png","../Web3Modal/src/providers/logos/liquality.png","../Web3Modal/src/providers/logos/boltx.svg","../Web3Modal/src/providers/logos/mathwallet.png","../Web3Modal/src/providers/logos/rwallet.svg","../Web3Modal/src/providers/logos/bitpie.svg","../Web3Modal/src/providers/logos/xdefi.svg","../Web3Modal/src/providers/logos/celoExtensionWallet.svg","../Web3Modal/src/providers/logos/blockwallet.svg","../Web3Modal/src/providers/logos/tally.svg","../Web3Modal/src/providers/logos/portal.svg","../Web3Modal/src/providers/logos/brave.svg","../Web3Modal/src/providers/logos/rabby.svg","../Web3Modal/src/providers/logos/bitkeepwallet.png","../Web3Modal/src/providers/logos/clv.svg","../Web3Modal/src/providers/providers/index.ts","../Web3Modal/src/providers/logos/walletconnect-circle.svg","../Web3Modal/src/providers/logos/portis.svg","../Web3Modal/src/providers/logos/fortmatic.svg","../Web3Modal/src/providers/logos/venly.svg","../Web3Modal/src/providers/logos/torus.svg","../Web3Modal/src/providers/logos/authereum.svg","../Web3Modal/src/providers/logos/burnerwallet.png","../Web3Modal/src/providers/logos/mewwallet.png","../Web3Modal/src/providers/logos/dcentwallet.png","../Web3Modal/src/providers/logos/bitski.svg","../Web3Modal/src/providers/logos/binancechainwallet.svg","../Web3Modal/src/providers/logos/coinbasewallet.svg","../Web3Modal/src/components/Modal.tsx","../Web3Modal/node_modules/prop-types/index.js","../Web3Modal/node_modules/prop-types/factoryWithThrowingShims.js","../Web3Modal/node_modules/prop-types/lib/ReactPropTypesSecret.js","../Web3Modal/node_modules/react-is/cjs/react-is.production.min.js","../Web3Modal/node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../Web3Modal/node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../Web3Modal/src/controllers/providers.ts","../node_modules/websocket/lib/browser.js","../node_modules/websocket/lib/version.js","../node_modules/which-typed-array/index.js","../node_modules/wrappy/wrappy.js","../node_modules/xhr-request/index.js","../node_modules/xhr-request/lib/ensure-header.js","../node_modules/xhr-request/lib/normalize-response.js","../node_modules/xhr-request/lib/request-browser.js","../node_modules/xhr-request/node_modules/query-string/index.js","../node_modules/xhr-request/node_modules/strict-uri-encode/index.js","../node_modules/xhr/index.js","../../errors.ts","../../index.ts","../../progress-event.ts","../../xml-http-request-event-target.ts","../../xml-http-request-upload.ts","../../xml-http-request.ts","../node_modules/xtend/immutable.js","webpack://app-front-end/./node_modules/@solana/wallet-adapter-react-ui/styles.css?fa4f","../node_modules/available-typed-arrays/index.js","../node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/text-encoding-utf-8/lib/encoding.lib.mjs","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/extends.js","../../packages/react-router/lib/context.ts","../../packages/react-router/lib/router.ts","../../packages/react-router/lib/hooks.tsx","../../packages/react-router/lib/components.tsx","../../packages/react-router-dom/index.tsx","../node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-bitkeep/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-bitkeep/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-bitkeep/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-bitkeep/src/adapter.ts","../node_modules/@solana/wallet-adapter-bitpie/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-bitpie/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-bitpie/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-bitpie/src/adapter.ts","../node_modules/@solana/wallet-adapter-blocto/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-blocto/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-blocto/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-blocto/src/adapter.ts","../node_modules/@solana/wallet-adapter-clover/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-clover/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-clover/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-clover/src/adapter.ts","../node_modules/@solana/wallet-adapter-coin98/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-coin98/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-coin98/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-coinhub/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-coinhub/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-coinhub/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-coinhub/src/adapter.ts","../node_modules/@solana/wallet-adapter-exodus/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-exodus/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-exodus/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-exodus/src/adapter.ts","../node_modules/@solana/wallet-adapter-glow/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-glow/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-glow/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-glow/node_modules/@solana/wallet-adapter-base/src/signer.ts","../node_modules/@solana/wallet-adapter-glow/src/adapter.ts","../node_modules/@solana/wallet-adapter-huobi/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-huobi/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-huobi/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-huobi/src/adapter.ts","../node_modules/@solana/wallet-adapter-ledger/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-ledger/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-ledger/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-ledger/node_modules/@solana/wallet-adapter-base/src/signer.ts","../node_modules/@solana/wallet-adapter-ledger/src/polyfills/Buffer.ts","../node_modules/@solana/wallet-adapter-ledger/src/util.ts","../node_modules/@solana/wallet-adapter-ledger/src/adapter.ts","../node_modules/@solana/wallet-adapter-mathwallet/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-mathwallet/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-mathwallet/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-mathwallet/src/adapter.ts","../node_modules/@solana/wallet-adapter-neko/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-neko/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-neko/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-neko/src/adapter.ts","../node_modules/@solana/wallet-adapter-nightly/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-nightly/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-nightly/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-nightly/src/adapter.ts","../node_modules/@solana/wallet-adapter-nufi/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-nufi/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-nufi/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-nufi/src/adapter.ts","../node_modules/@solana/wallet-adapter-phantom/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-phantom/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-phantom/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-phantom/node_modules/@solana/wallet-adapter-base/src/signer.ts","../node_modules/@solana/wallet-adapter-phantom/src/adapter.ts","../node_modules/@solana/wallet-adapter-safepal/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-safepal/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-safepal/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-safepal/src/adapter.ts","../node_modules/@solana/wallet-adapter-saifu/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-saifu/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-saifu/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-saifu/src/adapter.ts","../node_modules/@solana/wallet-adapter-slope/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-slope/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-slope/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-slope/node_modules/@solana/wallet-adapter-base/src/signer.ts","../node_modules/@solana/wallet-adapter-slope/src/adapter.ts","../node_modules/@solana/wallet-adapter-solflare/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-solflare/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-solflare/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-solflare/node_modules/@solana/wallet-adapter-base/src/signer.ts","../node_modules/@solana/wallet-adapter-solflare/src/adapter.ts","../node_modules/@solana/wallet-adapter-sollet/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-sollet/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-sollet/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-sollet/node_modules/@solana/wallet-adapter-base/src/signer.ts","../node_modules/@solana/wallet-adapter-sollet/src/base.ts","../node_modules/@solana/wallet-adapter-solong/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-sollet/src/adapter.ts","../node_modules/@solana/wallet-adapter-solong/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-solong/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-solong/src/adapter.ts","../node_modules/@solana/wallet-adapter-spot/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-spot/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-spot/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-spot/src/adapter.ts","../node_modules/@solana/wallet-adapter-tokenpocket/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-tokenpocket/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-tokenpocket/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-tokenpocket/src/adapter.ts","../node_modules/@solana/wallet-adapter-torus/node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-torus/node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-torus/node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-torus/node_modules/@solana/wallet-adapter-base/src/signer.ts","../node_modules/@solana/wallet-adapter-torus/src/adapter.ts","../node_modules/@solana/wallet-adapter-react/src/useConnection.tsx","../node_modules/@solana/wallet-adapter-react/src/ConnectionProvider.tsx","../node_modules/@solana/wallet-adapter-react/src/errors.ts","../node_modules/@solana/wallet-adapter-react/src/useWallet.ts","../node_modules/@solana/wallet-adapter-react/src/WalletProvider.tsx","../node_modules/@solana/wallet-adapter-react/src/useLocalStorage.ts","../node_modules/@solana/wallet-adapter-react-ui/src/useWalletModal.tsx","../node_modules/@solana/wallet-adapter-react-ui/src/Button.tsx","../node_modules/@solana/wallet-adapter-react-ui/src/WalletIcon.tsx","../node_modules/@solana/wallet-adapter-react-ui/src/Collapse.tsx","../node_modules/@solana/wallet-adapter-react-ui/src/WalletListItem.tsx","../node_modules/@solana/wallet-adapter-react-ui/src/WalletSVG.tsx","../node_modules/@solana/wallet-adapter-react-ui/src/WalletModal.tsx","../node_modules/@solana/wallet-adapter-react-ui/src/WalletModalProvider.tsx","utils/api.js","context/user-context/UserProvider.js","icons/home.js","icons/logo.svg","icons/logout.svg","icons/merchant.js","icons/settings.js","components/header/Header.js","components/loader/Loader.js","icons/right-arrow.svg","components/button/Button.js","icons/desk-btc-illustration.svg","icons/externalLink.js","components/transactions-table/LargeTransactionTable.js","components/transactions-table/MobileTransactionTable.js","components/transactions-table/TransactionsTable.js","icons/down.js","components/round-pagination-buttons/RoundPaginationButtons.js","components/portfolio/Portfolio.js","icons/cross.js","components/modal/Modal.js","icons/copy.js","icons/warning.js","icons/exclamation.svg","../node_modules/@solana/spl-token/src/instructions/types.ts","components/input/Input.js","../node_modules/@solana/buffer-layout-utils/src/base.ts","../node_modules/@solana/buffer-layout-utils/src/bigint.ts","../node_modules/@solana/buffer-layout-utils/src/native.ts","../node_modules/@solana/buffer-layout-utils/src/decimal.ts","../node_modules/@solana/buffer-layout-utils/src/web3.ts","../node_modules/@solana/spl-token/src/constants.ts","../node_modules/@solana/spl-token/src/errors.ts","../node_modules/@solana/spl-token/src/instructions/initializeMint.ts","../node_modules/@solana/spl-token/src/instructions/initializeAccount.ts","../node_modules/@solana/spl-token/src/instructions/initializeMultisig.ts","../node_modules/@solana/spl-token/src/instructions/internal.ts","../node_modules/@solana/spl-token/src/instructions/transfer.ts","../node_modules/@solana/spl-token/src/instructions/approve.ts","../node_modules/@solana/spl-token/src/instructions/revoke.ts","../node_modules/@solana/spl-token/src/instructions/setAuthority.ts","../node_modules/@solana/spl-token/src/instructions/mintTo.ts","../node_modules/@solana/spl-token/src/instructions/burn.ts","../node_modules/@solana/spl-token/src/instructions/closeAccount.ts","../node_modules/@solana/spl-token/src/instructions/freezeAccount.ts","../node_modules/@solana/spl-token/src/instructions/thawAccount.ts","../node_modules/@solana/spl-token/src/instructions/transferChecked.ts","../node_modules/@solana/spl-token/src/instructions/approveChecked.ts","../node_modules/@solana/spl-token/src/instructions/mintToChecked.ts","../node_modules/@solana/spl-token/src/instructions/burnChecked.ts","../node_modules/@solana/spl-token/src/instructions/syncNative.ts","../node_modules/@solana/spl-token/src/state/account.ts","../node_modules/@solana/spl-token/src/instructions/associatedTokenAccount.ts","../node_modules/@solana/spl-token/src/state/mint.ts","../node_modules/@solana/spl-token/src/state/multisig.ts","../node_modules/@solana/spl-token/src/actions/getOrCreateAssociatedTokenAccount.ts","utils/blockchain.js","../../src/constants.ts","../../src/encoding.ts","../../src/format.ts","../../src/misc.ts","../../src/validators.ts","../../src/ethereum.ts","../../src/url.ts","../../src/network.ts","../../src/errors.ts","../../src/events.ts","../../src/storage.ts","../../src/session.ts","../../src/payload.ts","../../src/browser/index.ts","../../src/constants/length.ts","../../src/constants/default.ts","../../src/lib/browser.ts","../../src/constants/operations.ts","../../src/browser/aes.ts","../../src/browser/hmac.ts","../node_modules/@toruslabs/fetch-node-details/src/interfaces.ts","../node_modules/@toruslabs/fetch-node-details/src/nodeDetailManager.ts","../node_modules/@toruslabs/torus.js/src/loglevel.ts","../node_modules/@toruslabs/torus.js/src/some.ts","../node_modules/@toruslabs/torus.js/src/utils.ts","../node_modules/@toruslabs/torus.js/src/torus.ts","../node_modules/@toruslabs/torus-embed/src/interfaces.ts","../node_modules/@toruslabs/torus-embed/src/config.ts","../node_modules/@toruslabs/torus-embed/src/embedUtils.ts","../node_modules/@toruslabs/torus-embed/src/loglevel.ts","../node_modules/@toruslabs/torus-embed/src/messages.ts","../node_modules/@toruslabs/torus-embed/src/utils.ts","../node_modules/@toruslabs/torus-embed/src/inpage-provider.ts","../node_modules/@toruslabs/torus-embed/src/integrity.ts","../node_modules/@toruslabs/torus-embed/src/PopupHandler.ts","../node_modules/@toruslabs/torus-embed/src/siteMetadata.ts","../node_modules/@toruslabs/torus-embed/src/embed.ts","utils/tokenAddresses.js","utils/evmTokenABI.js","components/pay-with-wallet-btn/PayWithWalletBtn.js","utils/providers.js","components/select/Select.js","components/deposit-modal/DepositModal.js","icons/error-illustration.svg","components/error-state/ErrorState.js","screens/home/Home.js","icons/login-illustration.svg","utils/forms.js","screens/login/Login.js","components/checkbox/Checkbox.js","icons/signup-illustration.svg","icons/info.svg","components/security-level-checkbox/SecurityLevelCheckbox.js","screens/signup/Signup.js","screens/page-not-found/PageNotFound.js","screens/all-transactions/AllTransactions.js","icons/double-arrows.svg","icons/lock.js","screens/withdraw/Withdraw.js","icons/down.svg","components/select-dropdown/SelectDropdown.js","screens/create-merchant-form/CreateMerchantForm.js","../node_modules/@visx/shape/esm/util/setNumberOrNumberAccessor.js","../node_modules/d3-path/src/path.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-shape/src/curve/linear.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/line.js","../node_modules/@visx/shape/esm/util/D3ShapeFactories.js","../node_modules/d3-shape/src/area.js","../node_modules/@visx/shape/esm/shapes/AreaClosed.js","../node_modules/@visx/shape/esm/shapes/LinePath.js","../node_modules/@visx/shape/esm/shapes/Bar.js","../node_modules/@visx/shape/esm/shapes/Line.js","../node_modules/d3-shape/src/curve/monotone.js","../node_modules/@visx/group/esm/Group.js","../node_modules/@visx/point/esm/Point.js","../node_modules/@visx/scale/esm/utils/getTicks.js","../node_modules/@visx/scale/esm/utils/coerceNumber.js","../node_modules/@visx/grid/esm/grids/GridRows.js","../node_modules/@visx/grid/esm/utils/getScaleBandwidth.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time/src/ticks.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/number.js","../node_modules/d3-scale/node_modules/d3-color/src/define.js","../node_modules/d3-scale/node_modules/d3-color/src/color.js","../node_modules/d3-scale/node_modules/d3-interpolate/src/basis.js","../node_modules/d3-scale/node_modules/d3-interpolate/src/constant.js","../node_modules/d3-scale/node_modules/d3-interpolate/src/color.js","../node_modules/d3-scale/node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-scale/node_modules/d3-interpolate/src/basisClosed.js","../node_modules/d3-scale/node_modules/d3-interpolate/src/array.js","../node_modules/d3-scale/node_modules/d3-interpolate/src/date.js","../node_modules/d3-scale/node_modules/d3-interpolate/src/number.js","../node_modules/d3-scale/node_modules/d3-interpolate/src/object.js","../node_modules/d3-scale/node_modules/d3-interpolate/src/string.js","../node_modules/d3-scale/node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-scale/node_modules/d3-interpolate/src/value.js","../node_modules/d3-scale/node_modules/d3-interpolate/src/round.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-scale/src/constant.js","../node_modules/d3-scale/src/init.js","../node_modules/d3-scale/src/time.js","../node_modules/d3-scale/src/nice.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-color/src/math.js","../node_modules/d3-color/src/lab.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/hcl.js","../node_modules/d3-interpolate/src/hsl.js","../node_modules/d3-color/src/cubehelix.js","../node_modules/d3-interpolate/src/cubehelix.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/basisClosed.js","../node_modules/@visx/scale/esm/utils/createColorInterpolator.js","../node_modules/d3-interpolate/src/lab.js","../node_modules/@visx/scale/esm/utils/isUtcScale.js","../node_modules/@visx/scale/esm/operators/nice.js","../node_modules/d3-interpolate/src/round.js","../node_modules/@visx/scale/esm/operators/scaleOperator.js","../node_modules/@visx/scale/esm/operators/domain.js","../node_modules/@visx/scale/esm/operators/zero.js","../node_modules/@visx/scale/esm/operators/interpolate.js","../node_modules/@visx/scale/esm/operators/round.js","../node_modules/@visx/scale/esm/operators/align.js","../node_modules/@visx/scale/esm/operators/base.js","../node_modules/@visx/scale/esm/operators/clamp.js","../node_modules/@visx/scale/esm/operators/constant.js","../node_modules/@visx/scale/esm/operators/exponent.js","../node_modules/@visx/scale/esm/operators/padding.js","../node_modules/@visx/scale/esm/operators/range.js","../node_modules/@visx/scale/esm/operators/reverse.js","../node_modules/@visx/scale/esm/operators/unknown.js","../node_modules/@visx/scale/esm/scales/time.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-scale/src/linear.js","../node_modules/@visx/scale/esm/scales/linear.js","../node_modules/@visx/text/esm/util/getStringWidth.js","../node_modules/@visx/text/esm/hooks/useText.js","../node_modules/@visx/text/esm/Text.js","../node_modules/@visx/axis/esm/constants/orientation.js","../node_modules/@visx/axis/esm/axis/Ticks.js","../node_modules/@visx/axis/esm/axis/AxisRenderer.js","../node_modules/@visx/axis/esm/utils/getLabelTransform.js","../node_modules/@visx/scale/esm/utils/toString.js","../node_modules/@visx/axis/esm/utils/createPoint.js","../node_modules/@visx/axis/esm/axis/Axis.js","../node_modules/@visx/axis/esm/utils/getTickFormatter.js","../node_modules/@visx/axis/esm/utils/getTickPosition.js","../node_modules/@visx/axis/esm/axis/AxisBottom.js","../node_modules/@visx/axis/esm/axis/AxisLeft.js","../node_modules/@visx/tooltip/esm/tooltips/Tooltip.js","../node_modules/@visx/tooltip/esm/hooks/useTooltip.js","../node_modules/@visx/tooltip/esm/enhancers/withTooltip.js","../node_modules/@visx/event/esm/getXAndYFromEvent.js","../node_modules/@visx/event/esm/localPointGeneric.js","../node_modules/@visx/event/esm/typeGuards.js","../node_modules/@visx/event/esm/localPoint.js","../node_modules/@visx/gradient/esm/gradients/LinearGradient.js","../node_modules/d3-array/src/extent.js","../node_modules/d3-array/src/max.js","components/line-chart/LineChart.js","icons/calendar.js","components/chart-filter-button/ChartFilterButton.js","../node_modules/@easepick/datetime/dist/index.esm.js","../node_modules/@easepick/core/dist/index.esm.js","../node_modules/@easepick/base-plugin/dist/index.esm.js","../node_modules/@easepick/range-plugin/dist/index.esm.js","components/date-picker-range/DatePickerRange.js","components/minimal-line-chart/MinimalLineChart.js","components/small-chart-section/SmallChartSection.js","components/filter-dropdown/FilterDropdown.js","components/datepicker-dropdown-filter/DatepickerDropdownFilter.js","icons/search.js","components/search-input/SearchInput.js","components/pagination/Pagination.js","icons/export.svg","components/payments-table/LargePaymentsTable.js","components/payments-table/MobilePaymentsTable.js","components/payments-table/PaymentsTable.js","screens/merchant-sales/MerchantSales.js","icons/settings-illustration.svg","screens/settings/Settings.js","screens/reset-password/ResetPassword.js","App.js","reportWebVitals.js","index.js"],"sourcesContent":["function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nmodule.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}\n\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var superPropBase = require(\"./superPropBase.js\");\n\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n\n return _get.apply(this, arguments);\n}\n\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var defineProperty = require(\"./defineProperty.js\");\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread2, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nfunction _regeneratorRuntime() {\n \"use strict\";\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return generator._invoke = function (innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }(innerFn, self, context), generator;\n }\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n exports.wrap = wrap;\n var ContinueSentinel = {};\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {}\n\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n\n reject(record.arg);\n }\n\n var previousPromise;\n\n this._invoke = function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n };\n }\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n\n return next.value = undefined, next.done = !0, next;\n };\n\n return next.next = next;\n }\n }\n\n return {\n next: doneResult\n };\n }\n\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, \"constructor\", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n }\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\n\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeFunction = require(\"./isNativeFunction.js\");\n\nvar construct = require(\"./construct.js\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","export const LOCAL_STORAGE_TOKEN_KEY = 'AUTH_TOKEN';\n\nexport const SUPPORTED_TOKENS = {\n BTC: ['BTC'],\n SOL: ['SOL', 'USDT', 'USDC'],\n ETH: ['ETH', 'USDT', 'USDC', 'DAI'],\n BSC: ['BNB', 'USDT', 'USDC', 'BUSD'],\n MATIC: ['MATIC', 'USDT', 'USDC'],\n FTM: ['FTM', 'USDT', 'DAI'],\n AVAX: ['AVAX', 'USDT', 'USDC'],\n};\n\nexport const ALL_SUPPORTED_TOKENS = [\n ...new Set(Object.values(SUPPORTED_TOKENS).reduce((acc, val) => [...acc, ...val], [])),\n];\n\nexport const TRANSACTION_EXPLORER_LINK = {\n BTC: 'https://www.blockchain.com/btc/tx/',\n SOL: 'https://solscan.io/tx/',\n ETH: 'https://etherscan.io/tx/',\n BSC: 'https://bscscan.com/tx/',\n MATIC: 'https://polygonscan.com/tx/',\n FTM: 'https://ftmscan.com/tx/',\n AVAX: 'https://snowtrace.io/tx/',\n};\n\nexport const NETWORK_NAME_LABELS = {\n BTC: 'Bitcoin',\n SOL: 'Solana',\n ETH: 'Ethereum',\n BSC: 'Binance Smart Chain',\n MATIC: 'Polygon',\n FTM: 'Fantom',\n AVAX: 'Avalanche',\n};\n\nexport const TRANSACTION_STATES = {\n COMPLETED: 'completed',\n FAILED: 'failed',\n PENDING: 'pending',\n};\n\nexport const EVM_CHAIN_IDS = {\n ETH: 1,\n BSC: 56,\n MATIC: 137,\n AVAX: 43114,\n FTM: 250,\n};\n\nexport const COLLECTED_CUSTOMER_DATE_VALUES = {\n EMAIL: 'Email',\n FIRST_NAME: 'First Name',\n LAST_NAME: 'Last Name',\n ADDRESS: 'Address',\n NOTES: 'Notes',\n};\n\nexport const PAYMENT_STATES_LABELS = {\n initialized: 'Initialized',\n canceled: 'Canceled',\n pending: 'Pending',\n completed: 'Completed',\n failed: 'Failed',\n 'completed-with-failed-call-to-webhook': 'Completed with failed call to webhook',\n};\n\nexport const LOGO_URL = 'https://bucket1-payonix.s3.amazonaws.com/P%20icon-01.png';\n","export const timestampToFormattedDate = (timestampStr, showHour) => {\n const timestamp = parseInt(timestampStr) * 1000;\n const date = new Date(timestamp);\n return showHour ? date.toLocaleString() : date.toLocaleDateString();\n};\n\nexport const dateToFormattedStr = (date) => {\n return `${date.getFullYear()}-${('0' + (date.getMonth() + 1)).slice(-2)}-${('0' + date.getDate()).slice(-2)}`;\n};\n\nexport const datesAreTheSameDay = (date1, date2) => {\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n};\n\nexport const getDaysBetweenTwoDates = (date1, date2) => {\n return Math.floor((date2.getTime() - date1.getTime()) / (1000 * 60 * 60 * 24));\n};\n\nexport const isDateInPeriod = (date, startDate, endDate) => {\n date.setHours(0, 0, 0, 0);\n startDate.setHours(0, 0, 0, 0);\n endDate.setHours(0, 0, 0, 0);\n return date.getTime() >= startDate.getTime() && date.getTime() <= endDate.getTime();\n};\n","import toast from 'react-hot-toast';\n\nexport const truncate = (input, length) => (input.length > length ? `${input.substring(0, length)}...` : input);\n\nexport const getRandomSmallString = () => (Math.random() + 1).toString(36).substring(7);\n\nexport const copyToClipboard = (string) => {\n navigator.clipboard.writeText(string);\n toast.success('Copied to clipboard');\n};\n\nexport const removeTrailingZeros = (str) => {\n let newStr = str;\n while (newStr.at(-1) === '0') {\n newStr = newStr.slice(0, -1);\n }\n return newStr;\n};\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CoinbaseWalletSDK = void 0;\nconst wallet_logo_1 = require(\"./assets/wallet-logo\");\nconst ScopedLocalStorage_1 = require(\"./lib/ScopedLocalStorage\");\nconst CoinbaseWalletProvider_1 = require(\"./provider/CoinbaseWalletProvider\");\nconst WalletSDKUI_1 = require(\"./provider/WalletSDKUI\");\nconst WalletSDKRelay_1 = require(\"./relay/WalletSDKRelay\");\nconst WalletSDKRelayEventManager_1 = require(\"./relay/WalletSDKRelayEventManager\");\nconst util_1 = require(\"./util\");\nconst LINK_API_URL = process.env.LINK_API_URL || \"https://www.walletlink.org\";\nconst SDK_VERSION = process.env.SDK_VERSION || require(\"../package.json\").version || \"unknown\";\nclass CoinbaseWalletSDK {\n /**\n * Constructor\n * @param options Coinbase Wallet SDK constructor options\n */\n constructor(options) {\n var _a, _b, _c;\n this._appName = \"\";\n this._appLogoUrl = null;\n this._relay = null;\n this._relayEventManager = null;\n const linkAPIUrl = options.linkAPIUrl || LINK_API_URL;\n let uiConstructor;\n if (!options.uiConstructor) {\n uiConstructor = opts => new WalletSDKUI_1.WalletSDKUI(opts);\n }\n else {\n uiConstructor = options.uiConstructor;\n }\n if (typeof options.overrideIsMetaMask === \"undefined\") {\n this._overrideIsMetaMask = false;\n }\n else {\n this._overrideIsMetaMask = options.overrideIsMetaMask;\n }\n this._overrideIsCoinbaseWallet = (_a = options.overrideIsCoinbaseWallet) !== null && _a !== void 0 ? _a : true;\n this._overrideIsCoinbaseBrowser =\n (_b = options.overrideIsCoinbaseBrowser) !== null && _b !== void 0 ? _b : false;\n if (options.diagnosticLogger && options.eventListener) {\n throw new Error(\"Can't have both eventListener and diagnosticLogger options, use only diagnosticLogger\");\n }\n if (options.eventListener) {\n this._diagnosticLogger = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n log: options.eventListener.onEvent,\n };\n }\n else {\n this._diagnosticLogger = options.diagnosticLogger;\n }\n this._reloadOnDisconnect = (_c = options.reloadOnDisconnect) !== null && _c !== void 0 ? _c : true;\n const u = new URL(linkAPIUrl);\n const origin = `${u.protocol}//${u.host}`;\n this._storage = new ScopedLocalStorage_1.ScopedLocalStorage(`-walletlink:${origin}`); // needs migration to preserve local states\n this._storage.setItem(\"version\", CoinbaseWalletSDK.VERSION);\n if (this.walletExtension) {\n return;\n }\n this._relayEventManager = new WalletSDKRelayEventManager_1.WalletSDKRelayEventManager();\n this._relay = new WalletSDKRelay_1.WalletSDKRelay({\n linkAPIUrl,\n version: SDK_VERSION,\n darkMode: !!options.darkMode,\n uiConstructor,\n storage: this._storage,\n relayEventManager: this._relayEventManager,\n diagnosticLogger: this._diagnosticLogger,\n });\n this.setAppInfo(options.appName, options.appLogoUrl);\n if (!!options.headlessMode)\n return;\n this._relay.attachUI();\n }\n /**\n * Create a Web3 Provider object\n * @param jsonRpcUrl Ethereum JSON RPC URL (Default: \"\")\n * @param chainId Ethereum Chain ID (Default: 1)\n * @returns A Web3 Provider\n */\n makeWeb3Provider(jsonRpcUrl = \"\", chainId = 1) {\n const extension = this.walletExtension;\n if (extension) {\n if (!this.isCipherProvider(extension)) {\n extension.setProviderInfo(jsonRpcUrl, chainId);\n }\n if (this._reloadOnDisconnect === false &&\n typeof extension.disableReloadOnDisconnect === \"function\")\n extension.disableReloadOnDisconnect();\n return extension;\n }\n const relay = this._relay;\n if (!relay || !this._relayEventManager || !this._storage) {\n throw new Error(\"Relay not initialized, should never happen\");\n }\n if (!jsonRpcUrl)\n relay.setConnectDisabled(true);\n return new CoinbaseWalletProvider_1.CoinbaseWalletProvider({\n relayProvider: () => Promise.resolve(relay),\n relayEventManager: this._relayEventManager,\n storage: this._storage,\n jsonRpcUrl,\n chainId,\n qrUrl: this.getQrUrl(),\n diagnosticLogger: this._diagnosticLogger,\n overrideIsMetaMask: this._overrideIsMetaMask,\n overrideIsCoinbaseWallet: this._overrideIsCoinbaseWallet,\n overrideIsCoinbaseBrowser: this._overrideIsCoinbaseBrowser,\n });\n }\n /**\n * Set application information\n * @param appName Application name\n * @param appLogoUrl Application logo image URL\n */\n setAppInfo(appName, appLogoUrl) {\n var _a;\n this._appName = appName || \"DApp\";\n this._appLogoUrl = appLogoUrl || (0, util_1.getFavicon)();\n const extension = this.walletExtension;\n if (extension) {\n if (!this.isCipherProvider(extension)) {\n extension.setAppInfo(this._appName, this._appLogoUrl);\n }\n }\n else {\n (_a = this._relay) === null || _a === void 0 ? void 0 : _a.setAppInfo(this._appName, this._appLogoUrl);\n }\n }\n /**\n * Disconnect. After disconnecting, this will reload the web page to ensure\n * all potential stale state is cleared.\n */\n disconnect() {\n var _a;\n const extension = this.walletExtension;\n if (extension) {\n void extension.close();\n }\n else {\n (_a = this._relay) === null || _a === void 0 ? void 0 : _a.resetAndReload();\n }\n }\n /**\n * Return QR URL for mobile wallet connection, will return null if extension is installed\n */\n getQrUrl() {\n var _a, _b;\n return (_b = (_a = this._relay) === null || _a === void 0 ? void 0 : _a.getQRCodeUrl()) !== null && _b !== void 0 ? _b : null;\n }\n /**\n * Official Coinbase Wallet logo for developers to use on their frontend\n * @param type Type of wallet logo: \"standard\" | \"circle\" | \"text\" | \"textWithLogo\" | \"textLight\" | \"textWithLogoLight\"\n * @param width Width of the logo (Optional)\n * @returns SVG Data URI\n */\n getCoinbaseWalletLogo(type, width = 240) {\n return (0, wallet_logo_1.walletLogo)(type, width);\n }\n get walletExtension() {\n var _a;\n return (_a = window.coinbaseWalletExtension) !== null && _a !== void 0 ? _a : window.walletLinkExtension;\n }\n isCipherProvider(provider) {\n // @ts-expect-error isCipher walletlink property\n return typeof provider.isCipher === \"boolean\" && provider.isCipher;\n }\n}\nexports.CoinbaseWalletSDK = CoinbaseWalletSDK;\nCoinbaseWalletSDK.VERSION = SDK_VERSION;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.walletLogo = void 0;\nconst walletLogo = (type, width) => {\n let height;\n switch (type) {\n case \"standard\":\n height = width;\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' viewBox='0 0 1024 1024' fill='none' xmlns='http://www.w3.org/2000/svg'%3E %3Crect width='1024' height='1024' fill='%230052FF'/%3E %3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M152 512C152 710.823 313.177 872 512 872C710.823 872 872 710.823 872 512C872 313.177 710.823 152 512 152C313.177 152 152 313.177 152 512ZM420 396C406.745 396 396 406.745 396 420V604C396 617.255 406.745 628 420 628H604C617.255 628 628 617.255 628 604V420C628 406.745 617.255 396 604 396H420Z' fill='white'/%3E %3C/svg%3E `;\n case \"circle\":\n height = width;\n return `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='${width}' height='${height}' viewBox='0 0 999.81 999.81'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%230052fe;%7D.cls-2%7Bfill:%23fefefe;%7D.cls-3%7Bfill:%230152fe;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M655-115.9h56c.83,1.59,2.36.88,3.56,1a478,478,0,0,1,75.06,10.42C891.4-81.76,978.33-32.58,1049.19,44q116.7,126,131.94,297.61c.38,4.14-.34,8.53,1.78,12.45v59c-1.58.84-.91,2.35-1,3.56a482.05,482.05,0,0,1-10.38,74.05c-24,106.72-76.64,196.76-158.83,268.93s-178.18,112.82-287.2,122.6c-4.83.43-9.86-.25-14.51,1.77H654c-1-1.68-2.69-.91-4.06-1a496.89,496.89,0,0,1-105.9-18.59c-93.54-27.42-172.78-77.59-236.91-150.94Q199.34,590.1,184.87,426.58c-.47-5.19.25-10.56-1.77-15.59V355c1.68-1,.91-2.7,1-4.06a498.12,498.12,0,0,1,18.58-105.9c26-88.75,72.64-164.9,140.6-227.57q126-116.27,297.21-131.61C645.32-114.57,650.35-113.88,655-115.9Zm377.92,500c0-192.44-156.31-349.49-347.56-350.15-194.13-.68-350.94,155.13-352.29,347.42-1.37,194.55,155.51,352.1,348.56,352.47C876.15,734.23,1032.93,577.84,1032.93,384.11Z' transform='translate(-183.1 115.9)'/%3E%3Cpath class='cls-2' d='M1032.93,384.11c0,193.73-156.78,350.12-351.29,349.74-193-.37-349.93-157.92-348.56-352.47C334.43,189.09,491.24,33.28,685.37,34,876.62,34.62,1032.94,191.67,1032.93,384.11ZM683,496.81q43.74,0,87.48,0c15.55,0,25.32-9.72,25.33-25.21q0-87.48,0-175c0-15.83-9.68-25.46-25.59-25.46H595.77c-15.88,0-25.57,9.64-25.58,25.46q0,87.23,0,174.45c0,16.18,9.59,25.7,25.84,25.71Z' transform='translate(-183.1 115.9)'/%3E%3Cpath class='cls-3' d='M683,496.81H596c-16.25,0-25.84-9.53-25.84-25.71q0-87.23,0-174.45c0-15.82,9.7-25.46,25.58-25.46H770.22c15.91,0,25.59,9.63,25.59,25.46q0,87.47,0,175c0,15.49-9.78,25.2-25.33,25.21Q726.74,496.84,683,496.81Z' transform='translate(-183.1 115.9)'/%3E%3C/svg%3E`;\n case \"text\":\n height = (0.1 * width).toFixed(2);\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 528.15 53.64'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%230052ff;%7D%3C/style%3E%3C/defs%3E%3Ctitle%3ECoinbase_Wordmark_SubBrands_ALL%3C/title%3E%3Cpath class='cls-1' d='M164.45,15a15,15,0,0,0-11.74,5.4V0h-8.64V52.92h8.5V48a15,15,0,0,0,11.88,5.62c10.37,0,18.21-8.21,18.21-19.3S174.67,15,164.45,15Zm-1.3,30.67c-6.19,0-10.73-4.83-10.73-11.31S157,23,163.22,23s10.66,4.82,10.66,11.37S169.34,45.65,163.15,45.65Zm83.31-14.91-6.34-.93c-3-.43-5.18-1.44-5.18-3.82,0-2.59,2.8-3.89,6.62-3.89,4.18,0,6.84,1.8,7.42,4.76h8.35c-.94-7.49-6.7-11.88-15.55-11.88-9.15,0-15.2,4.68-15.2,11.3,0,6.34,4,10,12,11.16l6.33.94c3.1.43,4.83,1.65,4.83,4,0,2.95-3,4.17-7.2,4.17-5.12,0-8-2.09-8.43-5.25h-8.49c.79,7.27,6.48,12.38,16.84,12.38,9.44,0,15.7-4.32,15.7-11.74C258.12,35.28,253.58,31.82,246.46,30.74Zm-27.65-2.3c0-8.06-4.9-13.46-15.27-13.46-9.79,0-15.26,5-16.34,12.6h8.57c.43-3,2.73-5.4,7.63-5.4,4.39,0,6.55,1.94,6.55,4.32,0,3.09-4,3.88-8.85,4.39-6.63.72-14.84,3-14.84,11.66,0,6.7,5,11,12.89,11,6.19,0,10.08-2.59,12-6.7.28,3.67,3,6.05,6.84,6.05h5v-7.7h-4.25Zm-8.5,9.36c0,5-4.32,8.64-9.57,8.64-3.24,0-6-1.37-6-4.25,0-3.67,4.39-4.68,8.42-5.11s6-1.22,7.13-2.88ZM281.09,15c-11.09,0-19.23,8.35-19.23,19.36,0,11.6,8.72,19.3,19.37,19.3,9,0,16.06-5.33,17.86-12.89h-9c-1.3,3.31-4.47,5.19-8.71,5.19-5.55,0-9.72-3.46-10.66-9.51H299.3V33.12C299.3,22.46,291.53,15,281.09,15Zm-9.87,15.26c1.37-5.18,5.26-7.7,9.72-7.7,4.9,0,8.64,2.8,9.51,7.7ZM19.3,23a9.84,9.84,0,0,1,9.5,7h9.14c-1.65-8.93-9-15-18.57-15A19,19,0,0,0,0,34.34c0,11.09,8.28,19.3,19.37,19.3,9.36,0,16.85-6,18.5-15H28.8a9.75,9.75,0,0,1-9.43,7.06c-6.27,0-10.66-4.83-10.66-11.31S13,23,19.3,23Zm41.11-8A19,19,0,0,0,41,34.34c0,11.09,8.28,19.3,19.37,19.3A19,19,0,0,0,79.92,34.27C79.92,23.33,71.64,15,60.41,15Zm.07,30.67c-6.19,0-10.73-4.83-10.73-11.31S54.22,23,60.41,23s10.8,4.89,10.8,11.37S66.67,45.65,60.48,45.65ZM123.41,15c-5.62,0-9.29,2.3-11.45,5.54V15.7h-8.57V52.92H112V32.69C112,27,115.63,23,121,23c5,0,8.06,3.53,8.06,8.64V52.92h8.64V31C137.66,21.6,132.84,15,123.41,15ZM92,.36a5.36,5.36,0,0,0-5.55,5.47,5.55,5.55,0,0,0,11.09,0A5.35,5.35,0,0,0,92,.36Zm-9.72,23h5.4V52.92h8.64V15.7h-14Zm298.17-7.7L366.2,52.92H372L375.29,44H392l3.33,8.88h6L386.87,15.7ZM377,39.23l6.45-17.56h.1l6.56,17.56ZM362.66,15.7l-7.88,29h-.11l-8.14-29H341l-8,28.93h-.1l-8-28.87H319L329.82,53h5.45l8.19-29.24h.11L352,53h5.66L368.1,15.7Zm135.25,0v4.86h12.32V52.92h5.6V20.56h12.32V15.7ZM467.82,52.92h25.54V48.06H473.43v-12h18.35V31.35H473.43V20.56h19.93V15.7H467.82ZM443,15.7h-5.6V52.92h24.32V48.06H443Zm-30.45,0h-5.61V52.92h24.32V48.06H412.52Z'/%3E%3C/svg%3E`;\n case \"textWithLogo\":\n height = (0.25 * width).toFixed(2);\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 308.44 77.61'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%230052ff;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M142.94,20.2l-7.88,29H135l-8.15-29h-5.55l-8,28.93h-.11l-8-28.87H99.27l10.84,37.27h5.44l8.2-29.24h.1l8.41,29.24h5.66L148.39,20.2Zm17.82,0L146.48,57.42h5.82l3.28-8.88h16.65l3.34,8.88h6L167.16,20.2Zm-3.44,23.52,6.45-17.55h.11l6.56,17.55ZM278.2,20.2v4.86h12.32V57.42h5.6V25.06h12.32V20.2ZM248.11,57.42h25.54V52.55H253.71V40.61h18.35V35.85H253.71V25.06h19.94V20.2H248.11ZM223.26,20.2h-5.61V57.42H242V52.55H223.26Zm-30.46,0h-5.6V57.42h24.32V52.55H192.8Zm-154,38A19.41,19.41,0,1,1,57.92,35.57H77.47a38.81,38.81,0,1,0,0,6.47H57.92A19.39,19.39,0,0,1,38.81,58.21Z'/%3E%3C/svg%3E`;\n case \"textLight\":\n height = (0.1 * width).toFixed(2);\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 528.15 53.64'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%23fefefe;%7D%3C/style%3E%3C/defs%3E%3Ctitle%3ECoinbase_Wordmark_SubBrands_ALL%3C/title%3E%3Cpath class='cls-1' d='M164.45,15a15,15,0,0,0-11.74,5.4V0h-8.64V52.92h8.5V48a15,15,0,0,0,11.88,5.62c10.37,0,18.21-8.21,18.21-19.3S174.67,15,164.45,15Zm-1.3,30.67c-6.19,0-10.73-4.83-10.73-11.31S157,23,163.22,23s10.66,4.82,10.66,11.37S169.34,45.65,163.15,45.65Zm83.31-14.91-6.34-.93c-3-.43-5.18-1.44-5.18-3.82,0-2.59,2.8-3.89,6.62-3.89,4.18,0,6.84,1.8,7.42,4.76h8.35c-.94-7.49-6.7-11.88-15.55-11.88-9.15,0-15.2,4.68-15.2,11.3,0,6.34,4,10,12,11.16l6.33.94c3.1.43,4.83,1.65,4.83,4,0,2.95-3,4.17-7.2,4.17-5.12,0-8-2.09-8.43-5.25h-8.49c.79,7.27,6.48,12.38,16.84,12.38,9.44,0,15.7-4.32,15.7-11.74C258.12,35.28,253.58,31.82,246.46,30.74Zm-27.65-2.3c0-8.06-4.9-13.46-15.27-13.46-9.79,0-15.26,5-16.34,12.6h8.57c.43-3,2.73-5.4,7.63-5.4,4.39,0,6.55,1.94,6.55,4.32,0,3.09-4,3.88-8.85,4.39-6.63.72-14.84,3-14.84,11.66,0,6.7,5,11,12.89,11,6.19,0,10.08-2.59,12-6.7.28,3.67,3,6.05,6.84,6.05h5v-7.7h-4.25Zm-8.5,9.36c0,5-4.32,8.64-9.57,8.64-3.24,0-6-1.37-6-4.25,0-3.67,4.39-4.68,8.42-5.11s6-1.22,7.13-2.88ZM281.09,15c-11.09,0-19.23,8.35-19.23,19.36,0,11.6,8.72,19.3,19.37,19.3,9,0,16.06-5.33,17.86-12.89h-9c-1.3,3.31-4.47,5.19-8.71,5.19-5.55,0-9.72-3.46-10.66-9.51H299.3V33.12C299.3,22.46,291.53,15,281.09,15Zm-9.87,15.26c1.37-5.18,5.26-7.7,9.72-7.7,4.9,0,8.64,2.8,9.51,7.7ZM19.3,23a9.84,9.84,0,0,1,9.5,7h9.14c-1.65-8.93-9-15-18.57-15A19,19,0,0,0,0,34.34c0,11.09,8.28,19.3,19.37,19.3,9.36,0,16.85-6,18.5-15H28.8a9.75,9.75,0,0,1-9.43,7.06c-6.27,0-10.66-4.83-10.66-11.31S13,23,19.3,23Zm41.11-8A19,19,0,0,0,41,34.34c0,11.09,8.28,19.3,19.37,19.3A19,19,0,0,0,79.92,34.27C79.92,23.33,71.64,15,60.41,15Zm.07,30.67c-6.19,0-10.73-4.83-10.73-11.31S54.22,23,60.41,23s10.8,4.89,10.8,11.37S66.67,45.65,60.48,45.65ZM123.41,15c-5.62,0-9.29,2.3-11.45,5.54V15.7h-8.57V52.92H112V32.69C112,27,115.63,23,121,23c5,0,8.06,3.53,8.06,8.64V52.92h8.64V31C137.66,21.6,132.84,15,123.41,15ZM92,.36a5.36,5.36,0,0,0-5.55,5.47,5.55,5.55,0,0,0,11.09,0A5.35,5.35,0,0,0,92,.36Zm-9.72,23h5.4V52.92h8.64V15.7h-14Zm298.17-7.7L366.2,52.92H372L375.29,44H392l3.33,8.88h6L386.87,15.7ZM377,39.23l6.45-17.56h.1l6.56,17.56ZM362.66,15.7l-7.88,29h-.11l-8.14-29H341l-8,28.93h-.1l-8-28.87H319L329.82,53h5.45l8.19-29.24h.11L352,53h5.66L368.1,15.7Zm135.25,0v4.86h12.32V52.92h5.6V20.56h12.32V15.7ZM467.82,52.92h25.54V48.06H473.43v-12h18.35V31.35H473.43V20.56h19.93V15.7H467.82ZM443,15.7h-5.6V52.92h24.32V48.06H443Zm-30.45,0h-5.61V52.92h24.32V48.06H412.52Z'/%3E%3C/svg%3E`;\n case \"textWithLogoLight\":\n height = (0.25 * width).toFixed(2);\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 308.44 77.61'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%23fefefe;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M142.94,20.2l-7.88,29H135l-8.15-29h-5.55l-8,28.93h-.11l-8-28.87H99.27l10.84,37.27h5.44l8.2-29.24h.1l8.41,29.24h5.66L148.39,20.2Zm17.82,0L146.48,57.42h5.82l3.28-8.88h16.65l3.34,8.88h6L167.16,20.2Zm-3.44,23.52,6.45-17.55h.11l6.56,17.55ZM278.2,20.2v4.86h12.32V57.42h5.6V25.06h12.32V20.2ZM248.11,57.42h25.54V52.55H253.71V40.61h18.35V35.85H253.71V25.06h19.94V20.2H248.11ZM223.26,20.2h-5.61V57.42H242V52.55H223.26Zm-30.46,0h-5.6V57.42h24.32V52.55H192.8Zm-154,38A19.41,19.41,0,1,1,57.92,35.57H77.47a38.81,38.81,0,1,0,0,6.47H57.92A19.39,19.39,0,0,1,38.81,58.21Z'/%3E%3C/svg%3E`;\n default:\n height = width;\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' viewBox='0 0 1024 1024' fill='none' xmlns='http://www.w3.org/2000/svg'%3E %3Crect width='1024' height='1024' fill='%230052FF'/%3E %3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M152 512C152 710.823 313.177 872 512 872C710.823 872 872 710.823 872 512C872 313.177 710.823 152 512 152C313.177 152 152 313.177 152 512ZM420 396C406.745 396 396 406.745 396 420V604C396 617.255 406.745 628 420 628H604C617.255 628 628 617.255 628 604V420C628 406.745 617.255 396 604 396H420Z' fill='white'/%3E %3C/svg%3E `;\n }\n};\nexports.walletLogo = walletLogo;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkFlow = void 0;\nconst preact_1 = require(\"preact\");\nconst rxjs_1 = require(\"rxjs\");\nconst TryExtensionLinkDialog_1 = require(\"./TryExtensionLinkDialog\");\nclass LinkFlow {\n constructor(options) {\n this.extensionUI$ = new rxjs_1.BehaviorSubject({});\n this.subscriptions = new rxjs_1.Subscription();\n this.isConnected = false;\n this.isOpen = false;\n this.onCancel = null;\n this.root = null;\n // if true, hide QR code in LinkFlow (which happens if no jsonRpcUrl is provided)\n this.connectDisabled = false;\n this.darkMode = options.darkMode;\n this.version = options.version;\n this.sessionId = options.sessionId;\n this.sessionSecret = options.sessionSecret;\n this.linkAPIUrl = options.linkAPIUrl;\n this.isParentConnection = options.isParentConnection;\n this.connected$ = options.connected$;\n }\n attach(el) {\n this.root = document.createElement(\"div\");\n this.root.className = \"-cbwsdk-link-flow-root\";\n el.appendChild(this.root);\n this.render();\n this.subscriptions.add(this.connected$.subscribe(v => {\n if (this.isConnected !== v) {\n this.isConnected = v;\n this.render();\n }\n }));\n }\n detach() {\n var _a;\n if (!this.root) {\n return;\n }\n this.subscriptions.unsubscribe();\n (0, preact_1.render)(null, this.root);\n (_a = this.root.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.root);\n }\n setConnectDisabled(connectDisabled) {\n this.connectDisabled = connectDisabled;\n }\n open(options) {\n this.isOpen = true;\n this.onCancel = options.onCancel;\n this.render();\n }\n close() {\n this.isOpen = false;\n this.onCancel = null;\n this.render();\n }\n render() {\n if (!this.root) {\n return;\n }\n const subscription = this.extensionUI$.subscribe(() => {\n if (!this.root) {\n return;\n }\n (0, preact_1.render)((0, preact_1.h)(TryExtensionLinkDialog_1.TryExtensionLinkDialog, { darkMode: this.darkMode, version: this.version, sessionId: this.sessionId, sessionSecret: this.sessionSecret, linkAPIUrl: this.linkAPIUrl, isOpen: this.isOpen, isConnected: this.isConnected, isParentConnection: this.isParentConnection, onCancel: this.onCancel, connectDisabled: this.connectDisabled }), this.root);\n });\n this.subscriptions.add(subscription);\n }\n}\nexports.LinkFlow = LinkFlow;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QRCode = void 0;\nconst preact_1 = require(\"preact\");\nconst hooks_1 = require(\"preact/hooks\");\nconst qrcode_svg_1 = __importDefault(require(\"../vendor-js/qrcode-svg\"));\nconst QRCode = props => {\n const [svg, setSvg] = (0, hooks_1.useState)(\"\");\n (0, hooks_1.useEffect)(() => {\n var _a, _b;\n const qrcode = new qrcode_svg_1.default({\n content: props.content,\n background: props.bgColor || \"#ffffff\",\n color: props.fgColor || \"#000000\",\n container: \"svg\",\n ecl: \"M\",\n width: (_a = props.width) !== null && _a !== void 0 ? _a : 256,\n height: (_b = props.height) !== null && _b !== void 0 ? _b : 256,\n padding: 0,\n image: props.image,\n });\n const base64 = Buffer.from(qrcode.svg(), \"utf8\").toString(\"base64\");\n setSvg(`data:image/svg+xml;base64,${base64}`);\n });\n return svg ? (0, preact_1.h)(\"img\", { src: svg, alt: \"QR Code\" }) : null;\n};\nexports.QRCode = QRCode;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `.-cbwsdk-css-reset .-gear-container{margin-left:16px !important;margin-right:9px !important;display:flex;align-items:center;justify-content:center;width:24px;height:24px;transition:opacity .25s}.-cbwsdk-css-reset .-gear-container *{user-select:none}.-cbwsdk-css-reset .-gear-container svg{opacity:0;position:absolute}.-cbwsdk-css-reset .-gear-icon{height:12px;width:12px;z-index:10000}.-cbwsdk-css-reset .-cbwsdk-snackbar{align-items:flex-end;display:flex;flex-direction:column;position:fixed;right:0;top:0;z-index:2147483647}.-cbwsdk-css-reset .-cbwsdk-snackbar *{user-select:none}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance{display:flex;flex-direction:column;margin:8px 16px 0 16px;overflow:visible;text-align:left;transform:translateX(0);transition:opacity .25s,transform .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header:hover .-gear-container svg{opacity:1}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header{display:flex;align-items:center;background:#fff;overflow:hidden;border:1px solid #e7ebee;box-sizing:border-box;border-radius:8px;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header-cblogo{margin:8px 8px 8px 8px}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header *{cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header-message{color:#000;font-size:13px;line-height:1.5;user-select:none}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu{background:#fff;transition:opacity .25s ease-in-out,transform .25s linear,visibility 0s;visibility:hidden;border:1px solid #e7ebee;box-sizing:border-box;border-radius:8px;opacity:0;flex-direction:column;padding-left:8px;padding-right:8px}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item:last-child{margin-bottom:8px !important}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item:hover{background:#f5f7f8;border-radius:6px;transition:background .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item:hover span{color:#050f19;transition:color .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item:hover svg path{fill:#000;transition:fill .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item{visibility:inherit;height:35px;margin-top:8px;margin-bottom:0;display:flex;flex-direction:row;align-items:center;padding:8px;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item *{visibility:inherit;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-is-red:hover{background:rgba(223,95,103,.2);transition:background .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-is-red:hover *{cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-is-red:hover svg path{fill:#df5f67;transition:fill .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-is-red:hover span{color:#df5f67;transition:color .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-info{color:#aaa;font-size:13px;margin:0 8px 0 32px;position:absolute}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-hidden{opacity:0;text-align:left;transform:translateX(25%);transition:opacity .5s linear}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-expanded .-cbwsdk-snackbar-instance-menu{opacity:1;display:flex;transform:translateY(8px);visibility:visible}`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SnackbarInstance = exports.SnackbarContainer = exports.Snackbar = void 0;\nconst clsx_1 = __importDefault(require(\"clsx\"));\nconst preact_1 = require(\"preact\");\nconst hooks_1 = require(\"preact/hooks\");\nconst Snackbar_css_1 = __importDefault(require(\"./Snackbar-css\"));\nconst cblogo = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEuNDkyIDEwLjQxOWE4LjkzIDguOTMgMCAwMTguOTMtOC45M2gxMS4xNjNhOC45MyA4LjkzIDAgMDE4LjkzIDguOTN2MTEuMTYzYTguOTMgOC45MyAwIDAxLTguOTMgOC45M0gxMC40MjJhOC45MyA4LjkzIDAgMDEtOC45My04LjkzVjEwLjQxOXoiIGZpbGw9IiMxNjUyRjAiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjQxOSAwSDIxLjU4QzI3LjMzNSAwIDMyIDQuNjY1IDMyIDEwLjQxOVYyMS41OEMzMiAyNy4zMzUgMjcuMzM1IDMyIDIxLjU4MSAzMkgxMC40MkM0LjY2NSAzMiAwIDI3LjMzNSAwIDIxLjU4MVYxMC40MkMwIDQuNjY1IDQuNjY1IDAgMTAuNDE5IDB6bTAgMS40ODhhOC45MyA4LjkzIDAgMDAtOC45MyA4LjkzdjExLjE2M2E4LjkzIDguOTMgMCAwMDguOTMgOC45M0gyMS41OGE4LjkzIDguOTMgMCAwMDguOTMtOC45M1YxMC40MmE4LjkzIDguOTMgMCAwMC04LjkzLTguOTNIMTAuNDJ6IiBmaWxsPSIjZmZmIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS45OTggMjYuMDQ5Yy01LjU0OSAwLTEwLjA0Ny00LjQ5OC0xMC4wNDctMTAuMDQ3IDAtNS41NDggNC40OTgtMTAuMDQ2IDEwLjA0Ny0xMC4wNDYgNS41NDggMCAxMC4wNDYgNC40OTggMTAuMDQ2IDEwLjA0NiAwIDUuNTQ5LTQuNDk4IDEwLjA0Ny0xMC4wNDYgMTAuMDQ3eiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0xMi43NjIgMTQuMjU0YzAtLjgyMi42NjctMS40ODkgMS40ODktMS40ODloMy40OTdjLjgyMiAwIDEuNDg4LjY2NiAxLjQ4OCAxLjQ4OXYzLjQ5N2MwIC44MjItLjY2NiAxLjQ4OC0xLjQ4OCAxLjQ4OGgtMy40OTdhMS40ODggMS40ODggMCAwMS0xLjQ4OS0xLjQ4OHYtMy40OTh6IiBmaWxsPSIjMTY1MkYwIi8+PC9zdmc+`;\nconst gearIcon = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDYuNzV2LTEuNWwtMS43Mi0uNTdjLS4wOC0uMjctLjE5LS41Mi0uMzItLjc3bC44MS0xLjYyLTEuMDYtMS4wNi0xLjYyLjgxYy0uMjQtLjEzLS41LS4yNC0uNzctLjMyTDYuNzUgMGgtMS41bC0uNTcgMS43MmMtLjI3LjA4LS41My4xOS0uNzcuMzJsLTEuNjItLjgxLTEuMDYgMS4wNi44MSAxLjYyYy0uMTMuMjQtLjI0LjUtLjMyLjc3TDAgNS4yNXYxLjVsMS43Mi41N2MuMDguMjcuMTkuNTMuMzIuNzdsLS44MSAxLjYyIDEuMDYgMS4wNiAxLjYyLS44MWMuMjQuMTMuNS4yMy43Ny4zMkw1LjI1IDEyaDEuNWwuNTctMS43MmMuMjctLjA4LjUyLS4xOS43Ny0uMzJsMS42Mi44MSAxLjA2LTEuMDYtLjgxLTEuNjJjLjEzLS4yNC4yMy0uNS4zMi0uNzdMMTIgNi43NXpNNiA4LjVhMi41IDIuNSAwIDAxMC01IDIuNSAyLjUgMCAwMTAgNXoiIGZpbGw9IiMwNTBGMTkiLz48L3N2Zz4=`;\nclass Snackbar {\n constructor(options) {\n this.items = new Map();\n this.nextItemKey = 0;\n this.root = null;\n this.darkMode = options.darkMode;\n }\n attach(el) {\n this.root = document.createElement(\"div\");\n this.root.className = \"-cbwsdk-snackbar-root\";\n el.appendChild(this.root);\n this.render();\n }\n presentItem(itemProps) {\n const key = this.nextItemKey++;\n this.items.set(key, itemProps);\n this.render();\n return () => {\n this.items.delete(key);\n this.render();\n };\n }\n clear() {\n this.items.clear();\n this.render();\n }\n render() {\n if (!this.root) {\n return;\n }\n (0, preact_1.render)((0, preact_1.h)(\"div\", null,\n (0, preact_1.h)(exports.SnackbarContainer, { darkMode: this.darkMode }, Array.from(this.items.entries()).map(([key, itemProps]) => ((0, preact_1.h)(exports.SnackbarInstance, Object.assign({}, itemProps, { key: key })))))), this.root);\n }\n}\nexports.Snackbar = Snackbar;\nconst SnackbarContainer = props => ((0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-snackbar-container\") },\n (0, preact_1.h)(\"style\", null, Snackbar_css_1.default),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-snackbar\" }, props.children)));\nexports.SnackbarContainer = SnackbarContainer;\nconst SnackbarInstance = ({ autoExpand, message, menuItems, }) => {\n const [hidden, setHidden] = (0, hooks_1.useState)(true);\n const [expanded, setExpanded] = (0, hooks_1.useState)(autoExpand !== null && autoExpand !== void 0 ? autoExpand : false);\n (0, hooks_1.useEffect)(() => {\n const timers = [\n window.setTimeout(() => {\n setHidden(false);\n }, 1),\n window.setTimeout(() => {\n setExpanded(true);\n }, 10000),\n ];\n return () => {\n timers.forEach(window.clearTimeout);\n };\n });\n const toggleExpanded = () => {\n setExpanded(!expanded);\n };\n return ((0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-snackbar-instance\", hidden && \"-cbwsdk-snackbar-instance-hidden\", expanded && \"-cbwsdk-snackbar-instance-expanded\") },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-snackbar-instance-header\", onClick: toggleExpanded },\n (0, preact_1.h)(\"img\", { src: cblogo, class: \"-cbwsdk-snackbar-instance-header-cblogo\" }),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-snackbar-instance-header-message\" }, message),\n (0, preact_1.h)(\"div\", { class: \"-gear-container\" },\n !expanded && ((0, preact_1.h)(\"svg\", { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n (0, preact_1.h)(\"circle\", { cx: \"12\", cy: \"12\", r: \"12\", fill: \"#F5F7F8\" }))),\n (0, preact_1.h)(\"img\", { src: gearIcon, class: \"-gear-icon\", title: \"Expand\" }))),\n menuItems && menuItems.length > 0 && ((0, preact_1.h)(\"div\", { class: \"-cbwsdk-snackbar-instance-menu\" }, menuItems.map((action, i) => ((0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-snackbar-instance-menu-item\", action.isRed && \"-cbwsdk-snackbar-instance-menu-item-is-red\"), onClick: action.onClick, key: i },\n (0, preact_1.h)(\"svg\", { width: action.svgWidth, height: action.svgHeight, viewBox: \"0 0 10 11\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n (0, preact_1.h)(\"path\", { \"fill-rule\": action.defaultFillRule, \"clip-rule\": action.defaultClipRule, d: action.path, fill: \"#AAAAAA\" })),\n (0, preact_1.h)(\"span\", { class: (0, clsx_1.default)(\"-cbwsdk-snackbar-instance-menu-item-info\", action.isRed &&\n \"-cbwsdk-snackbar-instance-menu-item-info-is-red\") }, action.info))))))));\n};\nexports.SnackbarInstance = SnackbarInstance;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `.-cbwsdk-css-reset .-cbwsdk-spinner{display:inline-block}.-cbwsdk-css-reset .-cbwsdk-spinner svg{display:inline-block;animation:2s linear infinite -cbwsdk-spinner-svg}.-cbwsdk-css-reset .-cbwsdk-spinner svg circle{animation:1.9s ease-in-out infinite both -cbwsdk-spinner-circle;display:block;fill:rgba(0,0,0,0);stroke-dasharray:283;stroke-dashoffset:280;stroke-linecap:round;stroke-width:10px;transform-origin:50% 50%}@keyframes -cbwsdk-spinner-svg{0%{transform:rotateZ(0deg)}100%{transform:rotateZ(360deg)}}@keyframes -cbwsdk-spinner-circle{0%,25%{stroke-dashoffset:280;transform:rotate(0)}50%,75%{stroke-dashoffset:75;transform:rotate(45deg)}100%{stroke-dashoffset:280;transform:rotate(360deg)}}`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Spinner = void 0;\nconst preact_1 = require(\"preact\");\nconst Spinner_css_1 = __importDefault(require(\"./Spinner-css\"));\nconst Spinner = props => {\n var _a;\n const size = (_a = props.size) !== null && _a !== void 0 ? _a : 64;\n const color = props.color || \"#000\";\n return ((0, preact_1.h)(\"div\", { class: \"-cbwsdk-spinner\" },\n (0, preact_1.h)(\"style\", null, Spinner_css_1.default),\n (0, preact_1.h)(\"svg\", { viewBox: \"0 0 100 100\", xmlns: \"http://www.w3.org/2000/svg\", style: { width: size, height: size } },\n (0, preact_1.h)(\"circle\", { style: { cx: 50, cy: 50, r: 45, stroke: color } }))));\n};\nexports.Spinner = Spinner;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `.-cbwsdk-css-reset .-cbwsdk-extension-dialog{z-index:2147483647;position:fixed;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-backdrop{z-index:2147483647;position:fixed;top:0;left:0;right:0;bottom:0;transition:opacity .25s}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-backdrop.light{background-color:rgba(0,0,0,.5)}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-backdrop.dark{background-color:rgba(50,53,61,.4)}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-backdrop-hidden{opacity:0}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box{display:flex;position:relative;max-width:500px;flex-direction:column;transform:scale(1);transition:opacity .25s,transform .25s}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-hidden{opacity:0;transform:scale(0.85)}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-top{display:flex;flex-direction:row;border-radius:8px;overflow:hidden;min-height:300px}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-top.dark{color:#fff;background-color:#000;box-shadow:0 4px 16px rgba(255,255,255,.05)}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-top.light{background-color:#fff}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-top-subtext{margin-top:15px;font-size:12px;line-height:1.5}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-top-install-region{display:flex;flex-basis:50%;flex-direction:column;justify-content:center;padding:32px}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-top-install-region button{display:block;border-radius:8px;background-color:#1652f0;color:#fff;width:90%;min-width:fit-content;height:44px;margin-top:16px;font-size:16px;padding-left:16px;padding-right:16px;cursor:pointer;font-weight:500;text-align:center}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-top-install-region button.dark{background-color:#3773f5}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-top-info-region{display:flex;flex-basis:50%;flex-direction:column;justify-content:center}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-top-info-region.light{background-color:#fafbfc}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-top-info-region.dark{background-color:#141519}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-top-description{display:flex;flex-direction:row;align-items:center;padding-top:14px;padding-bottom:14px;padding-left:24px;padding-right:32px}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-top-description-icon-wrapper{display:block;position:relative;width:40px;height:40px;flex-shrink:0;flex-grow:0;border-radius:20px;background-color:#fff;box-shadow:0px 0px 8px rgba(0,0,0,.04),0px 16px 24px rgba(0,0,0,.06)}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-top-description-icon-wrapper img{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-top-description-text{margin-left:16px;flex-grow:1;font-size:13px;line-height:19px;align-self:center}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-top-description-text.light{color:#000}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-top-description-text.dark{color:#fff}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-bottom{display:flex;flex-direction:row;overflow:hidden;border-radius:8px;margin-top:8px}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-bottom.light{background-color:#fff}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-bottom.dark{background-color:#000;box-shadow:0 4px 16px rgba(255,255,255,.05)}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-bottom-description-region{display:flex;flex-direction:column;justify-content:center;padding:32px;flex-grow:1}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-bottom-description{font-size:13px;line-height:19px;margin-top:12px;color:#aaa}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-bottom-description.dark{color:#fff}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-bottom-description.dark a{color:#3773f5}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-bottom-description a{font-size:inherit;line-height:inherit;color:#1652f0;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-bottom-qr-region{position:relative;flex-shrink:0;display:flex;flex-direction:column;justify-content:center;padding-left:24px;padding-right:24px;padding-top:16px;padding-bottom:16px}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-bottom-qr-wrapper{position:relative;display:block;padding:8px;border-radius:8px;box-shadow:0px 4px 12px rgba(0,0,0,.1);background-color:#fff}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-bottom-qr-wrapper img{display:block}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-bottom-qr-connecting{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-bottom-qr-connecting.light{background-color:rgba(255,255,255,.95)}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-bottom-qr-connecting.light>p{color:#000}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-bottom-qr-connecting.dark{background-color:rgba(20,21,25,.9)}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-bottom-qr-connecting.dark>p{color:#fff}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-bottom-qr-connecting>p{font-size:12px;font-weight:bold;margin-top:16px}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-cancel{position:absolute;-webkit-appearance:none;display:flex;align-items:center;justify-content:center;top:16px;right:16px;width:24px;height:24px;border-radius:12px;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-cancel.light{background-color:#fafbfc}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-cancel.dark{background-color:#141519}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-cancel-x{position:relative;display:block;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-cancel-x.light::before,.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-cancel-x.light::after{background-color:#000}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-cancel-x.dark::before,.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-cancel-x.dark::after{background-color:#fff}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-cancel-x::before,.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-cancel-x::after{content:\"\";position:absolute;display:block;top:-1px;left:-7px;width:14px;height:1px;transition:background-color .2s}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-cancel-x::before{transform:rotate(45deg)}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-cancel-x::after{transform:rotate(135deg)}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-cancel:hover .-cbwsdk-link-dialog-box-cancel-x-a,.-cbwsdk-css-reset .-cbwsdk-extension-dialog-box-cancel:hover .-cbwsdk-link-dialog-box-cancel-x-b{background-color:#000}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-container{display:block}.-cbwsdk-css-reset .-cbwsdk-extension-dialog-container-hidden{display:none}.-cbwsdk-css-reset .-cbwsdk-extension-dialog h2{display:block;text-align:left;font-size:22px;font-weight:600;line-height:28px}.-cbwsdk-css-reset .-cbwsdk-extension-dialog h2.light{color:#000}.-cbwsdk-css-reset .-cbwsdk-extension-dialog h2.dark{color:#fff}`;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TryExtensionLinkDialog = void 0;\nconst clsx_1 = __importDefault(require(\"clsx\"));\nconst preact_1 = require(\"preact\");\nconst hooks_1 = require(\"preact/hooks\");\nconst util_1 = require(\"../util\");\nconst version_1 = require(\"../version\");\nconst globe_icon_svg_1 = __importDefault(require(\"./icons/globe-icon-svg\"));\nconst link_icon_svg_1 = __importDefault(require(\"./icons/link-icon-svg\"));\nconst lock_icon_svg_1 = __importDefault(require(\"./icons/lock-icon-svg\"));\nconst QRLogo_1 = __importDefault(require(\"./icons/QRLogo\"));\nconst QRCode_1 = require(\"./QRCode\");\nconst Spinner_1 = require(\"./Spinner\");\nconst TryExtensionLinkDialog_css_1 = __importDefault(require(\"./TryExtensionLinkDialog-css\"));\nconst TryExtensionLinkDialog = props => {\n const { isOpen, darkMode } = props;\n const [isContainerHidden, setContainerHidden] = (0, hooks_1.useState)(!isOpen);\n const [isDialogHidden, setDialogHidden] = (0, hooks_1.useState)(!isOpen);\n (0, hooks_1.useEffect)(() => {\n const timers = [\n window.setTimeout(() => {\n setDialogHidden(!isOpen);\n }, 10),\n ];\n if (isOpen) {\n setContainerHidden(false);\n }\n else {\n timers.push(window.setTimeout(() => {\n setContainerHidden(true);\n }, 360));\n }\n return () => {\n timers.forEach(window.clearTimeout);\n };\n }, [props.isOpen]);\n const theme = darkMode ? \"dark\" : \"light\";\n return ((0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-extension-dialog-container\", isContainerHidden && \"-cbwsdk-extension-dialog-container-hidden\") },\n (0, preact_1.h)(\"style\", null, TryExtensionLinkDialog_css_1.default),\n (0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-extension-dialog-backdrop\", theme, isDialogHidden && \"-cbwsdk-extension-dialog-backdrop-hidden\") }),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-extension-dialog\" },\n (0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-extension-dialog-box\", isDialogHidden && \"-cbwsdk-extension-dialog-box-hidden\") },\n (0, preact_1.h)(TryExtensionBox, { darkMode: darkMode, onInstallClick: () => {\n window.open(\"https://api.wallet.coinbase.com/rpc/v2/desktop/chrome\", \"_blank\");\n } }),\n !props.connectDisabled ? ((0, preact_1.h)(ScanQRBox, { darkMode: darkMode, version: props.version, sessionId: props.sessionId, sessionSecret: props.sessionSecret, linkAPIUrl: props.linkAPIUrl, isConnected: props.isConnected, isParentConnection: props.isParentConnection })) : null,\n props.onCancel && ((0, preact_1.h)(CancelButton, { darkMode: darkMode, onClick: props.onCancel }))))));\n};\nexports.TryExtensionLinkDialog = TryExtensionLinkDialog;\nconst TryExtensionBox = ({ darkMode, onInstallClick }) => {\n const [isClicked, setIsClicked] = (0, hooks_1.useState)(false);\n const clickHandler = (0, hooks_1.useCallback)(() => {\n if (isClicked) {\n window.location.reload();\n }\n else {\n onInstallClick();\n setIsClicked(true);\n }\n }, [onInstallClick, isClicked]);\n const theme = darkMode ? \"dark\" : \"light\";\n return ((0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-extension-dialog-box-top\", theme) },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-extension-dialog-box-top-install-region\" },\n (0, preact_1.h)(\"h2\", { class: theme }, \"Try the Coinbase Wallet extension\"),\n isClicked && ((0, preact_1.h)(\"div\", { class: \"-cbwsdk-extension-dialog-box-top-subtext\" }, \"After installing Coinbase Wallet, refresh the page and connect again.\")),\n (0, preact_1.h)(\"button\", { type: \"button\", onClick: clickHandler }, isClicked ? \"Refresh\" : \"Install\")),\n (0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-extension-dialog-box-top-info-region\", theme) },\n (0, preact_1.h)(DescriptionItem, { darkMode: darkMode, icon: link_icon_svg_1.default, text: \"Connect to crypto apps with one click\" }),\n (0, preact_1.h)(DescriptionItem, { darkMode: darkMode, icon: lock_icon_svg_1.default, text: \"Your private key is stored securely\" }),\n (0, preact_1.h)(DescriptionItem, { darkMode: darkMode, icon: globe_icon_svg_1.default, text: \"Works with Ethereum, Polygon, and more\" }))));\n};\nconst ScanQRBox = props => {\n const qrUrl = (0, util_1.createQrUrl)(props.sessionId, props.sessionSecret, props.linkAPIUrl, props.isParentConnection);\n const theme = props.darkMode ? \"dark\" : \"light\";\n return ((0, preact_1.h)(\"div\", { \"data-testid\": \"scan-qr-box\", class: (0, clsx_1.default)(`-cbwsdk-extension-dialog-box-bottom`, theme) },\n (0, preact_1.h)(\"div\", { class: `-cbwsdk-extension-dialog-box-bottom-description-region` },\n (0, preact_1.h)(\"h2\", { class: theme }, \"Or scan to connect\"),\n (0, preact_1.h)(\"body\", { class: (0, clsx_1.default)(`-cbwsdk-extension-dialog-box-bottom-description`, theme) },\n \"Open\",\n \" \",\n (0, preact_1.h)(\"a\", { href: \"https://wallet.coinbase.com/\", target: \"_blank\", rel: \"noopener noreferrer\" }, \"Coinbase Wallet\"),\n \" \",\n \"on your mobile phone and scan\")),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-extension-dialog-box-bottom-qr-region\" },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-extension-dialog-box-bottom-qr-wrapper\" },\n (0, preact_1.h)(QRCode_1.QRCode, { content: qrUrl, width: 150, height: 150, fgColor: \"#000\", bgColor: \"transparent\", image: {\n svg: QRLogo_1.default,\n width: 34,\n height: 34,\n } })),\n (0, preact_1.h)(\"input\", { type: \"hidden\", name: \"cbwsdk-version\", value: version_1.LIB_VERSION }),\n (0, preact_1.h)(\"input\", { type: \"hidden\", value: qrUrl }),\n !props.isConnected && ((0, preact_1.h)(\"div\", { \"data-testid\": \"connecting-spinner\", class: (0, clsx_1.default)(\"-cbwsdk-extension-dialog-box-bottom-qr-connecting\", theme) },\n (0, preact_1.h)(Spinner_1.Spinner, { size: 36, color: props.darkMode ? \"#FFF\" : \"#000\" }),\n (0, preact_1.h)(\"p\", null, \"Connecting...\"))))));\n};\nconst DescriptionItem = props => {\n const theme = props.darkMode ? \"dark\" : \"light\";\n return ((0, preact_1.h)(\"div\", { class: \"-cbwsdk-extension-dialog-box-top-description\" },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-extension-dialog-box-top-description-icon-wrapper\" },\n (0, preact_1.h)(\"img\", { src: props.icon })),\n (0, preact_1.h)(\"body\", { class: (0, clsx_1.default)(\"-cbwsdk-extension-dialog-box-top-description-text\", theme) }, props.text)));\n};\nconst CancelButton = props => {\n const theme = props.darkMode ? \"dark\" : \"light\";\n return ((0, preact_1.h)(\"button\", { type: \"button\", class: (0, clsx_1.default)(\"-cbwsdk-extension-dialog-box-cancel\", theme), onClick: props.onClick },\n (0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-extension-dialog-box-cancel-x\", theme) })));\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `\n\n\n\n\n\n\n`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOFptNS45MSA3aC0xLjk0Yy0uMS0xLjU3LS40Mi0zLS45MS00LjE1IDEuNDguODggMi41NSAyLjM4IDIuODUgNC4xNVpNOCAxNGMtLjQ1IDAtMS43Mi0xLjc3LTEuOTUtNWgzLjljLS4yMyAzLjIzLTEuNSA1LTEuOTUgNVpNNi4wNSA3QzYuMjggMy43NyA3LjU1IDIgOCAyYy40NSAwIDEuNzIgMS43NyAxLjk1IDVoLTMuOVpNNC45NCAyLjg1QzQuNDYgNCA0LjEzIDUuNDMgNC4wMyA3SDIuMDljLjMtMS43NyAxLjM3LTMuMjcgMi44NS00LjE1Wk0yLjA5IDloMS45NGMuMSAxLjU3LjQyIDMgLjkxIDQuMTVBNS45OTggNS45OTggMCAwIDEgMi4wOSA5Wm04Ljk3IDQuMTVjLjQ4LTEuMTUuODEtMi41OC45MS00LjE1aDEuOTRhNS45OTggNS45OTggMCAwIDEtMi44NSA0LjE1WiIgZmlsbD0iIzE2NTJGMCIvPjwvc3ZnPg==`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTciIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE1LjYzNSAyLjExN2EzLjg4OSAzLjg4OSAwIDAgMC01LjUyMSAwTDYuODkgNS4zMzVBMy44OTQgMy44OTQgMCAwIDAgNS44IDguNzM5Yy4wODMuNTA2LjI2OCAxLjAxMS41NTMgMS40NjYuMTUxLjI1My4zMzYuNDcyLjUzNy42OTFsLjYyMS42MjQgMS4xNDEtMS4xNDYtLjYyLS42MjRhMi4xMDUgMi4xMDUgMCAwIDEtLjQ4Ny0uNzQxIDIuMzQgMi4zNCAwIDAgMSAuNTAzLTIuNTFsMy4yMDYtMy4yMmEyLjI5MyAyLjI5MyAwIDAgMSAzLjIzOSAwYy44OS44OTQuODkgMi4zNDMgMCAzLjI1M2wtMS41MjcgMS41MzNjLjIzNC42NC4zMzUgMS4zMzEuMzAyIDIuMDA1bDIuMzgzLTIuMzkyYzEuNTEtMS41MzQgMS40OTMtNC4wMjgtLjAxNy01LjU2MVoiIGZpbGw9IiMxNjUyRjAiLz48cGF0aCBkPSJNMTEuMjcxIDcuNzQ1YTMuMTMgMy4xMyAwIDAgMC0uNTU0LS42OWwtLjYyLS42MjQtMS4xNDIgMS4xNDYuNjIxLjYyM2MuMjE4LjIyLjM4Ni40ODkuNDg3Ljc1OC4zMzUuODI2LjE2NyAxLjgyLS41MDQgMi40OTRsLTMuMjA1IDMuMjE5YTIuMjkzIDIuMjkzIDAgMCAxLTMuMjQgMCAyLjMxNiAyLjMxNiAwIDAgMSAwLTMuMjUybDEuNTI4LTEuNTM0YTQuODE1IDQuODE1IDAgMCAxLS4yODUtMi4wMDVsLTIuMzgzIDIuMzkzYTMuOTI3IDMuOTI3IDAgMCAwIDAgNS41NDQgMy45MDkgMy45MDkgMCAwIDAgNS41MzggMGwzLjIwNS0zLjIxOWEzLjk1OCAzLjk1OCAwIDAgMCAxLjA5MS0zLjQwNCA0LjIxMSA0LjIxMSAwIDAgMC0uNTM3LTEuNDQ5WiIgZmlsbD0iIzE2NTJGMCIvPjwvc3ZnPg==`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEgN3Y5aDE0VjdIMVptNy41IDQuMzlWMTRoLTF2LTIuNjFjLS40NC0uMTktLjc1LS42My0uNzUtMS4xNGExLjI1IDEuMjUgMCAwIDEgMi41IDBjMCAuNTEtLjMxLjk1LS43NSAxLjE0Wk01LjY3IDZWNC4zM0M1LjY3IDMuMDUgNi43MSAyIDggMnMyLjMzIDEuMDUgMi4zMyAyLjMzVjZoMlY0LjMzQzEyLjMzIDEuOTQgMTAuMzkgMCA4IDBTMy42NyAxLjk0IDMuNjcgNC4zM1Y2aDJaIiBmaWxsPSIjMTY1MkYwIi8+PC9zdmc+`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientMessagePublishEvent = exports.ClientMessageSetSessionConfig = exports.ClientMessageGetSessionConfig = exports.ClientMessageIsLinked = exports.ClientMessageHostSession = void 0;\nfunction ClientMessageHostSession(params) {\n return Object.assign({ type: \"HostSession\" }, params);\n}\nexports.ClientMessageHostSession = ClientMessageHostSession;\nfunction ClientMessageIsLinked(params) {\n return Object.assign({ type: \"IsLinked\" }, params);\n}\nexports.ClientMessageIsLinked = ClientMessageIsLinked;\nfunction ClientMessageGetSessionConfig(params) {\n return Object.assign({ type: \"GetSessionConfig\" }, params);\n}\nexports.ClientMessageGetSessionConfig = ClientMessageGetSessionConfig;\nfunction ClientMessageSetSessionConfig(params) {\n return Object.assign({ type: \"SetSessionConfig\" }, params);\n}\nexports.ClientMessageSetSessionConfig = ClientMessageSetSessionConfig;\nfunction ClientMessagePublishEvent(params) {\n return Object.assign({ type: \"PublishEvent\" }, params);\n}\nexports.ClientMessagePublishEvent = ClientMessagePublishEvent;\n","\"use strict\";\n// DiagnosticLogger for debugging purposes only\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EVENTS = void 0;\nexports.EVENTS = {\n STARTED_CONNECTING: \"walletlink_sdk.started.connecting\",\n CONNECTED_STATE_CHANGE: \"walletlink_sdk.connected\",\n DISCONNECTED: \"walletlink_sdk.disconnected\",\n METADATA_DESTROYED: \"walletlink_sdk_metadata_destroyed\",\n LINKED: \"walletlink_sdk.linked\",\n FAILURE: \"walletlink_sdk.generic_failure\",\n SESSION_CONFIG_RECEIVED: \"walletlink_sdk.session_config_event_received\",\n ETH_ACCOUNTS_STATE: \"walletlink_sdk.eth_accounts_state\",\n SESSION_STATE_CHANGE: \"walletlink_sdk.session_state_change\",\n UNLINKED_ERROR_STATE: \"walletlink_sdk.unlinked_error_state\",\n SKIPPED_CLEARING_SESSION: \"walletlink_sdk.skipped_clearing_session\",\n GENERAL_ERROR: \"walletlink_sdk.general_error\",\n WEB3_REQUEST: \"walletlink_sdk.web3.request\",\n WEB3_REQUEST_PUBLISHED: \"walletlink_sdk.web3.request_published\",\n WEB3_RESPONSE: \"walletlink_sdk.web3.response\",\n UNKNOWN_ADDRESS_ENCOUNTERED: \"walletlink_sdk.unknown_address_encountered\",\n};\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RxWebSocket = exports.ConnectionState = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst operators_1 = require(\"rxjs/operators\");\nvar ConnectionState;\n(function (ConnectionState) {\n ConnectionState[ConnectionState[\"DISCONNECTED\"] = 0] = \"DISCONNECTED\";\n ConnectionState[ConnectionState[\"CONNECTING\"] = 1] = \"CONNECTING\";\n ConnectionState[ConnectionState[\"CONNECTED\"] = 2] = \"CONNECTED\";\n})(ConnectionState = exports.ConnectionState || (exports.ConnectionState = {}));\n/**\n * Rx-ified WebSocket\n */\nclass RxWebSocket {\n /**\n * Constructor\n * @param url WebSocket server URL\n * @param [WebSocketClass] Custom WebSocket implementation\n */\n constructor(url, WebSocketClass = WebSocket) {\n this.WebSocketClass = WebSocketClass;\n this.webSocket = null;\n this.connectionStateSubject = new rxjs_1.BehaviorSubject(ConnectionState.DISCONNECTED);\n this.incomingDataSubject = new rxjs_1.Subject();\n this.url = url.replace(/^http/, \"ws\");\n }\n /**\n * Make a websocket connection\n * @returns an Observable that completes when connected\n */\n connect() {\n if (this.webSocket) {\n return (0, rxjs_1.throwError)(new Error(\"webSocket object is not null\"));\n }\n return new rxjs_1.Observable(obs => {\n let webSocket;\n try {\n this.webSocket = webSocket = new this.WebSocketClass(this.url);\n }\n catch (err) {\n obs.error(err);\n return;\n }\n this.connectionStateSubject.next(ConnectionState.CONNECTING);\n webSocket.onclose = evt => {\n this.clearWebSocket();\n obs.error(new Error(`websocket error ${evt.code}: ${evt.reason}`));\n this.connectionStateSubject.next(ConnectionState.DISCONNECTED);\n };\n webSocket.onopen = _ => {\n obs.next();\n obs.complete();\n this.connectionStateSubject.next(ConnectionState.CONNECTED);\n };\n webSocket.onmessage = evt => {\n this.incomingDataSubject.next(evt.data);\n };\n }).pipe((0, operators_1.take)(1));\n }\n /**\n * Disconnect from server\n */\n disconnect() {\n const { webSocket } = this;\n if (!webSocket) {\n return;\n }\n this.clearWebSocket();\n this.connectionStateSubject.next(ConnectionState.DISCONNECTED);\n try {\n webSocket.close();\n }\n catch (_a) { }\n }\n /**\n * Emit current connection state and subsequent changes\n * @returns an Observable for the connection state\n */\n get connectionState$() {\n return this.connectionStateSubject.asObservable();\n }\n /**\n * Emit incoming data from server\n * @returns an Observable for the data received\n */\n get incomingData$() {\n return this.incomingDataSubject.asObservable();\n }\n /**\n * Emit incoming JSON data from server. non-JSON data are ignored\n * @returns an Observable for parsed JSON data\n */\n get incomingJSONData$() {\n return this.incomingData$.pipe((0, operators_1.flatMap)(m => {\n let j;\n try {\n j = JSON.parse(m);\n }\n catch (err) {\n return (0, rxjs_1.empty)();\n }\n return (0, rxjs_1.of)(j);\n }));\n }\n /**\n * Send data to server\n * @param data text to send\n */\n sendData(data) {\n const { webSocket } = this;\n if (!webSocket) {\n throw new Error(\"websocket is not connected\");\n }\n webSocket.send(data);\n }\n clearWebSocket() {\n const { webSocket } = this;\n if (!webSocket) {\n return;\n }\n this.webSocket = null;\n webSocket.onclose = null;\n webSocket.onerror = null;\n webSocket.onmessage = null;\n webSocket.onopen = null;\n }\n}\nexports.RxWebSocket = RxWebSocket;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isServerMessageFail = void 0;\nfunction isServerMessageFail(msg) {\n return (msg &&\n msg.type === \"Fail\" &&\n typeof msg.id === \"number\" &&\n typeof msg.sessionId === \"string\" &&\n typeof msg.error === \"string\");\n}\nexports.isServerMessageFail = isServerMessageFail;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletSDKConnection = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst operators_1 = require(\"rxjs/operators\");\nconst Session_1 = require(\"../relay/Session\");\nconst types_1 = require(\"../types\");\nconst ClientMessage_1 = require(\"./ClientMessage\");\nconst DiagnosticLogger_1 = require(\"./DiagnosticLogger\");\nconst RxWebSocket_1 = require(\"./RxWebSocket\");\nconst ServerMessage_1 = require(\"./ServerMessage\");\nconst HEARTBEAT_INTERVAL = 10000;\nconst REQUEST_TIMEOUT = 60000;\n/**\n * Coinbase Wallet Connection\n */\nclass WalletSDKConnection {\n /**\n * Constructor\n * @param sessionId Session ID\n * @param sessionKey Session Key\n * @param linkAPIUrl Coinbase Wallet link server URL\n * @param [WebSocketClass] Custom WebSocket implementation\n */\n constructor(sessionId, sessionKey, linkAPIUrl, diagnostic, WebSocketClass = WebSocket) {\n this.sessionId = sessionId;\n this.sessionKey = sessionKey;\n this.diagnostic = diagnostic;\n this.subscriptions = new rxjs_1.Subscription();\n this.destroyed = false;\n this.lastHeartbeatResponse = 0;\n this.nextReqId = (0, types_1.IntNumber)(1);\n this.connectedSubject = new rxjs_1.BehaviorSubject(false);\n this.linkedSubject = new rxjs_1.BehaviorSubject(false);\n this.sessionConfigSubject = new rxjs_1.ReplaySubject(1);\n const ws = new RxWebSocket_1.RxWebSocket(linkAPIUrl + \"/rpc\", WebSocketClass);\n this.ws = ws;\n // attempt to reconnect every 5 seconds when disconnected\n this.subscriptions.add(ws.connectionState$\n .pipe((0, operators_1.tap)(state => {\n var _a;\n return (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.CONNECTED_STATE_CHANGE, {\n state,\n sessionIdHash: Session_1.Session.hash(sessionId),\n });\n }), \n // ignore initial DISCONNECTED state\n (0, operators_1.skip)(1), \n // if DISCONNECTED and not destroyed\n (0, operators_1.filter)(cs => cs === RxWebSocket_1.ConnectionState.DISCONNECTED && !this.destroyed), \n // wait 5 seconds\n (0, operators_1.delay)(5000), \n // check whether it's destroyed again\n (0, operators_1.filter)(_ => !this.destroyed), \n // reconnect\n (0, operators_1.flatMap)(_ => ws.connect()), (0, operators_1.retry)())\n .subscribe());\n // perform authentication upon connection\n this.subscriptions.add(ws.connectionState$\n .pipe(\n // ignore initial DISCONNECTED and CONNECTING states\n (0, operators_1.skip)(2), (0, operators_1.switchMap)(cs => (0, rxjs_1.iif)(() => cs === RxWebSocket_1.ConnectionState.CONNECTED, \n // if CONNECTED, authenticate, and then check link status\n this.authenticate().pipe((0, operators_1.tap)(_ => this.sendIsLinked()), (0, operators_1.tap)(_ => this.sendGetSessionConfig()), (0, operators_1.map)(_ => true)), \n // if not CONNECTED, emit false immediately\n (0, rxjs_1.of)(false))), (0, operators_1.distinctUntilChanged)(), (0, operators_1.catchError)(_ => (0, rxjs_1.of)(false)))\n .subscribe(connected => this.connectedSubject.next(connected)));\n // send heartbeat every n seconds while connected\n this.subscriptions.add(ws.connectionState$\n .pipe(\n // ignore initial DISCONNECTED state\n (0, operators_1.skip)(1), (0, operators_1.switchMap)(cs => (0, rxjs_1.iif)(() => cs === RxWebSocket_1.ConnectionState.CONNECTED, \n // if CONNECTED, start the heartbeat timer\n (0, rxjs_1.timer)(0, HEARTBEAT_INTERVAL))))\n .subscribe(i => \n // first timer event updates lastHeartbeat timestamp\n // subsequent calls send heartbeat message\n i === 0 ? this.updateLastHeartbeat() : this.heartbeat()));\n // handle server's heartbeat responses\n this.subscriptions.add(ws.incomingData$\n .pipe((0, operators_1.filter)(m => m === \"h\"))\n .subscribe(_ => this.updateLastHeartbeat()));\n // handle link status updates\n this.subscriptions.add(ws.incomingJSONData$\n .pipe((0, operators_1.filter)(m => [\"IsLinkedOK\", \"Linked\"].includes(m.type)))\n .subscribe(m => {\n var _a;\n const msg = m;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.LINKED, {\n sessionIdHash: Session_1.Session.hash(sessionId),\n linked: msg.linked,\n type: m.type,\n onlineGuests: msg.onlineGuests,\n });\n this.linkedSubject.next(msg.linked || msg.onlineGuests > 0);\n }));\n // handle session config updates\n this.subscriptions.add(ws.incomingJSONData$\n .pipe((0, operators_1.filter)(m => [\"GetSessionConfigOK\", \"SessionConfigUpdated\"].includes(m.type)))\n .subscribe(m => {\n var _a;\n const msg = m;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.SESSION_CONFIG_RECEIVED, {\n sessionIdHash: Session_1.Session.hash(sessionId),\n metadata_keys: msg && msg.metadata ? Object.keys(msg.metadata) : undefined,\n });\n this.sessionConfigSubject.next({\n webhookId: msg.webhookId,\n webhookUrl: msg.webhookUrl,\n metadata: msg.metadata,\n });\n }));\n }\n /**\n * Make a connection to the server\n */\n connect() {\n var _a;\n if (this.destroyed) {\n throw new Error(\"instance is destroyed\");\n }\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.STARTED_CONNECTING, {\n sessionIdHash: Session_1.Session.hash(this.sessionId),\n });\n this.ws.connect().subscribe();\n }\n /**\n * Terminate connection, and mark as destroyed. To reconnect, create a new\n * instance of WalletSDKConnection\n */\n destroy() {\n var _a;\n this.subscriptions.unsubscribe();\n this.ws.disconnect();\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.DISCONNECTED, {\n sessionIdHash: Session_1.Session.hash(this.sessionId),\n });\n this.destroyed = true;\n }\n get isDestroyed() {\n return this.destroyed;\n }\n /**\n * Emit true if connected and authenticated, else false\n * @returns an Observable\n */\n get connected$() {\n return this.connectedSubject.asObservable();\n }\n /**\n * Emit once connected\n * @returns an Observable\n */\n get onceConnected$() {\n return this.connected$.pipe((0, operators_1.filter)(v => v), (0, operators_1.take)(1), (0, operators_1.map)(() => void 0));\n }\n /**\n * Emit true if linked (a guest has joined before)\n * @returns an Observable\n */\n get linked$() {\n return this.linkedSubject.asObservable();\n }\n /**\n * Emit once when linked\n * @returns an Observable\n */\n get onceLinked$() {\n return this.linked$.pipe((0, operators_1.filter)(v => v), (0, operators_1.take)(1), (0, operators_1.map)(() => void 0));\n }\n /**\n * Emit current session config if available, and subsequent updates\n * @returns an Observable for the session config\n */\n get sessionConfig$() {\n return this.sessionConfigSubject.asObservable();\n }\n /**\n * Emit incoming Event messages\n * @returns an Observable for the messages\n */\n get incomingEvent$() {\n return this.ws.incomingJSONData$.pipe((0, operators_1.filter)(m => {\n if (m.type !== \"Event\") {\n return false;\n }\n const sme = m;\n return (typeof sme.sessionId === \"string\" &&\n typeof sme.eventId === \"string\" &&\n typeof sme.event === \"string\" &&\n typeof sme.data === \"string\");\n }), (0, operators_1.map)(m => m));\n }\n /**\n * Set session metadata in SessionConfig object\n * @param key\n * @param value\n * @returns an Observable that completes when successful\n */\n setSessionMetadata(key, value) {\n const message = (0, ClientMessage_1.ClientMessageSetSessionConfig)({\n id: (0, types_1.IntNumber)(this.nextReqId++),\n sessionId: this.sessionId,\n metadata: { [key]: value },\n });\n return this.onceConnected$.pipe((0, operators_1.flatMap)(_ => this.makeRequest(message)), (0, operators_1.map)(res => {\n if ((0, ServerMessage_1.isServerMessageFail)(res)) {\n throw new Error(res.error || \"failed to set session metadata\");\n }\n }));\n }\n /**\n * Publish an event and emit event ID when successful\n * @param event event name\n * @param data event data\n * @param callWebhook whether the webhook should be invoked\n * @returns an Observable that emits event ID when successful\n */\n publishEvent(event, data, callWebhook = false) {\n const message = (0, ClientMessage_1.ClientMessagePublishEvent)({\n id: (0, types_1.IntNumber)(this.nextReqId++),\n sessionId: this.sessionId,\n event,\n data,\n callWebhook,\n });\n return this.onceLinked$.pipe((0, operators_1.flatMap)(_ => this.makeRequest(message)), (0, operators_1.map)(res => {\n if ((0, ServerMessage_1.isServerMessageFail)(res)) {\n throw new Error(res.error || \"failed to publish event\");\n }\n return res.eventId;\n }));\n }\n sendData(message) {\n this.ws.sendData(JSON.stringify(message));\n }\n updateLastHeartbeat() {\n this.lastHeartbeatResponse = Date.now();\n }\n heartbeat() {\n if (Date.now() - this.lastHeartbeatResponse > HEARTBEAT_INTERVAL * 2) {\n this.ws.disconnect();\n return;\n }\n try {\n this.ws.sendData(\"h\");\n }\n catch (_a) { }\n }\n makeRequest(message, timeout = REQUEST_TIMEOUT) {\n const reqId = message.id;\n try {\n this.sendData(message);\n }\n catch (err) {\n return (0, rxjs_1.throwError)(err);\n }\n // await server message with corresponding id\n return this.ws.incomingJSONData$.pipe((0, operators_1.timeoutWith)(timeout, (0, rxjs_1.throwError)(new Error(`request ${reqId} timed out`))), (0, operators_1.filter)(m => m.id === reqId), (0, operators_1.take)(1));\n }\n authenticate() {\n const msg = (0, ClientMessage_1.ClientMessageHostSession)({\n id: (0, types_1.IntNumber)(this.nextReqId++),\n sessionId: this.sessionId,\n sessionKey: this.sessionKey,\n });\n return this.makeRequest(msg).pipe((0, operators_1.map)(res => {\n if ((0, ServerMessage_1.isServerMessageFail)(res)) {\n throw new Error(res.error || \"failed to authentcate\");\n }\n }));\n }\n sendIsLinked() {\n const msg = (0, ClientMessage_1.ClientMessageIsLinked)({\n id: (0, types_1.IntNumber)(this.nextReqId++),\n sessionId: this.sessionId,\n });\n this.sendData(msg);\n }\n sendGetSessionConfig() {\n const msg = (0, ClientMessage_1.ClientMessageGetSessionConfig)({\n id: (0, types_1.IntNumber)(this.nextReqId++),\n sessionId: this.sessionId,\n });\n this.sendData(msg);\n }\n}\nexports.WalletSDKConnection = WalletSDKConnection;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CoinbaseWalletProvider = exports.CoinbaseWalletSDK = void 0;\nconst CoinbaseWalletSDK_1 = require(\"./CoinbaseWalletSDK\");\nconst CoinbaseWalletProvider_1 = require(\"./provider/CoinbaseWalletProvider\");\nvar CoinbaseWalletSDK_2 = require(\"./CoinbaseWalletSDK\");\nObject.defineProperty(exports, \"CoinbaseWalletSDK\", { enumerable: true, get: function () { return CoinbaseWalletSDK_2.CoinbaseWalletSDK; } });\nvar CoinbaseWalletProvider_2 = require(\"./provider/CoinbaseWalletProvider\");\nObject.defineProperty(exports, \"CoinbaseWalletProvider\", { enumerable: true, get: function () { return CoinbaseWalletProvider_2.CoinbaseWalletProvider; } });\nexports.default = CoinbaseWalletSDK_1.CoinbaseWalletSDK;\nif (typeof window !== \"undefined\") {\n window.CoinbaseWalletSDK = CoinbaseWalletSDK_1.CoinbaseWalletSDK;\n window.CoinbaseWalletProvider = CoinbaseWalletProvider_1.CoinbaseWalletProvider;\n /**\n * @deprecated Use `window.CoinbaseWalletSDK`\n */\n window.WalletLink = CoinbaseWalletSDK_1.CoinbaseWalletSDK;\n /**\n * @deprecated Use `window.CoinbaseWalletProvider`\n */\n window.WalletLinkProvider = CoinbaseWalletProvider_1.CoinbaseWalletProvider;\n}\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScopedLocalStorage = void 0;\nclass ScopedLocalStorage {\n constructor(scope) {\n this.scope = scope;\n }\n setItem(key, value) {\n localStorage.setItem(this.scopedKey(key), value);\n }\n getItem(key) {\n return localStorage.getItem(this.scopedKey(key));\n }\n removeItem(key) {\n localStorage.removeItem(this.scopedKey(key));\n }\n clear() {\n const prefix = this.scopedKey(\"\");\n const keysToRemove = [];\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (typeof key === \"string\" && key.startsWith(prefix)) {\n keysToRemove.push(key);\n }\n }\n keysToRemove.forEach(key => localStorage.removeItem(key));\n }\n scopedKey(key) {\n return `${this.scope}:${key}`;\n }\n}\nexports.ScopedLocalStorage = ScopedLocalStorage;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `@namespace svg \"http://www.w3.org/2000/svg\";.-cbwsdk-css-reset,.-cbwsdk-css-reset *{animation:none;animation-delay:0;animation-direction:normal;animation-duration:0;animation-fill-mode:none;animation-iteration-count:1;animation-name:none;animation-play-state:running;animation-timing-function:ease;backface-visibility:visible;background:0;background-attachment:scroll;background-clip:border-box;background-color:rgba(0,0,0,0);background-image:none;background-origin:padding-box;background-position:0 0;background-position-x:0;background-position-y:0;background-repeat:repeat;background-size:auto auto;border:0;border-style:none;border-width:medium;border-color:inherit;border-bottom:0;border-bottom-color:inherit;border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-style:none;border-bottom-width:medium;border-collapse:separate;border-image:none;border-left:0;border-left-color:inherit;border-left-style:none;border-left-width:medium;border-radius:0;border-right:0;border-right-color:inherit;border-right-style:none;border-right-width:medium;border-spacing:0;border-top:0;border-top-color:inherit;border-top-left-radius:0;border-top-right-radius:0;border-top-style:none;border-top-width:medium;bottom:auto;box-shadow:none;box-sizing:border-box;caption-side:top;clear:none;clip:auto;color:inherit;columns:auto;column-count:auto;column-fill:balance;column-gap:normal;column-rule:medium none currentColor;column-rule-color:currentColor;column-rule-style:none;column-rule-width:none;column-span:1;column-width:auto;content:normal;counter-increment:none;counter-reset:none;cursor:auto;direction:ltr;display:block;empty-cells:show;float:none;font:normal;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Helvetica Neue\",Arial,sans-serif;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;height:auto;hyphens:none;left:auto;letter-spacing:normal;line-height:normal;list-style:none;list-style-image:none;list-style-position:outside;list-style-type:disc;margin:0;margin-bottom:0;margin-left:0;margin-right:0;margin-top:0;max-height:none;max-width:none;min-height:0;min-width:0;opacity:1;orphans:0;outline:0;outline-color:invert;outline-style:none;outline-width:medium;overflow:visible;overflow-x:visible;overflow-y:visible;padding:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;page-break-after:auto;page-break-before:auto;page-break-inside:auto;perspective:none;perspective-origin:50% 50%;pointer-events:auto;position:static;quotes:\"\\\\201C\" \"\\\\201D\" \"\\\\2018\" \"\\\\2019\";right:auto;tab-size:8;table-layout:auto;text-align:inherit;text-align-last:auto;text-decoration:none;text-decoration-color:inherit;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-shadow:none;text-transform:none;top:auto;transform:none;transform-style:flat;transition:none;transition-delay:0s;transition-duration:0s;transition-property:none;transition-timing-function:ease;unicode-bidi:normal;vertical-align:baseline;visibility:visible;white-space:normal;widows:0;width:auto;word-spacing:normal;z-index:auto}.-cbwsdk-css-reset *{box-sizing:border-box;display:initial;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Helvetica Neue\",Arial,sans-serif;line-height:1}.-cbwsdk-css-reset [class*=container]{margin:0;padding:0}.-cbwsdk-css-reset style{display:none}`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.injectCssReset = void 0;\nconst cssReset_css_1 = __importDefault(require(\"./cssReset-css\"));\nfunction injectCssReset() {\n const styleEl = document.createElement(\"style\");\n styleEl.type = \"text/css\";\n styleEl.appendChild(document.createTextNode(cssReset_css_1.default));\n document.documentElement.appendChild(styleEl);\n}\nexports.injectCssReset = injectCssReset;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CoinbaseWalletProvider = void 0;\nconst safe_event_emitter_1 = __importDefault(require(\"@metamask/safe-event-emitter\"));\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst eth_rpc_errors_1 = require(\"eth-rpc-errors\");\nconst DiagnosticLogger_1 = require(\"../connection/DiagnosticLogger\");\nconst Session_1 = require(\"../relay/Session\");\nconst WalletSDKRelayAbstract_1 = require(\"../relay/WalletSDKRelayAbstract\");\nconst util_1 = require(\"../util\");\nconst eth_eip712_util_1 = __importDefault(require(\"../vendor-js/eth-eip712-util\"));\nconst FilterPolyfill_1 = require(\"./FilterPolyfill\");\nconst JSONRPC_1 = require(\"./JSONRPC\");\nconst SubscriptionManager_1 = require(\"./SubscriptionManager\");\nconst DEFAULT_CHAIN_ID_KEY = \"DefaultChainId\";\nconst DEFAULT_JSON_RPC_URL = \"DefaultJsonRpcUrl\";\n// Indicates chain has been switched by switchEthereumChain or addEthereumChain request\nconst HAS_CHAIN_BEEN_SWITCHED_KEY = \"HasChainBeenSwitched\";\nconst HAS_CHAIN_OVERRIDDEN_FROM_RELAY = \"HasChainOverriddenFromRelay\";\nclass CoinbaseWalletProvider extends safe_event_emitter_1.default {\n constructor(options) {\n var _a, _b;\n super();\n this._filterPolyfill = new FilterPolyfill_1.FilterPolyfill(this);\n this._subscriptionManager = new SubscriptionManager_1.SubscriptionManager(this);\n this._relay = null;\n this._addresses = [];\n this.hasMadeFirstChainChangedEmission = false;\n this._send = this.send.bind(this);\n this._sendAsync = this.sendAsync.bind(this);\n this.setProviderInfo = this.setProviderInfo.bind(this);\n this.updateProviderInfo = this.updateProviderInfo.bind(this);\n this.getChainId = this.getChainId.bind(this);\n this.setAppInfo = this.setAppInfo.bind(this);\n this.enable = this.enable.bind(this);\n this.close = this.close.bind(this);\n this.send = this.send.bind(this);\n this.sendAsync = this.sendAsync.bind(this);\n this.request = this.request.bind(this);\n this._setAddresses = this._setAddresses.bind(this);\n this.scanQRCode = this.scanQRCode.bind(this);\n this.genericRequest = this.genericRequest.bind(this);\n this._jsonRpcUrlFromOpts = options.jsonRpcUrl;\n this._overrideIsMetaMask = options.overrideIsMetaMask;\n this._relayProvider = options.relayProvider;\n this._storage = options.storage;\n this._relayEventManager = options.relayEventManager;\n this.diagnostic = options.diagnosticLogger;\n this.reloadOnDisconnect = true;\n this.isCoinbaseWallet = (_a = options.overrideIsCoinbaseWallet) !== null && _a !== void 0 ? _a : true;\n this.isCoinbaseBrowser = (_b = options.overrideIsCoinbaseBrowser) !== null && _b !== void 0 ? _b : false;\n this.qrUrl = options.qrUrl;\n this.supportsAddressSwitching = options.supportsAddressSwitching;\n const chainId = this.getChainId();\n const chainIdStr = (0, util_1.prepend0x)(chainId.toString(16));\n // indicate that we've connected, for EIP-1193 compliance\n this.emit(\"connect\", { chainIdStr });\n const cachedAddresses = this._storage.getItem(WalletSDKRelayAbstract_1.LOCAL_STORAGE_ADDRESSES_KEY);\n if (cachedAddresses) {\n const addresses = cachedAddresses.split(\" \");\n if (addresses[0] !== \"\") {\n this._addresses = addresses.map(address => (0, util_1.ensureAddressString)(address));\n this.emit(\"accountsChanged\", addresses);\n }\n }\n this._subscriptionManager.events.on(\"notification\", (notification) => {\n this.emit(\"message\", {\n type: notification.method,\n data: notification.params,\n });\n });\n if (this._addresses.length > 0) {\n void this.initializeRelay();\n }\n window.addEventListener(\"message\", event => {\n var _a;\n if (event.data.type !== \"walletLinkMessage\")\n return; // compatibility with CBW extension\n if (event.data.data.action === \"defaultChainChanged\") {\n const _chainId = event.data.data.chainId;\n const jsonRpcUrl = (_a = event.data.data.jsonRpcUrl) !== null && _a !== void 0 ? _a : this.jsonRpcUrl;\n this.updateProviderInfo(jsonRpcUrl, Number(_chainId), true);\n }\n });\n }\n get selectedAddress() {\n return this._addresses[0] || undefined;\n }\n get networkVersion() {\n return this.getChainId().toString(10);\n }\n get chainId() {\n return (0, util_1.prepend0x)(this.getChainId().toString(16));\n }\n get isWalletLink() {\n // backward compatibility\n return true;\n }\n /**\n * Some DApps (i.e. Alpha Homora) seem to require the window.ethereum object return\n * true for this method.\n */\n get isMetaMask() {\n return this._overrideIsMetaMask;\n }\n get host() {\n return this.jsonRpcUrl;\n }\n get connected() {\n return true;\n }\n isConnected() {\n return true;\n }\n get jsonRpcUrl() {\n var _a;\n return ((_a = this._storage.getItem(DEFAULT_JSON_RPC_URL)) !== null && _a !== void 0 ? _a : this._jsonRpcUrlFromOpts);\n }\n set jsonRpcUrl(value) {\n this._storage.setItem(DEFAULT_JSON_RPC_URL, value);\n }\n get isChainOverridden() {\n return this._storage.getItem(HAS_CHAIN_OVERRIDDEN_FROM_RELAY) === \"true\";\n }\n set isChainOverridden(value) {\n this._storage.setItem(HAS_CHAIN_OVERRIDDEN_FROM_RELAY, value.toString());\n }\n disableReloadOnDisconnect() {\n this.reloadOnDisconnect = false;\n }\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n setProviderInfo(jsonRpcUrl, chainId) {\n if (this.isChainOverridden)\n return;\n this.updateProviderInfo(jsonRpcUrl, this.getChainId(), false);\n }\n updateProviderInfo(jsonRpcUrl, chainId, fromRelay) {\n const hasChainSwitched = this._storage.getItem(HAS_CHAIN_BEEN_SWITCHED_KEY) === \"true\";\n if (hasChainSwitched && fromRelay)\n return;\n if (fromRelay) {\n this.isChainOverridden = true;\n }\n this.jsonRpcUrl = jsonRpcUrl;\n // emit chainChanged event if necessary\n const originalChainId = this.getChainId();\n this._storage.setItem(DEFAULT_CHAIN_ID_KEY, chainId.toString(10));\n const chainChanged = (0, util_1.ensureIntNumber)(chainId) !== originalChainId;\n if (chainChanged || !this.hasMadeFirstChainChangedEmission) {\n this.emit(\"chainChanged\", this.getChainId());\n this.hasMadeFirstChainChangedEmission = true;\n }\n }\n async watchAsset(type, address, symbol, decimals, image, chainId) {\n const relay = await this.initializeRelay();\n const result = await relay.watchAsset(type, address, symbol, decimals, image, chainId === null || chainId === void 0 ? void 0 : chainId.toString()).promise;\n return !!result.result;\n }\n async addEthereumChain(chainId, rpcUrls, blockExplorerUrls, chainName, iconUrls, nativeCurrency) {\n var _a, _b;\n if ((0, util_1.ensureIntNumber)(chainId) === this.getChainId()) {\n return false;\n }\n const relay = await this.initializeRelay();\n const isWhitelistedNetworkOrStandalone = relay.inlineAddEthereumChain(chainId.toString());\n if (!this._isAuthorized() && !isWhitelistedNetworkOrStandalone) {\n await relay.requestEthereumAccounts().promise;\n }\n const res = await relay.addEthereumChain(chainId.toString(), rpcUrls, iconUrls, blockExplorerUrls, chainName, nativeCurrency).promise;\n if (((_a = res.result) === null || _a === void 0 ? void 0 : _a.isApproved) === true) {\n this._storage.setItem(HAS_CHAIN_BEEN_SWITCHED_KEY, \"true\");\n this.updateProviderInfo(rpcUrls[0], chainId, false);\n }\n return ((_b = res.result) === null || _b === void 0 ? void 0 : _b.isApproved) === true;\n }\n async switchEthereumChain(chainId) {\n if ((0, util_1.ensureIntNumber)(chainId) === this.getChainId()) {\n return;\n }\n const relay = await this.initializeRelay();\n const res = await relay.switchEthereumChain(chainId.toString(10)).promise;\n if (res.errorCode) {\n throw eth_rpc_errors_1.ethErrors.provider.custom({\n code: res.errorCode,\n });\n }\n const switchResponse = res.result;\n if (switchResponse.isApproved && switchResponse.rpcUrl.length > 0) {\n this._storage.setItem(HAS_CHAIN_BEEN_SWITCHED_KEY, \"true\");\n this.updateProviderInfo(switchResponse.rpcUrl, chainId, false);\n }\n }\n setAppInfo(appName, appLogoUrl) {\n void this.initializeRelay().then(relay => relay.setAppInfo(appName, appLogoUrl));\n }\n async enable() {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.ETH_ACCOUNTS_STATE, {\n method: \"provider::enable\",\n addresses_length: this._addresses.length,\n sessionIdHash: this._relay\n ? Session_1.Session.hash(this._relay.session.id)\n : undefined,\n });\n if (this._addresses.length > 0) {\n return [...this._addresses];\n }\n return await this._send(JSONRPC_1.JSONRPCMethod.eth_requestAccounts);\n }\n async close() {\n const relay = await this.initializeRelay();\n relay.resetAndReload();\n }\n send(requestOrMethod, callbackOrParams) {\n // send(method, params): Promise\n if (typeof requestOrMethod === \"string\") {\n const method = requestOrMethod;\n const params = Array.isArray(callbackOrParams)\n ? callbackOrParams\n : callbackOrParams !== undefined\n ? [callbackOrParams]\n : [];\n const request = {\n jsonrpc: \"2.0\",\n id: 0,\n method,\n params,\n };\n return this._sendRequestAsync(request).then(res => res.result);\n }\n // send(JSONRPCRequest | JSONRPCRequest[], callback): void\n if (typeof callbackOrParams === \"function\") {\n const request = requestOrMethod;\n const callback = callbackOrParams;\n return this._sendAsync(request, callback);\n }\n // send(JSONRPCRequest[]): JSONRPCResponse[]\n if (Array.isArray(requestOrMethod)) {\n const requests = requestOrMethod;\n return requests.map(r => this._sendRequest(r));\n }\n // send(JSONRPCRequest): JSONRPCResponse\n const req = requestOrMethod;\n return this._sendRequest(req);\n }\n async sendAsync(request, callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"callback is required\");\n }\n // send(JSONRPCRequest[], callback): void\n if (Array.isArray(request)) {\n const arrayCb = callback;\n this._sendMultipleRequestsAsync(request)\n .then(responses => arrayCb(null, responses))\n .catch(err => arrayCb(err, null));\n return;\n }\n // send(JSONRPCRequest, callback): void\n const cb = callback;\n return this._sendRequestAsync(request)\n .then(response => cb(null, response))\n .catch(err => cb(err, null));\n }\n async request(args) {\n if (!args || typeof args !== \"object\" || Array.isArray(args)) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidRequest({\n message: \"Expected a single, non-array, object argument.\",\n data: args,\n });\n }\n const { method, params } = args;\n if (typeof method !== \"string\" || method.length === 0) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidRequest({\n message: \"'args.method' must be a non-empty string.\",\n data: args,\n });\n }\n if (params !== undefined &&\n !Array.isArray(params) &&\n (typeof params !== \"object\" || params === null)) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidRequest({\n message: \"'args.params' must be an object or array if provided.\",\n data: args,\n });\n }\n const newParams = params === undefined ? [] : params;\n // Coinbase Wallet Requests\n const id = this._relayEventManager.makeRequestId();\n const result = await this._sendRequestAsync({\n method,\n params: newParams,\n jsonrpc: \"2.0\",\n id,\n });\n return result.result;\n }\n async scanQRCode(match) {\n const relay = await this.initializeRelay();\n const res = await relay.scanQRCode((0, util_1.ensureRegExpString)(match)).promise;\n if (typeof res.result !== \"string\") {\n throw new Error(\"result was not a string\");\n }\n return res.result;\n }\n async genericRequest(data, action) {\n const relay = await this.initializeRelay();\n const res = await relay.genericRequest(data, action).promise;\n if (typeof res.result !== \"string\") {\n throw new Error(\"result was not a string\");\n }\n return res.result;\n }\n async selectProvider(providerOptions) {\n const relay = await this.initializeRelay();\n const res = await relay.selectProvider(providerOptions).promise;\n if (typeof res.result !== \"string\") {\n throw new Error(\"result was not a string\");\n }\n return res.result;\n }\n supportsSubscriptions() {\n return false;\n }\n subscribe() {\n throw new Error(\"Subscriptions are not supported\");\n }\n unsubscribe() {\n throw new Error(\"Subscriptions are not supported\");\n }\n disconnect() {\n return true;\n }\n _sendRequest(request) {\n const response = {\n jsonrpc: \"2.0\",\n id: request.id,\n };\n const { method } = request;\n response.result = this._handleSynchronousMethods(request);\n if (response.result === undefined) {\n throw new Error(`Coinbase Wallet does not support calling ${method} synchronously without ` +\n `a callback. Please provide a callback parameter to call ${method} ` +\n `asynchronously.`);\n }\n return response;\n }\n _setAddresses(addresses, isDisconnect) {\n if (!Array.isArray(addresses)) {\n throw new Error(\"addresses is not an array\");\n }\n const newAddresses = addresses.map(address => (0, util_1.ensureAddressString)(address));\n if (JSON.stringify(newAddresses) === JSON.stringify(this._addresses)) {\n return;\n }\n if (this._addresses.length > 0 &&\n this.supportsAddressSwitching === false &&\n !isDisconnect) {\n /**\n * The extension currently doesn't support switching selected wallet index\n * make sure walletlink doesn't update it's address in this case\n */\n return;\n }\n this._addresses = newAddresses;\n this.emit(\"accountsChanged\", this._addresses);\n this._storage.setItem(WalletSDKRelayAbstract_1.LOCAL_STORAGE_ADDRESSES_KEY, newAddresses.join(\" \"));\n }\n _sendRequestAsync(request) {\n return new Promise((resolve, reject) => {\n try {\n const syncResult = this._handleSynchronousMethods(request);\n if (syncResult !== undefined) {\n return resolve({\n jsonrpc: \"2.0\",\n id: request.id,\n result: syncResult,\n });\n }\n const filterPromise = this._handleAsynchronousFilterMethods(request);\n if (filterPromise !== undefined) {\n filterPromise\n .then(res => resolve(Object.assign(Object.assign({}, res), { id: request.id })))\n .catch(err => reject(err));\n return;\n }\n const subscriptionPromise = this._handleSubscriptionMethods(request);\n if (subscriptionPromise !== undefined) {\n subscriptionPromise\n .then(res => resolve({\n jsonrpc: \"2.0\",\n id: request.id,\n result: res.result,\n }))\n .catch(err => reject(err));\n return;\n }\n }\n catch (err) {\n return reject(err);\n }\n this._handleAsynchronousMethods(request)\n .then(res => res && resolve(Object.assign(Object.assign({}, res), { id: request.id })))\n .catch(err => reject(err));\n });\n }\n _sendMultipleRequestsAsync(requests) {\n return Promise.all(requests.map(r => this._sendRequestAsync(r)));\n }\n _handleSynchronousMethods(request) {\n const { method } = request;\n const params = request.params || [];\n switch (method) {\n case JSONRPC_1.JSONRPCMethod.eth_accounts:\n return this._eth_accounts();\n case JSONRPC_1.JSONRPCMethod.eth_coinbase:\n return this._eth_coinbase();\n case JSONRPC_1.JSONRPCMethod.eth_uninstallFilter:\n return this._eth_uninstallFilter(params);\n case JSONRPC_1.JSONRPCMethod.net_version:\n return this._net_version();\n case JSONRPC_1.JSONRPCMethod.eth_chainId:\n return this._eth_chainId();\n default:\n return undefined;\n }\n }\n async _handleAsynchronousMethods(request) {\n const { method } = request;\n const params = request.params || [];\n switch (method) {\n case JSONRPC_1.JSONRPCMethod.eth_requestAccounts:\n return this._eth_requestAccounts();\n case JSONRPC_1.JSONRPCMethod.eth_sign:\n return this._eth_sign(params);\n case JSONRPC_1.JSONRPCMethod.eth_ecRecover:\n return this._eth_ecRecover(params);\n case JSONRPC_1.JSONRPCMethod.personal_sign:\n return this._personal_sign(params);\n case JSONRPC_1.JSONRPCMethod.personal_ecRecover:\n return this._personal_ecRecover(params);\n case JSONRPC_1.JSONRPCMethod.eth_signTransaction:\n return this._eth_signTransaction(params);\n case JSONRPC_1.JSONRPCMethod.eth_sendRawTransaction:\n return this._eth_sendRawTransaction(params);\n case JSONRPC_1.JSONRPCMethod.eth_sendTransaction:\n return this._eth_sendTransaction(params);\n case JSONRPC_1.JSONRPCMethod.eth_signTypedData_v1:\n return this._eth_signTypedData_v1(params);\n case JSONRPC_1.JSONRPCMethod.eth_signTypedData_v2:\n return this._throwUnsupportedMethodError();\n case JSONRPC_1.JSONRPCMethod.eth_signTypedData_v3:\n return this._eth_signTypedData_v3(params);\n case JSONRPC_1.JSONRPCMethod.eth_signTypedData_v4:\n case JSONRPC_1.JSONRPCMethod.eth_signTypedData:\n return this._eth_signTypedData_v4(params);\n case JSONRPC_1.JSONRPCMethod.cbWallet_arbitrary:\n return this._cbwallet_arbitrary(params);\n case JSONRPC_1.JSONRPCMethod.wallet_addEthereumChain:\n return this._wallet_addEthereumChain(params);\n case JSONRPC_1.JSONRPCMethod.wallet_switchEthereumChain:\n return this._wallet_switchEthereumChain(params);\n case JSONRPC_1.JSONRPCMethod.wallet_watchAsset:\n return this._wallet_watchAsset(params);\n }\n const relay = await this.initializeRelay();\n return relay.makeEthereumJSONRPCRequest(request, this.jsonRpcUrl);\n }\n _handleAsynchronousFilterMethods(request) {\n const { method } = request;\n const params = request.params || [];\n switch (method) {\n case JSONRPC_1.JSONRPCMethod.eth_newFilter:\n return this._eth_newFilter(params);\n case JSONRPC_1.JSONRPCMethod.eth_newBlockFilter:\n return this._eth_newBlockFilter();\n case JSONRPC_1.JSONRPCMethod.eth_newPendingTransactionFilter:\n return this._eth_newPendingTransactionFilter();\n case JSONRPC_1.JSONRPCMethod.eth_getFilterChanges:\n return this._eth_getFilterChanges(params);\n case JSONRPC_1.JSONRPCMethod.eth_getFilterLogs:\n return this._eth_getFilterLogs(params);\n }\n return undefined;\n }\n _handleSubscriptionMethods(request) {\n switch (request.method) {\n case JSONRPC_1.JSONRPCMethod.eth_subscribe:\n case JSONRPC_1.JSONRPCMethod.eth_unsubscribe:\n return this._subscriptionManager.handleRequest(request);\n }\n return undefined;\n }\n _isKnownAddress(addressString) {\n try {\n const addressStr = (0, util_1.ensureAddressString)(addressString);\n const lowercaseAddresses = this._addresses.map(address => (0, util_1.ensureAddressString)(address));\n return lowercaseAddresses.includes(addressStr);\n }\n catch (_a) { }\n return false;\n }\n _ensureKnownAddress(addressString) {\n var _a;\n if (!this._isKnownAddress(addressString)) {\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.UNKNOWN_ADDRESS_ENCOUNTERED);\n throw new Error(\"Unknown Ethereum address\");\n }\n }\n _prepareTransactionParams(tx) {\n const fromAddress = tx.from\n ? (0, util_1.ensureAddressString)(tx.from)\n : this.selectedAddress;\n if (!fromAddress) {\n throw new Error(\"Ethereum address is unavailable\");\n }\n this._ensureKnownAddress(fromAddress);\n const toAddress = tx.to ? (0, util_1.ensureAddressString)(tx.to) : null;\n const weiValue = tx.value != null ? (0, util_1.ensureBN)(tx.value) : new bn_js_1.default(0);\n const data = tx.data ? (0, util_1.ensureBuffer)(tx.data) : Buffer.alloc(0);\n const nonce = tx.nonce != null ? (0, util_1.ensureIntNumber)(tx.nonce) : null;\n const gasPriceInWei = tx.gasPrice != null ? (0, util_1.ensureBN)(tx.gasPrice) : null;\n const maxFeePerGas = tx.maxFeePerGas != null ? (0, util_1.ensureBN)(tx.maxFeePerGas) : null;\n const maxPriorityFeePerGas = tx.maxPriorityFeePerGas != null\n ? (0, util_1.ensureBN)(tx.maxPriorityFeePerGas)\n : null;\n const gasLimit = tx.gas != null ? (0, util_1.ensureBN)(tx.gas) : null;\n const chainId = this.getChainId();\n return {\n fromAddress,\n toAddress,\n weiValue,\n data,\n nonce,\n gasPriceInWei,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasLimit,\n chainId,\n };\n }\n _isAuthorized() {\n return this._addresses.length > 0;\n }\n _requireAuthorization() {\n if (!this._isAuthorized()) {\n throw eth_rpc_errors_1.ethErrors.provider.unauthorized({});\n }\n }\n _throwUnsupportedMethodError() {\n throw eth_rpc_errors_1.ethErrors.provider.unsupportedMethod({});\n }\n async _signEthereumMessage(message, address, addPrefix, typedDataJson) {\n this._ensureKnownAddress(address);\n try {\n const relay = await this.initializeRelay();\n const res = await relay.signEthereumMessage(message, address, addPrefix, typedDataJson).promise;\n return { jsonrpc: \"2.0\", id: 0, result: res.result };\n }\n catch (err) {\n if (typeof err.message === \"string\" &&\n err.message.match(/(denied|rejected)/i)) {\n throw eth_rpc_errors_1.ethErrors.provider.userRejectedRequest(\"User denied message signature\");\n }\n throw err;\n }\n }\n async _ethereumAddressFromSignedMessage(message, signature, addPrefix) {\n const relay = await this.initializeRelay();\n const res = await relay.ethereumAddressFromSignedMessage(message, signature, addPrefix).promise;\n return { jsonrpc: \"2.0\", id: 0, result: res.result };\n }\n _eth_accounts() {\n return [...this._addresses];\n }\n _eth_coinbase() {\n return this.selectedAddress || null;\n }\n _net_version() {\n return this.getChainId().toString(10);\n }\n _eth_chainId() {\n return (0, util_1.hexStringFromIntNumber)(this.getChainId());\n }\n getChainId() {\n const chainIdStr = this._storage.getItem(DEFAULT_CHAIN_ID_KEY) || \"1\";\n const chainId = parseInt(chainIdStr, 10);\n return (0, util_1.ensureIntNumber)(chainId);\n }\n async _eth_requestAccounts() {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.ETH_ACCOUNTS_STATE, {\n method: \"provider::_eth_requestAccounts\",\n addresses_length: this._addresses.length,\n sessionIdHash: this._relay\n ? Session_1.Session.hash(this._relay.session.id)\n : undefined,\n });\n if (this._addresses.length > 0) {\n return Promise.resolve({\n jsonrpc: \"2.0\",\n id: 0,\n result: this._addresses,\n });\n }\n let res;\n try {\n const relay = await this.initializeRelay();\n res = await relay.requestEthereumAccounts().promise;\n }\n catch (err) {\n if (typeof err.message === \"string\" &&\n err.message.match(/(denied|rejected)/i)) {\n throw eth_rpc_errors_1.ethErrors.provider.userRejectedRequest(\"User denied account authorization\");\n }\n throw err;\n }\n if (!res.result) {\n throw new Error(\"accounts received is empty\");\n }\n this._setAddresses(res.result);\n return { jsonrpc: \"2.0\", id: 0, result: this._addresses };\n }\n _eth_sign(params) {\n this._requireAuthorization();\n const address = (0, util_1.ensureAddressString)(params[0]);\n const message = (0, util_1.ensureBuffer)(params[1]);\n return this._signEthereumMessage(message, address, false);\n }\n _eth_ecRecover(params) {\n const message = (0, util_1.ensureBuffer)(params[0]);\n const signature = (0, util_1.ensureBuffer)(params[1]);\n return this._ethereumAddressFromSignedMessage(message, signature, false);\n }\n _personal_sign(params) {\n this._requireAuthorization();\n const message = (0, util_1.ensureBuffer)(params[0]);\n const address = (0, util_1.ensureAddressString)(params[1]);\n return this._signEthereumMessage(message, address, true);\n }\n _personal_ecRecover(params) {\n const message = (0, util_1.ensureBuffer)(params[0]);\n const signature = (0, util_1.ensureBuffer)(params[1]);\n return this._ethereumAddressFromSignedMessage(message, signature, true);\n }\n async _eth_signTransaction(params) {\n this._requireAuthorization();\n const tx = this._prepareTransactionParams(params[0] || {});\n try {\n const relay = await this.initializeRelay();\n const res = await relay.signEthereumTransaction(tx).promise;\n return { jsonrpc: \"2.0\", id: 0, result: res.result };\n }\n catch (err) {\n if (typeof err.message === \"string\" &&\n err.message.match(/(denied|rejected)/i)) {\n throw eth_rpc_errors_1.ethErrors.provider.userRejectedRequest(\"User denied transaction signature\");\n }\n throw err;\n }\n }\n async _eth_sendRawTransaction(params) {\n const signedTransaction = (0, util_1.ensureBuffer)(params[0]);\n const relay = await this.initializeRelay();\n const res = await relay.submitEthereumTransaction(signedTransaction, this.getChainId()).promise;\n return { jsonrpc: \"2.0\", id: 0, result: res.result };\n }\n async _eth_sendTransaction(params) {\n this._requireAuthorization();\n const tx = this._prepareTransactionParams(params[0] || {});\n try {\n const relay = await this.initializeRelay();\n const res = await relay.signAndSubmitEthereumTransaction(tx).promise;\n return { jsonrpc: \"2.0\", id: 0, result: res.result };\n }\n catch (err) {\n if (typeof err.message === \"string\" &&\n err.message.match(/(denied|rejected)/i)) {\n throw eth_rpc_errors_1.ethErrors.provider.userRejectedRequest(\"User denied transaction signature\");\n }\n throw err;\n }\n }\n async _eth_signTypedData_v1(params) {\n this._requireAuthorization();\n const typedData = (0, util_1.ensureParsedJSONObject)(params[0]);\n const address = (0, util_1.ensureAddressString)(params[1]);\n this._ensureKnownAddress(address);\n const message = eth_eip712_util_1.default.hashForSignTypedDataLegacy({ data: typedData });\n const typedDataJSON = JSON.stringify(typedData, null, 2);\n return this._signEthereumMessage(message, address, false, typedDataJSON);\n }\n async _eth_signTypedData_v3(params) {\n this._requireAuthorization();\n const address = (0, util_1.ensureAddressString)(params[0]);\n const typedData = (0, util_1.ensureParsedJSONObject)(params[1]);\n this._ensureKnownAddress(address);\n const message = eth_eip712_util_1.default.hashForSignTypedData_v3({ data: typedData });\n const typedDataJSON = JSON.stringify(typedData, null, 2);\n return this._signEthereumMessage(message, address, false, typedDataJSON);\n }\n async _eth_signTypedData_v4(params) {\n this._requireAuthorization();\n const address = (0, util_1.ensureAddressString)(params[0]);\n const typedData = (0, util_1.ensureParsedJSONObject)(params[1]);\n this._ensureKnownAddress(address);\n const message = eth_eip712_util_1.default.hashForSignTypedData_v4({ data: typedData });\n const typedDataJSON = JSON.stringify(typedData, null, 2);\n return this._signEthereumMessage(message, address, false, typedDataJSON);\n }\n /** @deprecated */\n async _cbwallet_arbitrary(params) {\n const action = params[0];\n const data = params[1];\n if (typeof data !== \"string\") {\n throw new Error(\"parameter must be a string\");\n }\n if (typeof action !== \"object\" || action === null) {\n throw new Error(\"parameter must be an object\");\n }\n const result = await this.genericRequest(action, data);\n return { jsonrpc: \"2.0\", id: 0, result };\n }\n async _wallet_addEthereumChain(params) {\n var _a, _b, _c, _d;\n const request = params[0];\n if (((_a = request.rpcUrls) === null || _a === void 0 ? void 0 : _a.length) === 0) {\n return {\n jsonrpc: \"2.0\",\n id: 0,\n error: { code: 2, message: `please pass in at least 1 rpcUrl` },\n };\n }\n if (!request.chainName || request.chainName.trim() === \"\") {\n throw eth_rpc_errors_1.ethErrors.provider.custom({\n code: 0,\n message: \"chainName is a required field\",\n });\n }\n if (!request.nativeCurrency) {\n throw eth_rpc_errors_1.ethErrors.provider.custom({\n code: 0,\n message: \"nativeCurrency is a required field\",\n });\n }\n const chainIdNumber = parseInt(request.chainId, 16);\n const success = await this.addEthereumChain(chainIdNumber, (_b = request.rpcUrls) !== null && _b !== void 0 ? _b : [], (_c = request.blockExplorerUrls) !== null && _c !== void 0 ? _c : [], request.chainName, (_d = request.iconUrls) !== null && _d !== void 0 ? _d : [], request.nativeCurrency);\n if (success) {\n return { jsonrpc: \"2.0\", id: 0, result: null };\n }\n else {\n return {\n jsonrpc: \"2.0\",\n id: 0,\n error: { code: 2, message: `unable to add ethereum chain` },\n };\n }\n }\n async _wallet_switchEthereumChain(params) {\n const request = params[0];\n await this.switchEthereumChain(parseInt(request.chainId, 16));\n return { jsonrpc: \"2.0\", id: 0, result: null };\n }\n async _wallet_watchAsset(params) {\n const request = (Array.isArray(params) ? params[0] : params);\n if (!request.type) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidParams({\n message: \"Type is required\",\n });\n }\n if ((request === null || request === void 0 ? void 0 : request.type) !== \"ERC20\") {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidParams({\n message: `Asset of type '${request.type}' is not supported`,\n });\n }\n if (!(request === null || request === void 0 ? void 0 : request.options)) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidParams({\n message: \"Options are required\",\n });\n }\n if (!(request === null || request === void 0 ? void 0 : request.options.address)) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidParams({\n message: \"Address is required\",\n });\n }\n const chainId = this.getChainId();\n const { address, symbol, image, decimals } = request.options;\n const res = await this.watchAsset(request.type, address, symbol, decimals, image, chainId);\n return { jsonrpc: \"2.0\", id: 0, result: res };\n }\n _eth_uninstallFilter(params) {\n const filterId = (0, util_1.ensureHexString)(params[0]);\n return this._filterPolyfill.uninstallFilter(filterId);\n }\n async _eth_newFilter(params) {\n const param = params[0];\n const filterId = await this._filterPolyfill.newFilter(param);\n return { jsonrpc: \"2.0\", id: 0, result: filterId };\n }\n async _eth_newBlockFilter() {\n const filterId = await this._filterPolyfill.newBlockFilter();\n return { jsonrpc: \"2.0\", id: 0, result: filterId };\n }\n async _eth_newPendingTransactionFilter() {\n const filterId = await this._filterPolyfill.newPendingTransactionFilter();\n return { jsonrpc: \"2.0\", id: 0, result: filterId };\n }\n _eth_getFilterChanges(params) {\n const filterId = (0, util_1.ensureHexString)(params[0]);\n return this._filterPolyfill.getFilterChanges(filterId);\n }\n _eth_getFilterLogs(params) {\n const filterId = (0, util_1.ensureHexString)(params[0]);\n return this._filterPolyfill.getFilterLogs(filterId);\n }\n initializeRelay() {\n if (this._relay) {\n return Promise.resolve(this._relay);\n }\n return this._relayProvider().then(relay => {\n relay.setAccountsCallback((accounts, isDisconnect) => this._setAddresses(accounts, isDisconnect));\n relay.setChainCallback((chainId, jsonRpcUrl) => {\n this.updateProviderInfo(jsonRpcUrl, parseInt(chainId, 10), true);\n });\n this._relay = relay;\n return relay;\n });\n }\n}\nexports.CoinbaseWalletProvider = CoinbaseWalletProvider;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filterFromParam = exports.FilterPolyfill = void 0;\nconst types_1 = require(\"../types\");\nconst util_1 = require(\"../util\");\nconst TIMEOUT = 5 * 60 * 1000; // 5 minutes\nconst JSONRPC_TEMPLATE = {\n jsonrpc: \"2.0\",\n id: 0,\n};\nclass FilterPolyfill {\n constructor(provider) {\n this.logFilters = new Map(); // \n this.blockFilters = new Set(); // \n this.pendingTransactionFilters = new Set(); // \n this.cursors = new Map(); // \n this.timeouts = new Map(); // \n this.nextFilterId = (0, types_1.IntNumber)(1);\n this.provider = provider;\n }\n async newFilter(param) {\n const filter = filterFromParam(param);\n const id = this.makeFilterId();\n const cursor = await this.setInitialCursorPosition(id, filter.fromBlock);\n console.log(`Installing new log filter(${id}):`, filter, \"initial cursor position:\", cursor);\n this.logFilters.set(id, filter);\n this.setFilterTimeout(id);\n return (0, util_1.hexStringFromIntNumber)(id);\n }\n async newBlockFilter() {\n const id = this.makeFilterId();\n const cursor = await this.setInitialCursorPosition(id, \"latest\");\n console.log(`Installing new block filter (${id}) with initial cursor position:`, cursor);\n this.blockFilters.add(id);\n this.setFilterTimeout(id);\n return (0, util_1.hexStringFromIntNumber)(id);\n }\n async newPendingTransactionFilter() {\n const id = this.makeFilterId();\n const cursor = await this.setInitialCursorPosition(id, \"latest\");\n console.log(`Installing new block filter (${id}) with initial cursor position:`, cursor);\n this.pendingTransactionFilters.add(id);\n this.setFilterTimeout(id);\n return (0, util_1.hexStringFromIntNumber)(id);\n }\n uninstallFilter(filterId) {\n const id = (0, util_1.intNumberFromHexString)(filterId);\n console.log(`Uninstalling filter (${id})`);\n this.deleteFilter(id);\n return true;\n }\n getFilterChanges(filterId) {\n const id = (0, util_1.intNumberFromHexString)(filterId);\n if (this.timeouts.has(id)) {\n // extend timeout\n this.setFilterTimeout(id);\n }\n if (this.logFilters.has(id)) {\n return this.getLogFilterChanges(id);\n }\n else if (this.blockFilters.has(id)) {\n return this.getBlockFilterChanges(id);\n }\n else if (this.pendingTransactionFilters.has(id)) {\n return this.getPendingTransactionFilterChanges(id);\n }\n return Promise.resolve(filterNotFoundError());\n }\n async getFilterLogs(filterId) {\n const id = (0, util_1.intNumberFromHexString)(filterId);\n const filter = this.logFilters.get(id);\n if (!filter) {\n return filterNotFoundError();\n }\n return this.sendAsyncPromise(Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { method: \"eth_getLogs\", params: [paramFromFilter(filter)] }));\n }\n makeFilterId() {\n return (0, types_1.IntNumber)(++this.nextFilterId);\n }\n sendAsyncPromise(request) {\n return new Promise((resolve, reject) => {\n this.provider.sendAsync(request, (err, response) => {\n if (err) {\n return reject(err);\n }\n if (Array.isArray(response) || response == null) {\n return reject(new Error(`unexpected response received: ${JSON.stringify(response)}`));\n }\n resolve(response);\n });\n });\n }\n deleteFilter(id) {\n console.log(`Deleting filter (${id})`);\n this.logFilters.delete(id);\n this.blockFilters.delete(id);\n this.pendingTransactionFilters.delete(id);\n this.cursors.delete(id);\n this.timeouts.delete(id);\n }\n async getLogFilterChanges(id) {\n const filter = this.logFilters.get(id);\n const cursorPosition = this.cursors.get(id);\n if (!cursorPosition || !filter) {\n return filterNotFoundError();\n }\n const currentBlockHeight = await this.getCurrentBlockHeight();\n const toBlock = filter.toBlock === \"latest\" ? currentBlockHeight : filter.toBlock;\n if (cursorPosition > currentBlockHeight) {\n return emptyResult();\n }\n if (cursorPosition > filter.toBlock) {\n return emptyResult();\n }\n console.log(`Fetching logs from ${cursorPosition} to ${toBlock} for filter ${id}`);\n const response = await this.sendAsyncPromise(Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { method: \"eth_getLogs\", params: [\n paramFromFilter(Object.assign(Object.assign({}, filter), { fromBlock: cursorPosition, toBlock })),\n ] }));\n if (Array.isArray(response.result)) {\n const blocks = response.result.map(log => (0, util_1.intNumberFromHexString)(log.blockNumber || \"0x0\"));\n const highestBlock = Math.max(...blocks);\n if (highestBlock && highestBlock > cursorPosition) {\n const newCursorPosition = (0, types_1.IntNumber)(highestBlock + 1);\n console.log(`Moving cursor position for filter (${id}) from ${cursorPosition} to ${newCursorPosition}`);\n this.cursors.set(id, newCursorPosition);\n }\n }\n return response;\n }\n async getBlockFilterChanges(id) {\n const cursorPosition = this.cursors.get(id);\n if (!cursorPosition) {\n return filterNotFoundError();\n }\n const currentBlockHeight = await this.getCurrentBlockHeight();\n if (cursorPosition > currentBlockHeight) {\n return emptyResult();\n }\n console.log(`Fetching blocks from ${cursorPosition} to ${currentBlockHeight} for filter (${id})`);\n const blocks = (await Promise.all(\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n (0, util_1.range)(cursorPosition, currentBlockHeight + 1).map(i => this.getBlockHashByNumber((0, types_1.IntNumber)(i))))).filter(hash => !!hash);\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n const newCursorPosition = (0, types_1.IntNumber)(cursorPosition + blocks.length);\n console.log(`Moving cursor position for filter (${id}) from ${cursorPosition} to ${newCursorPosition}`);\n this.cursors.set(id, newCursorPosition);\n return Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { result: blocks });\n }\n async getPendingTransactionFilterChanges(_id) {\n // pending transaction filters are not supported\n return Promise.resolve(emptyResult());\n }\n async setInitialCursorPosition(id, startBlock) {\n const currentBlockHeight = await this.getCurrentBlockHeight();\n const initialCursorPosition = typeof startBlock === \"number\" && startBlock > currentBlockHeight\n ? startBlock\n : currentBlockHeight;\n this.cursors.set(id, initialCursorPosition);\n return initialCursorPosition;\n }\n setFilterTimeout(id) {\n const existing = this.timeouts.get(id);\n if (existing) {\n window.clearTimeout(existing);\n }\n const timeout = window.setTimeout(() => {\n console.log(`Filter (${id}) timed out`);\n this.deleteFilter(id);\n }, TIMEOUT);\n this.timeouts.set(id, timeout);\n }\n async getCurrentBlockHeight() {\n const { result } = await this.sendAsyncPromise(Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { method: \"eth_blockNumber\", params: [] }));\n return (0, util_1.intNumberFromHexString)((0, util_1.ensureHexString)(result));\n }\n async getBlockHashByNumber(blockNumber) {\n const response = await this.sendAsyncPromise(Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { method: \"eth_getBlockByNumber\", params: [(0, util_1.hexStringFromIntNumber)(blockNumber), false] }));\n if (response.result && typeof response.result.hash === \"string\") {\n return (0, util_1.ensureHexString)(response.result.hash);\n }\n return null;\n }\n}\nexports.FilterPolyfill = FilterPolyfill;\nfunction filterFromParam(param) {\n return {\n fromBlock: intBlockHeightFromHexBlockHeight(param.fromBlock),\n toBlock: intBlockHeightFromHexBlockHeight(param.toBlock),\n addresses: param.address === undefined\n ? null\n : Array.isArray(param.address)\n ? param.address\n : [param.address],\n topics: param.topics || [],\n };\n}\nexports.filterFromParam = filterFromParam;\nfunction paramFromFilter(filter) {\n const param = {\n fromBlock: hexBlockHeightFromIntBlockHeight(filter.fromBlock),\n toBlock: hexBlockHeightFromIntBlockHeight(filter.toBlock),\n topics: filter.topics,\n };\n if (filter.addresses !== null) {\n param.address = filter.addresses;\n }\n return param;\n}\nfunction intBlockHeightFromHexBlockHeight(value) {\n if (value === undefined || value === \"latest\" || value === \"pending\") {\n return \"latest\";\n }\n else if (value === \"earliest\") {\n return (0, types_1.IntNumber)(0);\n }\n else if ((0, util_1.isHexString)(value)) {\n return (0, util_1.intNumberFromHexString)(value);\n }\n throw new Error(`Invalid block option: ${String(value)}`);\n}\nfunction hexBlockHeightFromIntBlockHeight(value) {\n if (value === \"latest\") {\n return value;\n }\n return (0, util_1.hexStringFromIntNumber)(value);\n}\nfunction filterNotFoundError() {\n return Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { error: { code: -32000, message: \"filter not found\" } });\n}\nfunction emptyResult() {\n return Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { result: [] });\n}\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONRPCMethod = void 0;\nvar JSONRPCMethod;\n(function (JSONRPCMethod) {\n // synchronous or asynchronous\n JSONRPCMethod[\"eth_accounts\"] = \"eth_accounts\";\n JSONRPCMethod[\"eth_coinbase\"] = \"eth_coinbase\";\n JSONRPCMethod[\"net_version\"] = \"net_version\";\n JSONRPCMethod[\"eth_chainId\"] = \"eth_chainId\";\n JSONRPCMethod[\"eth_uninstallFilter\"] = \"eth_uninstallFilter\";\n // asynchronous only\n JSONRPCMethod[\"eth_requestAccounts\"] = \"eth_requestAccounts\";\n JSONRPCMethod[\"eth_sign\"] = \"eth_sign\";\n JSONRPCMethod[\"eth_ecRecover\"] = \"eth_ecRecover\";\n JSONRPCMethod[\"personal_sign\"] = \"personal_sign\";\n JSONRPCMethod[\"personal_ecRecover\"] = \"personal_ecRecover\";\n JSONRPCMethod[\"eth_signTransaction\"] = \"eth_signTransaction\";\n JSONRPCMethod[\"eth_sendRawTransaction\"] = \"eth_sendRawTransaction\";\n JSONRPCMethod[\"eth_sendTransaction\"] = \"eth_sendTransaction\";\n JSONRPCMethod[\"eth_signTypedData_v1\"] = \"eth_signTypedData_v1\";\n JSONRPCMethod[\"eth_signTypedData_v2\"] = \"eth_signTypedData_v2\";\n JSONRPCMethod[\"eth_signTypedData_v3\"] = \"eth_signTypedData_v3\";\n JSONRPCMethod[\"eth_signTypedData_v4\"] = \"eth_signTypedData_v4\";\n JSONRPCMethod[\"eth_signTypedData\"] = \"eth_signTypedData\";\n JSONRPCMethod[\"cbWallet_arbitrary\"] = \"walletlink_arbitrary\";\n JSONRPCMethod[\"wallet_addEthereumChain\"] = \"wallet_addEthereumChain\";\n JSONRPCMethod[\"wallet_switchEthereumChain\"] = \"wallet_switchEthereumChain\";\n JSONRPCMethod[\"wallet_watchAsset\"] = \"wallet_watchAsset\";\n // asynchronous pub/sub\n JSONRPCMethod[\"eth_subscribe\"] = \"eth_subscribe\";\n JSONRPCMethod[\"eth_unsubscribe\"] = \"eth_unsubscribe\";\n // asynchronous filter methods\n JSONRPCMethod[\"eth_newFilter\"] = \"eth_newFilter\";\n JSONRPCMethod[\"eth_newBlockFilter\"] = \"eth_newBlockFilter\";\n JSONRPCMethod[\"eth_newPendingTransactionFilter\"] = \"eth_newPendingTransactionFilter\";\n JSONRPCMethod[\"eth_getFilterChanges\"] = \"eth_getFilterChanges\";\n JSONRPCMethod[\"eth_getFilterLogs\"] = \"eth_getFilterLogs\";\n})(JSONRPCMethod = exports.JSONRPCMethod || (exports.JSONRPCMethod = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubscriptionManager = void 0;\nconst PollingBlockTracker = require(\"eth-block-tracker\");\nconst createSubscriptionManager = require(\"eth-json-rpc-filters/subscriptionManager\");\nconst noop = () => { };\nclass SubscriptionManager {\n constructor(provider) {\n const blockTracker = new PollingBlockTracker({\n provider,\n pollingInterval: 15 * 1000,\n setSkipCacheFlag: true,\n });\n const { events, middleware } = createSubscriptionManager({\n blockTracker,\n provider,\n });\n this.events = events;\n this.subscriptionMiddleware = middleware;\n }\n async handleRequest(request) {\n const result = {};\n await this.subscriptionMiddleware(request, result, noop, noop);\n return result;\n }\n destroy() {\n this.subscriptionMiddleware.destroy();\n }\n}\nexports.SubscriptionManager = SubscriptionManager;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletSDKUI = void 0;\nconst LinkFlow_1 = require(\"../components/LinkFlow\");\nconst Snackbar_1 = require(\"../components/Snackbar\");\nconst cssReset_1 = require(\"../lib/cssReset\");\nclass WalletSDKUI {\n constructor(options) {\n this.standalone = null;\n this.attached = false;\n this.snackbar = new Snackbar_1.Snackbar({\n darkMode: options.darkMode,\n });\n this.linkFlow = new LinkFlow_1.LinkFlow({\n darkMode: options.darkMode,\n version: options.version,\n sessionId: options.session.id,\n sessionSecret: options.session.secret,\n linkAPIUrl: options.linkAPIUrl,\n connected$: options.connected$,\n isParentConnection: false,\n });\n }\n attach() {\n if (this.attached) {\n throw new Error(\"Coinbase Wallet SDK UI is already attached\");\n }\n const el = document.documentElement;\n const container = document.createElement(\"div\");\n container.className = \"-cbwsdk-css-reset\";\n el.appendChild(container);\n this.linkFlow.attach(container);\n this.snackbar.attach(container);\n this.attached = true;\n (0, cssReset_1.injectCssReset)();\n }\n setConnectDisabled(connectDisabled) {\n this.linkFlow.setConnectDisabled(connectDisabled);\n }\n /* istanbul ignore next */\n addEthereumChain(_options) {\n // no-op\n }\n /* istanbul ignore next */\n watchAsset(_options) {\n // no-op\n }\n /* istanbul ignore next */\n switchEthereumChain(_options) {\n // no-op\n }\n requestEthereumAccounts(options) {\n this.linkFlow.open({ onCancel: options.onCancel });\n }\n hideRequestEthereumAccounts() {\n this.linkFlow.close();\n }\n /* istanbul ignore next */\n signEthereumMessage(_) {\n // No-op\n }\n /* istanbul ignore next */\n signEthereumTransaction(_) {\n // No-op\n }\n /* istanbul ignore next */\n submitEthereumTransaction(_) {\n // No-op\n }\n /* istanbul ignore next */\n ethereumAddressFromSignedMessage(_) {\n // No-op\n }\n showConnecting(options) {\n let snackbarProps;\n if (options.isUnlinkedErrorState) {\n snackbarProps = {\n autoExpand: true,\n message: \"Connection lost\",\n menuItems: [\n {\n isRed: false,\n info: \"Reset connection\",\n svgWidth: \"10\",\n svgHeight: \"11\",\n path: \"M5.00008 0.96875C6.73133 0.96875 8.23758 1.94375 9.00008 3.375L10.0001 2.375V5.5H9.53133H7.96883H6.87508L7.80633 4.56875C7.41258 3.3875 6.31258 2.53125 5.00008 2.53125C3.76258 2.53125 2.70633 3.2875 2.25633 4.36875L0.812576 3.76875C1.50008 2.125 3.11258 0.96875 5.00008 0.96875ZM2.19375 6.43125C2.5875 7.6125 3.6875 8.46875 5 8.46875C6.2375 8.46875 7.29375 7.7125 7.74375 6.63125L9.1875 7.23125C8.5 8.875 6.8875 10.0312 5 10.0312C3.26875 10.0312 1.7625 9.05625 1 7.625L0 8.625V5.5H0.46875H2.03125H3.125L2.19375 6.43125Z\",\n defaultFillRule: \"evenodd\",\n defaultClipRule: \"evenodd\",\n onClick: options.onResetConnection,\n },\n ],\n };\n }\n else {\n snackbarProps = {\n message: \"Confirm on phone\",\n menuItems: [\n {\n isRed: true,\n info: \"Cancel transaction\",\n svgWidth: \"11\",\n svgHeight: \"11\",\n path: \"M10.3711 1.52346L9.21775 0.370117L5.37109 4.21022L1.52444 0.370117L0.371094 1.52346L4.2112 5.37012L0.371094 9.21677L1.52444 10.3701L5.37109 6.53001L9.21775 10.3701L10.3711 9.21677L6.53099 5.37012L10.3711 1.52346Z\",\n defaultFillRule: \"inherit\",\n defaultClipRule: \"inherit\",\n onClick: options.onCancel,\n },\n {\n isRed: false,\n info: \"Reset connection\",\n svgWidth: \"10\",\n svgHeight: \"11\",\n path: \"M5.00008 0.96875C6.73133 0.96875 8.23758 1.94375 9.00008 3.375L10.0001 2.375V5.5H9.53133H7.96883H6.87508L7.80633 4.56875C7.41258 3.3875 6.31258 2.53125 5.00008 2.53125C3.76258 2.53125 2.70633 3.2875 2.25633 4.36875L0.812576 3.76875C1.50008 2.125 3.11258 0.96875 5.00008 0.96875ZM2.19375 6.43125C2.5875 7.6125 3.6875 8.46875 5 8.46875C6.2375 8.46875 7.29375 7.7125 7.74375 6.63125L9.1875 7.23125C8.5 8.875 6.8875 10.0312 5 10.0312C3.26875 10.0312 1.7625 9.05625 1 7.625L0 8.625V5.5H0.46875H2.03125H3.125L2.19375 6.43125Z\",\n defaultFillRule: \"evenodd\",\n defaultClipRule: \"evenodd\",\n onClick: options.onResetConnection,\n },\n ],\n };\n }\n return this.snackbar.presentItem(snackbarProps);\n }\n /* istanbul ignore next */\n reloadUI() {\n document.location.reload();\n }\n /* istanbul ignore next */\n inlineAccountsResponse() {\n return false;\n }\n /* istanbul ignore next */\n inlineAddEthereumChain(_chainId) {\n return false;\n }\n /* istanbul ignore next */\n inlineWatchAsset() {\n return false;\n }\n /* istanbul ignore next */\n inlineSwitchEthereumChain() {\n return false;\n }\n /* istanbul ignore next */\n setStandalone(status) {\n this.standalone = status;\n }\n /* istanbul ignore next */\n isStandalone() {\n var _a;\n return (_a = this.standalone) !== null && _a !== void 0 ? _a : false;\n }\n}\nexports.WalletSDKUI = WalletSDKUI;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletUIError = void 0;\nclass WalletUIError extends Error {\n constructor(message, errorCode) {\n super(message);\n this.message = message;\n this.errorCode = errorCode;\n }\n}\nexports.WalletUIError = WalletUIError;\nWalletUIError.UserRejectedRequest = new WalletUIError(\"User rejected request\");\nWalletUIError.SwitchEthereumChainUnsupportedChainId = new WalletUIError(\"Unsupported chainId\", 4902);\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RelayMessageType = void 0;\nvar RelayMessageType;\n(function (RelayMessageType) {\n RelayMessageType[\"SESSION_ID_REQUEST\"] = \"SESSION_ID_REQUEST\";\n RelayMessageType[\"SESSION_ID_RESPONSE\"] = \"SESSION_ID_RESPONSE\";\n RelayMessageType[\"LINKED\"] = \"LINKED\";\n RelayMessageType[\"UNLINKED\"] = \"UNLINKED\";\n RelayMessageType[\"WEB3_REQUEST\"] = \"WEB3_REQUEST\";\n RelayMessageType[\"WEB3_REQUEST_CANCELED\"] = \"WEB3_REQUEST_CANCELED\";\n RelayMessageType[\"WEB3_RESPONSE\"] = \"WEB3_RESPONSE\";\n})(RelayMessageType = exports.RelayMessageType || (exports.RelayMessageType = {}));\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Session = void 0;\nconst js_sha256_1 = require(\"js-sha256\");\nconst rxjs_1 = require(\"rxjs\");\nconst operators_1 = require(\"rxjs/operators\");\nconst util_1 = require(\"../util\");\nconst STORAGE_KEY_SESSION_ID = \"session:id\";\nconst STORAGE_KEY_SESSION_SECRET = \"session:secret\";\nconst STORAGE_KEY_SESSION_LINKED = \"session:linked\";\nclass Session {\n constructor(storage, id, secret, linked) {\n this._storage = storage;\n this._id = id || (0, util_1.randomBytesHex)(16);\n this._secret = secret || (0, util_1.randomBytesHex)(32);\n const hash = js_sha256_1.sha256.create();\n hash.update(`${this._id}, ${this._secret} WalletLink`); // ensure old sessions stay connected\n this._key = hash.hex();\n this._linked = !!linked;\n }\n static load(storage) {\n const id = storage.getItem(STORAGE_KEY_SESSION_ID);\n const linked = storage.getItem(STORAGE_KEY_SESSION_LINKED);\n const secret = storage.getItem(STORAGE_KEY_SESSION_SECRET);\n if (id && secret) {\n return new Session(storage, id, secret, linked === \"1\");\n }\n return null;\n }\n static get persistedSessionIdChange$() {\n return (0, rxjs_1.fromEvent)(window, \"storage\").pipe((0, operators_1.filter)(evt => evt.key === STORAGE_KEY_SESSION_ID), (0, operators_1.map)(evt => ({\n oldValue: evt.oldValue || null,\n newValue: evt.newValue || null,\n })));\n }\n /**\n * Takes in a session ID and returns the sha256 hash of it.\n * @param sessionId session ID\n */\n static hash(sessionId) {\n const hash = js_sha256_1.sha256.create();\n return hash.update(sessionId).hex();\n }\n get id() {\n return this._id;\n }\n get secret() {\n return this._secret;\n }\n get key() {\n return this._key;\n }\n get linked() {\n return this._linked;\n }\n set linked(val) {\n this._linked = val;\n this.persistLinked();\n }\n save() {\n this._storage.setItem(STORAGE_KEY_SESSION_ID, this._id);\n this._storage.setItem(STORAGE_KEY_SESSION_SECRET, this._secret);\n this.persistLinked();\n return this;\n }\n persistLinked() {\n this._storage.setItem(STORAGE_KEY_SESSION_LINKED, this._linked ? \"1\" : \"0\");\n }\n}\nexports.Session = Session;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletSDKRelay = void 0;\nconst bind_decorator_1 = __importDefault(require(\"bind-decorator\"));\nconst eth_rpc_errors_1 = require(\"eth-rpc-errors\");\nconst rxjs_1 = require(\"rxjs\");\nconst operators_1 = require(\"rxjs/operators\");\nconst DiagnosticLogger_1 = require(\"../connection/DiagnosticLogger\");\nconst WalletSDKConnection_1 = require(\"../connection/WalletSDKConnection\");\nconst WalletUIError_1 = require(\"../provider/WalletUIError\");\nconst types_1 = require(\"../types\");\nconst util_1 = require(\"../util\");\nconst aes256gcm = __importStar(require(\"./aes256gcm\"));\nconst Session_1 = require(\"./Session\");\nconst WalletSDKRelayAbstract_1 = require(\"./WalletSDKRelayAbstract\");\nconst Web3Method_1 = require(\"./Web3Method\");\nconst Web3RequestCanceledMessage_1 = require(\"./Web3RequestCanceledMessage\");\nconst Web3RequestMessage_1 = require(\"./Web3RequestMessage\");\nconst Web3Response_1 = require(\"./Web3Response\");\nconst Web3ResponseMessage_1 = require(\"./Web3ResponseMessage\");\nclass WalletSDKRelay extends WalletSDKRelayAbstract_1.WalletSDKRelayAbstract {\n constructor(options) {\n var _a;\n super();\n this.accountsCallback = null;\n this.chainCallback = null;\n this.appName = \"\";\n this.appLogoUrl = null;\n this.subscriptions = new rxjs_1.Subscription();\n this.linkAPIUrl = options.linkAPIUrl;\n this.storage = options.storage;\n this.options = options;\n const { session, ui, connection } = this.subscribe();\n this._session = session;\n this.connection = connection;\n this.relayEventManager = options.relayEventManager;\n if (options.diagnosticLogger && options.eventListener) {\n throw new Error(\"Can't have both eventListener and diagnosticLogger options, use only diagnosticLogger\");\n }\n if (options.eventListener) {\n this.diagnostic = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n log: options.eventListener.onEvent,\n };\n }\n else {\n this.diagnostic = options.diagnosticLogger;\n }\n this._reloadOnDisconnect = (_a = options.reloadOnDisconnect) !== null && _a !== void 0 ? _a : true;\n this.ui = ui;\n }\n subscribe() {\n const session = Session_1.Session.load(this.storage) || new Session_1.Session(this.storage).save();\n const connection = new WalletSDKConnection_1.WalletSDKConnection(session.id, session.key, this.linkAPIUrl, this.diagnostic);\n this.subscriptions.add(connection.sessionConfig$.subscribe({\n next: sessionConfig => {\n this.onSessionConfigChanged(sessionConfig);\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"error while invoking session config callback\",\n });\n },\n }));\n this.subscriptions.add(connection.incomingEvent$\n .pipe((0, operators_1.filter)(m => m.event === \"Web3Response\"))\n .subscribe({ next: this.handleIncomingEvent }));\n this.subscriptions.add(connection.linked$\n .pipe((0, operators_1.skip)(1), (0, operators_1.tap)((linked) => {\n var _a;\n this.isLinked = linked;\n const cachedAddresses = this.storage.getItem(WalletSDKRelayAbstract_1.LOCAL_STORAGE_ADDRESSES_KEY);\n if (linked) {\n // Only set linked session variable one way\n this.session.linked = linked;\n }\n this.isUnlinkedErrorState = false;\n if (cachedAddresses) {\n const addresses = cachedAddresses.split(\" \");\n const wasConnectedViaStandalone = this.storage.getItem(\"IsStandaloneSigning\") === \"true\";\n if (addresses[0] !== \"\" &&\n !linked &&\n this.session.linked &&\n !wasConnectedViaStandalone) {\n this.isUnlinkedErrorState = true;\n const sessionIdHash = this.getSessionIdHash();\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.UNLINKED_ERROR_STATE, {\n sessionIdHash,\n });\n }\n }\n }))\n .subscribe());\n // if session is marked destroyed, reset and reload\n this.subscriptions.add(connection.sessionConfig$\n .pipe((0, operators_1.filter)(c => !!c.metadata && c.metadata.__destroyed === \"1\"))\n .subscribe(() => {\n var _a;\n const alreadyDestroyed = connection.isDestroyed;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.METADATA_DESTROYED, {\n alreadyDestroyed,\n sessionIdHash: this.getSessionIdHash(),\n });\n return this.resetAndReload();\n }));\n this.subscriptions.add(connection.sessionConfig$\n .pipe((0, operators_1.filter)(c => c.metadata && c.metadata.WalletUsername !== undefined))\n .pipe((0, operators_1.mergeMap)(c => aes256gcm.decrypt(c.metadata.WalletUsername, session.secret)))\n .subscribe({\n next: walletUsername => {\n this.storage.setItem(WalletSDKRelayAbstract_1.WALLET_USER_NAME_KEY, walletUsername);\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error decrypting\",\n value: \"username\",\n });\n },\n }));\n this.subscriptions.add(connection.sessionConfig$\n .pipe((0, operators_1.filter)(c => c.metadata && c.metadata.AppVersion !== undefined))\n .pipe((0, operators_1.mergeMap)(c => aes256gcm.decrypt(c.metadata.AppVersion, session.secret)))\n .subscribe({\n next: appVersion => {\n this.storage.setItem(WalletSDKRelayAbstract_1.APP_VERSION_KEY, appVersion);\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error decrypting\",\n value: \"appversion\",\n });\n },\n }));\n this.subscriptions.add(connection.sessionConfig$\n .pipe((0, operators_1.filter)(c => c.metadata &&\n c.metadata.ChainId !== undefined &&\n c.metadata.JsonRpcUrl !== undefined))\n .pipe((0, operators_1.mergeMap)(c => (0, rxjs_1.zip)(aes256gcm.decrypt(c.metadata.ChainId, session.secret), aes256gcm.decrypt(c.metadata.JsonRpcUrl, session.secret))))\n .pipe((0, operators_1.distinctUntilChanged)())\n .subscribe({\n next: ([chainId, jsonRpcUrl]) => {\n if (this.chainCallback) {\n this.chainCallback(chainId, jsonRpcUrl);\n }\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error decrypting\",\n value: \"chainId|jsonRpcUrl\",\n });\n },\n }));\n this.subscriptions.add(connection.sessionConfig$\n .pipe((0, operators_1.filter)(c => c.metadata && c.metadata.EthereumAddress !== undefined))\n .pipe((0, operators_1.mergeMap)(c => aes256gcm.decrypt(c.metadata.EthereumAddress, session.secret)))\n .subscribe({\n next: selectedAddress => {\n if (this.accountsCallback) {\n this.accountsCallback([selectedAddress]);\n }\n if (WalletSDKRelay.accountRequestCallbackIds.size > 0) {\n // We get the ethereum address from the metadata. If for whatever\n // reason we don't get a response via an explicit web3 message\n // we can still fulfill the eip1102 request.\n Array.from(WalletSDKRelay.accountRequestCallbackIds.values()).forEach(id => {\n const message = (0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.RequestEthereumAccountsResponse)([\n selectedAddress,\n ]),\n });\n this.invokeCallback(Object.assign(Object.assign({}, message), { id }));\n });\n WalletSDKRelay.accountRequestCallbackIds.clear();\n }\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error decrypting\",\n value: \"selectedAddress\",\n });\n },\n }));\n const ui = this.options.uiConstructor({\n linkAPIUrl: this.options.linkAPIUrl,\n version: this.options.version,\n darkMode: this.options.darkMode,\n session,\n connected$: connection.connected$,\n });\n connection.connect();\n return { session, ui, connection };\n }\n attachUI() {\n this.ui.attach();\n }\n resetAndReload() {\n this.connection\n .setSessionMetadata(\"__destroyed\", \"1\")\n .pipe((0, operators_1.timeout)(1000), (0, operators_1.catchError)(_ => (0, rxjs_1.of)(null)))\n .subscribe(_ => {\n var _a, _b, _c;\n const isStandalone = this.ui.isStandalone();\n try {\n this.subscriptions.unsubscribe();\n }\n catch (err) {\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error unsubscribing\",\n });\n }\n (_b = this.diagnostic) === null || _b === void 0 ? void 0 : _b.log(DiagnosticLogger_1.EVENTS.SESSION_STATE_CHANGE, {\n method: \"relay::resetAndReload\",\n sessionMetadataChange: \"__destroyed, 1\",\n sessionIdHash: this.getSessionIdHash(),\n });\n this.connection.destroy();\n /**\n * Only clear storage if the session id we have in memory matches the one on disk\n * Otherwise, in the case where we have 2 tabs, another tab might have cleared\n * storage already. In that case if we clear storage again, the user will be in\n * a state where the first tab allows the user to connect but the session that\n * was used isn't persisted. This leaves the user in a state where they aren't\n * connected to the mobile app.\n */\n const storedSession = Session_1.Session.load(this.storage);\n if ((storedSession === null || storedSession === void 0 ? void 0 : storedSession.id) === this._session.id) {\n this.storage.clear();\n }\n else if (storedSession) {\n (_c = this.diagnostic) === null || _c === void 0 ? void 0 : _c.log(DiagnosticLogger_1.EVENTS.SKIPPED_CLEARING_SESSION, {\n sessionIdHash: this.getSessionIdHash(),\n storedSessionIdHash: Session_1.Session.hash(storedSession.id),\n });\n }\n if (this._reloadOnDisconnect) {\n this.ui.reloadUI();\n return;\n }\n if (this.accountsCallback) {\n this.accountsCallback([], true);\n }\n const { session, ui, connection } = this.subscribe();\n this._session = session;\n this.connection = connection;\n this.ui = ui;\n if (isStandalone && this.ui.setStandalone)\n this.ui.setStandalone(true);\n this.attachUI();\n }, (err) => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.FAILURE, {\n method: \"relay::resetAndReload\",\n message: `failed to reset and reload with ${err}`,\n sessionIdHash: this.getSessionIdHash(),\n });\n });\n }\n setAppInfo(appName, appLogoUrl) {\n this.appName = appName;\n this.appLogoUrl = appLogoUrl;\n }\n getStorageItem(key) {\n return this.storage.getItem(key);\n }\n get session() {\n return this._session;\n }\n setStorageItem(key, value) {\n this.storage.setItem(key, value);\n }\n signEthereumMessage(message, address, addPrefix, typedDataJson) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.signEthereumMessage,\n params: {\n message: (0, util_1.hexStringFromBuffer)(message, true),\n address,\n addPrefix,\n typedDataJson: typedDataJson || null,\n },\n });\n }\n ethereumAddressFromSignedMessage(message, signature, addPrefix) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.ethereumAddressFromSignedMessage,\n params: {\n message: (0, util_1.hexStringFromBuffer)(message, true),\n signature: (0, util_1.hexStringFromBuffer)(signature, true),\n addPrefix,\n },\n });\n }\n signEthereumTransaction(params) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.signEthereumTransaction,\n params: {\n fromAddress: params.fromAddress,\n toAddress: params.toAddress,\n weiValue: (0, util_1.bigIntStringFromBN)(params.weiValue),\n data: (0, util_1.hexStringFromBuffer)(params.data, true),\n nonce: params.nonce,\n gasPriceInWei: params.gasPriceInWei\n ? (0, util_1.bigIntStringFromBN)(params.gasPriceInWei)\n : null,\n maxFeePerGas: params.gasPriceInWei\n ? (0, util_1.bigIntStringFromBN)(params.gasPriceInWei)\n : null,\n maxPriorityFeePerGas: params.gasPriceInWei\n ? (0, util_1.bigIntStringFromBN)(params.gasPriceInWei)\n : null,\n gasLimit: params.gasLimit ? (0, util_1.bigIntStringFromBN)(params.gasLimit) : null,\n chainId: params.chainId,\n shouldSubmit: false,\n },\n });\n }\n signAndSubmitEthereumTransaction(params) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.signEthereumTransaction,\n params: {\n fromAddress: params.fromAddress,\n toAddress: params.toAddress,\n weiValue: (0, util_1.bigIntStringFromBN)(params.weiValue),\n data: (0, util_1.hexStringFromBuffer)(params.data, true),\n nonce: params.nonce,\n gasPriceInWei: params.gasPriceInWei\n ? (0, util_1.bigIntStringFromBN)(params.gasPriceInWei)\n : null,\n maxFeePerGas: params.maxFeePerGas\n ? (0, util_1.bigIntStringFromBN)(params.maxFeePerGas)\n : null,\n maxPriorityFeePerGas: params.maxPriorityFeePerGas\n ? (0, util_1.bigIntStringFromBN)(params.maxPriorityFeePerGas)\n : null,\n gasLimit: params.gasLimit ? (0, util_1.bigIntStringFromBN)(params.gasLimit) : null,\n chainId: params.chainId,\n shouldSubmit: true,\n },\n });\n }\n submitEthereumTransaction(signedTransaction, chainId) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.submitEthereumTransaction,\n params: {\n signedTransaction: (0, util_1.hexStringFromBuffer)(signedTransaction, true),\n chainId,\n },\n });\n }\n scanQRCode(regExp) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.scanQRCode,\n params: { regExp },\n });\n }\n getQRCodeUrl() {\n return (0, util_1.createQrUrl)(this._session.id, this._session.secret, this.linkAPIUrl, false);\n }\n genericRequest(data, action) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.generic,\n params: {\n action,\n data,\n },\n });\n }\n sendGenericMessage(request) {\n return this.sendRequest(request);\n }\n sendRequest(request) {\n let hideSnackbarItem = null;\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n };\n const promise = new Promise((resolve, reject) => {\n if (!this.ui.isStandalone()) {\n hideSnackbarItem = this.ui.showConnecting({\n isUnlinkedErrorState: this.isUnlinkedErrorState,\n onCancel: cancel,\n onResetConnection: this.resetAndReload, // eslint-disable-line @typescript-eslint/unbound-method\n });\n }\n this.relayEventManager.callbacks.set(id, response => {\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n if (this.ui.isStandalone()) {\n this.sendRequestStandalone(id, request);\n }\n else {\n this.publishWeb3RequestEvent(id, request);\n }\n });\n return { promise, cancel };\n }\n setConnectDisabled(disabled) {\n this.ui.setConnectDisabled(disabled);\n }\n setAccountsCallback(accountsCallback) {\n this.accountsCallback = accountsCallback;\n }\n setChainCallback(chainCallback) {\n this.chainCallback = chainCallback;\n }\n publishWeb3RequestEvent(id, request) {\n var _a;\n const message = (0, Web3RequestMessage_1.Web3RequestMessage)({ id, request });\n const storedSession = Session_1.Session.load(this.storage);\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.WEB3_REQUEST, {\n eventId: message.id,\n method: `relay::${message.request.method}`,\n sessionIdHash: this.getSessionIdHash(),\n storedSessionIdHash: storedSession ? Session_1.Session.hash(storedSession.id) : \"\",\n isSessionMismatched: ((storedSession === null || storedSession === void 0 ? void 0 : storedSession.id) !== this._session.id).toString(),\n });\n this.subscriptions.add(this.publishEvent(\"Web3Request\", message, true).subscribe({\n next: _ => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.WEB3_REQUEST_PUBLISHED, {\n eventId: message.id,\n method: `relay::${message.request.method}`,\n sessionIdHash: this.getSessionIdHash(),\n storedSessionIdHash: storedSession\n ? Session_1.Session.hash(storedSession.id)\n : \"\",\n isSessionMismatched: ((storedSession === null || storedSession === void 0 ? void 0 : storedSession.id) !== this._session.id).toString(),\n });\n },\n error: err => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id: message.id,\n response: {\n method: message.request.method,\n errorMessage: err.message,\n },\n }));\n },\n }));\n }\n publishWeb3RequestCanceledEvent(id) {\n const message = (0, Web3RequestCanceledMessage_1.Web3RequestCanceledMessage)(id);\n this.subscriptions.add(this.publishEvent(\"Web3RequestCanceled\", message, false).subscribe());\n }\n publishEvent(event, message, callWebhook) {\n const secret = this.session.secret;\n return new rxjs_1.Observable(subscriber => {\n void aes256gcm\n .encrypt(JSON.stringify(Object.assign(Object.assign({}, message), { origin: location.origin })), secret)\n .then((encrypted) => {\n subscriber.next(encrypted);\n subscriber.complete();\n });\n }).pipe((0, operators_1.mergeMap)((encrypted) => {\n return this.connection.publishEvent(event, encrypted, callWebhook);\n }));\n }\n handleIncomingEvent(event) {\n try {\n this.subscriptions.add(aes256gcm\n .decrypt(event.data, this.session.secret)\n .pipe((0, operators_1.map)(c => JSON.parse(c)))\n .subscribe({\n next: json => {\n const message = (0, Web3ResponseMessage_1.isWeb3ResponseMessage)(json) ? json : null;\n if (!message) {\n return;\n }\n this.handleWeb3ResponseMessage(message);\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error decrypting\",\n value: \"incomingEvent\",\n });\n },\n }));\n }\n catch (_a) {\n return;\n }\n }\n handleWeb3ResponseMessage(message) {\n var _a;\n const { response } = message;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.WEB3_RESPONSE, {\n eventId: message.id,\n method: `relay::${response.method}`,\n sessionIdHash: this.getSessionIdHash(),\n });\n if ((0, Web3Response_1.isRequestEthereumAccountsResponse)(response)) {\n WalletSDKRelay.accountRequestCallbackIds.forEach(id => this.invokeCallback(Object.assign(Object.assign({}, message), { id })));\n WalletSDKRelay.accountRequestCallbackIds.clear();\n return;\n }\n this.invokeCallback(message);\n }\n handleErrorResponse(id, method, error, errorCode) {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.ErrorResponse)(method, (error !== null && error !== void 0 ? error : WalletUIError_1.WalletUIError.UserRejectedRequest).message, errorCode),\n }));\n }\n invokeCallback(message) {\n const callback = this.relayEventManager.callbacks.get(message.id);\n if (callback) {\n callback(message.response);\n this.relayEventManager.callbacks.delete(message.id);\n }\n }\n requestEthereumAccounts() {\n const request = {\n method: Web3Method_1.Web3Method.requestEthereumAccounts,\n params: {\n appName: this.appName,\n appLogoUrl: this.appLogoUrl || null,\n },\n };\n const hideSnackbarItem = null;\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n };\n const promise = new Promise((resolve, reject) => {\n var _a;\n this.relayEventManager.callbacks.set(id, response => {\n this.ui.hideRequestEthereumAccounts();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n const userAgent = ((_a = window === null || window === void 0 ? void 0 : window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) || null;\n if (userAgent &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent)) {\n window.location.href = `https://go.cb-w.com/xoXnYwQimhb?cb_url=${encodeURIComponent(window.location.href)}`;\n return;\n }\n if (this.ui.inlineAccountsResponse()) {\n const onAccounts = (accounts) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.RequestEthereumAccountsResponse)(accounts),\n }));\n };\n this.ui.requestEthereumAccounts({\n onCancel: cancel,\n onAccounts,\n });\n }\n else {\n this.ui.requestEthereumAccounts({\n onCancel: cancel,\n });\n }\n WalletSDKRelay.accountRequestCallbackIds.add(id);\n if (!this.ui.inlineAccountsResponse() && !this.ui.isStandalone()) {\n this.publishWeb3RequestEvent(id, request);\n }\n });\n return { promise, cancel };\n }\n selectProvider(providerOptions) {\n const request = {\n method: Web3Method_1.Web3Method.selectProvider,\n params: {\n providerOptions,\n },\n };\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n };\n const promise = new Promise((resolve, reject) => {\n this.relayEventManager.callbacks.set(id, response => {\n if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n const _cancel = (_error) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.SelectProviderResponse)(types_1.ProviderType.Unselected),\n }));\n };\n const approve = (selectedProviderKey) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.SelectProviderResponse)(selectedProviderKey),\n }));\n };\n if (this.ui.selectProvider)\n this.ui.selectProvider({\n onApprove: approve,\n onCancel: _cancel,\n providerOptions,\n });\n });\n return { cancel, promise };\n }\n watchAsset(type, address, symbol, decimals, image, chainId) {\n const request = {\n method: Web3Method_1.Web3Method.watchAsset,\n params: {\n type,\n options: {\n address,\n symbol,\n decimals,\n image,\n },\n chainId,\n },\n };\n let hideSnackbarItem = null;\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n };\n if (!this.ui.inlineWatchAsset()) {\n hideSnackbarItem = this.ui.showConnecting({\n isUnlinkedErrorState: this.isUnlinkedErrorState,\n onCancel: cancel,\n onResetConnection: this.resetAndReload, // eslint-disable-line @typescript-eslint/unbound-method\n });\n }\n const promise = new Promise((resolve, reject) => {\n this.relayEventManager.callbacks.set(id, response => {\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n const _cancel = (_error) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.WatchAssetReponse)(false),\n }));\n };\n const approve = () => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.WatchAssetReponse)(true),\n }));\n };\n if (this.ui.inlineWatchAsset()) {\n this.ui.watchAsset({\n onApprove: approve,\n onCancel: _cancel,\n type,\n address,\n symbol,\n decimals,\n image,\n chainId,\n });\n }\n if (!this.ui.inlineWatchAsset() && !this.ui.isStandalone()) {\n this.publishWeb3RequestEvent(id, request);\n }\n });\n return { cancel, promise };\n }\n addEthereumChain(chainId, rpcUrls, iconUrls, blockExplorerUrls, chainName, nativeCurrency) {\n const request = {\n method: Web3Method_1.Web3Method.addEthereumChain,\n params: {\n chainId,\n rpcUrls,\n blockExplorerUrls,\n chainName,\n iconUrls,\n nativeCurrency,\n },\n };\n let hideSnackbarItem = null;\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n };\n if (!this.ui.inlineAddEthereumChain(chainId)) {\n hideSnackbarItem = this.ui.showConnecting({\n isUnlinkedErrorState: this.isUnlinkedErrorState,\n onCancel: cancel,\n onResetConnection: this.resetAndReload, // eslint-disable-line @typescript-eslint/unbound-method\n });\n }\n const promise = new Promise((resolve, reject) => {\n this.relayEventManager.callbacks.set(id, response => {\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n const _cancel = (_error) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.AddEthereumChainResponse)({\n isApproved: false,\n rpcUrl: \"\",\n }),\n }));\n };\n const approve = (rpcUrl) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.AddEthereumChainResponse)({ isApproved: true, rpcUrl }),\n }));\n };\n if (this.ui.inlineAddEthereumChain(chainId)) {\n this.ui.addEthereumChain({\n onCancel: _cancel,\n onApprove: approve,\n chainId: request.params.chainId,\n rpcUrls: request.params.rpcUrls,\n blockExplorerUrls: request.params.blockExplorerUrls,\n chainName: request.params.chainName,\n iconUrls: request.params.iconUrls,\n nativeCurrency: request.params.nativeCurrency,\n });\n }\n if (!this.ui.inlineAddEthereumChain(chainId) && !this.ui.isStandalone()) {\n this.publishWeb3RequestEvent(id, request);\n }\n });\n return { promise, cancel };\n }\n switchEthereumChain(chainId) {\n const request = {\n method: Web3Method_1.Web3Method.switchEthereumChain,\n params: {\n chainId,\n },\n };\n let hideSnackbarItem = null;\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n };\n if (!this.ui.inlineSwitchEthereumChain()) {\n hideSnackbarItem = this.ui.showConnecting({\n isUnlinkedErrorState: this.isUnlinkedErrorState,\n onCancel: cancel,\n onResetConnection: this.resetAndReload, // eslint-disable-line @typescript-eslint/unbound-method\n });\n }\n const promise = new Promise((resolve, reject) => {\n this.relayEventManager.callbacks.set(id, response => {\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n if (response.errorMessage && response.errorCode) {\n return reject(eth_rpc_errors_1.ethErrors.provider.custom({\n code: response.errorCode,\n message: `Unrecognized chain ID. Try adding the chain using addEthereumChain first.`,\n }));\n }\n else if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n const _cancel = (error) => {\n if (typeof error === \"number\") {\n // backward compatibility\n const errorCode = error;\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.ErrorResponse)(Web3Method_1.Web3Method.switchEthereumChain, WalletUIError_1.WalletUIError.SwitchEthereumChainUnsupportedChainId.message, errorCode),\n }));\n }\n else if (error instanceof WalletUIError_1.WalletUIError) {\n this.handleErrorResponse(id, Web3Method_1.Web3Method.switchEthereumChain, error, error.errorCode);\n }\n else {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.SwitchEthereumChainResponse)({\n isApproved: false,\n rpcUrl: \"\",\n }),\n }));\n }\n };\n const approve = (rpcUrl) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.SwitchEthereumChainResponse)({\n isApproved: true,\n rpcUrl,\n }),\n }));\n };\n this.ui.switchEthereumChain({\n onCancel: _cancel,\n onApprove: approve,\n chainId: request.params.chainId,\n });\n if (!this.ui.inlineSwitchEthereumChain() && !this.ui.isStandalone()) {\n this.publishWeb3RequestEvent(id, request);\n }\n });\n return { promise, cancel };\n }\n inlineAddEthereumChain(chainId) {\n return this.ui.inlineAddEthereumChain(chainId);\n }\n getSessionIdHash() {\n return Session_1.Session.hash(this._session.id);\n }\n sendRequestStandalone(id, request) {\n const _cancel = (error) => {\n this.handleErrorResponse(id, request.method, error);\n };\n const onSuccess = (response) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response,\n }));\n };\n switch (request.method) {\n case Web3Method_1.Web3Method.signEthereumMessage:\n this.ui.signEthereumMessage({\n request,\n onSuccess,\n onCancel: _cancel,\n });\n break;\n case Web3Method_1.Web3Method.signEthereumTransaction:\n this.ui.signEthereumTransaction({\n request,\n onSuccess,\n onCancel: _cancel,\n });\n break;\n case Web3Method_1.Web3Method.submitEthereumTransaction:\n this.ui.submitEthereumTransaction({\n request,\n onSuccess,\n onCancel: _cancel,\n });\n break;\n case Web3Method_1.Web3Method.ethereumAddressFromSignedMessage:\n this.ui.ethereumAddressFromSignedMessage({\n request,\n onSuccess,\n });\n break;\n default:\n _cancel();\n break;\n }\n }\n onSessionConfigChanged(_nextSessionConfig) { }\n}\nWalletSDKRelay.accountRequestCallbackIds = new Set();\n__decorate([\n bind_decorator_1.default\n], WalletSDKRelay.prototype, \"resetAndReload\", null);\n__decorate([\n bind_decorator_1.default\n], WalletSDKRelay.prototype, \"handleIncomingEvent\", null);\nexports.WalletSDKRelay = WalletSDKRelay;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletSDKRelayAbstract = exports.APP_VERSION_KEY = exports.LOCAL_STORAGE_ADDRESSES_KEY = exports.WALLET_USER_NAME_KEY = void 0;\nconst eth_rpc_errors_1 = require(\"eth-rpc-errors\");\nexports.WALLET_USER_NAME_KEY = \"walletUsername\";\nexports.LOCAL_STORAGE_ADDRESSES_KEY = \"Addresses\";\nexports.APP_VERSION_KEY = \"AppVersion\";\nclass WalletSDKRelayAbstract {\n async makeEthereumJSONRPCRequest(request, jsonRpcUrl) {\n if (!jsonRpcUrl)\n throw new Error(\"Error: No jsonRpcUrl provided\");\n return window\n .fetch(jsonRpcUrl, {\n method: \"POST\",\n body: JSON.stringify(request),\n mode: \"cors\",\n headers: { \"Content-Type\": \"application/json\" },\n })\n .then(res => res.json())\n .then(json => {\n if (!json) {\n throw eth_rpc_errors_1.ethErrors.rpc.parse({});\n }\n const response = json;\n const { error } = response;\n if (error) {\n throw (0, eth_rpc_errors_1.serializeError)(error);\n }\n return response;\n });\n }\n}\nexports.WalletSDKRelayAbstract = WalletSDKRelayAbstract;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletSDKRelayEventManager = void 0;\nconst util_1 = require(\"../util\");\nclass WalletSDKRelayEventManager {\n constructor() {\n this._nextRequestId = 0;\n this.callbacks = new Map();\n }\n makeRequestId() {\n // max nextId == max int32 for compatibility with mobile\n this._nextRequestId = (this._nextRequestId + 1) % 0x7fffffff;\n const id = this._nextRequestId;\n const idStr = (0, util_1.prepend0x)(id.toString(16));\n // unlikely that this will ever be an issue, but just to be safe\n const callback = this.callbacks.get(idStr);\n if (callback) {\n this.callbacks.delete(idStr);\n }\n return id;\n }\n}\nexports.WalletSDKRelayEventManager = WalletSDKRelayEventManager;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Web3Method = void 0;\nvar Web3Method;\n(function (Web3Method) {\n Web3Method[\"requestEthereumAccounts\"] = \"requestEthereumAccounts\";\n Web3Method[\"signEthereumMessage\"] = \"signEthereumMessage\";\n Web3Method[\"signEthereumTransaction\"] = \"signEthereumTransaction\";\n Web3Method[\"submitEthereumTransaction\"] = \"submitEthereumTransaction\";\n Web3Method[\"ethereumAddressFromSignedMessage\"] = \"ethereumAddressFromSignedMessage\";\n Web3Method[\"scanQRCode\"] = \"scanQRCode\";\n Web3Method[\"generic\"] = \"generic\";\n Web3Method[\"childRequestEthereumAccounts\"] = \"childRequestEthereumAccounts\";\n Web3Method[\"addEthereumChain\"] = \"addEthereumChain\";\n Web3Method[\"switchEthereumChain\"] = \"switchEthereumChain\";\n Web3Method[\"makeEthereumJSONRPCRequest\"] = \"makeEthereumJSONRPCRequest\";\n Web3Method[\"watchAsset\"] = \"watchAsset\";\n Web3Method[\"selectProvider\"] = \"selectProvider\";\n})(Web3Method = exports.Web3Method || (exports.Web3Method = {}));\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Web3RequestCanceledMessage = void 0;\nconst RelayMessage_1 = require(\"./RelayMessage\");\nfunction Web3RequestCanceledMessage(id) {\n return { type: RelayMessage_1.RelayMessageType.WEB3_REQUEST_CANCELED, id };\n}\nexports.Web3RequestCanceledMessage = Web3RequestCanceledMessage;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Web3RequestMessage = void 0;\nconst RelayMessage_1 = require(\"./RelayMessage\");\nfunction Web3RequestMessage(params) {\n return Object.assign({ type: RelayMessage_1.RelayMessageType.WEB3_REQUEST }, params);\n}\nexports.Web3RequestMessage = Web3RequestMessage;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EthereumAddressFromSignedMessageResponse = exports.SubmitEthereumTransactionResponse = exports.SignEthereumTransactionResponse = exports.SignEthereumMessageResponse = exports.isRequestEthereumAccountsResponse = exports.SelectProviderResponse = exports.WatchAssetReponse = exports.RequestEthereumAccountsResponse = exports.SwitchEthereumChainResponse = exports.AddEthereumChainResponse = exports.ErrorResponse = void 0;\nconst Web3Method_1 = require(\"./Web3Method\");\nfunction ErrorResponse(method, errorMessage, errorCode) {\n return { method, errorMessage, errorCode };\n}\nexports.ErrorResponse = ErrorResponse;\nfunction AddEthereumChainResponse(addResponse) {\n return {\n method: Web3Method_1.Web3Method.addEthereumChain,\n result: addResponse,\n };\n}\nexports.AddEthereumChainResponse = AddEthereumChainResponse;\nfunction SwitchEthereumChainResponse(switchResponse) {\n return {\n method: Web3Method_1.Web3Method.switchEthereumChain,\n result: switchResponse,\n };\n}\nexports.SwitchEthereumChainResponse = SwitchEthereumChainResponse;\nfunction RequestEthereumAccountsResponse(addresses) {\n return { method: Web3Method_1.Web3Method.requestEthereumAccounts, result: addresses };\n}\nexports.RequestEthereumAccountsResponse = RequestEthereumAccountsResponse;\nfunction WatchAssetReponse(success) {\n return { method: Web3Method_1.Web3Method.watchAsset, result: success };\n}\nexports.WatchAssetReponse = WatchAssetReponse;\nfunction SelectProviderResponse(selectedProviderKey) {\n return { method: Web3Method_1.Web3Method.selectProvider, result: selectedProviderKey };\n}\nexports.SelectProviderResponse = SelectProviderResponse;\nfunction isRequestEthereumAccountsResponse(res) {\n return res && res.method === Web3Method_1.Web3Method.requestEthereumAccounts;\n}\nexports.isRequestEthereumAccountsResponse = isRequestEthereumAccountsResponse;\nfunction SignEthereumMessageResponse(signature) {\n return { method: Web3Method_1.Web3Method.signEthereumMessage, result: signature };\n}\nexports.SignEthereumMessageResponse = SignEthereumMessageResponse;\nfunction SignEthereumTransactionResponse(signedData) {\n return { method: Web3Method_1.Web3Method.signEthereumTransaction, result: signedData };\n}\nexports.SignEthereumTransactionResponse = SignEthereumTransactionResponse;\nfunction SubmitEthereumTransactionResponse(txHash) {\n return { method: Web3Method_1.Web3Method.submitEthereumTransaction, result: txHash };\n}\nexports.SubmitEthereumTransactionResponse = SubmitEthereumTransactionResponse;\nfunction EthereumAddressFromSignedMessageResponse(address) {\n return {\n method: Web3Method_1.Web3Method.ethereumAddressFromSignedMessage,\n result: address,\n };\n}\nexports.EthereumAddressFromSignedMessageResponse = EthereumAddressFromSignedMessageResponse;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWeb3ResponseMessage = exports.Web3ResponseMessage = void 0;\nconst RelayMessage_1 = require(\"./RelayMessage\");\nfunction Web3ResponseMessage(params) {\n return Object.assign({ type: RelayMessage_1.RelayMessageType.WEB3_RESPONSE }, params);\n}\nexports.Web3ResponseMessage = Web3ResponseMessage;\nfunction isWeb3ResponseMessage(msg) {\n return msg && msg.type === RelayMessage_1.RelayMessageType.WEB3_RESPONSE;\n}\nexports.isWeb3ResponseMessage = isWeb3ResponseMessage;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decrypt = exports.encrypt = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst util_1 = require(\"../util\");\n/**\n *\n * @param plainText string to be encrypted\n * @param secret hex representation of 32-byte secret\n * returns hex string representation of bytes in the order: initialization vector (iv),\n * auth tag, encrypted plaintext. IV is 12 bytes. Auth tag is 16 bytes. Remaining bytes are the\n * encrypted plainText.\n */\nasync function encrypt(plainText, secret) {\n if (secret.length !== 64)\n throw Error(`secret must be 256 bits`);\n const ivBytes = crypto.getRandomValues(new Uint8Array(12));\n const secretKey = await crypto.subtle.importKey(\"raw\", (0, util_1.hexStringToUint8Array)(secret), { name: \"aes-gcm\" }, false, [\"encrypt\", \"decrypt\"]);\n const enc = new TextEncoder();\n // Will return encrypted plainText with auth tag (ie MAC or checksum) appended at the end\n const encryptedResult = await window.crypto.subtle.encrypt({\n name: \"AES-GCM\",\n iv: ivBytes,\n }, secretKey, enc.encode(plainText));\n const tagLength = 16;\n const authTag = encryptedResult.slice(encryptedResult.byteLength - tagLength);\n const encryptedPlaintext = encryptedResult.slice(0, encryptedResult.byteLength - tagLength);\n const authTagBytes = new Uint8Array(authTag);\n const encryptedPlaintextBytes = new Uint8Array(encryptedPlaintext);\n const concatted = new Uint8Array([\n ...ivBytes,\n ...authTagBytes,\n ...encryptedPlaintextBytes,\n ]);\n return (0, util_1.uint8ArrayToHex)(concatted);\n}\nexports.encrypt = encrypt;\n/**\n *\n * @param cipherText hex string representation of bytes in the order: initialization vector (iv),\n * auth tag, encrypted plaintext. IV is 12 bytes. Auth tag is 16 bytes.\n * @param secret hex string representation of 32-byte secret\n *\n * TODO: Update rxjs for promises\n */\nfunction decrypt(cipherText, secret) {\n if (secret.length !== 64)\n throw Error(`secret must be 256 bits`);\n return new rxjs_1.Observable(subscriber => {\n void (async function () {\n const secretKey = await crypto.subtle.importKey(\"raw\", (0, util_1.hexStringToUint8Array)(secret), { name: \"aes-gcm\" }, false, [\"encrypt\", \"decrypt\"]);\n const encrypted = (0, util_1.hexStringToUint8Array)(cipherText);\n const ivBytes = encrypted.slice(0, 12);\n const authTagBytes = encrypted.slice(12, 28);\n const encryptedPlaintextBytes = encrypted.slice(28);\n const concattedBytes = new Uint8Array([\n ...encryptedPlaintextBytes,\n ...authTagBytes,\n ]);\n const algo = {\n name: \"AES-GCM\",\n iv: new Uint8Array(ivBytes),\n };\n try {\n const decrypted = await window.crypto.subtle.decrypt(algo, secretKey, concattedBytes);\n const decoder = new TextDecoder();\n subscriber.next(decoder.decode(decrypted));\n subscriber.complete();\n }\n catch (err) {\n subscriber.error(err);\n }\n })();\n });\n}\nexports.decrypt = decrypt;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProviderType = exports.RegExpString = exports.IntNumber = exports.BigIntString = exports.AddressString = exports.HexString = exports.OpaqueType = void 0;\nfunction OpaqueType() {\n return (value) => value;\n}\nexports.OpaqueType = OpaqueType;\nexports.HexString = OpaqueType();\nexports.AddressString = OpaqueType();\nexports.BigIntString = OpaqueType();\nfunction IntNumber(num) {\n return Math.floor(num);\n}\nexports.IntNumber = IntNumber;\nexports.RegExpString = OpaqueType();\nvar ProviderType;\n(function (ProviderType) {\n ProviderType[\"CoinbaseWallet\"] = \"CoinbaseWallet\";\n ProviderType[\"MetaMask\"] = \"MetaMask\";\n ProviderType[\"Unselected\"] = \"\";\n})(ProviderType = exports.ProviderType || (exports.ProviderType = {}));\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createQrUrl = exports.getFavicon = exports.range = exports.isBigNumber = exports.ensureParsedJSONObject = exports.ensureBN = exports.ensureRegExpString = exports.ensureIntNumber = exports.ensureBuffer = exports.ensureAddressString = exports.ensureEvenLengthHexString = exports.ensureHexString = exports.isHexString = exports.prepend0x = exports.strip0x = exports.has0xPrefix = exports.hexStringFromIntNumber = exports.intNumberFromHexString = exports.bigIntStringFromBN = exports.hexStringFromBuffer = exports.hexStringToUint8Array = exports.uint8ArrayToHex = exports.randomBytesHex = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst qs_1 = require(\"qs\");\nconst types_1 = require(\"./types\");\nconst INT_STRING_REGEX = /^[0-9]*$/;\nconst HEXADECIMAL_STRING_REGEX = /^[a-f0-9]*$/;\n/**\n * @param length number of bytes\n */\nfunction randomBytesHex(length) {\n return uint8ArrayToHex(crypto.getRandomValues(new Uint8Array(length)));\n}\nexports.randomBytesHex = randomBytesHex;\nfunction uint8ArrayToHex(value) {\n return [...value].map(b => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\nexports.uint8ArrayToHex = uint8ArrayToHex;\nfunction hexStringToUint8Array(hexString) {\n return new Uint8Array(hexString.match(/.{1,2}/g).map(byte => parseInt(byte, 16)));\n}\nexports.hexStringToUint8Array = hexStringToUint8Array;\nfunction hexStringFromBuffer(buf, includePrefix = false) {\n const hex = buf.toString(\"hex\");\n return (0, types_1.HexString)(includePrefix ? \"0x\" + hex : hex);\n}\nexports.hexStringFromBuffer = hexStringFromBuffer;\nfunction bigIntStringFromBN(bn) {\n return (0, types_1.BigIntString)(bn.toString(10));\n}\nexports.bigIntStringFromBN = bigIntStringFromBN;\nfunction intNumberFromHexString(hex) {\n return (0, types_1.IntNumber)(new bn_js_1.default(ensureEvenLengthHexString(hex, false), 16).toNumber());\n}\nexports.intNumberFromHexString = intNumberFromHexString;\nfunction hexStringFromIntNumber(num) {\n return (0, types_1.HexString)(\"0x\" + new bn_js_1.default(num).toString(16));\n}\nexports.hexStringFromIntNumber = hexStringFromIntNumber;\nfunction has0xPrefix(str) {\n return str.startsWith(\"0x\") || str.startsWith(\"0X\");\n}\nexports.has0xPrefix = has0xPrefix;\nfunction strip0x(hex) {\n if (has0xPrefix(hex)) {\n return hex.slice(2);\n }\n return hex;\n}\nexports.strip0x = strip0x;\nfunction prepend0x(hex) {\n if (has0xPrefix(hex)) {\n return \"0x\" + hex.slice(2);\n }\n return \"0x\" + hex;\n}\nexports.prepend0x = prepend0x;\nfunction isHexString(hex) {\n if (typeof hex !== \"string\") {\n return false;\n }\n const s = strip0x(hex).toLowerCase();\n return HEXADECIMAL_STRING_REGEX.test(s);\n}\nexports.isHexString = isHexString;\nfunction ensureHexString(hex, includePrefix = false) {\n if (typeof hex === \"string\") {\n const s = strip0x(hex).toLowerCase();\n if (HEXADECIMAL_STRING_REGEX.test(s)) {\n return (0, types_1.HexString)(includePrefix ? \"0x\" + s : s);\n }\n }\n throw new Error(`\"${String(hex)}\" is not a hexadecimal string`);\n}\nexports.ensureHexString = ensureHexString;\nfunction ensureEvenLengthHexString(hex, includePrefix = false) {\n let h = ensureHexString(hex, false);\n if (h.length % 2 === 1) {\n h = (0, types_1.HexString)(\"0\" + h);\n }\n return includePrefix ? (0, types_1.HexString)(\"0x\" + h) : h;\n}\nexports.ensureEvenLengthHexString = ensureEvenLengthHexString;\nfunction ensureAddressString(str) {\n if (typeof str === \"string\") {\n const s = strip0x(str).toLowerCase();\n if (isHexString(s) && s.length === 40) {\n return (0, types_1.AddressString)(prepend0x(s));\n }\n }\n throw new Error(`Invalid Ethereum address: ${String(str)}`);\n}\nexports.ensureAddressString = ensureAddressString;\nfunction ensureBuffer(str) {\n if (Buffer.isBuffer(str)) {\n return str;\n }\n if (typeof str === \"string\") {\n if (isHexString(str)) {\n const s = ensureEvenLengthHexString(str, false);\n return Buffer.from(s, \"hex\");\n }\n else {\n return Buffer.from(str, \"utf8\");\n }\n }\n throw new Error(`Not binary data: ${String(str)}`);\n}\nexports.ensureBuffer = ensureBuffer;\nfunction ensureIntNumber(num) {\n if (typeof num === \"number\" && Number.isInteger(num)) {\n return (0, types_1.IntNumber)(num);\n }\n if (typeof num === \"string\") {\n if (INT_STRING_REGEX.test(num)) {\n return (0, types_1.IntNumber)(Number(num));\n }\n if (isHexString(num)) {\n return (0, types_1.IntNumber)(new bn_js_1.default(ensureEvenLengthHexString(num, false), 16).toNumber());\n }\n }\n throw new Error(`Not an integer: ${String(num)}`);\n}\nexports.ensureIntNumber = ensureIntNumber;\nfunction ensureRegExpString(regExp) {\n if (regExp instanceof RegExp) {\n return (0, types_1.RegExpString)(regExp.toString());\n }\n throw new Error(`Not a RegExp: ${String(regExp)}`);\n}\nexports.ensureRegExpString = ensureRegExpString;\nfunction ensureBN(val) {\n if (val !== null && (bn_js_1.default.isBN(val) || isBigNumber(val))) {\n return new bn_js_1.default(val.toString(10), 10);\n }\n if (typeof val === \"number\") {\n return new bn_js_1.default(ensureIntNumber(val));\n }\n if (typeof val === \"string\") {\n if (INT_STRING_REGEX.test(val)) {\n return new bn_js_1.default(val, 10);\n }\n if (isHexString(val)) {\n return new bn_js_1.default(ensureEvenLengthHexString(val, false), 16);\n }\n }\n throw new Error(`Not an integer: ${String(val)}`);\n}\nexports.ensureBN = ensureBN;\nfunction ensureParsedJSONObject(val) {\n if (typeof val === \"string\") {\n return JSON.parse(val);\n }\n if (typeof val === \"object\") {\n return val;\n }\n throw new Error(`Not a JSON string or an object: ${String(val)}`);\n}\nexports.ensureParsedJSONObject = ensureParsedJSONObject;\nfunction isBigNumber(val) {\n if (val == null || typeof val.constructor !== \"function\") {\n return false;\n }\n const { constructor } = val;\n return (typeof constructor.config === \"function\" &&\n typeof constructor.EUCLID === \"number\");\n}\nexports.isBigNumber = isBigNumber;\nfunction range(start, stop) {\n return Array.from({ length: stop - start }, (_, i) => start + i);\n}\nexports.range = range;\nfunction getFavicon() {\n const el = document.querySelector('link[sizes=\"192x192\"]') ||\n document.querySelector('link[sizes=\"180x180\"]') ||\n document.querySelector('link[rel=\"icon\"]') ||\n document.querySelector('link[rel=\"shortcut icon\"]');\n const { protocol, host } = document.location;\n const href = el ? el.getAttribute(\"href\") : null;\n if (!href || href.startsWith(\"javascript:\")) {\n return null;\n }\n if (href.startsWith(\"http://\") ||\n href.startsWith(\"https://\") ||\n href.startsWith(\"data:\")) {\n return href;\n }\n if (href.startsWith(\"//\")) {\n return protocol + href;\n }\n return `${protocol}//${host}${href}`;\n}\nexports.getFavicon = getFavicon;\nfunction createQrUrl(sessionId, sessionSecret, serverUrl, isParentConnection) {\n const sessionIdKey = isParentConnection ? \"parent-id\" : \"id\";\n const query = (0, qs_1.stringify)({\n [sessionIdKey]: sessionId,\n secret: sessionSecret,\n server: serverUrl,\n v: \"1\",\n });\n const qrUrl = `${serverUrl}/#/link?${query}`;\n return qrUrl;\n}\nexports.createQrUrl = createQrUrl;\n","// Extracted from https://github.com/ethereumjs/ethereumjs-abi and stripped out irrelevant code\n// Original code licensed under the MIT License - Copyright (c) 2015 Alex Beregszaszi\n\nconst util = require('./util')\nconst BN = require('bn.js')\n\n// Convert from short to canonical names\n// FIXME: optimise or make this nicer?\nfunction elementaryName (name) {\n if (name.startsWith('int[')) {\n return 'int256' + name.slice(3)\n } else if (name === 'int') {\n return 'int256'\n } else if (name.startsWith('uint[')) {\n return 'uint256' + name.slice(4)\n } else if (name === 'uint') {\n return 'uint256'\n } else if (name.startsWith('fixed[')) {\n return 'fixed128x128' + name.slice(5)\n } else if (name === 'fixed') {\n return 'fixed128x128'\n } else if (name.startsWith('ufixed[')) {\n return 'ufixed128x128' + name.slice(6)\n } else if (name === 'ufixed') {\n return 'ufixed128x128'\n }\n return name\n}\n\n// Parse N from type\nfunction parseTypeN (type) {\n return parseInt(/^\\D+(\\d+)$/.exec(type)[1], 10)\n}\n\n// Parse N,M from typex\nfunction parseTypeNxM (type) {\n var tmp = /^\\D+(\\d+)x(\\d+)$/.exec(type)\n return [ parseInt(tmp[1], 10), parseInt(tmp[2], 10) ]\n}\n\n// Parse N in type[] where \"type\" can itself be an array type.\nfunction parseTypeArray (type) {\n var tmp = type.match(/(.*)\\[(.*?)\\]$/)\n if (tmp) {\n return tmp[2] === '' ? 'dynamic' : parseInt(tmp[2], 10)\n }\n return null\n}\n\nfunction parseNumber (arg) {\n var type = typeof arg\n if (type === 'string') {\n if (util.isHexString(arg)) {\n return new BN(util.stripHexPrefix(arg), 16)\n } else {\n return new BN(arg, 10)\n }\n } else if (type === 'number') {\n return new BN(arg)\n } else if (arg.toArray) {\n // assume this is a BN for the moment, replace with BN.isBN soon\n return arg\n } else {\n throw new Error('Argument is not a number')\n }\n}\n\n// Encodes a single item (can be dynamic array)\n// @returns: Buffer\nfunction encodeSingle (type, arg) {\n var size, num, ret, i\n\n if (type === 'address') {\n return encodeSingle('uint160', parseNumber(arg))\n } else if (type === 'bool') {\n return encodeSingle('uint8', arg ? 1 : 0)\n } else if (type === 'string') {\n return encodeSingle('bytes', new Buffer(arg, 'utf8'))\n } else if (isArray(type)) {\n // this part handles fixed-length ([2]) and variable length ([]) arrays\n // NOTE: we catch here all calls to arrays, that simplifies the rest\n if (typeof arg.length === 'undefined') {\n throw new Error('Not an array?')\n }\n size = parseTypeArray(type)\n if (size !== 'dynamic' && size !== 0 && arg.length > size) {\n throw new Error('Elements exceed array size: ' + size)\n }\n ret = []\n type = type.slice(0, type.lastIndexOf('['))\n if (typeof arg === 'string') {\n arg = JSON.parse(arg)\n }\n for (i in arg) {\n ret.push(encodeSingle(type, arg[i]))\n }\n if (size === 'dynamic') {\n var length = encodeSingle('uint256', arg.length)\n ret.unshift(length)\n }\n return Buffer.concat(ret)\n } else if (type === 'bytes') {\n arg = new Buffer(arg)\n\n ret = Buffer.concat([ encodeSingle('uint256', arg.length), arg ])\n\n if ((arg.length % 32) !== 0) {\n ret = Buffer.concat([ ret, util.zeros(32 - (arg.length % 32)) ])\n }\n\n return ret\n } else if (type.startsWith('bytes')) {\n size = parseTypeN(type)\n if (size < 1 || size > 32) {\n throw new Error('Invalid bytes width: ' + size)\n }\n\n return util.setLengthRight(arg, 32)\n } else if (type.startsWith('uint')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid uint width: ' + size)\n }\n\n num = parseNumber(arg)\n if (num.bitLength() > size) {\n throw new Error('Supplied uint exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n if (num < 0) {\n throw new Error('Supplied uint is negative')\n }\n\n return num.toArrayLike(Buffer, 'be', 32)\n } else if (type.startsWith('int')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid int width: ' + size)\n }\n\n num = parseNumber(arg)\n if (num.bitLength() > size) {\n throw new Error('Supplied int exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n return num.toTwos(256).toArrayLike(Buffer, 'be', 32)\n } else if (type.startsWith('ufixed')) {\n size = parseTypeNxM(type)\n\n num = parseNumber(arg)\n\n if (num < 0) {\n throw new Error('Supplied ufixed is negative')\n }\n\n return encodeSingle('uint256', num.mul(new BN(2).pow(new BN(size[1]))))\n } else if (type.startsWith('fixed')) {\n size = parseTypeNxM(type)\n\n return encodeSingle('int256', parseNumber(arg).mul(new BN(2).pow(new BN(size[1]))))\n }\n\n throw new Error('Unsupported or invalid type: ' + type)\n}\n\n// Is a type dynamic?\nfunction isDynamic (type) {\n // FIXME: handle all types? I don't think anything is missing now\n return (type === 'string') || (type === 'bytes') || (parseTypeArray(type) === 'dynamic')\n}\n\n// Is a type an array?\nfunction isArray (type) {\n return type.lastIndexOf(']') === type.length - 1\n}\n\n// Encode a method/event with arguments\n// @types an array of string type names\n// @args an array of the appropriate values\nfunction rawEncode (types, values) {\n var output = []\n var data = []\n\n var headLength = 32 * types.length\n\n for (var i in types) {\n var type = elementaryName(types[i])\n var value = values[i]\n var cur = encodeSingle(type, value)\n\n // Use the head/tail method for storing dynamic data\n if (isDynamic(type)) {\n output.push(encodeSingle('uint256', headLength))\n data.push(cur)\n headLength += cur.length\n } else {\n output.push(cur)\n }\n }\n\n return Buffer.concat(output.concat(data))\n}\n\nfunction solidityPack (types, values) {\n if (types.length !== values.length) {\n throw new Error('Number of types are not matching the values')\n }\n\n var size, num\n var ret = []\n\n for (var i = 0; i < types.length; i++) {\n var type = elementaryName(types[i])\n var value = values[i]\n\n if (type === 'bytes') {\n ret.push(value)\n } else if (type === 'string') {\n ret.push(new Buffer(value, 'utf8'))\n } else if (type === 'bool') {\n ret.push(new Buffer(value ? '01' : '00', 'hex'))\n } else if (type === 'address') {\n ret.push(util.setLength(value, 20))\n } else if (type.startsWith('bytes')) {\n size = parseTypeN(type)\n if (size < 1 || size > 32) {\n throw new Error('Invalid bytes width: ' + size)\n }\n\n ret.push(util.setLengthRight(value, size))\n } else if (type.startsWith('uint')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid uint width: ' + size)\n }\n\n num = parseNumber(value)\n if (num.bitLength() > size) {\n throw new Error('Supplied uint exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n ret.push(num.toArrayLike(Buffer, 'be', size / 8))\n } else if (type.startsWith('int')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid int width: ' + size)\n }\n\n num = parseNumber(value)\n if (num.bitLength() > size) {\n throw new Error('Supplied int exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n ret.push(num.toTwos(size).toArrayLike(Buffer, 'be', size / 8))\n } else {\n // FIXME: support all other types\n throw new Error('Unsupported or invalid type: ' + type)\n }\n }\n\n return Buffer.concat(ret)\n}\n\nfunction soliditySHA3 (types, values) {\n return util.keccak(solidityPack(types, values))\n}\n\nmodule.exports = {\n rawEncode,\n solidityPack,\n soliditySHA3\n}\n","const util = require('./util')\nconst abi = require('./abi')\n\nconst TYPED_MESSAGE_SCHEMA = {\n type: 'object',\n properties: {\n types: {\n type: 'object',\n additionalProperties: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n name: {type: 'string'},\n type: {type: 'string'},\n },\n required: ['name', 'type'],\n },\n },\n },\n primaryType: {type: 'string'},\n domain: {type: 'object'},\n message: {type: 'object'},\n },\n required: ['types', 'primaryType', 'domain', 'message'],\n}\n\n/**\n * A collection of utility functions used for signing typed data\n */\nconst TypedDataUtils = {\n /**\n * Encodes an object by encoding and concatenating each of its members\n *\n * @param {string} primaryType - Root type\n * @param {Object} data - Object to encode\n * @param {Object} types - Type definitions\n * @returns {string} - Encoded representation of an object\n */\n encodeData (primaryType, data, types, useV4 = true) {\n const encodedTypes = ['bytes32']\n const encodedValues = [this.hashType(primaryType, types)]\n\n if(useV4) {\n const encodeField = (name, type, value) => {\n if (types[type] !== undefined) {\n return ['bytes32', value == null ?\n '0x0000000000000000000000000000000000000000000000000000000000000000' :\n util.keccak(this.encodeData(type, value, types, useV4))]\n }\n\n if(value === undefined)\n throw new Error(`missing value for field ${name} of type ${type}`)\n\n if (type === 'bytes') {\n return ['bytes32', util.keccak(value)]\n }\n\n if (type === 'string') {\n // convert string to buffer - prevents ethUtil from interpreting strings like '0xabcd' as hex\n if (typeof value === 'string') {\n value = Buffer.from(value, 'utf8')\n }\n return ['bytes32', util.keccak(value)]\n }\n\n if (type.lastIndexOf(']') === type.length - 1) {\n const parsedType = type.slice(0, type.lastIndexOf('['))\n const typeValuePairs = value.map(item =>\n encodeField(name, parsedType, item))\n return ['bytes32', util.keccak(abi.rawEncode(\n typeValuePairs.map(([type]) => type),\n typeValuePairs.map(([, value]) => value),\n ))]\n }\n\n return [type, value]\n }\n\n for (const field of types[primaryType]) {\n const [type, value] = encodeField(field.name, field.type, data[field.name])\n encodedTypes.push(type)\n encodedValues.push(value)\n }\n } else {\n for (const field of types[primaryType]) {\n let value = data[field.name]\n if (value !== undefined) {\n if (field.type === 'bytes') {\n encodedTypes.push('bytes32')\n value = util.keccak(value)\n encodedValues.push(value)\n } else if (field.type === 'string') {\n encodedTypes.push('bytes32')\n // convert string to buffer - prevents ethUtil from interpreting strings like '0xabcd' as hex\n if (typeof value === 'string') {\n value = Buffer.from(value, 'utf8')\n }\n value = util.keccak(value)\n encodedValues.push(value)\n } else if (types[field.type] !== undefined) {\n encodedTypes.push('bytes32')\n value = util.keccak(this.encodeData(field.type, value, types, useV4))\n encodedValues.push(value)\n } else if (field.type.lastIndexOf(']') === field.type.length - 1) {\n throw new Error('Arrays currently unimplemented in encodeData')\n } else {\n encodedTypes.push(field.type)\n encodedValues.push(value)\n }\n }\n }\n }\n\n return abi.rawEncode(encodedTypes, encodedValues)\n },\n\n /**\n * Encodes the type of an object by encoding a comma delimited list of its members\n *\n * @param {string} primaryType - Root type to encode\n * @param {Object} types - Type definitions\n * @returns {string} - Encoded representation of the type of an object\n */\n encodeType (primaryType, types) {\n let result = ''\n let deps = this.findTypeDependencies(primaryType, types).filter(dep => dep !== primaryType)\n deps = [primaryType].concat(deps.sort())\n for (const type of deps) {\n const children = types[type]\n if (!children) {\n throw new Error('No type definition specified: ' + type)\n }\n result += type + '(' + types[type].map(({ name, type }) => type + ' ' + name).join(',') + ')'\n }\n return result\n },\n\n /**\n * Finds all types within a type defintion object\n *\n * @param {string} primaryType - Root type\n * @param {Object} types - Type definitions\n * @param {Array} results - current set of accumulated types\n * @returns {Array} - Set of all types found in the type definition\n */\n findTypeDependencies (primaryType, types, results = []) {\n primaryType = primaryType.match(/^\\w*/)[0]\n if (results.includes(primaryType) || types[primaryType] === undefined) { return results }\n results.push(primaryType)\n for (const field of types[primaryType]) {\n for (const dep of this.findTypeDependencies(field.type, types, results)) {\n !results.includes(dep) && results.push(dep)\n }\n }\n return results\n },\n\n /**\n * Hashes an object\n *\n * @param {string} primaryType - Root type\n * @param {Object} data - Object to hash\n * @param {Object} types - Type definitions\n * @returns {Buffer} - Hash of an object\n */\n hashStruct (primaryType, data, types, useV4 = true) {\n return util.keccak(this.encodeData(primaryType, data, types, useV4))\n },\n\n /**\n * Hashes the type of an object\n *\n * @param {string} primaryType - Root type to hash\n * @param {Object} types - Type definitions\n * @returns {string} - Hash of an object\n */\n hashType (primaryType, types) {\n return util.keccak(this.encodeType(primaryType, types))\n },\n\n /**\n * Removes properties from a message object that are not defined per EIP-712\n *\n * @param {Object} data - typed message object\n * @returns {Object} - typed message object with only allowed fields\n */\n sanitizeData (data) {\n const sanitizedData = {}\n for (const key in TYPED_MESSAGE_SCHEMA.properties) {\n data[key] && (sanitizedData[key] = data[key])\n }\n if (sanitizedData.types) {\n sanitizedData.types = Object.assign({ EIP712Domain: [] }, sanitizedData.types)\n }\n return sanitizedData\n },\n\n /**\n * Returns the hash of a typed message as per EIP-712 for signing\n *\n * @param {Object} typedData - Types message data to sign\n * @returns {string} - sha3 hash for signing\n */\n hash (typedData, useV4 = true) {\n const sanitizedData = this.sanitizeData(typedData)\n const parts = [Buffer.from('1901', 'hex')]\n parts.push(this.hashStruct('EIP712Domain', sanitizedData.domain, sanitizedData.types, useV4))\n if (sanitizedData.primaryType !== 'EIP712Domain') {\n parts.push(this.hashStruct(sanitizedData.primaryType, sanitizedData.message, sanitizedData.types, useV4))\n }\n return util.keccak(Buffer.concat(parts))\n },\n}\n\nmodule.exports = {\n TYPED_MESSAGE_SCHEMA,\n TypedDataUtils,\n\n hashForSignTypedDataLegacy: function (msgParams) {\n return typedSignatureHashLegacy(msgParams.data)\n },\n\n hashForSignTypedData_v3: function (msgParams) {\n return TypedDataUtils.hash(msgParams.data, false)\n },\n\n hashForSignTypedData_v4: function (msgParams) {\n return TypedDataUtils.hash(msgParams.data)\n },\n}\n\n/**\n * @param typedData - Array of data along with types, as per EIP712.\n * @returns Buffer\n */\nfunction typedSignatureHashLegacy(typedData) {\n const error = new Error('Expect argument to be non-empty array')\n if (typeof typedData !== 'object' || !typedData.length) throw error\n\n const data = typedData.map(function (e) {\n return e.type === 'bytes' ? util.toBuffer(e.value) : e.value\n })\n const types = typedData.map(function (e) { return e.type })\n const schema = typedData.map(function (e) {\n if (!e.name) throw error\n return e.type + ' ' + e.name\n })\n\n return abi.soliditySHA3(\n ['bytes32', 'bytes32'],\n [\n abi.soliditySHA3(new Array(typedData.length).fill('string'), schema),\n abi.soliditySHA3(types, data)\n ]\n )\n}\n","// Extracted from https://github.com/ethereumjs/ethereumjs-util and stripped out irrelevant code\n// Original code licensed under the Mozilla Public License Version 2.0\n\nconst createKeccakHash = require('keccak/js')\nconst BN = require('bn.js')\n\n/**\n * Returns a buffer filled with 0s\n * @method zeros\n * @param {Number} bytes the number of bytes the buffer should be\n * @return {Buffer}\n */\nfunction zeros (bytes) {\n return Buffer.allocUnsafe(bytes).fill(0)\n}\n\n/**\n * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @method setLength\n * @param {Buffer|Array} msg the value to pad\n * @param {Number} length the number of bytes the output should be\n * @param {Boolean} [right=false] whether to start padding form the left or right\n * @return {Buffer|Array}\n */\nfunction setLength (msg, length, right) {\n const buf = zeros(length)\n msg = toBuffer(msg)\n if (right) {\n if (msg.length < length) {\n msg.copy(buf)\n return buf\n }\n return msg.slice(0, length)\n } else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length)\n return buf\n }\n return msg.slice(-length)\n }\n}\n\n/**\n * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param {Buffer|Array} msg the value to pad\n * @param {Number} length the number of bytes the output should be\n * @return {Buffer|Array}\n */\nfunction setLengthRight (msg, length) {\n return setLength(msg, length, true)\n}\n\n/**\n * Attempts to turn a value into a `Buffer`. As input it supports `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` method.\n * @param {*} v the value\n */\nfunction toBuffer (v) {\n if (!Buffer.isBuffer(v)) {\n if (Array.isArray(v)) {\n v = Buffer.from(v)\n } else if (typeof v === 'string') {\n if (isHexString(v)) {\n v = Buffer.from(padToEven(stripHexPrefix(v)), 'hex')\n } else {\n v = Buffer.from(v)\n }\n } else if (typeof v === 'number') {\n v = intToBuffer(v)\n } else if (v === null || v === undefined) {\n v = Buffer.allocUnsafe(0)\n } else if (BN.isBN(v)) {\n v = v.toArrayLike(Buffer)\n } else if (v.toArray) {\n // converts a BN to a Buffer\n v = Buffer.from(v.toArray())\n } else {\n throw new Error('invalid type')\n }\n }\n return v\n}\n\n/**\n * Converts a `Buffer` into a hex `String`\n * @param {Buffer} buf\n * @return {String}\n */\nfunction bufferToHex (buf) {\n buf = toBuffer(buf)\n return '0x' + buf.toString('hex')\n}\n\n/**\n * Creates Keccak hash of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @param {Number} [bits=256] the Keccak width\n * @return {Buffer}\n */\nfunction keccak (a, bits) {\n a = toBuffer(a)\n if (!bits) bits = 256\n\n return createKeccakHash('keccak' + bits).update(a).digest()\n}\n\nfunction padToEven (str) {\n return str.length % 2 ? '0' + str : str\n}\n\nfunction isHexString (str) {\n return typeof str === 'string' && str.match(/^0x[0-9A-Fa-f]*$/)\n}\n\nfunction stripHexPrefix (str) {\n if (typeof str === 'string' && str.startsWith('0x')) {\n return str.slice(2)\n }\n return str\n}\n\nmodule.exports = {\n zeros,\n setLength,\n setLengthRight,\n isHexString,\n stripHexPrefix,\n toBuffer,\n bufferToHex,\n keccak\n}\n","/**\n * @fileoverview\n * - modified davidshimjs/qrcodejs library for use in node.js\n * - Using the 'QRCode for Javascript library'\n * - Fixed dataset of 'QRCode for Javascript library' for support full-spec.\n * - this library has no dependencies.\n *\n * @version 0.9.1 (2016-02-12)\n * @author davidshimjs, papnkukn\n * @see http://www.d-project.com/\n * @see http://jeromeetienne.github.com/jquery-qrcode/\n * @see https://github.com/davidshimjs/qrcodejs\n */\n\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\nfunction QR8bitByte(data) {\n this.mode = QRMode.MODE_8BIT_BYTE;\n this.data = data;\n this.parsedData = [];\n\n // Added to support UTF-8 Characters\n for (var i = 0, l = this.data.length; i < l; i++) {\n var byteArray = [];\n var code = this.data.charCodeAt(i);\n\n if (code > 0x10000) {\n byteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18);\n byteArray[1] = 0x80 | ((code & 0x3F000) >>> 12);\n byteArray[2] = 0x80 | ((code & 0xFC0) >>> 6);\n byteArray[3] = 0x80 | (code & 0x3F);\n } else if (code > 0x800) {\n byteArray[0] = 0xE0 | ((code & 0xF000) >>> 12);\n byteArray[1] = 0x80 | ((code & 0xFC0) >>> 6);\n byteArray[2] = 0x80 | (code & 0x3F);\n } else if (code > 0x80) {\n byteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6);\n byteArray[1] = 0x80 | (code & 0x3F);\n } else {\n byteArray[0] = code;\n }\n\n this.parsedData.push(byteArray);\n }\n\n this.parsedData = Array.prototype.concat.apply([], this.parsedData);\n\n if (this.parsedData.length != this.data.length) {\n this.parsedData.unshift(191);\n this.parsedData.unshift(187);\n this.parsedData.unshift(239);\n }\n}\n\nQR8bitByte.prototype = {\n getLength: function (buffer) {\n return this.parsedData.length;\n },\n write: function (buffer) {\n for (var i = 0, l = this.parsedData.length; i < l; i++) {\n buffer.put(this.parsedData[i], 8);\n }\n }\n};\n\nfunction QRCodeModel(typeNumber, errorCorrectLevel) {\n this.typeNumber = typeNumber;\n this.errorCorrectLevel = errorCorrectLevel;\n this.modules = null;\n this.moduleCount = 0;\n this.dataCache = null;\n this.dataList = [];\n}\n\nQRCodeModel.prototype={addData:function(data){var newData=new QR8bitByte(data);this.dataList.push(newData);this.dataCache=null;},isDark:function(row,col){if(row<0||this.moduleCount<=row||col<0||this.moduleCount<=col){throw new Error(row+\",\"+col);}\nreturn this.modules[row][col];},getModuleCount:function(){return this.moduleCount;},make:function(){this.makeImpl(false,this.getBestMaskPattern());},makeImpl:function(test,maskPattern){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var row=0;row=7){this.setupTypeNumber(test);}\nif(this.dataCache==null){this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList);}\nthis.mapData(this.dataCache,maskPattern);},setupPositionProbePattern:function(row,col){for(var r=-1;r<=7;r++){if(row+r<=-1||this.moduleCount<=row+r)continue;for(var c=-1;c<=7;c++){if(col+c<=-1||this.moduleCount<=col+c)continue;if((0<=r&&r<=6&&(c==0||c==6))||(0<=c&&c<=6&&(r==0||r==6))||(2<=r&&r<=4&&2<=c&&c<=4)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}},getBestMaskPattern:function(){var minLostPoint=0;var pattern=0;for(var i=0;i<8;i++){this.makeImpl(true,i);var lostPoint=QRUtil.getLostPoint(this);if(i==0||minLostPoint>lostPoint){minLostPoint=lostPoint;pattern=i;}}\nreturn pattern;},createMovieClip:function(target_mc,instance_name,depth){var qr_mc=target_mc.createEmptyMovieClip(instance_name,depth);var cs=1;this.make();for(var row=0;row>i)&1)==1);this.modules[Math.floor(i/3)][i%3+this.moduleCount-8-3]=mod;}\nfor(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[i%3+this.moduleCount-8-3][Math.floor(i/3)]=mod;}},setupTypeInfo:function(test,maskPattern){var data=(this.errorCorrectLevel<<3)|maskPattern;var bits=QRUtil.getBCHTypeInfo(data);for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<6){this.modules[i][8]=mod;}else if(i<8){this.modules[i+1][8]=mod;}else{this.modules[this.moduleCount-15+i][8]=mod;}}\nfor(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<8){this.modules[8][this.moduleCount-i-1]=mod;}else if(i<9){this.modules[8][15-i-1+1]=mod;}else{this.modules[8][15-i-1]=mod;}}\nthis.modules[this.moduleCount-8][8]=(!test);},mapData:function(data,maskPattern){var inc=-1;var row=this.moduleCount-1;var bitIndex=7;var byteIndex=0;for(var col=this.moduleCount-1;col>0;col-=2){if(col==6)col--;while(true){for(var c=0;c<2;c++){if(this.modules[row][col-c]==null){var dark=false;if(byteIndex>>bitIndex)&1)==1);}\nvar mask=QRUtil.getMask(maskPattern,row,col-c);if(mask){dark=!dark;}\nthis.modules[row][col-c]=dark;bitIndex--;if(bitIndex==-1){byteIndex++;bitIndex=7;}}}\nrow+=inc;if(row<0||this.moduleCount<=row){row-=inc;inc=-inc;break;}}}}};QRCodeModel.PAD0=0xEC;QRCodeModel.PAD1=0x11;QRCodeModel.createData=function(typeNumber,errorCorrectLevel,dataList){var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectLevel);var buffer=new QRBitBuffer();for(var i=0;itotalDataCount*8){throw new Error(\"code length overflow. (\"\n+buffer.getLengthInBits()\n+\">\"\n+totalDataCount*8\n+\")\");}\nif(buffer.getLengthInBits()+4<=totalDataCount*8){buffer.put(0,4);}\nwhile(buffer.getLengthInBits()%8!=0){buffer.putBit(false);}\nwhile(true){if(buffer.getLengthInBits()>=totalDataCount*8){break;}\nbuffer.put(QRCodeModel.PAD0,8);if(buffer.getLengthInBits()>=totalDataCount*8){break;}\nbuffer.put(QRCodeModel.PAD1,8);}\nreturn QRCodeModel.createBytes(buffer,rsBlocks);};QRCodeModel.createBytes=function(buffer,rsBlocks){var offset=0;var maxDcCount=0;var maxEcCount=0;var dcdata=new Array(rsBlocks.length);var ecdata=new Array(rsBlocks.length);for(var r=0;r=0)?modPoly.get(modIndex):0;}}\nvar totalCodeCount=0;for(var i=0;i=0){d^=(QRUtil.G15<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)));}\nreturn((data<<10)|d)^QRUtil.G15_MASK;},getBCHTypeNumber:function(data){var d=data<<12;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)>=0){d^=(QRUtil.G18<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)));}\nreturn(data<<12)|d;},getBCHDigit:function(data){var digit=0;while(data!=0){digit++;data>>>=1;}\nreturn digit;},getPatternPosition:function(typeNumber){return QRUtil.PATTERN_POSITION_TABLE[typeNumber-1];},getMask:function(maskPattern,i,j){switch(maskPattern){case QRMaskPattern.PATTERN000:return(i+j)%2==0;case QRMaskPattern.PATTERN001:return i%2==0;case QRMaskPattern.PATTERN010:return j%3==0;case QRMaskPattern.PATTERN011:return(i+j)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(i/2)+Math.floor(j/3))%2==0;case QRMaskPattern.PATTERN101:return(i*j)%2+(i*j)%3==0;case QRMaskPattern.PATTERN110:return((i*j)%2+(i*j)%3)%2==0;case QRMaskPattern.PATTERN111:return((i*j)%3+(i+j)%2)%2==0;default:throw new Error(\"bad maskPattern:\"+maskPattern);}},getErrorCorrectPolynomial:function(errorCorrectLength){var a=new QRPolynomial([1],0);for(var i=0;i5){lostPoint+=(3+sameCount-5);}}}\nfor(var row=0;row=256){n-=255;}\nreturn QRMath.EXP_TABLE[n];},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var i=0;i<8;i++){QRMath.EXP_TABLE[i]=1<>>(7-index%8))&1)==1;},put:function(num,length){for(var i=0;i>>(length-i-1))&1)==1);}},getLengthInBits:function(){return this.length;},putBit:function(bit){var bufIndex=Math.floor(this.length/8);if(this.buffer.length<=bufIndex){this.buffer.push(0);}\nif(bit){this.buffer[bufIndex]|=(0x80>>>(this.length%8));}\nthis.length++;}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];\n\n\n/** Constructor */\nfunction QRCode(options) {\n var instance = this;\n\n //Default options\n this.options = {\n padding: 4,\n width: 256,\n height: 256,\n typeNumber: 4,\n color: \"#000000\",\n background: \"#ffffff\",\n ecl: \"M\",\n image:{\n svg:\"\",\n width:0,\n height:0\n }\n };\n\n //In case the options is string\n if (typeof options === 'string') {\n options = {\n content: options\n };\n }\n\n //Merge options\n if (options) {\n for (var i in options) {\n this.options[i] = options[i];\n }\n }\n\n if (typeof this.options.content !== 'string') {\n throw new Error(\"Expected 'content' as string!\");\n }\n\n if (this.options.content.length === 0 /* || this.options.content.length > 7089 */) {\n throw new Error(\"Expected 'content' to be non-empty!\");\n }\n\n if (!(this.options.padding >= 0)) {\n throw new Error(\"Expected 'padding' value to be non-negative!\");\n }\n\n if (!(this.options.width > 0) || !(this.options.height > 0)) {\n throw new Error(\"Expected 'width' or 'height' value to be higher than zero!\");\n }\n\n //Gets the error correction level\n function _getErrorCorrectLevel(ecl) {\n switch (ecl) {\n case \"L\":\n return QRErrorCorrectLevel.L;\n\n case \"M\":\n return QRErrorCorrectLevel.M;\n\n case \"Q\":\n return QRErrorCorrectLevel.Q;\n\n case \"H\":\n return QRErrorCorrectLevel.H;\n\n default:\n throw new Error(\"Unknwon error correction level: \" + ecl);\n }\n }\n\n //Get type number\n function _getTypeNumber(content, ecl) {\n var length = _getUTF8Length(content);\n\n var type = 1;\n var limit = 0;\n for (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) {\n var table = QRCodeLimitLength[i];\n if (!table) {\n throw new Error(\"Content too long: expected \" + limit + \" but got \" + length);\n }\n\n switch (ecl) {\n case \"L\":\n limit = table[0];\n break;\n\n case \"M\":\n limit = table[1];\n break;\n\n case \"Q\":\n limit = table[2];\n break;\n\n case \"H\":\n limit = table[3];\n break;\n\n default:\n throw new Error(\"Unknwon error correction level: \" + ecl);\n }\n\n if (length <= limit) {\n break;\n }\n\n type++;\n }\n\n if (type > QRCodeLimitLength.length) {\n throw new Error(\"Content too long\");\n }\n\n return type;\n }\n\n //Gets text length\n function _getUTF8Length(content) {\n var result = encodeURI(content).toString().replace(/\\%[0-9a-fA-F]{2}/g, 'a');\n return result.length + (result.length != content ? 3 : 0);\n }\n\n //Generate QR Code matrix\n var content = this.options.content;\n var type = _getTypeNumber(content, this.options.ecl);\n var ecl = _getErrorCorrectLevel(this.options.ecl);\n this.qrcode = new QRCodeModel(type, ecl);\n this.qrcode.addData(content);\n this.qrcode.make();\n}\n\n/** Generates QR Code as SVG image */\nQRCode.prototype.svg = function(opt) {\n var options = this.options || { };\n var modules = this.qrcode.modules;\n\n if (typeof opt == \"undefined\") {\n opt = { container: options.container || \"svg\" };\n }\n\n //Apply new lines and indents in SVG?\n var pretty = typeof options.pretty != \"undefined\" ? !!options.pretty : true;\n\n var indent = pretty ? ' ' : '';\n var EOL = pretty ? '\\r\\n' : '';\n var width = options.width;\n var height = options.height;\n var length = modules.length;\n var xsize = width / (length + 2 * options.padding);\n var ysize = height / (length + 2 * options.padding);\n\n //Join (union, merge) rectangles into one shape?\n var join = typeof options.join != \"undefined\" ? !!options.join : false;\n\n //Swap the X and Y modules, pull request #2\n var swap = typeof options.swap != \"undefined\" ? !!options.swap : false;\n\n //Apply declaration in SVG?\n var xmlDeclaration = typeof options.xmlDeclaration != \"undefined\" ? !!options.xmlDeclaration : true;\n\n //Populate with predefined shape instead of \"rect\" elements, thanks to @kkocdko\n var predefined = typeof options.predefined != \"undefined\" ? !!options.predefined : false;\n var defs = predefined ? indent + '' + EOL : '';\n\n //Background rectangle\n var bgrect = indent + '' + EOL;\n\n //Rectangles representing modules\n var modrect = '';\n var pathdata = '';\n\n for (var y = 0; y < length; y++) {\n for (var x = 0; x < length; x++) {\n var module = modules[x][y];\n if (module) {\n\n var px = (x * xsize + options.padding * xsize);\n var py = (y * ysize + options.padding * ysize);\n\n //Some users have had issues with the QR Code, thanks to @danioso for the solution\n if (swap) {\n var t = px;\n px = py;\n py = t;\n }\n\n if (join) {\n //Module as a part of svg path data, thanks to @danioso\n var w = xsize + px\n var h = ysize + py\n\n px = (Number.isInteger(px))? Number(px): px.toFixed(2);\n py = (Number.isInteger(py))? Number(py): py.toFixed(2);\n w = (Number.isInteger(w))? Number(w): w.toFixed(2);\n h = (Number.isInteger(h))? Number(h): h.toFixed(2);\n\n pathdata += ('M' + px + ',' + py + ' V' + h + ' H' + w + ' V' + py + ' H' + px + ' Z ');\n }\n else if (predefined) {\n //Module as a predefined shape, thanks to @kkocdko\n modrect += indent + '' + EOL;\n }\n else {\n //Module as rectangle element\n modrect += indent + '' + EOL;\n }\n }\n }\n }\n\n if (join) {\n modrect = indent + '';\n }\n let imgSvg = \"\";\n if(this.options.image !== undefined && this.options.image.svg){\n const imgWidth = width * this.options.image.width / 100;\n const imgHeight = height * this.options.image.height / 100;\n const imgX = (width/2) - imgWidth/2;\n const imgY = (height/2) - imgHeight/2;\n imgSvg += ``;\n imgSvg += this.options.image.svg + EOL;\n imgSvg += '';\n }\n\n var svg = \"\";\n switch (opt.container) {\n //Wrapped in SVG document\n case \"svg\":\n if (xmlDeclaration) {\n svg += '' + EOL;\n }\n svg += '' + EOL;\n svg += defs + bgrect + modrect;\n svg += imgSvg;\n svg += '';\n break;\n\n //Viewbox for responsive use in a browser, thanks to @danioso\n case \"svg-viewbox\":\n if (xmlDeclaration) {\n svg += '' + EOL;\n }\n svg += '' + EOL;\n svg += defs + bgrect + modrect;\n svg += imgSvg;\n svg += '';\n break;\n\n\n //Wrapped in group element\n case \"g\":\n svg += '' + EOL;\n svg += defs + bgrect + modrect;\n svg += imgSvg;\n svg += '';\n\n break;\n\n //Without a container\n default:\n svg += (defs + bgrect + modrect + imgSvg).replace(/^\\s+/, \"\"); //Clear indents on each line\n break;\n }\n\n return svg;\n};\n\nmodule.exports = QRCode;\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LIB_VERSION = void 0;\nexports.LIB_VERSION = \"3.3.0\";\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n",null,null,null,null,null,"'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n var valuesArray = split.call(String(obj), ',');\n var valuesJoined = '';\n for (var i = 0; i < valuesArray.length; ++i) {\n valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n }\n return [formatter(keyValue) + (isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];\n }\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = generateArrayPrefix === 'comma' && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","import { Chain, chainsType } from './../types'\nimport mainnet from './mainnet.json'\nimport ropsten from './ropsten.json'\nimport rinkeby from './rinkeby.json'\nimport kovan from './kovan.json'\nimport goerli from './goerli.json'\nimport sepolia from './sepolia.json'\n\n/**\n * @hidden\n */\nexport function _getInitializedChains(customChains?: Chain[]) {\n const names: any = {\n '1': 'mainnet',\n '3': 'ropsten',\n '4': 'rinkeby',\n '42': 'kovan',\n '5': 'goerli',\n '11155111': 'sepolia',\n }\n const chains: any = {\n mainnet,\n ropsten,\n rinkeby,\n kovan,\n goerli,\n sepolia,\n }\n if (customChains) {\n for (const chain of customChains) {\n const name = chain.name\n names[chain.chainId.toString()] = name\n chains[name] = chain\n }\n }\n\n chains['names'] = names\n return chains\n}\n\n/**\n * @deprecated this constant will be internalized (removed)\n * on next major version update\n */\nexport const chains: chainsType = _getInitializedChains()\n","import { eipsType } from './../types'\n\nexport const EIPs: eipsType = {\n 1153: require('./1153.json'),\n 1559: require('./1559.json'),\n 2315: require('./2315.json'),\n 2537: require('./2537.json'),\n 2565: require('./2565.json'),\n 2718: require('./2718.json'),\n 2929: require('./2929.json'),\n 2930: require('./2930.json'),\n 3198: require('./3198.json'),\n 3529: require('./3529.json'),\n 3540: require('./3540.json'),\n 3541: require('./3541.json'),\n 3554: require('./3554.json'),\n 3607: require('./3607.json'),\n 3651: require('./3651.json'),\n 3670: require('./3670.json'),\n 3675: require('./3675.json'),\n 3855: require('./3855.json'),\n 3860: require('./3860.json'),\n 4345: require('./4345.json'),\n 4399: require('./4399.json'),\n}\n","export const hardforks = [\n ['chainstart', require('./chainstart.json')],\n ['homestead', require('./homestead.json')],\n ['dao', require('./dao.json')],\n ['tangerineWhistle', require('./tangerineWhistle.json')],\n ['spuriousDragon', require('./spuriousDragon.json')],\n ['byzantium', require('./byzantium.json')],\n ['constantinople', require('./constantinople.json')],\n ['petersburg', require('./petersburg.json')],\n ['istanbul', require('./istanbul.json')],\n ['muirGlacier', require('./muirGlacier.json')],\n ['berlin', require('./berlin.json')],\n ['london', require('./london.json')],\n ['shanghai', require('./shanghai.json')],\n ['arrowGlacier', require('./arrowGlacier.json')],\n ['mergeForkIdTransition', require('./mergeForkIdTransition.json')],\n ['merge', require('./merge.json')],\n]\n","import { EventEmitter } from 'events'\nimport { buf as crc32Buffer } from 'crc-32'\nimport { BN, BNLike, toType, TypeOutput, intToBuffer } from 'ethereumjs-util'\nimport { _getInitializedChains } from './chains'\nimport { hardforks as HARDFORK_CHANGES } from './hardforks'\nimport { EIPs } from './eips'\nimport {\n BootstrapNode,\n Chain as IChain,\n GenesisBlock,\n GenesisState,\n Hardfork as HardforkParams,\n} from './types'\n\nexport enum CustomChain {\n /**\n * Polygon (Matic) Mainnet\n *\n * - [Documentation](https://docs.matic.network/docs/develop/network-details/network)\n */\n PolygonMainnet = 'polygon-mainnet',\n\n /**\n * Polygon (Matic) Mumbai Testnet\n *\n * - [Documentation](https://docs.matic.network/docs/develop/network-details/network)\n */\n PolygonMumbai = 'polygon-mumbai',\n\n /**\n * Arbitrum Rinkeby Testnet\n *\n * - [Documentation](https://developer.offchainlabs.com/docs/public_testnet)\n */\n ArbitrumRinkebyTestnet = 'arbitrum-rinkeby-testnet',\n\n /**\n * xDai EVM sidechain with a native stable token\n *\n * - [Documentation](https://www.xdaichain.com/)\n */\n xDaiChain = 'x-dai-chain',\n\n /**\n * Optimistic Kovan - testnet for Optimism roll-up\n *\n * - [Documentation](https://community.optimism.io/docs/developers/tutorials.html)\n */\n OptimisticKovan = 'optimistic-kovan',\n\n /**\n * Optimistic Ethereum - mainnet for Optimism roll-up\n *\n * - [Documentation](https://community.optimism.io/docs/developers/tutorials.html)\n */\n OptimisticEthereum = 'optimistic-ethereum',\n}\n\nexport enum Chain {\n Mainnet = 1,\n Ropsten = 3,\n Rinkeby = 4,\n Kovan = 42,\n Goerli = 5,\n Sepolia = 11155111,\n}\n\nexport enum Hardfork {\n Chainstart = 'chainstart',\n Homestead = 'homestead',\n Dao = 'dao',\n TangerineWhistle = 'tangerineWhistle',\n SpuriousDragon = 'spuriousDragon',\n Byzantium = 'byzantium',\n Constantinople = 'constantinople',\n Petersburg = 'petersburg',\n Istanbul = 'istanbul',\n MuirGlacier = 'muirGlacier',\n Berlin = 'berlin',\n London = 'london',\n ArrowGlacier = 'arrowGlacier',\n Shanghai = 'shanghai',\n MergeForkIdTransition = 'mergeForkIdTransition',\n Merge = 'merge',\n}\n\nexport enum ConsensusType {\n ProofOfStake = 'pos',\n ProofOfWork = 'pow',\n ProofOfAuthority = 'poa',\n}\n\nexport enum ConsensusAlgorithm {\n Ethash = 'ethash',\n Clique = 'clique',\n Casper = 'casper',\n}\n\ninterface BaseOpts {\n /**\n * String identifier ('byzantium') for hardfork or {@link Hardfork} enum.\n *\n * Default: Hardfork.Istanbul\n */\n hardfork?: string | Hardfork\n /**\n * Limit parameter returns to the given hardforks\n */\n supportedHardforks?: Array\n /**\n * Selected EIPs which can be activated, please use an array for instantiation\n * (e.g. `eips: [ 2537, ]`)\n *\n * Currently supported:\n *\n * - [EIP-2537](https://eips.ethereum.org/EIPS/eip-2537) - BLS12-381 precompiles\n */\n eips?: number[]\n}\n\n/**\n * Options for instantiating a {@link Common} instance.\n */\nexport interface CommonOpts extends BaseOpts {\n /**\n * Chain name ('mainnet'), id (1), or {@link Chain} enum,\n * either from a chain directly supported or a custom chain\n * passed in via {@link CommonOpts.customChains}.\n */\n chain: string | number | Chain | BN | object\n /**\n * Initialize (in addition to the supported chains) with the selected\n * custom chains\n *\n * Usage (directly with the respective chain intialization via the {@link CommonOpts.chain} option):\n *\n * Pattern 1 (without genesis state):\n *\n * ```javascript\n * import myCustomChain1 from '[PATH_TO_MY_CHAINS]/myCustomChain1.json'\n * const common = new Common({ chain: 'myCustomChain1', customChains: [ myCustomChain1 ]})\n * ```\n *\n * Pattern 2 (with genesis state see {@link GenesisState} for format):\n *\n * ```javascript\n * const simpleState = {\n * '0x0...01': '0x100', // For EoA\n * }\n * import myCustomChain1 from '[PATH_TO_MY_CHAINS]/myCustomChain1.json'\n * import chain1GenesisState from '[PATH_TO_GENESIS_STATES]/chain1GenesisState.json'\n * const common = new Common({ chain: 'myCustomChain1', customChains: [ [ myCustomChain1, simpleState ] ]})\n * ```\n *\n * Pattern 3 (with complex genesis state, containing contract accounts and storage).\n * Note that in {@link AccountState} there are two\n * accepted types. This allows to easily insert accounts in the genesis state:\n *\n * A complex genesis state with Contract and EoA states would have the following format:\n *\n * ```javascript\n * const complexState = {\n * '0x0...01': '0x100', // For EoA\n * '0x0...02': ['0x1', '0xRUNTIME_BYTECODE', [[ keyOne, valueOne ], [ keyTwo, valueTwo ]]] // For contracts\n * }\n * import myCustomChain1 from '[PATH_TO_MY_CHAINS]/myCustomChain1.json'\n * const common = new Common({ chain: 'myCustomChain1', customChains: [ [ myCustomChain1, complexState ] ]})\n * ```\n */\n customChains?: IChain[] | [IChain, GenesisState][]\n}\n\n/**\n * Options to be used with the {@link Common.custom} static constructor.\n */\nexport interface CustomCommonOpts extends BaseOpts {\n /**\n * The name (`mainnet`), id (`1`), or {@link Chain} enum of\n * a standard chain used to base the custom chain params on.\n */\n baseChain?: string | number | Chain | BN\n}\n\ninterface hardforkOptions {\n /** optional, only allow supported HFs (default: false) */\n onlySupported?: boolean\n /** optional, only active HFs (default: false) */\n onlyActive?: boolean\n}\n\n/**\n * Common class to access chain and hardfork parameters and to provide\n * a unified and shared view on the network and hardfork state.\n *\n * Use the {@link Common.custom} static constructor for creating simple\n * custom chain {@link Common} objects (more complete custom chain setups\n * can be created via the main constructor and the {@link CommonOpts.customChains} parameter).\n */\nexport default class Common extends EventEmitter {\n readonly DEFAULT_HARDFORK: string | Hardfork\n\n private _chainParams: IChain\n private _hardfork: string | Hardfork\n private _supportedHardforks: Array = []\n private _eips: number[] = []\n private _customChains: IChain[] | [IChain, GenesisState][]\n\n /**\n * Creates a {@link Common} object for a custom chain, based on a standard one.\n *\n * It uses all the {@link Chain} parameters from the {@link baseChain} option except the ones overridden\n * in a provided {@link chainParamsOrName} dictionary. Some usage example:\n *\n * ```javascript\n * Common.custom({chainId: 123})\n * ```\n *\n * There are also selected supported custom chains which can be initialized by using one of the\n * {@link CustomChains} for {@link chainParamsOrName}, e.g.:\n *\n * ```javascript\n * Common.custom(CustomChains.MaticMumbai)\n * ```\n *\n * Note that these supported custom chains only provide some base parameters (usually the chain and\n * network ID and a name) and can only be used for selected use cases (e.g. sending a tx with\n * the `@ethereumjs/tx` library to a Layer-2 chain).\n *\n * @param chainParamsOrName Custom parameter dict (`name` will default to `custom-chain`) or string with name of a supported custom chain\n * @param opts Custom chain options to set the {@link CustomCommonOpts.baseChain}, selected {@link CustomCommonOpts.hardfork} and others\n */\n static custom(\n chainParamsOrName: Partial | CustomChain,\n opts: CustomCommonOpts = {}\n ): Common {\n const baseChain = opts.baseChain ?? 'mainnet'\n const standardChainParams = { ...Common._getChainParams(baseChain) }\n standardChainParams['name'] = 'custom-chain'\n\n if (typeof chainParamsOrName !== 'string') {\n return new Common({\n chain: {\n ...standardChainParams,\n ...chainParamsOrName,\n },\n ...opts,\n })\n } else {\n if (chainParamsOrName === CustomChain.PolygonMainnet) {\n return Common.custom(\n {\n name: CustomChain.PolygonMainnet,\n chainId: 137,\n networkId: 137,\n },\n opts\n )\n }\n if (chainParamsOrName === CustomChain.PolygonMumbai) {\n return Common.custom(\n {\n name: CustomChain.PolygonMumbai,\n chainId: 80001,\n networkId: 80001,\n },\n opts\n )\n }\n if (chainParamsOrName === CustomChain.ArbitrumRinkebyTestnet) {\n return Common.custom(\n {\n name: CustomChain.ArbitrumRinkebyTestnet,\n chainId: 421611,\n networkId: 421611,\n },\n opts\n )\n }\n if (chainParamsOrName === CustomChain.xDaiChain) {\n return Common.custom(\n {\n name: CustomChain.xDaiChain,\n chainId: 100,\n networkId: 100,\n },\n opts\n )\n }\n\n if (chainParamsOrName === CustomChain.OptimisticKovan) {\n return Common.custom(\n {\n name: CustomChain.OptimisticKovan,\n chainId: 69,\n networkId: 69,\n },\n // Optimism has not implemented the London hardfork yet (targeting Q1.22)\n { hardfork: Hardfork.Berlin, ...opts }\n )\n }\n\n if (chainParamsOrName === CustomChain.OptimisticEthereum) {\n return Common.custom(\n {\n name: CustomChain.OptimisticEthereum,\n chainId: 10,\n networkId: 10,\n },\n // Optimism has not implemented the London hardfork yet (targeting Q1.22)\n { hardfork: Hardfork.Berlin, ...opts }\n )\n }\n throw new Error(`Custom chain ${chainParamsOrName} not supported`)\n }\n }\n\n /**\n * Creates a {@link Common} object for a custom chain, based on a standard one. It uses all the `Chain`\n * params from {@link baseChain} except the ones overridden in {@link customChainParams}.\n *\n * @deprecated Use {@link Common.custom} instead\n *\n * @param baseChain The name (`mainnet`) or id (`1`) of a standard chain used to base the custom\n * chain params on.\n * @param customChainParams The custom parameters of the chain.\n * @param hardfork String identifier ('byzantium') for hardfork (optional)\n * @param supportedHardforks Limit parameter returns to the given hardforks (optional)\n */\n static forCustomChain(\n baseChain: string | number | Chain,\n customChainParams: Partial,\n hardfork?: string | Hardfork,\n supportedHardforks?: Array\n ): Common {\n const standardChainParams = Common._getChainParams(baseChain)\n\n return new Common({\n chain: {\n ...standardChainParams,\n ...customChainParams,\n },\n hardfork: hardfork,\n supportedHardforks: supportedHardforks,\n })\n }\n\n /**\n * Static method to determine if a {@link chainId} is supported as a standard chain\n * @param chainId BN id (`1`) of a standard chain\n * @returns boolean\n */\n static isSupportedChainId(chainId: BN): boolean {\n const initializedChains: any = _getInitializedChains()\n return Boolean(initializedChains['names'][chainId.toString()])\n }\n\n private static _getChainParams(\n chain: string | number | Chain | BN,\n customChains?: IChain[]\n ): IChain {\n const initializedChains: any = _getInitializedChains(customChains)\n if (typeof chain === 'number' || BN.isBN(chain)) {\n chain = chain.toString()\n\n if (initializedChains['names'][chain]) {\n const name: string = initializedChains['names'][chain]\n return initializedChains[name]\n }\n\n throw new Error(`Chain with ID ${chain} not supported`)\n }\n\n if (initializedChains[chain]) {\n return initializedChains[chain]\n }\n\n throw new Error(`Chain with name ${chain} not supported`)\n }\n\n /**\n *\n * @constructor\n */\n constructor(opts: CommonOpts) {\n super()\n this._customChains = opts.customChains ?? []\n this._chainParams = this.setChain(opts.chain)\n this.DEFAULT_HARDFORK = this._chainParams.defaultHardfork ?? Hardfork.Istanbul\n for (const hf of this._chainParams.hardforks) {\n if (!hf.forkHash) {\n hf.forkHash = this._calcForkHash(hf.name)\n }\n }\n this._hardfork = this.DEFAULT_HARDFORK\n if (opts.supportedHardforks) {\n this._supportedHardforks = opts.supportedHardforks\n }\n if (opts.hardfork) {\n this.setHardfork(opts.hardfork)\n }\n if (opts.eips) {\n this.setEIPs(opts.eips)\n }\n }\n\n /**\n * Sets the chain\n * @param chain String ('mainnet') or Number (1) chain\n * representation. Or, a Dictionary of chain parameters for a private network.\n * @returns The dictionary with parameters set as chain\n */\n setChain(chain: string | number | Chain | BN | object): any {\n if (typeof chain === 'number' || typeof chain === 'string' || BN.isBN(chain)) {\n // Filter out genesis states if passed in to customChains\n let plainCustomChains: IChain[]\n if (\n this._customChains &&\n this._customChains.length > 0 &&\n Array.isArray(this._customChains[0])\n ) {\n plainCustomChains = (this._customChains as [IChain, GenesisState][]).map((e) => e[0])\n } else {\n plainCustomChains = this._customChains as IChain[]\n }\n this._chainParams = Common._getChainParams(chain, plainCustomChains)\n } else if (typeof chain === 'object') {\n if (this._customChains.length > 0) {\n throw new Error(\n 'Chain must be a string, number, or BN when initialized with customChains passed in'\n )\n }\n const required = ['networkId', 'genesis', 'hardforks', 'bootstrapNodes']\n for (const param of required) {\n if ((chain)[param] === undefined) {\n throw new Error(`Missing required chain parameter: ${param}`)\n }\n }\n this._chainParams = chain as IChain\n } else {\n throw new Error('Wrong input format')\n }\n return this._chainParams\n }\n\n /**\n * Sets the hardfork to get params for\n * @param hardfork String identifier (e.g. 'byzantium') or {@link Hardfork} enum\n */\n setHardfork(hardfork: string | Hardfork): void {\n if (!this._isSupportedHardfork(hardfork)) {\n throw new Error(`Hardfork ${hardfork} not set as supported in supportedHardforks`)\n }\n let existing = false\n for (const hfChanges of HARDFORK_CHANGES) {\n if (hfChanges[0] === hardfork) {\n if (this._hardfork !== hardfork) {\n this._hardfork = hardfork\n this.emit('hardforkChanged', hardfork)\n }\n existing = true\n }\n }\n if (!existing) {\n throw new Error(`Hardfork with name ${hardfork} not supported`)\n }\n }\n\n /**\n * Returns the hardfork based on the block number or an optional\n * total difficulty (Merge HF) provided.\n *\n * An optional TD takes precedence in case the corresponding HF block\n * is set to `null` or otherwise needs to match (if not an error\n * will be thrown).\n *\n * @param blockNumber\n * @param td\n * @returns The name of the HF\n */\n getHardforkByBlockNumber(blockNumber: BNLike, td?: BNLike): string {\n blockNumber = toType(blockNumber, TypeOutput.BN)\n td = toType(td, TypeOutput.BN)\n\n let hardfork = Hardfork.Chainstart\n let minTdHF\n let maxTdHF\n let previousHF\n for (const hf of this.hardforks()) {\n // Skip comparison for not applied HFs\n if (hf.block === null) {\n if (td !== undefined && td !== null && hf.td !== undefined && hf.td !== null) {\n if (td.gte(new BN(hf.td))) {\n return hf.name\n }\n }\n continue\n }\n if (blockNumber.gte(new BN(hf.block))) {\n hardfork = hf.name as Hardfork\n }\n if (td && hf.td) {\n if (td.gte(new BN(hf.td))) {\n minTdHF = hf.name\n } else {\n maxTdHF = previousHF\n }\n }\n previousHF = hf.name\n }\n if (td) {\n let msgAdd = `block number: ${blockNumber} (-> ${hardfork}), `\n if (minTdHF) {\n if (!this.hardforkGteHardfork(hardfork, minTdHF)) {\n const msg = 'HF determined by block number is lower than the minimum total difficulty HF'\n msgAdd += `total difficulty: ${td} (-> ${minTdHF})`\n throw new Error(`${msg}: ${msgAdd}`)\n }\n }\n if (maxTdHF) {\n if (!this.hardforkGteHardfork(maxTdHF, hardfork)) {\n const msg = 'Maximum HF determined by total difficulty is lower than the block number HF'\n msgAdd += `total difficulty: ${td} (-> ${maxTdHF})`\n throw new Error(`${msg}: ${msgAdd}`)\n }\n }\n }\n return hardfork\n }\n\n /**\n * Sets a new hardfork based on the block number or an optional\n * total difficulty (Merge HF) provided.\n *\n * An optional TD takes precedence in case the corresponding HF block\n * is set to `null` or otherwise needs to match (if not an error\n * will be thrown).\n *\n * @param blockNumber\n * @param td\n * @returns The name of the HF set\n */\n setHardforkByBlockNumber(blockNumber: BNLike, td?: BNLike): string {\n const hardfork = this.getHardforkByBlockNumber(blockNumber, td)\n this.setHardfork(hardfork)\n return hardfork\n }\n\n /**\n * Internal helper function to choose between hardfork set and hardfork provided as param\n * @param hardfork Hardfork given to function as a parameter\n * @returns Hardfork chosen to be used\n */\n _chooseHardfork(hardfork?: string | Hardfork | null, onlySupported: boolean = true): string {\n if (!hardfork) {\n hardfork = this._hardfork\n } else if (onlySupported && !this._isSupportedHardfork(hardfork)) {\n throw new Error(`Hardfork ${hardfork} not set as supported in supportedHardforks`)\n }\n return hardfork\n }\n\n /**\n * Internal helper function, returns the params for the given hardfork for the chain set\n * @param hardfork Hardfork name\n * @returns Dictionary with hardfork params\n */\n _getHardfork(hardfork: string | Hardfork): any {\n const hfs = this.hardforks()\n for (const hf of hfs) {\n if (hf['name'] === hardfork) return hf\n }\n throw new Error(`Hardfork ${hardfork} not defined for chain ${this.chainName()}`)\n }\n\n /**\n * Internal helper function to check if a hardfork is set to be supported by the library\n * @param hardfork Hardfork name\n * @returns True if hardfork is supported\n */\n _isSupportedHardfork(hardfork: string | Hardfork | null): boolean {\n if (this._supportedHardforks.length > 0) {\n for (const supportedHf of this._supportedHardforks) {\n if (hardfork === supportedHf) return true\n }\n } else {\n return true\n }\n return false\n }\n\n /**\n * Sets the active EIPs\n * @param eips\n */\n setEIPs(eips: number[] = []) {\n for (const eip of eips) {\n if (!(eip in EIPs)) {\n throw new Error(`${eip} not supported`)\n }\n const minHF = this.gteHardfork(EIPs[eip]['minimumHardfork'])\n if (!minHF) {\n throw new Error(\n `${eip} cannot be activated on hardfork ${this.hardfork()}, minimumHardfork: ${minHF}`\n )\n }\n if (EIPs[eip].requiredEIPs) {\n ;(EIPs[eip].requiredEIPs as number[]).forEach((elem) => {\n if (!(eips.includes(elem) || this.isActivatedEIP(elem))) {\n throw new Error(`${eip} requires EIP ${elem}, but is not included in the EIP list`)\n }\n })\n }\n }\n this._eips = eips\n }\n\n /**\n * Returns a parameter for the current chain setup\n *\n * If the parameter is present in an EIP, the EIP always takes precendence.\n * Otherwise the parameter if taken from the latest applied HF with\n * a change on the respective parameter.\n *\n * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')\n * @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)\n * @returns The value requested or `null` if not found\n */\n param(topic: string, name: string): any {\n // TODO: consider the case that different active EIPs\n // can change the same parameter\n let value = null\n for (const eip of this._eips) {\n value = this.paramByEIP(topic, name, eip)\n if (value !== null) {\n return value\n }\n }\n return this.paramByHardfork(topic, name, this._hardfork)\n }\n\n /**\n * Returns the parameter corresponding to a hardfork\n * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')\n * @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)\n * @param hardfork Hardfork name\n * @returns The value requested or `null` if not found\n */\n paramByHardfork(topic: string, name: string, hardfork: string | Hardfork): any {\n hardfork = this._chooseHardfork(hardfork)\n\n let value = null\n for (const hfChanges of HARDFORK_CHANGES) {\n // EIP-referencing HF file (e.g. berlin.json)\n if ('eips' in hfChanges[1]) {\n const hfEIPs = hfChanges[1]['eips']\n for (const eip of hfEIPs) {\n const valueEIP = this.paramByEIP(topic, name, eip)\n value = valueEIP !== null ? valueEIP : value\n }\n // Paramater-inlining HF file (e.g. istanbul.json)\n } else {\n if (!hfChanges[1][topic]) {\n throw new Error(`Topic ${topic} not defined`)\n }\n if (hfChanges[1][topic][name] !== undefined) {\n value = hfChanges[1][topic][name].v\n }\n }\n if (hfChanges[0] === hardfork) break\n }\n return value\n }\n\n /**\n * Returns a parameter corresponding to an EIP\n * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')\n * @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)\n * @param eip Number of the EIP\n * @returns The value requested or `null` if not found\n */\n paramByEIP(topic: string, name: string, eip: number): any {\n if (!(eip in EIPs)) {\n throw new Error(`${eip} not supported`)\n }\n\n const eipParams = EIPs[eip]\n if (!(topic in eipParams)) {\n throw new Error(`Topic ${topic} not defined`)\n }\n if (eipParams[topic][name] === undefined) {\n return null\n }\n const value = eipParams[topic][name].v\n return value\n }\n\n /**\n * Returns a parameter for the hardfork active on block number\n * @param topic Parameter topic\n * @param name Parameter name\n * @param blockNumber Block number\n */\n paramByBlock(topic: string, name: string, blockNumber: BNLike): any {\n const activeHfs = this.activeHardforks(blockNumber)\n const hardfork = activeHfs[activeHfs.length - 1]['name']\n return this.paramByHardfork(topic, name, hardfork)\n }\n\n /**\n * Checks if an EIP is activated by either being included in the EIPs\n * manually passed in with the {@link CommonOpts.eips} or in a\n * hardfork currently being active\n *\n * Note: this method only works for EIPs being supported\n * by the {@link CommonOpts.eips} constructor option\n * @param eip\n */\n isActivatedEIP(eip: number): boolean {\n if (this.eips().includes(eip)) {\n return true\n }\n for (const hfChanges of HARDFORK_CHANGES) {\n const hf = hfChanges[1]\n if (this.gteHardfork(hf['name']) && 'eips' in hf) {\n if (hf['eips'].includes(eip)) {\n return true\n }\n }\n }\n return false\n }\n\n /**\n * Checks if set or provided hardfork is active on block number\n * @param hardfork Hardfork name or null (for HF set)\n * @param blockNumber\n * @param opts Hardfork options (onlyActive unused)\n * @returns True if HF is active on block number\n */\n hardforkIsActiveOnBlock(\n hardfork: string | Hardfork | null,\n blockNumber: BNLike,\n opts: hardforkOptions = {}\n ): boolean {\n blockNumber = toType(blockNumber, TypeOutput.BN)\n const onlySupported = opts.onlySupported ?? false\n hardfork = this._chooseHardfork(hardfork, onlySupported)\n const hfBlock = this.hardforkBlockBN(hardfork)\n if (hfBlock && blockNumber.gte(hfBlock)) {\n return true\n }\n return false\n }\n\n /**\n * Alias to hardforkIsActiveOnBlock when hardfork is set\n * @param blockNumber\n * @param opts Hardfork options (onlyActive unused)\n * @returns True if HF is active on block number\n */\n activeOnBlock(blockNumber: BNLike, opts?: hardforkOptions): boolean {\n return this.hardforkIsActiveOnBlock(null, blockNumber, opts)\n }\n\n /**\n * Sequence based check if given or set HF1 is greater than or equal HF2\n * @param hardfork1 Hardfork name or null (if set)\n * @param hardfork2 Hardfork name\n * @param opts Hardfork options\n * @returns True if HF1 gte HF2\n */\n hardforkGteHardfork(\n hardfork1: string | Hardfork | null,\n hardfork2: string | Hardfork,\n opts: hardforkOptions = {}\n ): boolean {\n const onlyActive = opts.onlyActive === undefined ? false : opts.onlyActive\n hardfork1 = this._chooseHardfork(hardfork1, opts.onlySupported)\n\n let hardforks\n if (onlyActive) {\n hardforks = this.activeHardforks(null, opts)\n } else {\n hardforks = this.hardforks()\n }\n\n let posHf1 = -1,\n posHf2 = -1\n let index = 0\n for (const hf of hardforks) {\n if (hf['name'] === hardfork1) posHf1 = index\n if (hf['name'] === hardfork2) posHf2 = index\n index += 1\n }\n return posHf1 >= posHf2 && posHf2 !== -1\n }\n\n /**\n * Alias to hardforkGteHardfork when hardfork is set\n * @param hardfork Hardfork name\n * @param opts Hardfork options\n * @returns True if hardfork set is greater than hardfork provided\n */\n gteHardfork(hardfork: string | Hardfork, opts?: hardforkOptions): boolean {\n return this.hardforkGteHardfork(null, hardfork, opts)\n }\n\n /**\n * Checks if given or set hardfork is active on the chain\n * @param hardfork Hardfork name, optional if HF set\n * @param opts Hardfork options (onlyActive unused)\n * @returns True if hardfork is active on the chain\n */\n hardforkIsActiveOnChain(\n hardfork?: string | Hardfork | null,\n opts: hardforkOptions = {}\n ): boolean {\n const onlySupported = opts.onlySupported ?? false\n hardfork = this._chooseHardfork(hardfork, onlySupported)\n for (const hf of this.hardforks()) {\n if (hf['name'] === hardfork && hf['block'] !== null) return true\n }\n return false\n }\n\n /**\n * Returns the active hardfork switches for the current chain\n * @param blockNumber up to block if provided, otherwise for the whole chain\n * @param opts Hardfork options (onlyActive unused)\n * @return Array with hardfork arrays\n */\n activeHardforks(blockNumber?: BNLike | null, opts: hardforkOptions = {}): HardforkParams[] {\n const activeHardforks: HardforkParams[] = []\n const hfs = this.hardforks()\n for (const hf of hfs) {\n if (hf['block'] === null) continue\n if (blockNumber !== undefined && blockNumber !== null && blockNumber < hf['block']) break\n if (opts.onlySupported && !this._isSupportedHardfork(hf['name'])) continue\n\n activeHardforks.push(hf)\n }\n return activeHardforks\n }\n\n /**\n * Returns the latest active hardfork name for chain or block or throws if unavailable\n * @param blockNumber up to block if provided, otherwise for the whole chain\n * @param opts Hardfork options (onlyActive unused)\n * @return Hardfork name\n */\n activeHardfork(blockNumber?: BNLike | null, opts: hardforkOptions = {}): string {\n const activeHardforks = this.activeHardforks(blockNumber, opts)\n if (activeHardforks.length > 0) {\n return activeHardforks[activeHardforks.length - 1]['name']\n } else {\n throw new Error(`No (supported) active hardfork found`)\n }\n }\n\n /**\n * Returns the hardfork change block for hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number or null if unscheduled\n * @deprecated Please use {@link Common.hardforkBlockBN} for large number support\n */\n hardforkBlock(hardfork?: string | Hardfork): number | null {\n const block = this.hardforkBlockBN(hardfork)\n return toType(block, TypeOutput.Number)\n }\n\n /**\n * Returns the hardfork change block for hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number or null if unscheduled\n */\n hardforkBlockBN(hardfork?: string | Hardfork): BN | null {\n hardfork = this._chooseHardfork(hardfork, false)\n const block = this._getHardfork(hardfork)['block']\n if (block === undefined || block === null) {\n return null\n }\n return new BN(block)\n }\n\n /**\n * Returns the hardfork change total difficulty (Merge HF) for hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Total difficulty or null if no set\n */\n hardforkTD(hardfork?: string | Hardfork): BN | null {\n hardfork = this._chooseHardfork(hardfork, false)\n const td = this._getHardfork(hardfork)['td']\n if (td === undefined || td === null) {\n return null\n }\n return new BN(td)\n }\n\n /**\n * True if block number provided is the hardfork (given or set) change block\n * @param blockNumber Number of the block to check\n * @param hardfork Hardfork name, optional if HF set\n * @returns True if blockNumber is HF block\n */\n isHardforkBlock(blockNumber: BNLike, hardfork?: string | Hardfork): boolean {\n blockNumber = toType(blockNumber, TypeOutput.BN)\n hardfork = this._chooseHardfork(hardfork, false)\n const block = this.hardforkBlockBN(hardfork)\n return block ? block.eq(blockNumber) : false\n }\n\n /**\n * Returns the change block for the next hardfork after the hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number or null if not available\n * @deprecated Please use {@link Common.nextHardforkBlockBN} for large number support\n */\n nextHardforkBlock(hardfork?: string | Hardfork): number | null {\n const block = this.nextHardforkBlockBN(hardfork)\n return toType(block, TypeOutput.Number)\n }\n\n /**\n * Returns the change block for the next hardfork after the hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number or null if not available\n */\n nextHardforkBlockBN(hardfork?: string | Hardfork): BN | null {\n hardfork = this._chooseHardfork(hardfork, false)\n const hfBlock = this.hardforkBlockBN(hardfork)\n if (hfBlock === null) {\n return null\n }\n // Next fork block number or null if none available\n // Logic: if accumulator is still null and on the first occurrence of\n // a block greater than the current hfBlock set the accumulator,\n // pass on the accumulator as the final result from this time on\n const nextHfBlock = this.hardforks().reduce((acc: BN | null, hf: HardforkParams) => {\n const block = new BN(hf.block!)\n return block.gt(hfBlock) && acc === null ? block : acc\n }, null)\n return nextHfBlock\n }\n\n /**\n * True if block number provided is the hardfork change block following the hardfork given or set\n * @param blockNumber Number of the block to check\n * @param hardfork Hardfork name, optional if HF set\n * @returns True if blockNumber is HF block\n */\n isNextHardforkBlock(blockNumber: BNLike, hardfork?: string | Hardfork): boolean {\n blockNumber = toType(blockNumber, TypeOutput.BN)\n hardfork = this._chooseHardfork(hardfork, false)\n const nextHardforkBlock = this.nextHardforkBlockBN(hardfork)\n\n return nextHardforkBlock === null ? false : nextHardforkBlock.eq(blockNumber)\n }\n\n /**\n * Internal helper function to calculate a fork hash\n * @param hardfork Hardfork name\n * @returns Fork hash as hex string\n */\n _calcForkHash(hardfork: string | Hardfork) {\n const genesis = Buffer.from(this.genesis().hash.substr(2), 'hex')\n\n let hfBuffer = Buffer.alloc(0)\n let prevBlock = 0\n for (const hf of this.hardforks()) {\n const block = hf.block\n\n // Skip for chainstart (0), not applied HFs (null) and\n // when already applied on same block number HFs\n if (block !== 0 && block !== null && block !== prevBlock) {\n const hfBlockBuffer = Buffer.from(block.toString(16).padStart(16, '0'), 'hex')\n hfBuffer = Buffer.concat([hfBuffer, hfBlockBuffer])\n }\n\n if (hf.name === hardfork) break\n if (block !== null) {\n prevBlock = block\n }\n }\n const inputBuffer = Buffer.concat([genesis, hfBuffer])\n\n // CRC32 delivers result as signed (negative) 32-bit integer,\n // convert to hex string\n const forkhash = intToBuffer(crc32Buffer(inputBuffer) >>> 0).toString('hex')\n return `0x${forkhash}`\n }\n\n /**\n * Returns an eth/64 compliant fork hash (EIP-2124)\n * @param hardfork Hardfork name, optional if HF set\n */\n forkHash(hardfork?: string | Hardfork) {\n hardfork = this._chooseHardfork(hardfork, false)\n const data = this._getHardfork(hardfork)\n if (data['block'] === null && data['td'] === undefined) {\n const msg = 'No fork hash calculation possible for future hardfork'\n throw new Error(msg)\n }\n if (data['forkHash'] !== undefined) {\n return data['forkHash']\n }\n return this._calcForkHash(hardfork)\n }\n\n /**\n *\n * @param forkHash Fork hash as a hex string\n * @returns Array with hardfork data (name, block, forkHash)\n */\n hardforkForForkHash(forkHash: string): any | null {\n const resArray = this.hardforks().filter((hf: any) => {\n return hf.forkHash === forkHash\n })\n return resArray.length >= 1 ? resArray[resArray.length - 1] : null\n }\n\n /**\n * Returns the Genesis parameters of the current chain\n * @returns Genesis dictionary\n */\n genesis(): GenesisBlock {\n return this._chainParams['genesis']\n }\n\n /**\n * Returns the Genesis state of the current chain,\n * all values are provided as hex-prefixed strings.\n */\n genesisState(): GenesisState {\n // Use require statements here in favor of import statements\n // to load json files on demand\n // (high memory usage by large mainnet.json genesis state file)\n switch (this.chainName()) {\n case 'mainnet':\n return require('./genesisStates/mainnet.json')\n case 'ropsten':\n return require('./genesisStates/ropsten.json')\n case 'rinkeby':\n return require('./genesisStates/rinkeby.json')\n case 'kovan':\n return require('./genesisStates/kovan.json')\n case 'goerli':\n return require('./genesisStates/goerli.json')\n case 'sepolia':\n return require('./genesisStates/sepolia.json')\n }\n\n // Custom chains with genesis state provided\n if (\n this._customChains &&\n this._customChains.length > 0 &&\n Array.isArray(this._customChains[0])\n ) {\n for (const chainArrayWithGenesis of this._customChains as [IChain, GenesisState][]) {\n if (chainArrayWithGenesis[0].name === this.chainName()) {\n return chainArrayWithGenesis[1]\n }\n }\n }\n\n return {}\n }\n\n /**\n * Returns the hardforks for current chain\n * @returns {Array} Array with arrays of hardforks\n */\n hardforks(): HardforkParams[] {\n return this._chainParams['hardforks']\n }\n\n /**\n * Returns bootstrap nodes for the current chain\n * @returns {Dictionary} Dict with bootstrap nodes\n */\n bootstrapNodes(): BootstrapNode[] {\n return this._chainParams['bootstrapNodes']\n }\n\n /**\n * Returns DNS networks for the current chain\n * @returns {String[]} Array of DNS ENR urls\n */\n dnsNetworks(): string[] {\n return this._chainParams['dnsNetworks']!\n }\n\n /**\n * Returns the hardfork set\n * @returns Hardfork name\n */\n hardfork(): string | Hardfork {\n return this._hardfork\n }\n\n /**\n * Returns the Id of current chain\n * @returns chain Id\n * @deprecated Please use {@link Common.chainIdBN} for large number support\n */\n chainId(): number {\n return toType(this.chainIdBN(), TypeOutput.Number)\n }\n\n /**\n * Returns the Id of current chain\n * @returns chain Id\n */\n chainIdBN(): BN {\n return new BN(this._chainParams['chainId'])\n }\n\n /**\n * Returns the name of current chain\n * @returns chain name (lower case)\n */\n chainName(): string {\n return this._chainParams['name']\n }\n\n /**\n * Returns the Id of current network\n * @returns network Id\n * @deprecated Please use {@link Common.networkIdBN} for large number support\n */\n networkId(): number {\n return toType(this.networkIdBN(), TypeOutput.Number)\n }\n\n /**\n * Returns the Id of current network\n * @returns network Id\n */\n networkIdBN(): BN {\n return new BN(this._chainParams['networkId'])\n }\n\n /**\n * Returns the active EIPs\n * @returns List of EIPs\n */\n eips(): number[] {\n return this._eips\n }\n\n /**\n * Returns the consensus type of the network\n * Possible values: \"pow\"|\"poa\"|\"pos\"\n *\n * Note: This value can update along a hardfork.\n */\n consensusType(): string | ConsensusType {\n const hardfork = this.hardfork()\n\n let value\n for (const hfChanges of HARDFORK_CHANGES) {\n if ('consensus' in hfChanges[1]) {\n value = hfChanges[1]['consensus']['type']\n }\n if (hfChanges[0] === hardfork) break\n }\n if (value) {\n return value\n }\n return this._chainParams['consensus']!['type']\n }\n\n /**\n * Returns the concrete consensus implementation\n * algorithm or protocol for the network\n * e.g. \"ethash\" for \"pow\" consensus type,\n * \"clique\" for \"poa\" consensus type or\n * \"casper\" for \"pos\" consensus type.\n *\n * Note: This value can update along a hardfork.\n */\n consensusAlgorithm(): string | ConsensusAlgorithm {\n const hardfork = this.hardfork()\n\n let value\n for (const hfChanges of HARDFORK_CHANGES) {\n if ('consensus' in hfChanges[1]) {\n value = hfChanges[1]['consensus']['algorithm']\n }\n if (hfChanges[0] === hardfork) break\n }\n if (value) {\n return value\n }\n return this._chainParams['consensus']!['algorithm'] as ConsensusAlgorithm\n }\n\n /**\n * Returns a dictionary with consensus configuration\n * parameters based on the consensus algorithm\n *\n * Expected returns (parameters must be present in\n * the respective chain json files):\n *\n * ethash: -\n * clique: period, epoch\n * aura: -\n * casper: -\n *\n * Note: This value can update along a hardfork.\n */\n consensusConfig(): { [key: string]: any } {\n const hardfork = this.hardfork()\n\n let value\n for (const hfChanges of HARDFORK_CHANGES) {\n if ('consensus' in hfChanges[1]) {\n // The config parameter is named after the respective consensus algorithm\n value = hfChanges[1]['consensus'][hfChanges[1]['consensus']['algorithm']]\n }\n if (hfChanges[0] === hardfork) break\n }\n if (value) {\n return value\n }\n const consensusAlgorithm = this.consensusAlgorithm()\n return this._chainParams['consensus']![consensusAlgorithm as ConsensusAlgorithm]\n }\n\n /**\n * Returns a deep copy of this {@link Common} instance.\n */\n copy(): Common {\n const copy = Object.assign(Object.create(Object.getPrototypeOf(this)), this)\n copy.removeAllListeners()\n return copy\n }\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","import assert from 'assert'\nimport { BN, rlp } from './externals'\nimport {\n privateKeyVerify,\n publicKeyCreate,\n publicKeyVerify,\n publicKeyConvert,\n} from 'ethereum-cryptography/secp256k1'\nimport { stripHexPrefix } from './internal'\nimport { KECCAK256_RLP, KECCAK256_NULL } from './constants'\nimport { zeros, bufferToHex, toBuffer } from './bytes'\nimport { keccak, keccak256, keccakFromString, rlphash } from './hash'\nimport { assertIsString, assertIsHexString, assertIsBuffer } from './helpers'\nimport { BNLike, BufferLike, bnToUnpaddedBuffer, toType, TypeOutput } from './types'\n\nexport interface AccountData {\n nonce?: BNLike\n balance?: BNLike\n stateRoot?: BufferLike\n codeHash?: BufferLike\n}\n\nexport class Account {\n nonce: BN\n balance: BN\n stateRoot: Buffer\n codeHash: Buffer\n\n static fromAccountData(accountData: AccountData) {\n const { nonce, balance, stateRoot, codeHash } = accountData\n\n return new Account(\n nonce ? new BN(toBuffer(nonce)) : undefined,\n balance ? new BN(toBuffer(balance)) : undefined,\n stateRoot ? toBuffer(stateRoot) : undefined,\n codeHash ? toBuffer(codeHash) : undefined\n )\n }\n\n public static fromRlpSerializedAccount(serialized: Buffer) {\n const values = rlp.decode(serialized)\n\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized account input. Must be array')\n }\n\n return this.fromValuesArray(values)\n }\n\n public static fromValuesArray(values: Buffer[]) {\n const [nonce, balance, stateRoot, codeHash] = values\n\n return new Account(new BN(nonce), new BN(balance), stateRoot, codeHash)\n }\n\n /**\n * This constructor assigns and validates the values.\n * Use the static factory methods to assist in creating an Account from varying data types.\n */\n constructor(\n nonce = new BN(0),\n balance = new BN(0),\n stateRoot = KECCAK256_RLP,\n codeHash = KECCAK256_NULL\n ) {\n this.nonce = nonce\n this.balance = balance\n this.stateRoot = stateRoot\n this.codeHash = codeHash\n\n this._validate()\n }\n\n private _validate() {\n if (this.nonce.lt(new BN(0))) {\n throw new Error('nonce must be greater than zero')\n }\n if (this.balance.lt(new BN(0))) {\n throw new Error('balance must be greater than zero')\n }\n if (this.stateRoot.length !== 32) {\n throw new Error('stateRoot must have a length of 32')\n }\n if (this.codeHash.length !== 32) {\n throw new Error('codeHash must have a length of 32')\n }\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers for the account, in order.\n */\n raw(): Buffer[] {\n return [\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.balance),\n this.stateRoot,\n this.codeHash,\n ]\n }\n\n /**\n * Returns the RLP serialization of the account as a `Buffer`.\n */\n serialize(): Buffer {\n return rlp.encode(this.raw())\n }\n\n /**\n * Returns a `Boolean` determining if the account is a contract.\n */\n isContract(): boolean {\n return !this.codeHash.equals(KECCAK256_NULL)\n }\n\n /**\n * Returns a `Boolean` determining if the account is empty complying to the definition of\n * account emptiness in [EIP-161](https://eips.ethereum.org/EIPS/eip-161):\n * \"An account is considered empty when it has no code and zero nonce and zero balance.\"\n */\n isEmpty(): boolean {\n return this.balance.isZero() && this.nonce.isZero() && this.codeHash.equals(KECCAK256_NULL)\n }\n}\n\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too.\n */\nexport const isValidAddress = function (hexAddress: string): boolean {\n try {\n assertIsString(hexAddress)\n } catch (e: any) {\n return false\n }\n\n return /^0x[0-9a-fA-F]{40}$/.test(hexAddress)\n}\n\n/**\n * Returns a checksummed address.\n *\n * If an eip1191ChainId is provided, the chainId will be included in the checksum calculation. This\n * has the effect of checksummed addresses for one chain having invalid checksums for others.\n * For more details see [EIP-1191](https://eips.ethereum.org/EIPS/eip-1191).\n *\n * WARNING: Checksums with and without the chainId will differ and the EIP-1191 checksum is not\n * backwards compatible to the original widely adopted checksum format standard introduced in\n * [EIP-55](https://eips.ethereum.org/EIPS/eip-55), so this will break in existing applications.\n * Usage of this EIP is therefore discouraged unless you have a very targeted use case.\n */\nexport const toChecksumAddress = function (hexAddress: string, eip1191ChainId?: BNLike): string {\n assertIsHexString(hexAddress)\n const address = stripHexPrefix(hexAddress).toLowerCase()\n\n let prefix = ''\n if (eip1191ChainId) {\n const chainId = toType(eip1191ChainId, TypeOutput.BN)\n prefix = chainId.toString() + '0x'\n }\n\n const hash = keccakFromString(prefix + address).toString('hex')\n let ret = '0x'\n\n for (let i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase()\n } else {\n ret += address[i]\n }\n }\n\n return ret\n}\n\n/**\n * Checks if the address is a valid checksummed address.\n *\n * See toChecksumAddress' documentation for details about the eip1191ChainId parameter.\n */\nexport const isValidChecksumAddress = function (\n hexAddress: string,\n eip1191ChainId?: BNLike\n): boolean {\n return isValidAddress(hexAddress) && toChecksumAddress(hexAddress, eip1191ChainId) === hexAddress\n}\n\n/**\n * Generates an address of a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\nexport const generateAddress = function (from: Buffer, nonce: Buffer): Buffer {\n assertIsBuffer(from)\n assertIsBuffer(nonce)\n const nonceBN = new BN(nonce)\n\n if (nonceBN.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n return rlphash([from, null]).slice(-20)\n }\n\n // Only take the lower 160bits of the hash\n return rlphash([from, Buffer.from(nonceBN.toArray())]).slice(-20)\n}\n\n/**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\nexport const generateAddress2 = function (from: Buffer, salt: Buffer, initCode: Buffer): Buffer {\n assertIsBuffer(from)\n assertIsBuffer(salt)\n assertIsBuffer(initCode)\n\n assert(from.length === 20)\n assert(salt.length === 32)\n\n const address = keccak256(\n Buffer.concat([Buffer.from('ff', 'hex'), from, salt, keccak256(initCode)])\n )\n\n return address.slice(-20)\n}\n\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n */\nexport const isValidPrivate = function (privateKey: Buffer): boolean {\n return privateKeyVerify(privateKey)\n}\n\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexport const isValidPublic = function (publicKey: Buffer, sanitize: boolean = false): boolean {\n assertIsBuffer(publicKey)\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]))\n }\n\n if (!sanitize) {\n return false\n }\n\n return publicKeyVerify(publicKey)\n}\n\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexport const pubToAddress = function (pubKey: Buffer, sanitize: boolean = false): Buffer {\n assertIsBuffer(pubKey)\n if (sanitize && pubKey.length !== 64) {\n pubKey = Buffer.from(publicKeyConvert(pubKey, false).slice(1))\n }\n assert(pubKey.length === 64)\n // Only take the lower 160bits of the hash\n return keccak(pubKey).slice(-20)\n}\nexport const publicToAddress = pubToAddress\n\n/**\n * Returns the ethereum public key of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexport const privateToPublic = function (privateKey: Buffer): Buffer {\n assertIsBuffer(privateKey)\n // skip the type flag and use the X, Y points\n return Buffer.from(publicKeyCreate(privateKey, false)).slice(1)\n}\n\n/**\n * Returns the ethereum address of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexport const privateToAddress = function (privateKey: Buffer): Buffer {\n return publicToAddress(privateToPublic(privateKey))\n}\n\n/**\n * Converts a public key to the Ethereum format.\n */\nexport const importPublic = function (publicKey: Buffer): Buffer {\n assertIsBuffer(publicKey)\n if (publicKey.length !== 64) {\n publicKey = Buffer.from(publicKeyConvert(publicKey, false).slice(1))\n }\n return publicKey\n}\n\n/**\n * Returns the zero address.\n */\nexport const zeroAddress = function (): string {\n const addressLength = 20\n const addr = zeros(addressLength)\n return bufferToHex(addr)\n}\n\n/**\n * Checks if a given address is the zero address.\n */\nexport const isZeroAddress = function (hexAddress: string): boolean {\n try {\n assertIsString(hexAddress)\n } catch (e: any) {\n return false\n }\n\n const zeroAddr = zeroAddress()\n return zeroAddr === hexAddress\n}\n","import assert from 'assert'\nimport { BN } from './externals'\nimport { toBuffer, zeros } from './bytes'\nimport {\n isValidAddress,\n pubToAddress,\n privateToAddress,\n generateAddress,\n generateAddress2,\n} from './account'\n\nexport class Address {\n public readonly buf: Buffer\n\n constructor(buf: Buffer) {\n assert(buf.length === 20, 'Invalid address length')\n this.buf = buf\n }\n\n /**\n * Returns the zero address.\n */\n static zero(): Address {\n return new Address(zeros(20))\n }\n\n /**\n * Returns an Address object from a hex-encoded string.\n * @param str - Hex-encoded address\n */\n static fromString(str: string): Address {\n assert(isValidAddress(str), 'Invalid address')\n return new Address(toBuffer(str))\n }\n\n /**\n * Returns an address for a given public key.\n * @param pubKey The two points of an uncompressed key\n */\n static fromPublicKey(pubKey: Buffer): Address {\n assert(Buffer.isBuffer(pubKey), 'Public key should be Buffer')\n const buf = pubToAddress(pubKey)\n return new Address(buf)\n }\n\n /**\n * Returns an address for a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\n static fromPrivateKey(privateKey: Buffer): Address {\n assert(Buffer.isBuffer(privateKey), 'Private key should be Buffer')\n const buf = privateToAddress(privateKey)\n return new Address(buf)\n }\n\n /**\n * Generates an address for a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\n static generate(from: Address, nonce: BN): Address {\n assert(BN.isBN(nonce))\n return new Address(generateAddress(from.buf, nonce.toArrayLike(Buffer)))\n }\n\n /**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\n static generate2(from: Address, salt: Buffer, initCode: Buffer): Address {\n assert(Buffer.isBuffer(salt))\n assert(Buffer.isBuffer(initCode))\n return new Address(generateAddress2(from.buf, salt, initCode))\n }\n\n /**\n * Is address equal to another.\n */\n equals(address: Address): boolean {\n return this.buf.equals(address.buf)\n }\n\n /**\n * Is address zero.\n */\n isZero(): boolean {\n return this.equals(Address.zero())\n }\n\n /**\n * True if address is in the address range defined\n * by EIP-1352\n */\n isPrecompileOrSystemAddress(): boolean {\n const addressBN = new BN(this.buf)\n const rangeMin = new BN(0)\n const rangeMax = new BN('ffff', 'hex')\n\n return addressBN.gte(rangeMin) && addressBN.lte(rangeMax)\n }\n\n /**\n * Returns hex encoding of address.\n */\n toString(): string {\n return '0x' + this.buf.toString('hex')\n }\n\n /**\n * Returns Buffer representation of address.\n */\n toBuffer(): Buffer {\n return Buffer.from(this.buf)\n }\n}\n","import { BN } from './externals'\nimport { stripHexPrefix, padToEven, isHexString, isHexPrefixed } from './internal'\nimport {\n PrefixedHexString,\n TransformableToArray,\n TransformableToBuffer,\n NestedBufferArray,\n NestedUint8Array,\n} from './types'\nimport { assertIsBuffer, assertIsArray, assertIsHexString } from './helpers'\n\n/**\n * Converts a `Number` into a hex `String`\n * @param {Number} i\n * @return {String}\n */\nexport const intToHex = function (i: number) {\n if (!Number.isSafeInteger(i) || i < 0) {\n throw new Error(`Received an invalid integer type: ${i}`)\n }\n return `0x${i.toString(16)}`\n}\n\n/**\n * Converts an `Number` to a `Buffer`\n * @param {Number} i\n * @return {Buffer}\n */\nexport const intToBuffer = function (i: number) {\n const hex = intToHex(i)\n return Buffer.from(padToEven(hex.slice(2)), 'hex')\n}\n\n/**\n * Returns a buffer filled with 0s.\n * @param bytes the number of bytes the buffer should be\n */\nexport const zeros = function (bytes: number): Buffer {\n return Buffer.allocUnsafe(bytes).fill(0)\n}\n\n/**\n * Pads a `Buffer` with zeros till it has `length` bytes.\n * Truncates the beginning or end of input if its length exceeds `length`.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @param right whether to start padding form the left or right\n * @return (Buffer)\n */\nconst setLength = function (msg: Buffer, length: number, right: boolean) {\n const buf = zeros(length)\n if (right) {\n if (msg.length < length) {\n msg.copy(buf)\n return buf\n }\n return msg.slice(0, length)\n } else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length)\n return buf\n }\n return msg.slice(-length)\n }\n}\n\n/**\n * Left Pads a `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexport const setLengthLeft = function (msg: Buffer, length: number) {\n assertIsBuffer(msg)\n return setLength(msg, length, false)\n}\n\n/**\n * Right Pads a `Buffer` with trailing zeros till it has `length` bytes.\n * it truncates the end if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexport const setLengthRight = function (msg: Buffer, length: number) {\n assertIsBuffer(msg)\n return setLength(msg, length, true)\n}\n\n/**\n * Trims leading zeros from a `Buffer`, `String` or `Number[]`.\n * @param a (Buffer|Array|String)\n * @return (Buffer|Array|String)\n */\nconst stripZeros = function (a: any): Buffer | number[] | string {\n let first = a[0]\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1)\n first = a[0]\n }\n return a\n}\n\n/**\n * Trims leading zeros from a `Buffer`.\n * @param a (Buffer)\n * @return (Buffer)\n */\nexport const unpadBuffer = function (a: Buffer): Buffer {\n assertIsBuffer(a)\n return stripZeros(a) as Buffer\n}\n\n/**\n * Trims leading zeros from an `Array` (of numbers).\n * @param a (number[])\n * @return (number[])\n */\nexport const unpadArray = function (a: number[]): number[] {\n assertIsArray(a)\n return stripZeros(a) as number[]\n}\n\n/**\n * Trims leading zeros from a hex-prefixed `String`.\n * @param a (String)\n * @return (String)\n */\nexport const unpadHexString = function (a: string): string {\n assertIsHexString(a)\n a = stripHexPrefix(a)\n return stripZeros(a) as string\n}\n\nexport type ToBufferInputTypes =\n | PrefixedHexString\n | number\n | BN\n | Buffer\n | Uint8Array\n | number[]\n | TransformableToArray\n | TransformableToBuffer\n | null\n | undefined\n\n/**\n * Attempts to turn a value into a `Buffer`.\n * Inputs supported: `Buffer`, `String` (hex-prefixed), `Number`, null/undefined, `BN` and other objects\n * with a `toArray()` or `toBuffer()` method.\n * @param v the value\n */\nexport const toBuffer = function (v: ToBufferInputTypes): Buffer {\n if (v === null || v === undefined) {\n return Buffer.allocUnsafe(0)\n }\n\n if (Buffer.isBuffer(v)) {\n return Buffer.from(v)\n }\n\n if (Array.isArray(v) || v instanceof Uint8Array) {\n return Buffer.from(v as Uint8Array)\n }\n\n if (typeof v === 'string') {\n if (!isHexString(v)) {\n throw new Error(\n `Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: ${v}`\n )\n }\n return Buffer.from(padToEven(stripHexPrefix(v)), 'hex')\n }\n\n if (typeof v === 'number') {\n return intToBuffer(v)\n }\n\n if (BN.isBN(v)) {\n if (v.isNeg()) {\n throw new Error(`Cannot convert negative BN to buffer. Given: ${v}`)\n }\n return v.toArrayLike(Buffer)\n }\n\n if (v.toArray) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray())\n }\n\n if (v.toBuffer) {\n return Buffer.from(v.toBuffer())\n }\n\n throw new Error('invalid type')\n}\n\n/**\n * Converts a `Buffer` to a `Number`.\n * @param buf `Buffer` object to convert\n * @throws If the input number exceeds 53 bits.\n */\nexport const bufferToInt = function (buf: Buffer): number {\n return new BN(toBuffer(buf)).toNumber()\n}\n\n/**\n * Converts a `Buffer` into a `0x`-prefixed hex `String`.\n * @param buf `Buffer` object to convert\n */\nexport const bufferToHex = function (buf: Buffer): string {\n buf = toBuffer(buf)\n return '0x' + buf.toString('hex')\n}\n\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param num Signed integer value\n */\nexport const fromSigned = function (num: Buffer): BN {\n return new BN(num).fromTwos(256)\n}\n\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param num\n */\nexport const toUnsigned = function (num: BN): Buffer {\n return Buffer.from(num.toTwos(256).toArray())\n}\n\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\".\n */\nexport const addHexPrefix = function (str: string): string {\n if (typeof str !== 'string') {\n return str\n }\n\n return isHexPrefixed(str) ? str : '0x' + str\n}\n\n/**\n * Returns the utf8 string representation from a hex string.\n *\n * Examples:\n *\n * Input 1: '657468657265756d000000000000000000000000000000000000000000000000'\n * Input 2: '657468657265756d'\n * Input 3: '000000000000000000000000000000000000000000000000657468657265756d'\n *\n * Output (all 3 input variants): 'ethereum'\n *\n * Note that this method is not intended to be used with hex strings\n * representing quantities in both big endian or little endian notation.\n *\n * @param string Hex string, should be `0x` prefixed\n * @return Utf8 string\n */\nexport const toUtf8 = function (hex: string): string {\n const zerosRegexp = /^(00)+|(00)+$/g\n hex = stripHexPrefix(hex)\n if (hex.length % 2 !== 0) {\n throw new Error('Invalid non-even hex string input for toUtf8() provided')\n }\n const bufferVal = Buffer.from(hex.replace(zerosRegexp, ''), 'hex')\n\n return bufferVal.toString('utf8')\n}\n\n/**\n * Converts a `Buffer` or `Array` to JSON.\n * @param ba (Buffer|Array)\n * @return (Array|String|null)\n */\nexport const baToJSON = function (ba: any): any {\n if (Buffer.isBuffer(ba)) {\n return `0x${ba.toString('hex')}`\n } else if (ba instanceof Array) {\n const array = []\n for (let i = 0; i < ba.length; i++) {\n array.push(baToJSON(ba[i]))\n }\n return array\n }\n}\n\n/**\n * Checks provided Buffers for leading zeroes and throws if found.\n *\n * Examples:\n *\n * Valid values: 0x1, 0x, 0x01, 0x1234\n * Invalid values: 0x0, 0x00, 0x001, 0x0001\n *\n * Note: This method is useful for validating that RLP encoded integers comply with the rule that all\n * integer values encoded to RLP must be in the most compact form and contain no leading zero bytes\n * @param values An object containing string keys and Buffer values\n * @throws if any provided value is found to have leading zero bytes\n */\nexport const validateNoLeadingZeroes = function (values: { [key: string]: Buffer | undefined }) {\n for (const [k, v] of Object.entries(values)) {\n if (v !== undefined && v.length > 0 && v[0] === 0) {\n throw new Error(`${k} cannot have leading zeroes, received: ${v.toString('hex')}`)\n }\n }\n}\n\n/**\n * Converts a {@link Uint8Array} or {@link NestedUint8Array} to {@link Buffer} or {@link NestedBufferArray}\n */\nexport function arrToBufArr(arr: Uint8Array): Buffer\nexport function arrToBufArr(arr: NestedUint8Array): NestedBufferArray\nexport function arrToBufArr(arr: Uint8Array | NestedUint8Array): Buffer | NestedBufferArray\nexport function arrToBufArr(arr: Uint8Array | NestedUint8Array): Buffer | NestedBufferArray {\n if (!Array.isArray(arr)) {\n return Buffer.from(arr)\n }\n return arr.map((a) => arrToBufArr(a))\n}\n\n/**\n * Converts a {@link Buffer} or {@link NestedBufferArray} to {@link Uint8Array} or {@link NestedUint8Array}\n */\nexport function bufArrToArr(arr: Buffer): Uint8Array\nexport function bufArrToArr(arr: NestedBufferArray): NestedUint8Array\nexport function bufArrToArr(arr: Buffer | NestedBufferArray): Uint8Array | NestedUint8Array\nexport function bufArrToArr(arr: Buffer | NestedBufferArray): Uint8Array | NestedUint8Array {\n if (!Array.isArray(arr)) {\n return Uint8Array.from(arr ?? [])\n }\n return arr.map((a) => bufArrToArr(a))\n}\n","import { Buffer } from 'buffer'\nimport { BN } from './externals'\n\n/**\n * 2^64-1\n */\nexport const MAX_UINT64 = new BN('ffffffffffffffff', 16)\n\n/**\n * The max integer that the evm can handle (2^256-1)\n */\nexport const MAX_INTEGER = new BN(\n 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',\n 16\n)\n\n/**\n * 2^256\n */\nexport const TWO_POW256 = new BN(\n '10000000000000000000000000000000000000000000000000000000000000000',\n 16\n)\n\n/**\n * Keccak-256 hash of null\n */\nexport const KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'\n\n/**\n * Keccak-256 hash of null\n */\nexport const KECCAK256_NULL = Buffer.from(KECCAK256_NULL_S, 'hex')\n\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexport const KECCAK256_RLP_ARRAY_S =\n '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'\n\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexport const KECCAK256_RLP_ARRAY = Buffer.from(KECCAK256_RLP_ARRAY_S, 'hex')\n\n/**\n * Keccak-256 hash of the RLP of null\n */\nexport const KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'\n\n/**\n * Keccak-256 hash of the RLP of null\n */\nexport const KECCAK256_RLP = Buffer.from(KECCAK256_RLP_S, 'hex')\n","/**\n * Re-exports commonly used modules:\n * * Exports [`BN`](https://github.com/indutny/bn.js), [`rlp`](https://github.com/ethereumjs/rlp).\n * @packageDocumentation\n */\n\nimport BN from 'bn.js'\nimport * as rlp from 'rlp'\n\n/**\n * [`BN`](https://github.com/indutny/bn.js)\n */\nexport { BN }\n\n/**\n * [`rlp`](https://github.com/ethereumjs/rlp)\n */\nexport { rlp }\n","import { keccak224, keccak384, keccak256 as k256, keccak512 } from 'ethereum-cryptography/keccak'\nconst createHash = require('create-hash')\nimport { rlp } from './externals'\nimport { toBuffer, setLengthLeft } from './bytes'\nimport { assertIsString, assertIsBuffer, assertIsArray, assertIsHexString } from './helpers'\n\n/**\n * Creates Keccak hash of a Buffer input\n * @param a The input data (Buffer)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccak = function (a: Buffer, bits: number = 256): Buffer {\n assertIsBuffer(a)\n switch (bits) {\n case 224: {\n return keccak224(a)\n }\n case 256: {\n return k256(a)\n }\n case 384: {\n return keccak384(a)\n }\n case 512: {\n return keccak512(a)\n }\n default: {\n throw new Error(`Invald algorithm: keccak${bits}`)\n }\n }\n}\n\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256).\n * @param a The input data (Buffer)\n */\nexport const keccak256 = function (a: Buffer): Buffer {\n return keccak(a)\n}\n\n/**\n * Creates Keccak hash of a utf-8 string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromString = function (a: string, bits: number = 256) {\n assertIsString(a)\n const buf = Buffer.from(a, 'utf8')\n return keccak(buf, bits)\n}\n\n/**\n * Creates Keccak hash of an 0x-prefixed string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromHexString = function (a: string, bits: number = 256) {\n assertIsHexString(a)\n return keccak(toBuffer(a), bits)\n}\n\n/**\n * Creates Keccak hash of a number array input\n * @param a The input data (number[])\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromArray = function (a: number[], bits: number = 256) {\n assertIsArray(a)\n return keccak(toBuffer(a), bits)\n}\n\n/**\n * Creates SHA256 hash of an input.\n * @param a The input data (Buffer|Array|String)\n */\nconst _sha256 = function (a: any): Buffer {\n a = toBuffer(a)\n return createHash('sha256').update(a).digest()\n}\n\n/**\n * Creates SHA256 hash of a Buffer input.\n * @param a The input data (Buffer)\n */\nexport const sha256 = function (a: Buffer): Buffer {\n assertIsBuffer(a)\n return _sha256(a)\n}\n\n/**\n * Creates SHA256 hash of a string input.\n * @param a The input data (string)\n */\nexport const sha256FromString = function (a: string): Buffer {\n assertIsString(a)\n return _sha256(a)\n}\n\n/**\n * Creates SHA256 hash of a number[] input.\n * @param a The input data (number[])\n */\nexport const sha256FromArray = function (a: number[]): Buffer {\n assertIsArray(a)\n return _sha256(a)\n}\n\n/**\n * Creates RIPEMD160 hash of the input.\n * @param a The input data (Buffer|Array|String|Number)\n * @param padded Whether it should be padded to 256 bits or not\n */\nconst _ripemd160 = function (a: any, padded: boolean): Buffer {\n a = toBuffer(a)\n const hash = createHash('rmd160').update(a).digest()\n if (padded === true) {\n return setLengthLeft(hash, 32)\n } else {\n return hash\n }\n}\n\n/**\n * Creates RIPEMD160 hash of a Buffer input.\n * @param a The input data (Buffer)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160 = function (a: Buffer, padded: boolean): Buffer {\n assertIsBuffer(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates RIPEMD160 hash of a string input.\n * @param a The input data (String)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160FromString = function (a: string, padded: boolean): Buffer {\n assertIsString(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates RIPEMD160 hash of a number[] input.\n * @param a The input data (number[])\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160FromArray = function (a: number[], padded: boolean): Buffer {\n assertIsArray(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input.\n * @param a The input data\n */\nexport const rlphash = function (a: rlp.Input): Buffer {\n return keccak(rlp.encode(a))\n}\n","import { isHexString } from './internal'\n\n/**\n * Throws if a string is not hex prefixed\n * @param {string} input string to check hex prefix of\n */\nexport const assertIsHexString = function (input: string): void {\n if (!isHexString(input)) {\n const msg = `This method only supports 0x-prefixed hex strings but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not a buffer\n * @param {Buffer} input value to check\n */\nexport const assertIsBuffer = function (input: Buffer): void {\n if (!Buffer.isBuffer(input)) {\n const msg = `This method only supports Buffer but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not an array\n * @param {number[]} input value to check\n */\nexport const assertIsArray = function (input: number[]): void {\n if (!Array.isArray(input)) {\n const msg = `This method only supports number arrays but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not a string\n * @param {string} input value to check\n */\nexport const assertIsString = function (input: string): void {\n if (typeof input !== 'string') {\n const msg = `This method only supports strings but input was: ${input}`\n throw new Error(msg)\n }\n}\n","/**\n * Constants\n */\nexport * from './constants'\n\n/**\n * Account class and helper functions\n */\nexport * from './account'\n\n/**\n * Address type\n */\nexport * from './address'\n\n/**\n * Hash functions\n */\nexport * from './hash'\n\n/**\n * ECDSA signature\n */\nexport * from './signature'\n\n/**\n * Utilities for manipulating Buffers, byte arrays, etc.\n */\nexport * from './bytes'\n\n/**\n * Function for definining properties on an object\n */\nexport * from './object'\n\n/**\n * External exports (BN, rlp)\n */\nexport * from './externals'\n\n/**\n * Helpful TypeScript types\n */\nexport * from './types'\n\n/**\n * Export ethjs-util methods\n */\nexport {\n isHexPrefixed,\n stripHexPrefix,\n padToEven,\n getBinarySize,\n arrayContainsArray,\n toAscii,\n fromUtf8,\n fromAscii,\n getKeys,\n isHexString,\n} from './internal'\n","/*\nThe MIT License\n\nCopyright (c) 2016 Nick Dodson. nickdodson.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE\n */\n\n/**\n * Returns a `Boolean` on whether or not the a `String` starts with '0x'\n * @param str the string input value\n * @return a boolean if it is or is not hex prefixed\n * @throws if the str input is not a string\n */\nexport function isHexPrefixed(str: string): boolean {\n if (typeof str !== 'string') {\n throw new Error(`[isHexPrefixed] input must be type 'string', received type ${typeof str}`)\n }\n\n return str[0] === '0' && str[1] === 'x'\n}\n\n/**\n * Removes '0x' from a given `String` if present\n * @param str the string value\n * @returns the string without 0x prefix\n */\nexport const stripHexPrefix = (str: string): string => {\n if (typeof str !== 'string')\n throw new Error(`[stripHexPrefix] input must be type 'string', received ${typeof str}`)\n\n return isHexPrefixed(str) ? str.slice(2) : str\n}\n\n/**\n * Pads a `String` to have an even length\n * @param value\n * @return output\n */\nexport function padToEven(value: string): string {\n let a = value\n\n if (typeof a !== 'string') {\n throw new Error(`[padToEven] value must be type 'string', received ${typeof a}`)\n }\n\n if (a.length % 2) a = `0${a}`\n\n return a\n}\n\n/**\n * Get the binary size of a string\n * @param str\n * @returns the number of bytes contained within the string\n */\nexport function getBinarySize(str: string) {\n if (typeof str !== 'string') {\n throw new Error(`[getBinarySize] method requires input type 'string', recieved ${typeof str}`)\n }\n\n return Buffer.byteLength(str, 'utf8')\n}\n\n/**\n * Returns TRUE if the first specified array contains all elements\n * from the second one. FALSE otherwise.\n *\n * @param superset\n * @param subset\n *\n */\nexport function arrayContainsArray(\n superset: unknown[],\n subset: unknown[],\n some?: boolean\n): boolean {\n if (Array.isArray(superset) !== true) {\n throw new Error(\n `[arrayContainsArray] method requires input 'superset' to be an array, got type '${typeof superset}'`\n )\n }\n if (Array.isArray(subset) !== true) {\n throw new Error(\n `[arrayContainsArray] method requires input 'subset' to be an array, got type '${typeof subset}'`\n )\n }\n\n return subset[some ? 'some' : 'every']((value) => superset.indexOf(value) >= 0)\n}\n\n/**\n * Should be called to get ascii from its hex representation\n *\n * @param string in hex\n * @returns ascii string representation of hex value\n */\nexport function toAscii(hex: string): string {\n let str = ''\n let i = 0\n const l = hex.length\n\n if (hex.substring(0, 2) === '0x') i = 2\n\n for (; i < l; i += 2) {\n const code = parseInt(hex.substr(i, 2), 16)\n str += String.fromCharCode(code)\n }\n\n return str\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of utf8 string\n *\n * @param string\n * @param optional padding\n * @returns hex representation of input string\n */\nexport function fromUtf8(stringValue: string) {\n const str = Buffer.from(stringValue, 'utf8')\n\n return `0x${padToEven(str.toString('hex')).replace(/^0+|0+$/g, '')}`\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of ascii string\n *\n * @param string\n * @param optional padding\n * @returns hex representation of input string\n */\nexport function fromAscii(stringValue: string) {\n let hex = ''\n for (let i = 0; i < stringValue.length; i++) {\n const code = stringValue.charCodeAt(i)\n const n = code.toString(16)\n hex += n.length < 2 ? `0${n}` : n\n }\n\n return `0x${hex}`\n}\n\n/**\n * Returns the keys from an array of objects.\n * @example\n * ```js\n * getKeys([{a: '1', b: '2'}, {a: '3', b: '4'}], 'a') => ['1', '3']\n *````\n * @param params\n * @param key\n * @param allowEmpty\n * @returns output just a simple array of output keys\n */\nexport function getKeys(params: Record[], key: string, allowEmpty?: boolean) {\n if (!Array.isArray(params)) {\n throw new Error(`[getKeys] method expects input 'params' to be an array, got ${typeof params}`)\n }\n if (typeof key !== 'string') {\n throw new Error(\n `[getKeys] method expects input 'key' to be type 'string', got ${typeof params}`\n )\n }\n\n const result = []\n\n for (let i = 0; i < params.length; i++) {\n let value = params[i][key]\n if (allowEmpty && !value) {\n value = ''\n } else if (typeof value !== 'string') {\n throw new Error(`invalid abi - expected type 'string', received ${typeof value}`)\n }\n result.push(value)\n }\n\n return result\n}\n\n/**\n * Is the string a hex string.\n *\n * @param value\n * @param length\n * @returns output the string is a hex string\n */\nexport function isHexString(value: string, length?: number): boolean {\n if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) return false\n\n if (length && value.length !== 2 + 2 * length) return false\n\n return true\n}\n","import assert from 'assert'\nimport { stripHexPrefix } from './internal'\nimport { rlp } from './externals'\nimport { toBuffer, baToJSON, unpadBuffer } from './bytes'\n\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param self the `Object` to define properties on\n * @param fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param data data to be validated against the definitions\n * @deprecated\n */\nexport const defineProperties = function (self: any, fields: any, data?: any) {\n self.raw = []\n self._fields = []\n\n // attach the `toJSON`\n self.toJSON = function (label: boolean = false) {\n if (label) {\n type Dict = { [key: string]: string }\n const obj: Dict = {}\n self._fields.forEach((field: string) => {\n obj[field] = `0x${self[field].toString('hex')}`\n })\n return obj\n }\n return baToJSON(self.raw)\n }\n\n self.serialize = function serialize() {\n return rlp.encode(self.raw)\n }\n\n fields.forEach((field: any, i: number) => {\n self._fields.push(field.name)\n function getter() {\n return self.raw[i]\n }\n function setter(v: any) {\n v = toBuffer(v)\n\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0)\n }\n\n if (field.allowLess && field.length) {\n v = unpadBuffer(v)\n assert(\n field.length >= v.length,\n `The field ${field.name} must not have more ${field.length} bytes`\n )\n } else if (!(field.allowZero && v.length === 0) && field.length) {\n assert(\n field.length === v.length,\n `The field ${field.name} must have byte length of ${field.length}`\n )\n }\n\n self.raw[i] = v\n }\n\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter,\n })\n\n if (field.default) {\n self[field.name] = field.default\n }\n\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter,\n })\n }\n })\n\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(stripHexPrefix(data), 'hex')\n }\n\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data)\n }\n\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data')\n }\n\n // make sure all the items are buffers\n data.forEach((d, i) => {\n self[self._fields[i]] = toBuffer(d)\n })\n } else if (typeof data === 'object') {\n const keys = Object.keys(data)\n fields.forEach((field: any) => {\n if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]\n if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]\n })\n } else {\n throw new Error('invalid data')\n }\n }\n}\n","import { ecdsaSign, ecdsaRecover, publicKeyConvert } from 'ethereum-cryptography/secp256k1'\nimport { BN } from './externals'\nimport { toBuffer, setLengthLeft, bufferToHex, bufferToInt } from './bytes'\nimport { keccak } from './hash'\nimport { assertIsBuffer } from './helpers'\nimport { BNLike, toType, TypeOutput } from './types'\n\nexport interface ECDSASignature {\n v: number\n r: Buffer\n s: Buffer\n}\n\nexport interface ECDSASignatureBuffer {\n v: Buffer\n r: Buffer\n s: Buffer\n}\n\n/**\n * Returns the ECDSA signature of a message hash.\n */\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId?: number): ECDSASignature\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId: BNLike): ECDSASignatureBuffer\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId: any): any {\n const { signature, recid: recovery } = ecdsaSign(msgHash, privateKey)\n\n const r = Buffer.from(signature.slice(0, 32))\n const s = Buffer.from(signature.slice(32, 64))\n\n if (!chainId || typeof chainId === 'number') {\n // return legacy type ECDSASignature (deprecated in favor of ECDSASignatureBuffer to handle large chainIds)\n if (chainId && !Number.isSafeInteger(chainId)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)'\n )\n }\n const v = chainId ? recovery + (chainId * 2 + 35) : recovery + 27\n return { r, s, v }\n }\n\n const chainIdBN = toType(chainId as BNLike, TypeOutput.BN)\n const v = chainIdBN.muln(2).addn(35).addn(recovery).toArrayLike(Buffer)\n return { r, s, v }\n}\n\nfunction calculateSigRecovery(v: BNLike, chainId?: BNLike): BN {\n const vBN = toType(v, TypeOutput.BN)\n\n if (vBN.eqn(0) || vBN.eqn(1)) return toType(v, TypeOutput.BN)\n\n if (!chainId) {\n return vBN.subn(27)\n }\n const chainIdBN = toType(chainId, TypeOutput.BN)\n return vBN.sub(chainIdBN.muln(2).addn(35))\n}\n\nfunction isValidSigRecovery(recovery: number | BN): boolean {\n const rec = new BN(recovery)\n return rec.eqn(0) || rec.eqn(1)\n}\n\n/**\n * ECDSA public key recovery from signature.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Recovered public key\n */\nexport const ecrecover = function (\n msgHash: Buffer,\n v: BNLike,\n r: Buffer,\n s: Buffer,\n chainId?: BNLike\n): Buffer {\n const signature = Buffer.concat([setLengthLeft(r, 32), setLengthLeft(s, 32)], 64)\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n const senderPubKey = ecdsaRecover(signature, recovery.toNumber(), msgHash)\n return Buffer.from(publicKeyConvert(senderPubKey, false).slice(1))\n}\n\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Signature\n */\nexport const toRpcSig = function (v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike): string {\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n return bufferToHex(Buffer.concat([setLengthLeft(r, 32), setLengthLeft(s, 32), toBuffer(v)]))\n}\n\n/**\n * Convert signature parameters into the format of Compact Signature Representation (EIP-2098).\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Signature\n */\nexport const toCompactSig = function (v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike): string {\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n\n const vn = toType(v, TypeOutput.Number)\n let ss = s\n if ((vn > 28 && vn % 2 === 1) || vn === 1 || vn === 28) {\n ss = Buffer.from(s)\n ss[0] |= 0x80\n }\n\n return bufferToHex(Buffer.concat([setLengthLeft(r, 32), setLengthLeft(ss, 32)]))\n}\n\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n * NOTE: After EIP1559, `v` could be `0` or `1` but this function assumes\n * it's a signed message (EIP-191 or EIP-712) adding `27` at the end. Remove if needed.\n */\nexport const fromRpcSig = function (sig: string): ECDSASignature {\n const buf: Buffer = toBuffer(sig)\n\n let r: Buffer\n let s: Buffer\n let v: number\n if (buf.length >= 65) {\n r = buf.slice(0, 32)\n s = buf.slice(32, 64)\n v = bufferToInt(buf.slice(64))\n } else if (buf.length === 64) {\n // Compact Signature Representation (https://eips.ethereum.org/EIPS/eip-2098)\n r = buf.slice(0, 32)\n s = buf.slice(32, 64)\n v = bufferToInt(buf.slice(32, 33)) >> 7\n s[0] &= 0x7f\n } else {\n throw new Error('Invalid signature length')\n }\n\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27\n }\n\n return {\n v,\n r,\n s,\n }\n}\n\n/**\n * Validate a ECDSA signature.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @param homesteadOrLater Indicates whether this is being used on either the homestead hardfork or a later one\n */\nexport const isValidSignature = function (\n v: BNLike,\n r: Buffer,\n s: Buffer,\n homesteadOrLater: boolean = true,\n chainId?: BNLike\n): boolean {\n const SECP256K1_N_DIV_2 = new BN(\n '7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0',\n 16\n )\n const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)\n\n if (r.length !== 32 || s.length !== 32) {\n return false\n }\n\n if (!isValidSigRecovery(calculateSigRecovery(v, chainId))) {\n return false\n }\n\n const rBN = new BN(r)\n const sBN = new BN(s)\n\n if (rBN.isZero() || rBN.gt(SECP256K1_N) || sBN.isZero() || sBN.gt(SECP256K1_N)) {\n return false\n }\n\n if (homesteadOrLater && sBN.cmp(SECP256K1_N_DIV_2) === 1) {\n return false\n }\n\n return true\n}\n\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n */\nexport const hashPersonalMessage = function (message: Buffer): Buffer {\n assertIsBuffer(message)\n const prefix = Buffer.from(`\\u0019Ethereum Signed Message:\\n${message.length}`, 'utf-8')\n return keccak(Buffer.concat([prefix, message]))\n}\n","import { BN } from './externals'\nimport { isHexString } from './internal'\nimport { Address } from './address'\nimport { unpadBuffer, toBuffer, ToBufferInputTypes } from './bytes'\n\n/*\n * A type that represents a BNLike input that can be converted to a BN.\n */\nexport type BNLike = BN | PrefixedHexString | number | Buffer\n\n/*\n * A type that represents a BufferLike input that can be converted to a Buffer.\n */\nexport type BufferLike =\n | Buffer\n | Uint8Array\n | number[]\n | number\n | BN\n | TransformableToBuffer\n | PrefixedHexString\n\n/*\n * A type that represents a `0x`-prefixed hex string.\n */\nexport type PrefixedHexString = string\n\n/**\n * A type that represents an Address-like value.\n * To convert to address, use `new Address(toBuffer(value))`\n */\nexport type AddressLike = Address | Buffer | PrefixedHexString\n\n/*\n * A type that represents an object that has a `toArray()` method.\n */\nexport interface TransformableToArray {\n toArray(): Uint8Array\n toBuffer?(): Buffer\n}\n\n/*\n * A type that represents an object that has a `toBuffer()` method.\n */\nexport interface TransformableToBuffer {\n toBuffer(): Buffer\n toArray?(): Uint8Array\n}\n\nexport type NestedUint8Array = Array\nexport type NestedBufferArray = Array\n\n/**\n * Convert BN to 0x-prefixed hex string.\n */\nexport function bnToHex(value: BN): PrefixedHexString {\n return `0x${value.toString(16)}`\n}\n\n/**\n * Convert value from BN to an unpadded Buffer\n * (useful for RLP transport)\n * @param value value to convert\n */\nexport function bnToUnpaddedBuffer(value: BN): Buffer {\n // Using `bn.toArrayLike(Buffer)` instead of `bn.toBuffer()`\n // for compatibility with browserify and similar tools\n return unpadBuffer(value.toArrayLike(Buffer))\n}\n\n/**\n * Deprecated alias for {@link bnToUnpaddedBuffer}\n * @deprecated\n */\nexport function bnToRlp(value: BN): Buffer {\n return bnToUnpaddedBuffer(value)\n}\n\n/**\n * Type output options\n */\nexport enum TypeOutput {\n Number,\n BN,\n Buffer,\n PrefixedHexString,\n}\n\nexport type TypeOutputReturnType = {\n [TypeOutput.Number]: number\n [TypeOutput.BN]: BN\n [TypeOutput.Buffer]: Buffer\n [TypeOutput.PrefixedHexString]: PrefixedHexString\n}\n\n/**\n * Convert an input to a specified type.\n * Input of null/undefined returns null/undefined regardless of the output type.\n * @param input value to convert\n * @param outputType type to output\n */\nexport function toType(input: null, outputType: T): null\nexport function toType(input: undefined, outputType: T): undefined\nexport function toType(\n input: ToBufferInputTypes,\n outputType: T\n): TypeOutputReturnType[T]\nexport function toType(\n input: ToBufferInputTypes,\n outputType: T\n): TypeOutputReturnType[T] | undefined | null {\n if (input === null) {\n return null\n }\n if (input === undefined) {\n return undefined\n }\n\n if (typeof input === 'string' && !isHexString(input)) {\n throw new Error(`A string must be provided with a 0x-prefix, given: ${input}`)\n } else if (typeof input === 'number' && !Number.isSafeInteger(input)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)'\n )\n }\n\n const output = toBuffer(input)\n\n if (outputType === TypeOutput.Buffer) {\n return output as TypeOutputReturnType[T]\n } else if (outputType === TypeOutput.BN) {\n return new BN(output) as TypeOutputReturnType[T]\n } else if (outputType === TypeOutput.Number) {\n const bn = new BN(output)\n const max = new BN(Number.MAX_SAFE_INTEGER.toString())\n if (bn.gt(max)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative output type)'\n )\n }\n return bn.toNumber() as TypeOutputReturnType[T]\n } else {\n // outputType === TypeOutput.PrefixedHexString\n return `0x${output.toString('hex')}` as TypeOutputReturnType[T]\n }\n}\n","import Common, { Chain, Hardfork } from '@ethereumjs/common'\nimport {\n Address,\n BN,\n toBuffer,\n MAX_INTEGER,\n MAX_UINT64,\n unpadBuffer,\n ecsign,\n publicToAddress,\n BNLike,\n bufferToHex,\n} from 'ethereumjs-util'\nimport {\n TxData,\n JsonTx,\n AccessListEIP2930ValuesArray,\n AccessListEIP2930TxData,\n FeeMarketEIP1559ValuesArray,\n FeeMarketEIP1559TxData,\n TxValuesArray,\n Capability,\n TxOptions,\n} from './types'\n\ninterface TransactionCache {\n hash: Buffer | undefined\n dataFee?: {\n value: BN\n hardfork: string | Hardfork\n }\n}\n\n/**\n * This base class will likely be subject to further\n * refactoring along the introduction of additional tx types\n * on the Ethereum network.\n *\n * It is therefore not recommended to use directly.\n */\nexport abstract class BaseTransaction {\n private readonly _type: number\n\n public readonly nonce: BN\n public readonly gasLimit: BN\n public readonly to?: Address\n public readonly value: BN\n public readonly data: Buffer\n\n public readonly v?: BN\n public readonly r?: BN\n public readonly s?: BN\n\n public readonly common!: Common\n\n protected cache: TransactionCache = {\n hash: undefined,\n dataFee: undefined,\n }\n\n protected readonly txOptions: TxOptions\n\n /**\n * List of tx type defining EIPs,\n * e.g. 1559 (fee market) and 2930 (access lists)\n * for FeeMarketEIP1559Transaction objects\n */\n protected activeCapabilities: number[] = []\n\n /**\n * The default chain the tx falls back to if no Common\n * is provided and if the chain can't be derived from\n * a passed in chainId (only EIP-2718 typed txs) or\n * EIP-155 signature (legacy txs).\n *\n * @hidden\n */\n protected DEFAULT_CHAIN = Chain.Mainnet\n\n /**\n * The default HF if the tx type is active on that HF\n * or the first greater HF where the tx is active.\n *\n * @hidden\n */\n protected DEFAULT_HARDFORK: string | Hardfork = Hardfork.Istanbul\n\n constructor(txData: TxData | AccessListEIP2930TxData | FeeMarketEIP1559TxData, opts: TxOptions) {\n const { nonce, gasLimit, to, value, data, v, r, s, type } = txData\n this._type = new BN(toBuffer(type)).toNumber()\n\n this.txOptions = opts\n\n const toB = toBuffer(to === '' ? '0x' : to)\n const vB = toBuffer(v === '' ? '0x' : v)\n const rB = toBuffer(r === '' ? '0x' : r)\n const sB = toBuffer(s === '' ? '0x' : s)\n\n this.nonce = new BN(toBuffer(nonce === '' ? '0x' : nonce))\n this.gasLimit = new BN(toBuffer(gasLimit === '' ? '0x' : gasLimit))\n this.to = toB.length > 0 ? new Address(toB) : undefined\n this.value = new BN(toBuffer(value === '' ? '0x' : value))\n this.data = toBuffer(data === '' ? '0x' : data)\n\n this.v = vB.length > 0 ? new BN(vB) : undefined\n this.r = rB.length > 0 ? new BN(rB) : undefined\n this.s = sB.length > 0 ? new BN(sB) : undefined\n\n this._validateCannotExceedMaxInteger({ value: this.value, r: this.r, s: this.s })\n\n // geth limits gasLimit to 2^64-1\n this._validateCannotExceedMaxInteger({ gasLimit: this.gasLimit }, 64)\n\n // EIP-2681 limits nonce to 2^64-1 (cannot equal 2^64-1)\n this._validateCannotExceedMaxInteger({ nonce: this.nonce }, 64, true)\n }\n\n /**\n * Alias for {@link BaseTransaction.type}\n *\n * @deprecated Use `type` instead\n */\n get transactionType(): number {\n return this.type\n }\n\n /**\n * Returns the transaction type.\n *\n * Note: legacy txs will return tx type `0`.\n */\n get type() {\n return this._type\n }\n\n /**\n * Checks if a tx type defining capability is active\n * on a tx, for example the EIP-1559 fee market mechanism\n * or the EIP-2930 access list feature.\n *\n * Note that this is different from the tx type itself,\n * so EIP-2930 access lists can very well be active\n * on an EIP-1559 tx for example.\n *\n * This method can be useful for feature checks if the\n * tx type is unknown (e.g. when instantiated with\n * the tx factory).\n *\n * See `Capabilites` in the `types` module for a reference\n * on all supported capabilities.\n */\n supports(capability: Capability) {\n return this.activeCapabilities.includes(capability)\n }\n\n /**\n * Checks if the transaction has the minimum amount of gas required\n * (DataFee + TxFee + Creation Fee).\n */\n validate(): boolean\n validate(stringError: false): boolean\n validate(stringError: true): string[]\n validate(stringError: boolean = false): boolean | string[] {\n const errors = []\n\n if (this.getBaseFee().gt(this.gasLimit)) {\n errors.push(`gasLimit is too low. given ${this.gasLimit}, need at least ${this.getBaseFee()}`)\n }\n\n if (this.isSigned() && !this.verifySignature()) {\n errors.push('Invalid Signature')\n }\n\n return stringError ? errors : errors.length === 0\n }\n\n /**\n * The minimum amount of gas the tx must have (DataFee + TxFee + Creation Fee)\n */\n getBaseFee(): BN {\n const fee = this.getDataFee().addn(this.common.param('gasPrices', 'tx'))\n if (this.common.gteHardfork('homestead') && this.toCreationAddress()) {\n fee.iaddn(this.common.param('gasPrices', 'txCreation'))\n }\n return fee\n }\n\n /**\n * The amount of gas paid for the data in this tx\n */\n getDataFee(): BN {\n const txDataZero = this.common.param('gasPrices', 'txDataZero')\n const txDataNonZero = this.common.param('gasPrices', 'txDataNonZero')\n\n let cost: number | BN = 0\n for (let i = 0; i < this.data.length; i++) {\n this.data[i] === 0 ? (cost += txDataZero) : (cost += txDataNonZero)\n }\n\n cost = new BN(cost)\n if ((this.to === undefined || this.to === null) && this.common.isActivatedEIP(3860)) {\n const dataLength = Math.ceil(this.data.length / 32)\n const initCodeCost = new BN(this.common.param('gasPrices', 'initCodeWordCost')).imuln(\n dataLength\n )\n cost.iadd(initCodeCost)\n }\n\n return cost\n }\n\n /**\n * The up front amount that an account must have for this transaction to be valid\n */\n abstract getUpfrontCost(): BN\n\n /**\n * If the tx's `to` is to the creation address\n */\n toCreationAddress(): boolean {\n return this.to === undefined || this.to.buf.length === 0\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers of this transaction, in order.\n *\n * Use {@link BaseTransaction.serialize} to add a transaction to a block\n * with {@link Block.fromValuesArray}.\n *\n * For an unsigned tx this method uses the empty Buffer values for the\n * signature parameters `v`, `r` and `s` for encoding. For an EIP-155 compliant\n * representation for external signing use {@link BaseTransaction.getMessageToSign}.\n */\n abstract raw(): TxValuesArray | AccessListEIP2930ValuesArray | FeeMarketEIP1559ValuesArray\n\n /**\n * Returns the encoding of the transaction.\n */\n abstract serialize(): Buffer\n\n // Returns the unsigned tx (hashed or raw), which is used to sign the transaction.\n //\n // Note: do not use code docs here since VS Studio is then not able to detect the\n // comments from the inherited methods\n abstract getMessageToSign(hashMessage: false): Buffer | Buffer[]\n abstract getMessageToSign(hashMessage?: true): Buffer\n\n abstract hash(): Buffer\n\n abstract getMessageToVerifySignature(): Buffer\n\n public isSigned(): boolean {\n const { v, r, s } = this\n if (this.type === 0) {\n if (!v || !r || !s) {\n return false\n } else {\n return true\n }\n } else {\n if (v === undefined || !r || !s) {\n return false\n } else {\n return true\n }\n }\n }\n\n /**\n * Determines if the signature is valid\n */\n verifySignature(): boolean {\n try {\n // Main signature verification is done in `getSenderPublicKey()`\n const publicKey = this.getSenderPublicKey()\n return unpadBuffer(publicKey).length !== 0\n } catch (e: any) {\n return false\n }\n }\n\n /**\n * Returns the sender's address\n */\n getSenderAddress(): Address {\n return new Address(publicToAddress(this.getSenderPublicKey()))\n }\n\n /**\n * Returns the public key of the sender\n */\n abstract getSenderPublicKey(): Buffer\n\n /**\n * Signs a transaction.\n *\n * Note that the signed tx is returned as a new object,\n * use as follows:\n * ```javascript\n * const signedTx = tx.sign(privateKey)\n * ```\n */\n sign(privateKey: Buffer): TransactionObject {\n if (privateKey.length !== 32) {\n const msg = this._errorMsg('Private key must be 32 bytes in length.')\n throw new Error(msg)\n }\n\n // Hack for the constellation that we have got a legacy tx after spuriousDragon with a non-EIP155 conforming signature\n // and want to recreate a signature (where EIP155 should be applied)\n // Leaving this hack lets the legacy.spec.ts -> sign(), verifySignature() test fail\n // 2021-06-23\n let hackApplied = false\n if (\n this.type === 0 &&\n this.common.gteHardfork('spuriousDragon') &&\n !this.supports(Capability.EIP155ReplayProtection)\n ) {\n this.activeCapabilities.push(Capability.EIP155ReplayProtection)\n hackApplied = true\n }\n\n const msgHash = this.getMessageToSign(true)\n const { v, r, s } = ecsign(msgHash, privateKey)\n const tx = this._processSignature(v, r, s)\n\n // Hack part 2\n if (hackApplied) {\n const index = this.activeCapabilities.indexOf(Capability.EIP155ReplayProtection)\n if (index > -1) {\n this.activeCapabilities.splice(index, 1)\n }\n }\n\n return tx\n }\n\n /**\n * Returns an object with the JSON representation of the transaction\n */\n abstract toJSON(): JsonTx\n\n // Accept the v,r,s values from the `sign` method, and convert this into a TransactionObject\n protected abstract _processSignature(v: number, r: Buffer, s: Buffer): TransactionObject\n\n /**\n * Does chain ID checks on common and returns a common\n * to be used on instantiation\n * @hidden\n *\n * @param common - {@link Common} instance from tx options\n * @param chainId - Chain ID from tx options (typed txs) or signature (legacy tx)\n */\n protected _getCommon(common?: Common, chainId?: BNLike) {\n // Chain ID provided\n if (chainId) {\n const chainIdBN = new BN(toBuffer(chainId))\n if (common) {\n if (!common.chainIdBN().eq(chainIdBN)) {\n const msg = this._errorMsg('The chain ID does not match the chain ID of Common')\n throw new Error(msg)\n }\n // Common provided, chain ID does match\n // -> Return provided Common\n return common.copy()\n } else {\n if (Common.isSupportedChainId(chainIdBN)) {\n // No Common, chain ID supported by Common\n // -> Instantiate Common with chain ID\n return new Common({ chain: chainIdBN, hardfork: this.DEFAULT_HARDFORK })\n } else {\n // No Common, chain ID not supported by Common\n // -> Instantiate custom Common derived from DEFAULT_CHAIN\n return Common.forCustomChain(\n this.DEFAULT_CHAIN,\n {\n name: 'custom-chain',\n networkId: chainIdBN,\n chainId: chainIdBN,\n },\n this.DEFAULT_HARDFORK\n )\n }\n }\n } else {\n // No chain ID provided\n // -> return Common provided or create new default Common\n return (\n common?.copy() ?? new Common({ chain: this.DEFAULT_CHAIN, hardfork: this.DEFAULT_HARDFORK })\n )\n }\n }\n\n /**\n * Validates that an object with BN values cannot exceed the specified bit limit.\n * @param values Object containing string keys and BN values\n * @param bits Number of bits to check (64 or 256)\n * @param cannotEqual Pass true if the number also cannot equal one less the maximum value\n */\n protected _validateCannotExceedMaxInteger(\n values: { [key: string]: BN | undefined },\n bits = 256,\n cannotEqual = false\n ) {\n for (const [key, value] of Object.entries(values)) {\n switch (bits) {\n case 64:\n if (cannotEqual) {\n if (value?.gte(MAX_UINT64)) {\n const msg = this._errorMsg(\n `${key} cannot equal or exceed MAX_UINT64 (2^64-1), given ${value}`\n )\n throw new Error(msg)\n }\n } else {\n if (value?.gt(MAX_UINT64)) {\n const msg = this._errorMsg(`${key} cannot exceed MAX_UINT64 (2^64-1), given ${value}`)\n throw new Error(msg)\n }\n }\n break\n case 256:\n if (cannotEqual) {\n if (value?.gte(MAX_INTEGER)) {\n const msg = this._errorMsg(\n `${key} cannot equal or exceed MAX_INTEGER (2^256-1), given ${value}`\n )\n throw new Error(msg)\n }\n } else {\n if (value?.gt(MAX_INTEGER)) {\n const msg = this._errorMsg(\n `${key} cannot exceed MAX_INTEGER (2^256-1), given ${value}`\n )\n throw new Error(msg)\n }\n }\n break\n default: {\n const msg = this._errorMsg('unimplemented bits value')\n throw new Error(msg)\n }\n }\n }\n }\n\n /**\n * Return a compact error string representation of the object\n */\n public abstract errorStr(): string\n\n /**\n * Internal helper function to create an annotated error message\n *\n * @param msg Base error message\n * @hidden\n */\n protected abstract _errorMsg(msg: string): string\n\n /**\n * Returns the shared error postfix part for _error() method\n * tx type implementations.\n */\n protected _getSharedErrorPostfix() {\n let hash = ''\n try {\n hash = this.isSigned() ? bufferToHex(this.hash()) : 'not available (unsigned)'\n } catch (e: any) {\n hash = 'error'\n }\n let isSigned = ''\n try {\n isSigned = this.isSigned().toString()\n } catch (e: any) {\n hash = 'error'\n }\n let hf = ''\n try {\n hf = this.common.hardfork()\n } catch (e: any) {\n hf = 'error'\n }\n\n let postfix = `tx type=${this.type} hash=${hash} nonce=${this.nonce} value=${this.value} `\n postfix += `signed=${isSigned} hf=${hf}`\n\n return postfix\n }\n}\n","import {\n BN,\n bnToHex,\n bnToUnpaddedBuffer,\n ecrecover,\n keccak256,\n MAX_INTEGER,\n rlp,\n toBuffer,\n validateNoLeadingZeroes,\n} from 'ethereumjs-util'\nimport Common from '@ethereumjs/common'\nimport { BaseTransaction } from './baseTransaction'\nimport {\n AccessList,\n AccessListBuffer,\n FeeMarketEIP1559TxData,\n FeeMarketEIP1559ValuesArray,\n JsonTx,\n N_DIV_2,\n TxOptions,\n} from './types'\nimport { AccessLists, checkMaxInitCodeSize } from './util'\n\nconst TRANSACTION_TYPE = 2\nconst TRANSACTION_TYPE_BUFFER = Buffer.from(TRANSACTION_TYPE.toString(16).padStart(2, '0'), 'hex')\n\n/**\n * Typed transaction with a new gas fee market mechanism\n *\n * - TransactionType: 2\n * - EIP: [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)\n */\nexport default class FeeMarketEIP1559Transaction extends BaseTransaction {\n public readonly chainId: BN\n public readonly accessList: AccessListBuffer\n public readonly AccessListJSON: AccessList\n public readonly maxPriorityFeePerGas: BN\n public readonly maxFeePerGas: BN\n\n public readonly common: Common\n\n /**\n * The default HF if the tx type is active on that HF\n * or the first greater HF where the tx is active.\n *\n * @hidden\n */\n protected DEFAULT_HARDFORK = 'london'\n\n /**\n * EIP-2930 alias for `r`\n *\n * @deprecated use `r` instead\n */\n get senderR() {\n return this.r\n }\n\n /**\n * EIP-2930 alias for `s`\n *\n * @deprecated use `s` instead\n */\n get senderS() {\n return this.s\n }\n\n /**\n * EIP-2930 alias for `v`\n *\n * @deprecated use `v` instead\n */\n get yParity() {\n return this.v\n }\n\n /**\n * Instantiate a transaction from a data dictionary.\n *\n * Format: { chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data,\n * accessList, v, r, s }\n *\n * Notes:\n * - `chainId` will be set automatically if not provided\n * - All parameters are optional and have some basic default values\n */\n public static fromTxData(txData: FeeMarketEIP1559TxData, opts: TxOptions = {}) {\n return new FeeMarketEIP1559Transaction(txData, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n *\n * Format: `0x02 || rlp([chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data,\n * accessList, signatureYParity, signatureR, signatureS])`\n */\n public static fromSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n if (!serialized.slice(0, 1).equals(TRANSACTION_TYPE_BUFFER)) {\n throw new Error(\n `Invalid serialized tx input: not an EIP-1559 transaction (wrong tx type, expected: ${TRANSACTION_TYPE}, received: ${serialized\n .slice(0, 1)\n .toString('hex')}`\n )\n }\n\n const values = rlp.decode(serialized.slice(1))\n\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized tx input: must be array')\n }\n\n return FeeMarketEIP1559Transaction.fromValuesArray(values as any, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n * (alias of {@link FeeMarketEIP1559Transaction.fromSerializedTx})\n *\n * Note: This means that the Buffer should start with 0x01.\n *\n * @deprecated this constructor alias is deprecated and will be removed\n * in favor of the {@link FeeMarketEIP1559Transaction.fromSerializedTx} constructor\n */\n public static fromRlpSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n return FeeMarketEIP1559Transaction.fromSerializedTx(serialized, opts)\n }\n\n /**\n * Create a transaction from a values array.\n *\n * Format: `[chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data,\n * accessList, signatureYParity, signatureR, signatureS]`\n */\n public static fromValuesArray(values: FeeMarketEIP1559ValuesArray, opts: TxOptions = {}) {\n if (values.length !== 9 && values.length !== 12) {\n throw new Error(\n 'Invalid EIP-1559 transaction. Only expecting 9 values (for unsigned tx) or 12 values (for signed tx).'\n )\n }\n\n const [\n chainId,\n nonce,\n maxPriorityFeePerGas,\n maxFeePerGas,\n gasLimit,\n to,\n value,\n data,\n accessList,\n v,\n r,\n s,\n ] = values\n\n validateNoLeadingZeroes({ nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, value, v, r, s })\n\n return new FeeMarketEIP1559Transaction(\n {\n chainId: new BN(chainId),\n nonce,\n maxPriorityFeePerGas,\n maxFeePerGas,\n gasLimit,\n to,\n value,\n data,\n accessList: accessList ?? [],\n v: v !== undefined ? new BN(v) : undefined, // EIP2930 supports v's with value 0 (empty Buffer)\n r,\n s,\n },\n opts\n )\n }\n\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n *\n * It is not recommended to use this constructor directly. Instead use\n * the static factory methods to assist in creating a Transaction object from\n * varying data types.\n */\n public constructor(txData: FeeMarketEIP1559TxData, opts: TxOptions = {}) {\n super({ ...txData, type: TRANSACTION_TYPE }, opts)\n const { chainId, accessList, maxFeePerGas, maxPriorityFeePerGas } = txData\n\n this.common = this._getCommon(opts.common, chainId)\n this.chainId = this.common.chainIdBN()\n\n if (!this.common.isActivatedEIP(1559)) {\n throw new Error('EIP-1559 not enabled on Common')\n }\n this.activeCapabilities = this.activeCapabilities.concat([1559, 2718, 2930])\n\n // Populate the access list fields\n const accessListData = AccessLists.getAccessListData(accessList ?? [])\n this.accessList = accessListData.accessList\n this.AccessListJSON = accessListData.AccessListJSON\n // Verify the access list format.\n AccessLists.verifyAccessList(this.accessList)\n\n this.maxFeePerGas = new BN(toBuffer(maxFeePerGas === '' ? '0x' : maxFeePerGas))\n this.maxPriorityFeePerGas = new BN(\n toBuffer(maxPriorityFeePerGas === '' ? '0x' : maxPriorityFeePerGas)\n )\n\n this._validateCannotExceedMaxInteger({\n maxFeePerGas: this.maxFeePerGas,\n maxPriorityFeePerGas: this.maxPriorityFeePerGas,\n })\n\n if (this.gasLimit.mul(this.maxFeePerGas).gt(MAX_INTEGER)) {\n const msg = this._errorMsg('gasLimit * maxFeePerGas cannot exceed MAX_INTEGER (2^256-1)')\n throw new Error(msg)\n }\n\n if (this.maxFeePerGas.lt(this.maxPriorityFeePerGas)) {\n const msg = this._errorMsg(\n 'maxFeePerGas cannot be less than maxPriorityFeePerGas (The total must be the larger of the two)'\n )\n throw new Error(msg)\n }\n\n if (this.v && !this.v.eqn(0) && !this.v.eqn(1)) {\n const msg = this._errorMsg('The y-parity of the transaction should either be 0 or 1')\n throw new Error(msg)\n }\n\n if (this.common.gteHardfork('homestead') && this.s?.gt(N_DIV_2)) {\n const msg = this._errorMsg(\n 'Invalid Signature: s-values greater than secp256k1n/2 are considered invalid'\n )\n throw new Error(msg)\n }\n\n if (this.common.isActivatedEIP(3860)) {\n checkMaxInitCodeSize(this.common, this.data.length)\n }\n\n const freeze = opts?.freeze ?? true\n if (freeze) {\n Object.freeze(this)\n }\n }\n\n /**\n * The amount of gas paid for the data in this tx\n */\n getDataFee(): BN {\n if (this.cache.dataFee && this.cache.dataFee.hardfork === this.common.hardfork()) {\n return this.cache.dataFee.value\n }\n\n const cost = super.getDataFee()\n cost.iaddn(AccessLists.getDataFeeEIP2930(this.accessList, this.common))\n\n if (Object.isFrozen(this)) {\n this.cache.dataFee = {\n value: cost,\n hardfork: this.common.hardfork(),\n }\n }\n\n return cost\n }\n\n /**\n * The up front amount that an account must have for this transaction to be valid\n * @param baseFee The base fee of the block (will be set to 0 if not provided)\n */\n getUpfrontCost(baseFee: BN = new BN(0)): BN {\n const inclusionFeePerGas = BN.min(this.maxPriorityFeePerGas, this.maxFeePerGas.sub(baseFee))\n const gasPrice = inclusionFeePerGas.add(baseFee)\n return this.gasLimit.mul(gasPrice).add(this.value)\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers of the EIP-1559 transaction, in order.\n *\n * Format: `[chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data,\n * accessList, signatureYParity, signatureR, signatureS]`\n *\n * Use {@link FeeMarketEIP1559Transaction.serialize} to add a transaction to a block\n * with {@link Block.fromValuesArray}.\n *\n * For an unsigned tx this method uses the empty Buffer values for the\n * signature parameters `v`, `r` and `s` for encoding. For an EIP-155 compliant\n * representation for external signing use {@link FeeMarketEIP1559Transaction.getMessageToSign}.\n */\n raw(): FeeMarketEIP1559ValuesArray {\n return [\n bnToUnpaddedBuffer(this.chainId),\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.maxPriorityFeePerGas),\n bnToUnpaddedBuffer(this.maxFeePerGas),\n bnToUnpaddedBuffer(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n bnToUnpaddedBuffer(this.value),\n this.data,\n this.accessList,\n this.v !== undefined ? bnToUnpaddedBuffer(this.v) : Buffer.from([]),\n this.r !== undefined ? bnToUnpaddedBuffer(this.r) : Buffer.from([]),\n this.s !== undefined ? bnToUnpaddedBuffer(this.s) : Buffer.from([]),\n ]\n }\n\n /**\n * Returns the serialized encoding of the EIP-1559 transaction.\n *\n * Format: `0x02 || rlp([chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data,\n * accessList, signatureYParity, signatureR, signatureS])`\n *\n * Note that in contrast to the legacy tx serialization format this is not\n * valid RLP any more due to the raw tx type preceding and concatenated to\n * the RLP encoding of the values.\n */\n serialize(): Buffer {\n const base = this.raw()\n return Buffer.concat([TRANSACTION_TYPE_BUFFER, rlp.encode(base as any)])\n }\n\n /**\n * Returns the serialized unsigned tx (hashed or raw), which can be used\n * to sign the transaction (e.g. for sending to a hardware wallet).\n *\n * Note: in contrast to the legacy tx the raw message format is already\n * serialized and doesn't need to be RLP encoded any more.\n *\n * ```javascript\n * const serializedMessage = tx.getMessageToSign(false) // use this for the HW wallet input\n * ```\n *\n * @param hashMessage - Return hashed message if set to true (default: true)\n */\n getMessageToSign(hashMessage = true): Buffer {\n const base = this.raw().slice(0, 9)\n const message = Buffer.concat([TRANSACTION_TYPE_BUFFER, rlp.encode(base as any)])\n if (hashMessage) {\n return keccak256(message)\n } else {\n return message\n }\n }\n\n /**\n * Computes a sha3-256 hash of the serialized tx.\n *\n * This method can only be used for signed txs (it throws otherwise).\n * Use {@link FeeMarketEIP1559Transaction.getMessageToSign} to get a tx hash for the purpose of signing.\n */\n public hash(): Buffer {\n if (!this.isSigned()) {\n const msg = this._errorMsg('Cannot call hash method if transaction is not signed')\n throw new Error(msg)\n }\n\n if (Object.isFrozen(this)) {\n if (!this.cache.hash) {\n this.cache.hash = keccak256(this.serialize())\n }\n return this.cache.hash\n }\n\n return keccak256(this.serialize())\n }\n\n /**\n * Computes a sha3-256 hash which can be used to verify the signature\n */\n public getMessageToVerifySignature(): Buffer {\n return this.getMessageToSign()\n }\n\n /**\n * Returns the public key of the sender\n */\n public getSenderPublicKey(): Buffer {\n if (!this.isSigned()) {\n const msg = this._errorMsg('Cannot call this method if transaction is not signed')\n throw new Error(msg)\n }\n\n const msgHash = this.getMessageToVerifySignature()\n\n // EIP-2: All transaction signatures whose s-value is greater than secp256k1n/2 are considered invalid.\n // Reasoning: https://ethereum.stackexchange.com/a/55728\n if (this.common.gteHardfork('homestead') && this.s?.gt(N_DIV_2)) {\n const msg = this._errorMsg(\n 'Invalid Signature: s-values greater than secp256k1n/2 are considered invalid'\n )\n throw new Error(msg)\n }\n\n const { v, r, s } = this\n try {\n return ecrecover(\n msgHash,\n v!.addn(27), // Recover the 27 which was stripped from ecsign\n bnToUnpaddedBuffer(r!),\n bnToUnpaddedBuffer(s!)\n )\n } catch (e: any) {\n const msg = this._errorMsg('Invalid Signature')\n throw new Error(msg)\n }\n }\n\n _processSignature(v: number, r: Buffer, s: Buffer) {\n const opts = { ...this.txOptions, common: this.common }\n\n return FeeMarketEIP1559Transaction.fromTxData(\n {\n chainId: this.chainId,\n nonce: this.nonce,\n maxPriorityFeePerGas: this.maxPriorityFeePerGas,\n maxFeePerGas: this.maxFeePerGas,\n gasLimit: this.gasLimit,\n to: this.to,\n value: this.value,\n data: this.data,\n accessList: this.accessList,\n v: new BN(v - 27), // This looks extremely hacky: ethereumjs-util actually adds 27 to the value, the recovery bit is either 0 or 1.\n r: new BN(r),\n s: new BN(s),\n },\n opts\n )\n }\n\n /**\n * Returns an object with the JSON representation of the transaction\n */\n toJSON(): JsonTx {\n const accessListJSON = AccessLists.getAccessListJSON(this.accessList)\n\n return {\n chainId: bnToHex(this.chainId),\n nonce: bnToHex(this.nonce),\n maxPriorityFeePerGas: bnToHex(this.maxPriorityFeePerGas),\n maxFeePerGas: bnToHex(this.maxFeePerGas),\n gasLimit: bnToHex(this.gasLimit),\n to: this.to !== undefined ? this.to.toString() : undefined,\n value: bnToHex(this.value),\n data: '0x' + this.data.toString('hex'),\n accessList: accessListJSON,\n v: this.v !== undefined ? bnToHex(this.v) : undefined,\n r: this.r !== undefined ? bnToHex(this.r) : undefined,\n s: this.s !== undefined ? bnToHex(this.s) : undefined,\n }\n }\n\n /**\n * Return a compact error string representation of the object\n */\n public errorStr() {\n let errorStr = this._getSharedErrorPostfix()\n errorStr += ` maxFeePerGas=${this.maxFeePerGas} maxPriorityFeePerGas=${this.maxPriorityFeePerGas}`\n return errorStr\n }\n\n /**\n * Internal helper function to create an annotated error message\n *\n * @param msg Base error message\n * @hidden\n */\n protected _errorMsg(msg: string) {\n return `${msg} (${this.errorStr()})`\n }\n}\n","import {\n BN,\n bnToHex,\n bnToUnpaddedBuffer,\n ecrecover,\n keccak256,\n MAX_INTEGER,\n rlp,\n toBuffer,\n validateNoLeadingZeroes,\n} from 'ethereumjs-util'\nimport Common from '@ethereumjs/common'\nimport { BaseTransaction } from './baseTransaction'\nimport {\n AccessList,\n AccessListBuffer,\n AccessListEIP2930TxData,\n AccessListEIP2930ValuesArray,\n JsonTx,\n TxOptions,\n N_DIV_2,\n} from './types'\n\nimport { AccessLists, checkMaxInitCodeSize } from './util'\n\nconst TRANSACTION_TYPE = 1\nconst TRANSACTION_TYPE_BUFFER = Buffer.from(TRANSACTION_TYPE.toString(16).padStart(2, '0'), 'hex')\n\n/**\n * Typed transaction with optional access lists\n *\n * - TransactionType: 1\n * - EIP: [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930)\n */\nexport default class AccessListEIP2930Transaction extends BaseTransaction {\n public readonly chainId: BN\n public readonly accessList: AccessListBuffer\n public readonly AccessListJSON: AccessList\n public readonly gasPrice: BN\n\n public readonly common: Common\n\n /**\n * The default HF if the tx type is active on that HF\n * or the first greater HF where the tx is active.\n *\n * @hidden\n */\n protected DEFAULT_HARDFORK = 'berlin'\n\n /**\n * EIP-2930 alias for `r`\n *\n * @deprecated use `r` instead\n */\n get senderR() {\n return this.r\n }\n\n /**\n * EIP-2930 alias for `s`\n *\n * @deprecated use `s` instead\n */\n get senderS() {\n return this.s\n }\n\n /**\n * EIP-2930 alias for `v`\n *\n * @deprecated use `v` instead\n */\n get yParity() {\n return this.v\n }\n\n /**\n * Instantiate a transaction from a data dictionary.\n *\n * Format: { chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,\n * v, r, s }\n *\n * Notes:\n * - `chainId` will be set automatically if not provided\n * - All parameters are optional and have some basic default values\n */\n public static fromTxData(txData: AccessListEIP2930TxData, opts: TxOptions = {}) {\n return new AccessListEIP2930Transaction(txData, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n *\n * Format: `0x01 || rlp([chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,\n * signatureYParity (v), signatureR (r), signatureS (s)])`\n */\n public static fromSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n if (!serialized.slice(0, 1).equals(TRANSACTION_TYPE_BUFFER)) {\n throw new Error(\n `Invalid serialized tx input: not an EIP-2930 transaction (wrong tx type, expected: ${TRANSACTION_TYPE}, received: ${serialized\n .slice(0, 1)\n .toString('hex')}`\n )\n }\n\n const values = rlp.decode(serialized.slice(1))\n\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized tx input: must be array')\n }\n\n return AccessListEIP2930Transaction.fromValuesArray(values as any, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n * (alias of {@link AccessListEIP2930Transaction.fromSerializedTx})\n *\n * Note: This means that the Buffer should start with 0x01.\n *\n * @deprecated this constructor alias is deprecated and will be removed\n * in favor of the {@link AccessListEIP2930Transaction.fromSerializedTx} constructor\n */\n public static fromRlpSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n return AccessListEIP2930Transaction.fromSerializedTx(serialized, opts)\n }\n\n /**\n * Create a transaction from a values array.\n *\n * Format: `[chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,\n * signatureYParity (v), signatureR (r), signatureS (s)]`\n */\n public static fromValuesArray(values: AccessListEIP2930ValuesArray, opts: TxOptions = {}) {\n if (values.length !== 8 && values.length !== 11) {\n throw new Error(\n 'Invalid EIP-2930 transaction. Only expecting 8 values (for unsigned tx) or 11 values (for signed tx).'\n )\n }\n\n const [chainId, nonce, gasPrice, gasLimit, to, value, data, accessList, v, r, s] = values\n\n validateNoLeadingZeroes({ nonce, gasPrice, gasLimit, value, v, r, s })\n\n const emptyAccessList: AccessList = []\n\n return new AccessListEIP2930Transaction(\n {\n chainId: new BN(chainId),\n nonce,\n gasPrice,\n gasLimit,\n to,\n value,\n data,\n accessList: accessList ?? emptyAccessList,\n v: v !== undefined ? new BN(v) : undefined, // EIP2930 supports v's with value 0 (empty Buffer)\n r,\n s,\n },\n opts\n )\n }\n\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n *\n * It is not recommended to use this constructor directly. Instead use\n * the static factory methods to assist in creating a Transaction object from\n * varying data types.\n */\n public constructor(txData: AccessListEIP2930TxData, opts: TxOptions = {}) {\n super({ ...txData, type: TRANSACTION_TYPE }, opts)\n const { chainId, accessList, gasPrice } = txData\n\n this.common = this._getCommon(opts.common, chainId)\n this.chainId = this.common.chainIdBN()\n\n // EIP-2718 check is done in Common\n if (!this.common.isActivatedEIP(2930)) {\n throw new Error('EIP-2930 not enabled on Common')\n }\n this.activeCapabilities = this.activeCapabilities.concat([2718, 2930])\n\n // Populate the access list fields\n const accessListData = AccessLists.getAccessListData(accessList ?? [])\n this.accessList = accessListData.accessList\n this.AccessListJSON = accessListData.AccessListJSON\n // Verify the access list format.\n AccessLists.verifyAccessList(this.accessList)\n\n this.gasPrice = new BN(toBuffer(gasPrice === '' ? '0x' : gasPrice))\n\n this._validateCannotExceedMaxInteger({\n gasPrice: this.gasPrice,\n })\n\n if (this.gasPrice.mul(this.gasLimit).gt(MAX_INTEGER)) {\n const msg = this._errorMsg('gasLimit * gasPrice cannot exceed MAX_INTEGER')\n throw new Error(msg)\n }\n if (this.v && !this.v.eqn(0) && !this.v.eqn(1)) {\n const msg = this._errorMsg('The y-parity of the transaction should either be 0 or 1')\n throw new Error(msg)\n }\n\n if (this.common.gteHardfork('homestead') && this.s?.gt(N_DIV_2)) {\n const msg = this._errorMsg(\n 'Invalid Signature: s-values greater than secp256k1n/2 are considered invalid'\n )\n throw new Error(msg)\n }\n\n if (this.common.isActivatedEIP(3860)) {\n checkMaxInitCodeSize(this.common, this.data.length)\n }\n const freeze = opts?.freeze ?? true\n if (freeze) {\n Object.freeze(this)\n }\n }\n\n /**\n * The amount of gas paid for the data in this tx\n */\n getDataFee(): BN {\n if (this.cache.dataFee && this.cache.dataFee.hardfork === this.common.hardfork()) {\n return this.cache.dataFee.value\n }\n\n const cost = super.getDataFee()\n cost.iaddn(AccessLists.getDataFeeEIP2930(this.accessList, this.common))\n\n if (Object.isFrozen(this)) {\n this.cache.dataFee = {\n value: cost,\n hardfork: this.common.hardfork(),\n }\n }\n\n return cost\n }\n\n /**\n * The up front amount that an account must have for this transaction to be valid\n */\n getUpfrontCost(): BN {\n return this.gasLimit.mul(this.gasPrice).add(this.value)\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers of the EIP-2930 transaction, in order.\n *\n * Format: `[chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,\n * signatureYParity (v), signatureR (r), signatureS (s)]`\n *\n * Use {@link AccessListEIP2930Transaction.serialize} to add a transaction to a block\n * with {@link Block.fromValuesArray}.\n *\n * For an unsigned tx this method uses the empty Buffer values for the\n * signature parameters `v`, `r` and `s` for encoding. For an EIP-155 compliant\n * representation for external signing use {@link AccessListEIP2930Transaction.getMessageToSign}.\n */\n raw(): AccessListEIP2930ValuesArray {\n return [\n bnToUnpaddedBuffer(this.chainId),\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.gasPrice),\n bnToUnpaddedBuffer(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n bnToUnpaddedBuffer(this.value),\n this.data,\n this.accessList,\n this.v !== undefined ? bnToUnpaddedBuffer(this.v) : Buffer.from([]),\n this.r !== undefined ? bnToUnpaddedBuffer(this.r) : Buffer.from([]),\n this.s !== undefined ? bnToUnpaddedBuffer(this.s) : Buffer.from([]),\n ]\n }\n\n /**\n * Returns the serialized encoding of the EIP-2930 transaction.\n *\n * Format: `0x01 || rlp([chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,\n * signatureYParity (v), signatureR (r), signatureS (s)])`\n *\n * Note that in contrast to the legacy tx serialization format this is not\n * valid RLP any more due to the raw tx type preceding and concatenated to\n * the RLP encoding of the values.\n */\n serialize(): Buffer {\n const base = this.raw()\n return Buffer.concat([TRANSACTION_TYPE_BUFFER, rlp.encode(base as any)])\n }\n\n /**\n * Returns the serialized unsigned tx (hashed or raw), which can be used\n * to sign the transaction (e.g. for sending to a hardware wallet).\n *\n * Note: in contrast to the legacy tx the raw message format is already\n * serialized and doesn't need to be RLP encoded any more.\n *\n * ```javascript\n * const serializedMessage = tx.getMessageToSign(false) // use this for the HW wallet input\n * ```\n *\n * @param hashMessage - Return hashed message if set to true (default: true)\n */\n getMessageToSign(hashMessage = true): Buffer {\n const base = this.raw().slice(0, 8)\n const message = Buffer.concat([TRANSACTION_TYPE_BUFFER, rlp.encode(base as any)])\n if (hashMessage) {\n return keccak256(message)\n } else {\n return message\n }\n }\n\n /**\n * Computes a sha3-256 hash of the serialized tx.\n *\n * This method can only be used for signed txs (it throws otherwise).\n * Use {@link AccessListEIP2930Transaction.getMessageToSign} to get a tx hash for the purpose of signing.\n */\n public hash(): Buffer {\n if (!this.isSigned()) {\n const msg = this._errorMsg('Cannot call hash method if transaction is not signed')\n throw new Error(msg)\n }\n\n if (Object.isFrozen(this)) {\n if (!this.cache.hash) {\n this.cache.hash = keccak256(this.serialize())\n }\n return this.cache.hash\n }\n\n return keccak256(this.serialize())\n }\n\n /**\n * Computes a sha3-256 hash which can be used to verify the signature\n */\n public getMessageToVerifySignature(): Buffer {\n return this.getMessageToSign()\n }\n\n /**\n * Returns the public key of the sender\n */\n public getSenderPublicKey(): Buffer {\n if (!this.isSigned()) {\n const msg = this._errorMsg('Cannot call this method if transaction is not signed')\n throw new Error(msg)\n }\n\n const msgHash = this.getMessageToVerifySignature()\n\n // EIP-2: All transaction signatures whose s-value is greater than secp256k1n/2 are considered invalid.\n // Reasoning: https://ethereum.stackexchange.com/a/55728\n if (this.common.gteHardfork('homestead') && this.s?.gt(N_DIV_2)) {\n const msg = this._errorMsg(\n 'Invalid Signature: s-values greater than secp256k1n/2 are considered invalid'\n )\n throw new Error(msg)\n }\n\n const { yParity, r, s } = this\n try {\n return ecrecover(\n msgHash,\n yParity!.addn(27), // Recover the 27 which was stripped from ecsign\n bnToUnpaddedBuffer(r!),\n bnToUnpaddedBuffer(s!)\n )\n } catch (e: any) {\n const msg = this._errorMsg('Invalid Signature')\n throw new Error(msg)\n }\n }\n\n _processSignature(v: number, r: Buffer, s: Buffer) {\n const opts = { ...this.txOptions, common: this.common }\n\n return AccessListEIP2930Transaction.fromTxData(\n {\n chainId: this.chainId,\n nonce: this.nonce,\n gasPrice: this.gasPrice,\n gasLimit: this.gasLimit,\n to: this.to,\n value: this.value,\n data: this.data,\n accessList: this.accessList,\n v: new BN(v - 27), // This looks extremely hacky: ethereumjs-util actually adds 27 to the value, the recovery bit is either 0 or 1.\n r: new BN(r),\n s: new BN(s),\n },\n opts\n )\n }\n\n /**\n * Returns an object with the JSON representation of the transaction\n */\n toJSON(): JsonTx {\n const accessListJSON = AccessLists.getAccessListJSON(this.accessList)\n\n return {\n chainId: bnToHex(this.chainId),\n nonce: bnToHex(this.nonce),\n gasPrice: bnToHex(this.gasPrice),\n gasLimit: bnToHex(this.gasLimit),\n to: this.to !== undefined ? this.to.toString() : undefined,\n value: bnToHex(this.value),\n data: '0x' + this.data.toString('hex'),\n accessList: accessListJSON,\n v: this.v !== undefined ? bnToHex(this.v) : undefined,\n r: this.r !== undefined ? bnToHex(this.r) : undefined,\n s: this.s !== undefined ? bnToHex(this.s) : undefined,\n }\n }\n\n /**\n * Return a compact error string representation of the object\n */\n public errorStr() {\n let errorStr = this._getSharedErrorPostfix()\n // Keep ? for this.accessList since this otherwise causes Hardhat E2E tests to fail\n errorStr += ` gasPrice=${this.gasPrice} accessListCount=${this.accessList?.length ?? 0}`\n return errorStr\n }\n\n /**\n * Internal helper function to create an annotated error message\n *\n * @param msg Base error message\n * @hidden\n */\n protected _errorMsg(msg: string) {\n return `${msg} (${this.errorStr()})`\n }\n}\n","export { default as Transaction } from './legacyTransaction'\nexport { default as AccessListEIP2930Transaction } from './eip2930Transaction'\nexport { default as TransactionFactory } from './transactionFactory'\nexport { default as FeeMarketEIP1559Transaction } from './eip1559Transaction'\nexport * from './types'\n","import {\n BN,\n bnToHex,\n bnToUnpaddedBuffer,\n ecrecover,\n MAX_INTEGER,\n rlp,\n rlphash,\n toBuffer,\n unpadBuffer,\n validateNoLeadingZeroes,\n} from 'ethereumjs-util'\nimport { TxOptions, TxData, JsonTx, N_DIV_2, TxValuesArray, Capability } from './types'\nimport { BaseTransaction } from './baseTransaction'\nimport Common from '@ethereumjs/common'\nimport { checkMaxInitCodeSize } from './util'\n\nconst TRANSACTION_TYPE = 0\n\n/**\n * An Ethereum non-typed (legacy) transaction\n */\nexport default class Transaction extends BaseTransaction {\n public readonly gasPrice: BN\n\n public readonly common: Common\n\n /**\n * Instantiate a transaction from a data dictionary.\n *\n * Format: { nonce, gasPrice, gasLimit, to, value, data, v, r, s }\n *\n * Notes:\n * - All parameters are optional and have some basic default values\n */\n public static fromTxData(txData: TxData, opts: TxOptions = {}) {\n return new Transaction(txData, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n *\n * Format: `rlp([nonce, gasPrice, gasLimit, to, value, data, v, r, s])`\n */\n public static fromSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n const values = rlp.decode(serialized)\n\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized tx input. Must be array')\n }\n\n return this.fromValuesArray(values, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n * (alias of {@link Transaction.fromSerializedTx})\n *\n * @deprecated this constructor alias is deprecated and will be removed\n * in favor of the {@link Transaction.fromSerializedTx} constructor\n */\n public static fromRlpSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n return Transaction.fromSerializedTx(serialized, opts)\n }\n\n /**\n * Create a transaction from a values array.\n *\n * Format: `[nonce, gasPrice, gasLimit, to, value, data, v, r, s]`\n */\n public static fromValuesArray(values: TxValuesArray, opts: TxOptions = {}) {\n // If length is not 6, it has length 9. If v/r/s are empty Buffers, it is still an unsigned transaction\n // This happens if you get the RLP data from `raw()`\n if (values.length !== 6 && values.length !== 9) {\n throw new Error(\n 'Invalid transaction. Only expecting 6 values (for unsigned tx) or 9 values (for signed tx).'\n )\n }\n\n const [nonce, gasPrice, gasLimit, to, value, data, v, r, s] = values\n\n validateNoLeadingZeroes({ nonce, gasPrice, gasLimit, value, v, r, s })\n\n return new Transaction(\n {\n nonce,\n gasPrice,\n gasLimit,\n to,\n value,\n data,\n v,\n r,\n s,\n },\n opts\n )\n }\n\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n *\n * It is not recommended to use this constructor directly. Instead use\n * the static factory methods to assist in creating a Transaction object from\n * varying data types.\n */\n public constructor(txData: TxData, opts: TxOptions = {}) {\n super({ ...txData, type: TRANSACTION_TYPE }, opts)\n\n this.common = this._validateTxV(this.v, opts.common)\n\n this.gasPrice = new BN(toBuffer(txData.gasPrice === '' ? '0x' : txData.gasPrice))\n\n if (this.gasPrice.mul(this.gasLimit).gt(MAX_INTEGER)) {\n const msg = this._errorMsg('gas limit * gasPrice cannot exceed MAX_INTEGER (2^256-1)')\n throw new Error(msg)\n }\n this._validateCannotExceedMaxInteger({ gasPrice: this.gasPrice })\n\n if (this.common.gteHardfork('spuriousDragon')) {\n if (!this.isSigned()) {\n this.activeCapabilities.push(Capability.EIP155ReplayProtection)\n } else {\n // EIP155 spec:\n // If block.number >= 2,675,000 and v = CHAIN_ID * 2 + 35 or v = CHAIN_ID * 2 + 36\n // then when computing the hash of a transaction for purposes of signing or recovering\n // instead of hashing only the first six elements (i.e. nonce, gasprice, startgas, to, value, data)\n // hash nine elements, with v replaced by CHAIN_ID, r = 0 and s = 0.\n const v = this.v!\n const chainIdDoubled = this.common.chainIdBN().muln(2)\n\n // v and chain ID meet EIP-155 conditions\n if (v.eq(chainIdDoubled.addn(35)) || v.eq(chainIdDoubled.addn(36))) {\n this.activeCapabilities.push(Capability.EIP155ReplayProtection)\n }\n }\n }\n\n if (this.common.isActivatedEIP(3860)) {\n checkMaxInitCodeSize(this.common, this.data.length)\n }\n\n const freeze = opts?.freeze ?? true\n if (freeze) {\n Object.freeze(this)\n }\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers of the legacy transaction, in order.\n *\n * Format: `[nonce, gasPrice, gasLimit, to, value, data, v, r, s]`\n *\n * For legacy txs this is also the correct format to add transactions\n * to a block with {@link Block.fromValuesArray} (use the `serialize()` method\n * for typed txs).\n *\n * For an unsigned tx this method returns the empty Buffer values\n * for the signature parameters `v`, `r` and `s`. For an EIP-155 compliant\n * representation have a look at {@link Transaction.getMessageToSign}.\n */\n raw(): TxValuesArray {\n return [\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.gasPrice),\n bnToUnpaddedBuffer(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n bnToUnpaddedBuffer(this.value),\n this.data,\n this.v !== undefined ? bnToUnpaddedBuffer(this.v) : Buffer.from([]),\n this.r !== undefined ? bnToUnpaddedBuffer(this.r) : Buffer.from([]),\n this.s !== undefined ? bnToUnpaddedBuffer(this.s) : Buffer.from([]),\n ]\n }\n\n /**\n * Returns the serialized encoding of the legacy transaction.\n *\n * Format: `rlp([nonce, gasPrice, gasLimit, to, value, data, v, r, s])`\n *\n * For an unsigned tx this method uses the empty Buffer values for the\n * signature parameters `v`, `r` and `s` for encoding. For an EIP-155 compliant\n * representation for external signing use {@link Transaction.getMessageToSign}.\n */\n serialize(): Buffer {\n return rlp.encode(this.raw())\n }\n\n private _getMessageToSign() {\n const values = [\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.gasPrice),\n bnToUnpaddedBuffer(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n bnToUnpaddedBuffer(this.value),\n this.data,\n ]\n\n if (this.supports(Capability.EIP155ReplayProtection)) {\n values.push(toBuffer(this.common.chainIdBN()))\n values.push(unpadBuffer(toBuffer(0)))\n values.push(unpadBuffer(toBuffer(0)))\n }\n\n return values\n }\n\n /**\n * Returns the unsigned tx (hashed or raw), which can be used\n * to sign the transaction (e.g. for sending to a hardware wallet).\n *\n * Note: the raw message message format for the legacy tx is not RLP encoded\n * and you might need to do yourself with:\n *\n * ```javascript\n * import { rlp } from 'ethereumjs-util'\n * const message = tx.getMessageToSign(false)\n * const serializedMessage = rlp.encode(message) // use this for the HW wallet input\n * ```\n *\n * @param hashMessage - Return hashed message if set to true (default: true)\n */\n getMessageToSign(hashMessage: false): Buffer[]\n getMessageToSign(hashMessage?: true): Buffer\n getMessageToSign(hashMessage = true) {\n const message = this._getMessageToSign()\n if (hashMessage) {\n return rlphash(message)\n } else {\n return message\n }\n }\n\n /**\n * The amount of gas paid for the data in this tx\n */\n getDataFee(): BN {\n if (this.cache.dataFee && this.cache.dataFee.hardfork === this.common.hardfork()) {\n return this.cache.dataFee.value\n }\n\n if (Object.isFrozen(this)) {\n this.cache.dataFee = {\n value: super.getDataFee(),\n hardfork: this.common.hardfork(),\n }\n }\n\n return super.getDataFee()\n }\n\n /**\n * The up front amount that an account must have for this transaction to be valid\n */\n getUpfrontCost(): BN {\n return this.gasLimit.mul(this.gasPrice).add(this.value)\n }\n\n /**\n * Computes a sha3-256 hash of the serialized tx.\n *\n * This method can only be used for signed txs (it throws otherwise).\n * Use {@link Transaction.getMessageToSign} to get a tx hash for the purpose of signing.\n */\n hash(): Buffer {\n // In contrast to the tx type transaction implementations the `hash()` function\n // for the legacy tx does not throw if the tx is not signed.\n // This has been considered for inclusion but lead to unexpected backwards\n // compatibility problems (no concrete reference found, needs validation).\n //\n // For context see also https://github.com/ethereumjs/ethereumjs-monorepo/pull/1445,\n // September, 2021 as well as work done before.\n //\n // This should be updated along the next major version release by adding:\n //\n //if (!this.isSigned()) {\n // const msg = this._errorMsg('Cannot call hash method if transaction is not signed')\n // throw new Error(msg)\n //}\n\n if (Object.isFrozen(this)) {\n if (!this.cache.hash) {\n this.cache.hash = rlphash(this.raw())\n }\n return this.cache.hash\n }\n\n return rlphash(this.raw())\n }\n\n /**\n * Computes a sha3-256 hash which can be used to verify the signature\n */\n getMessageToVerifySignature() {\n if (!this.isSigned()) {\n const msg = this._errorMsg('This transaction is not signed')\n throw new Error(msg)\n }\n const message = this._getMessageToSign()\n return rlphash(message)\n }\n\n /**\n * Returns the public key of the sender\n */\n getSenderPublicKey(): Buffer {\n const msgHash = this.getMessageToVerifySignature()\n\n // EIP-2: All transaction signatures whose s-value is greater than secp256k1n/2 are considered invalid.\n // Reasoning: https://ethereum.stackexchange.com/a/55728\n if (this.common.gteHardfork('homestead') && this.s?.gt(N_DIV_2)) {\n const msg = this._errorMsg(\n 'Invalid Signature: s-values greater than secp256k1n/2 are considered invalid'\n )\n throw new Error(msg)\n }\n\n const { v, r, s } = this\n try {\n return ecrecover(\n msgHash,\n v!,\n bnToUnpaddedBuffer(r!),\n bnToUnpaddedBuffer(s!),\n this.supports(Capability.EIP155ReplayProtection) ? this.common.chainIdBN() : undefined\n )\n } catch (e: any) {\n const msg = this._errorMsg('Invalid Signature')\n throw new Error(msg)\n }\n }\n\n /**\n * Process the v, r, s values from the `sign` method of the base transaction.\n */\n protected _processSignature(v: number, r: Buffer, s: Buffer) {\n const vBN = new BN(v)\n if (this.supports(Capability.EIP155ReplayProtection)) {\n vBN.iadd(this.common.chainIdBN().muln(2).addn(8))\n }\n\n const opts = { ...this.txOptions, common: this.common }\n\n return Transaction.fromTxData(\n {\n nonce: this.nonce,\n gasPrice: this.gasPrice,\n gasLimit: this.gasLimit,\n to: this.to,\n value: this.value,\n data: this.data,\n v: vBN,\n r: new BN(r),\n s: new BN(s),\n },\n opts\n )\n }\n\n /**\n * Returns an object with the JSON representation of the transaction.\n */\n toJSON(): JsonTx {\n return {\n nonce: bnToHex(this.nonce),\n gasPrice: bnToHex(this.gasPrice),\n gasLimit: bnToHex(this.gasLimit),\n to: this.to !== undefined ? this.to.toString() : undefined,\n value: bnToHex(this.value),\n data: '0x' + this.data.toString('hex'),\n v: this.v !== undefined ? bnToHex(this.v) : undefined,\n r: this.r !== undefined ? bnToHex(this.r) : undefined,\n s: this.s !== undefined ? bnToHex(this.s) : undefined,\n }\n }\n\n /**\n * Validates tx's `v` value\n */\n private _validateTxV(v?: BN, common?: Common): Common {\n // Check for valid v values in the scope of a signed legacy tx\n if (v !== undefined) {\n // v is 1. not matching the EIP-155 chainId included case and...\n // v is 2. not matching the classic v=27 or v=28 case\n if (v.ltn(37) && !v.eqn(27) && !v.eqn(28)) {\n throw new Error(\n `Legacy txs need either v = 27/28 or v >= 37 (EIP-155 replay protection), got v = ${v}`\n )\n }\n }\n\n let chainIdBN\n // No unsigned tx and EIP-155 activated and chain ID included\n if (\n v !== undefined &&\n (!common || common.gteHardfork('spuriousDragon')) &&\n !v.eqn(27) &&\n !v.eqn(28)\n ) {\n if (common) {\n const chainIdDoubled = common.chainIdBN().muln(2)\n const isValidEIP155V = v.eq(chainIdDoubled.addn(35)) || v.eq(chainIdDoubled.addn(36))\n\n if (!isValidEIP155V) {\n throw new Error(\n `Incompatible EIP155-based V ${v} and chain id ${common.chainIdBN()}. See the Common parameter of the Transaction constructor to set the chain id.`\n )\n }\n } else {\n // Derive the original chain ID\n let numSub\n if (v.subn(35).isEven()) {\n numSub = 35\n } else {\n numSub = 36\n }\n // Use derived chain ID to create a proper Common\n chainIdBN = v.subn(numSub).divn(2)\n }\n }\n return this._getCommon(common, chainIdBN)\n }\n\n /**\n * @deprecated if you have called this internal method please use `tx.supports(Capabilities.EIP155ReplayProtection)` instead\n */\n private _unsignedTxImplementsEIP155() {\n return this.common.gteHardfork('spuriousDragon')\n }\n\n /**\n * @deprecated if you have called this internal method please use `tx.supports(Capabilities.EIP155ReplayProtection)` instead\n */\n private _signedTxImplementsEIP155() {\n if (!this.isSigned()) {\n const msg = this._errorMsg('This transaction is not signed')\n throw new Error(msg)\n }\n const onEIP155BlockOrLater = this.common.gteHardfork('spuriousDragon')\n\n // EIP155 spec:\n // If block.number >= 2,675,000 and v = CHAIN_ID * 2 + 35 or v = CHAIN_ID * 2 + 36, then when computing the hash of a transaction for purposes of signing or recovering, instead of hashing only the first six elements (i.e. nonce, gasprice, startgas, to, value, data), hash nine elements, with v replaced by CHAIN_ID, r = 0 and s = 0.\n const v = this.v!\n\n const chainIdDoubled = this.common.chainIdBN().muln(2)\n\n const vAndChainIdMeetEIP155Conditions =\n v.eq(chainIdDoubled.addn(35)) || v.eq(chainIdDoubled.addn(36))\n\n return vAndChainIdMeetEIP155Conditions && onEIP155BlockOrLater\n }\n\n /**\n * Return a compact error string representation of the object\n */\n public errorStr() {\n let errorStr = this._getSharedErrorPostfix()\n errorStr += ` gasPrice=${this.gasPrice}`\n return errorStr\n }\n\n /**\n * Internal helper function to create an annotated error message\n *\n * @param msg Base error message\n * @hidden\n */\n protected _errorMsg(msg: string) {\n return `${msg} (${this.errorStr()})`\n }\n}\n","import { BN, toBuffer } from 'ethereumjs-util'\nimport {\n TxOptions,\n TypedTransaction,\n TxData,\n AccessListEIP2930TxData,\n FeeMarketEIP1559TxData,\n} from './types'\nimport { Transaction, AccessListEIP2930Transaction, FeeMarketEIP1559Transaction } from '.'\nimport Common from '@ethereumjs/common'\n\nexport default class TransactionFactory {\n // It is not possible to instantiate a TransactionFactory object.\n private constructor() {}\n\n /**\n * Create a transaction from a `txData` object\n *\n * @param txData - The transaction data. The `type` field will determine which transaction type is returned (if undefined, creates a legacy transaction)\n * @param txOptions - Options to pass on to the constructor of the transaction\n */\n public static fromTxData(\n txData: TxData | AccessListEIP2930TxData | FeeMarketEIP1559TxData,\n txOptions: TxOptions = {}\n ): TypedTransaction {\n if (!('type' in txData) || txData.type === undefined) {\n // Assume legacy transaction\n return Transaction.fromTxData(txData, txOptions)\n } else {\n const txType = new BN(toBuffer(txData.type)).toNumber()\n if (txType === 0) {\n return Transaction.fromTxData(txData, txOptions)\n } else if (txType === 1) {\n return AccessListEIP2930Transaction.fromTxData(txData, txOptions)\n } else if (txType === 2) {\n return FeeMarketEIP1559Transaction.fromTxData(txData, txOptions)\n } else {\n throw new Error(`Tx instantiation with type ${txType} not supported`)\n }\n }\n }\n\n /**\n * This method tries to decode serialized data.\n *\n * @param data - The data Buffer\n * @param txOptions - The transaction options\n */\n public static fromSerializedData(data: Buffer, txOptions: TxOptions = {}): TypedTransaction {\n if (data[0] <= 0x7f) {\n // Determine the type.\n let EIP: number\n switch (data[0]) {\n case 1:\n EIP = 2930\n break\n case 2:\n EIP = 1559\n break\n default:\n throw new Error(`TypedTransaction with ID ${data[0]} unknown`)\n }\n if (EIP === 1559) {\n return FeeMarketEIP1559Transaction.fromSerializedTx(data, txOptions)\n } else {\n // EIP === 2930\n return AccessListEIP2930Transaction.fromSerializedTx(data, txOptions)\n }\n } else {\n return Transaction.fromSerializedTx(data, txOptions)\n }\n }\n\n /**\n * When decoding a BlockBody, in the transactions field, a field is either:\n * A Buffer (a TypedTransaction - encoded as TransactionType || rlp(TransactionPayload))\n * A Buffer[] (Legacy Transaction)\n * This method returns the right transaction.\n *\n * @param data - A Buffer or Buffer[]\n * @param txOptions - The transaction options\n */\n public static fromBlockBodyData(data: Buffer | Buffer[], txOptions: TxOptions = {}) {\n if (Buffer.isBuffer(data)) {\n return this.fromSerializedData(data, txOptions)\n } else if (Array.isArray(data)) {\n // It is a legacy transaction\n return Transaction.fromValuesArray(data, txOptions)\n } else {\n throw new Error('Cannot decode transaction: unknown type input')\n }\n }\n\n /**\n * This helper method allows one to retrieve the class which matches the transactionID\n * If transactionID is undefined, returns the legacy transaction class.\n * @deprecated - This method is deprecated and will be removed on the next major release\n * @param transactionID\n * @param _common - This option is not used\n */\n public static getTransactionClass(transactionID: number = 0, _common?: Common) {\n const legacyTxn = transactionID == 0 || (transactionID >= 0x80 && transactionID <= 0xff)\n\n if (legacyTxn) {\n return Transaction\n }\n\n switch (transactionID) {\n case 1:\n return AccessListEIP2930Transaction\n case 2:\n return FeeMarketEIP1559Transaction\n default:\n throw new Error(`TypedTransaction with ID ${transactionID} unknown`)\n }\n }\n}\n","import { BN, AddressLike, BNLike, BufferLike, PrefixedHexString } from 'ethereumjs-util'\nimport Common from '@ethereumjs/common'\nimport { default as Transaction } from './legacyTransaction'\nimport { default as AccessListEIP2930Transaction } from './eip2930Transaction'\nimport { default as FeeMarketEIP1559Transaction } from './eip1559Transaction'\n\n/**\n * Can be used in conjunction with {@link Transaction.supports}\n * to query on tx capabilities\n */\nexport enum Capability {\n /**\n * Tx supports EIP-155 replay protection\n * See: [155](https://eips.ethereum.org/EIPS/eip-155) Replay Attack Protection EIP\n */\n EIP155ReplayProtection = 155,\n\n /**\n * Tx supports EIP-1559 gas fee market mechansim\n * See: [1559](https://eips.ethereum.org/EIPS/eip-1559) Fee Market EIP\n */\n EIP1559FeeMarket = 1559,\n\n /**\n * Tx is a typed transaction as defined in EIP-2718\n * See: [2718](https://eips.ethereum.org/EIPS/eip-2718) Transaction Type EIP\n */\n EIP2718TypedTransaction = 2718,\n\n /**\n * Tx supports access list generation as defined in EIP-2930\n * See: [2930](https://eips.ethereum.org/EIPS/eip-2930) Access Lists EIP\n */\n EIP2930AccessLists = 2930,\n}\n\n/**\n * The options for initializing a {@link Transaction}.\n */\nexport interface TxOptions {\n /**\n * A {@link Common} object defining the chain and hardfork for the transaction.\n *\n * Object will be internally copied so that tx behavior don't incidentally\n * change on future HF changes.\n *\n * Default: {@link Common} object set to `mainnet` and the default hardfork as defined in the {@link Common} class.\n *\n * Current default hardfork: `istanbul`\n */\n common?: Common\n /**\n * A transaction object by default gets frozen along initialization. This gives you\n * strong additional security guarantees on the consistency of the tx parameters.\n * It also enables tx hash caching when the `hash()` method is called multiple times.\n *\n * If you need to deactivate the tx freeze - e.g. because you want to subclass tx and\n * add additional properties - it is strongly encouraged that you do the freeze yourself\n * within your code instead.\n *\n * Default: true\n */\n freeze?: boolean\n}\n\n/*\n * Access List types\n */\n\nexport type AccessListItem = {\n address: PrefixedHexString\n storageKeys: PrefixedHexString[]\n}\n\n/*\n * An Access List as a tuple of [address: Buffer, storageKeys: Buffer[]]\n */\nexport type AccessListBufferItem = [Buffer, Buffer[]]\nexport type AccessListBuffer = AccessListBufferItem[]\nexport type AccessList = AccessListItem[]\n\nexport function isAccessListBuffer(\n input: AccessListBuffer | AccessList\n): input is AccessListBuffer {\n if (input.length === 0) {\n return true\n }\n const firstItem = input[0]\n if (Array.isArray(firstItem)) {\n return true\n }\n return false\n}\n\nexport function isAccessList(input: AccessListBuffer | AccessList): input is AccessList {\n return !isAccessListBuffer(input) // This is exactly the same method, except the output is negated.\n}\n\n/**\n * Encompassing type for all transaction types.\n *\n * Note that this also includes legacy txs which are\n * referenced as {@link Transaction} for compatibility reasons.\n */\nexport type TypedTransaction =\n | Transaction\n | AccessListEIP2930Transaction\n | FeeMarketEIP1559Transaction\n\n/**\n * Legacy {@link Transaction} Data\n */\nexport type TxData = {\n /**\n * The transaction's nonce.\n */\n nonce?: BNLike\n\n /**\n * The transaction's gas price.\n */\n gasPrice?: BNLike\n\n /**\n * The transaction's gas limit.\n */\n gasLimit?: BNLike\n\n /**\n * The transaction's the address is sent to.\n */\n to?: AddressLike\n\n /**\n * The amount of Ether sent.\n */\n value?: BNLike\n\n /**\n * This will contain the data of the message or the init of a contract.\n */\n data?: BufferLike\n\n /**\n * EC recovery ID.\n */\n v?: BNLike\n\n /**\n * EC signature parameter.\n */\n r?: BNLike\n\n /**\n * EC signature parameter.\n */\n s?: BNLike\n\n /**\n * The transaction type\n */\n\n type?: BNLike\n}\n\n/**\n * {@link AccessListEIP2930Transaction} data.\n */\nexport interface AccessListEIP2930TxData extends TxData {\n /**\n * The transaction's chain ID\n */\n chainId?: BNLike\n\n /**\n * The access list which contains the addresses/storage slots which the transaction wishes to access\n */\n accessList?: AccessListBuffer | AccessList\n}\n\n/**\n * {@link FeeMarketEIP1559Transaction} data.\n */\nexport interface FeeMarketEIP1559TxData extends AccessListEIP2930TxData {\n /**\n * The transaction's gas price, inherited from {@link Transaction}. This property is not used for EIP1559\n * transactions and should always be undefined for this specific transaction type.\n */\n gasPrice?: never\n /**\n * The maximum inclusion fee per gas (this fee is given to the miner)\n */\n maxPriorityFeePerGas?: BNLike\n /**\n * The maximum total fee\n */\n maxFeePerGas?: BNLike\n}\n\n/**\n * Buffer values array for a legacy {@link Transaction}\n */\nexport type TxValuesArray = Buffer[]\n\n/**\n * Buffer values array for an {@link AccessListEIP2930Transaction}\n */\nexport type AccessListEIP2930ValuesArray = [\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n AccessListBuffer,\n Buffer?,\n Buffer?,\n Buffer?\n]\n\n/**\n * Buffer values array for a {@link FeeMarketEIP1559Transaction}\n */\nexport type FeeMarketEIP1559ValuesArray = [\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n AccessListBuffer,\n Buffer?,\n Buffer?,\n Buffer?\n]\n\ntype JsonAccessListItem = { address: string; storageKeys: string[] }\n\n/**\n * Generic interface for all tx types with a\n * JSON representation of a transaction.\n *\n * Note that all values are marked as optional\n * and not all the values are present on all tx types\n * (an EIP1559 tx e.g. lacks a `gasPrice`).\n */\nexport interface JsonTx {\n nonce?: string\n gasPrice?: string\n gasLimit?: string\n to?: string\n data?: string\n v?: string\n r?: string\n s?: string\n value?: string\n chainId?: string\n accessList?: JsonAccessListItem[]\n type?: string\n maxPriorityFeePerGas?: string\n maxFeePerGas?: string\n}\n\n/**\n * A const defining secp256k1n/2\n */\nexport const N_DIV_2 = new BN(\n '7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0',\n 16\n)\n","import Common from '@ethereumjs/common'\nimport { bufferToHex, setLengthLeft, toBuffer } from 'ethereumjs-util'\nimport { AccessList, AccessListBuffer, AccessListItem, isAccessList } from './types'\n\nexport function checkMaxInitCodeSize(common: Common, length: number) {\n if (length > common.param('vm', 'maxInitCodeSize')) {\n throw new Error(\n `the initcode size of this transaction is too large: it is ${length} while the max is ${common.param(\n 'vm',\n 'maxInitCodeSize'\n )}`\n )\n }\n}\n\nexport class AccessLists {\n public static getAccessListData(accessList: AccessListBuffer | AccessList) {\n let AccessListJSON\n let bufferAccessList\n if (accessList && isAccessList(accessList)) {\n AccessListJSON = accessList\n const newAccessList: AccessListBuffer = []\n\n for (let i = 0; i < accessList.length; i++) {\n const item: AccessListItem = accessList[i]\n const addressBuffer = toBuffer(item.address)\n const storageItems: Buffer[] = []\n for (let index = 0; index < item.storageKeys.length; index++) {\n storageItems.push(toBuffer(item.storageKeys[index]))\n }\n newAccessList.push([addressBuffer, storageItems])\n }\n bufferAccessList = newAccessList\n } else {\n bufferAccessList = accessList ?? []\n // build the JSON\n const json: AccessList = []\n for (let i = 0; i < bufferAccessList.length; i++) {\n const data = bufferAccessList[i]\n const address = bufferToHex(data[0])\n const storageKeys: string[] = []\n for (let item = 0; item < data[1].length; item++) {\n storageKeys.push(bufferToHex(data[1][item]))\n }\n const jsonItem: AccessListItem = {\n address,\n storageKeys,\n }\n json.push(jsonItem)\n }\n AccessListJSON = json\n }\n\n return {\n AccessListJSON,\n accessList: bufferAccessList,\n }\n }\n\n public static verifyAccessList(accessList: AccessListBuffer) {\n for (let key = 0; key < accessList.length; key++) {\n const accessListItem = accessList[key]\n const address = accessListItem[0]\n const storageSlots = accessListItem[1]\n if ((accessListItem)[2] !== undefined) {\n throw new Error(\n 'Access list item cannot have 3 elements. It can only have an address, and an array of storage slots.'\n )\n }\n if (address.length != 20) {\n throw new Error('Invalid EIP-2930 transaction: address length should be 20 bytes')\n }\n for (let storageSlot = 0; storageSlot < storageSlots.length; storageSlot++) {\n if (storageSlots[storageSlot].length != 32) {\n throw new Error('Invalid EIP-2930 transaction: storage slot length should be 32 bytes')\n }\n }\n }\n }\n\n public static getAccessListJSON(accessList: AccessListBuffer) {\n const accessListJSON = []\n for (let index = 0; index < accessList.length; index++) {\n const item: any = accessList[index]\n const JSONItem: any = {\n address: '0x' + setLengthLeft(item[0], 20).toString('hex'),\n storageKeys: [],\n }\n const storageSlots: Buffer[] = item[1]\n for (let slot = 0; slot < storageSlots.length; slot++) {\n const storageSlot = storageSlots[slot]\n JSONItem.storageKeys.push('0x' + setLengthLeft(storageSlot, 32).toString('hex'))\n }\n accessListJSON.push(JSONItem)\n }\n return accessListJSON\n }\n\n public static getDataFeeEIP2930(accessList: AccessListBuffer, common: Common): number {\n const accessListStorageKeyCost = common.param('gasPrices', 'accessListStorageKeyCost')\n const accessListAddressCost = common.param('gasPrices', 'accessListAddressCost')\n\n let slots = 0\n for (let index = 0; index < accessList.length; index++) {\n const item = accessList[index]\n const storageSlots = item[1]\n slots += storageSlots.length\n }\n\n const addresses = accessList.length\n return addresses * accessListAddressCost + slots * accessListStorageKeyCost\n }\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","import assert from 'assert'\nimport { BN, rlp } from './externals'\nimport {\n privateKeyVerify,\n publicKeyCreate,\n publicKeyVerify,\n publicKeyConvert,\n} from 'ethereum-cryptography/secp256k1'\nimport { stripHexPrefix } from './internal'\nimport { KECCAK256_RLP, KECCAK256_NULL } from './constants'\nimport { zeros, bufferToHex, toBuffer } from './bytes'\nimport { keccak, keccak256, keccakFromString, rlphash } from './hash'\nimport { assertIsString, assertIsHexString, assertIsBuffer } from './helpers'\nimport { BNLike, BufferLike, bnToUnpaddedBuffer, toType, TypeOutput } from './types'\n\nexport interface AccountData {\n nonce?: BNLike\n balance?: BNLike\n stateRoot?: BufferLike\n codeHash?: BufferLike\n}\n\nexport class Account {\n nonce: BN\n balance: BN\n stateRoot: Buffer\n codeHash: Buffer\n\n static fromAccountData(accountData: AccountData) {\n const { nonce, balance, stateRoot, codeHash } = accountData\n\n return new Account(\n nonce ? new BN(toBuffer(nonce)) : undefined,\n balance ? new BN(toBuffer(balance)) : undefined,\n stateRoot ? toBuffer(stateRoot) : undefined,\n codeHash ? toBuffer(codeHash) : undefined\n )\n }\n\n public static fromRlpSerializedAccount(serialized: Buffer) {\n const values = rlp.decode(serialized)\n\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized account input. Must be array')\n }\n\n return this.fromValuesArray(values)\n }\n\n public static fromValuesArray(values: Buffer[]) {\n const [nonce, balance, stateRoot, codeHash] = values\n\n return new Account(new BN(nonce), new BN(balance), stateRoot, codeHash)\n }\n\n /**\n * This constructor assigns and validates the values.\n * Use the static factory methods to assist in creating an Account from varying data types.\n */\n constructor(\n nonce = new BN(0),\n balance = new BN(0),\n stateRoot = KECCAK256_RLP,\n codeHash = KECCAK256_NULL\n ) {\n this.nonce = nonce\n this.balance = balance\n this.stateRoot = stateRoot\n this.codeHash = codeHash\n\n this._validate()\n }\n\n private _validate() {\n if (this.nonce.lt(new BN(0))) {\n throw new Error('nonce must be greater than zero')\n }\n if (this.balance.lt(new BN(0))) {\n throw new Error('balance must be greater than zero')\n }\n if (this.stateRoot.length !== 32) {\n throw new Error('stateRoot must have a length of 32')\n }\n if (this.codeHash.length !== 32) {\n throw new Error('codeHash must have a length of 32')\n }\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers for the account, in order.\n */\n raw(): Buffer[] {\n return [\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.balance),\n this.stateRoot,\n this.codeHash,\n ]\n }\n\n /**\n * Returns the RLP serialization of the account as a `Buffer`.\n */\n serialize(): Buffer {\n return rlp.encode(this.raw())\n }\n\n /**\n * Returns a `Boolean` determining if the account is a contract.\n */\n isContract(): boolean {\n return !this.codeHash.equals(KECCAK256_NULL)\n }\n\n /**\n * Returns a `Boolean` determining if the account is empty complying to the definition of\n * account emptiness in [EIP-161](https://eips.ethereum.org/EIPS/eip-161):\n * \"An account is considered empty when it has no code and zero nonce and zero balance.\"\n */\n isEmpty(): boolean {\n return this.balance.isZero() && this.nonce.isZero() && this.codeHash.equals(KECCAK256_NULL)\n }\n}\n\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too.\n */\nexport const isValidAddress = function (hexAddress: string): boolean {\n try {\n assertIsString(hexAddress)\n } catch (e: any) {\n return false\n }\n\n return /^0x[0-9a-fA-F]{40}$/.test(hexAddress)\n}\n\n/**\n * Returns a checksummed address.\n *\n * If an eip1191ChainId is provided, the chainId will be included in the checksum calculation. This\n * has the effect of checksummed addresses for one chain having invalid checksums for others.\n * For more details see [EIP-1191](https://eips.ethereum.org/EIPS/eip-1191).\n *\n * WARNING: Checksums with and without the chainId will differ and the EIP-1191 checksum is not\n * backwards compatible to the original widely adopted checksum format standard introduced in\n * [EIP-55](https://eips.ethereum.org/EIPS/eip-55), so this will break in existing applications.\n * Usage of this EIP is therefore discouraged unless you have a very targeted use case.\n */\nexport const toChecksumAddress = function (hexAddress: string, eip1191ChainId?: BNLike): string {\n assertIsHexString(hexAddress)\n const address = stripHexPrefix(hexAddress).toLowerCase()\n\n let prefix = ''\n if (eip1191ChainId) {\n const chainId = toType(eip1191ChainId, TypeOutput.BN)\n prefix = chainId.toString() + '0x'\n }\n\n const hash = keccakFromString(prefix + address).toString('hex')\n let ret = '0x'\n\n for (let i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase()\n } else {\n ret += address[i]\n }\n }\n\n return ret\n}\n\n/**\n * Checks if the address is a valid checksummed address.\n *\n * See toChecksumAddress' documentation for details about the eip1191ChainId parameter.\n */\nexport const isValidChecksumAddress = function (\n hexAddress: string,\n eip1191ChainId?: BNLike\n): boolean {\n return isValidAddress(hexAddress) && toChecksumAddress(hexAddress, eip1191ChainId) === hexAddress\n}\n\n/**\n * Generates an address of a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\nexport const generateAddress = function (from: Buffer, nonce: Buffer): Buffer {\n assertIsBuffer(from)\n assertIsBuffer(nonce)\n const nonceBN = new BN(nonce)\n\n if (nonceBN.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n return rlphash([from, null]).slice(-20)\n }\n\n // Only take the lower 160bits of the hash\n return rlphash([from, Buffer.from(nonceBN.toArray())]).slice(-20)\n}\n\n/**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\nexport const generateAddress2 = function (from: Buffer, salt: Buffer, initCode: Buffer): Buffer {\n assertIsBuffer(from)\n assertIsBuffer(salt)\n assertIsBuffer(initCode)\n\n assert(from.length === 20)\n assert(salt.length === 32)\n\n const address = keccak256(\n Buffer.concat([Buffer.from('ff', 'hex'), from, salt, keccak256(initCode)])\n )\n\n return address.slice(-20)\n}\n\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n */\nexport const isValidPrivate = function (privateKey: Buffer): boolean {\n return privateKeyVerify(privateKey)\n}\n\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexport const isValidPublic = function (publicKey: Buffer, sanitize: boolean = false): boolean {\n assertIsBuffer(publicKey)\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]))\n }\n\n if (!sanitize) {\n return false\n }\n\n return publicKeyVerify(publicKey)\n}\n\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexport const pubToAddress = function (pubKey: Buffer, sanitize: boolean = false): Buffer {\n assertIsBuffer(pubKey)\n if (sanitize && pubKey.length !== 64) {\n pubKey = Buffer.from(publicKeyConvert(pubKey, false).slice(1))\n }\n assert(pubKey.length === 64)\n // Only take the lower 160bits of the hash\n return keccak(pubKey).slice(-20)\n}\nexport const publicToAddress = pubToAddress\n\n/**\n * Returns the ethereum public key of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexport const privateToPublic = function (privateKey: Buffer): Buffer {\n assertIsBuffer(privateKey)\n // skip the type flag and use the X, Y points\n return Buffer.from(publicKeyCreate(privateKey, false)).slice(1)\n}\n\n/**\n * Returns the ethereum address of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexport const privateToAddress = function (privateKey: Buffer): Buffer {\n return publicToAddress(privateToPublic(privateKey))\n}\n\n/**\n * Converts a public key to the Ethereum format.\n */\nexport const importPublic = function (publicKey: Buffer): Buffer {\n assertIsBuffer(publicKey)\n if (publicKey.length !== 64) {\n publicKey = Buffer.from(publicKeyConvert(publicKey, false).slice(1))\n }\n return publicKey\n}\n\n/**\n * Returns the zero address.\n */\nexport const zeroAddress = function (): string {\n const addressLength = 20\n const addr = zeros(addressLength)\n return bufferToHex(addr)\n}\n\n/**\n * Checks if a given address is the zero address.\n */\nexport const isZeroAddress = function (hexAddress: string): boolean {\n try {\n assertIsString(hexAddress)\n } catch (e: any) {\n return false\n }\n\n const zeroAddr = zeroAddress()\n return zeroAddr === hexAddress\n}\n","import assert from 'assert'\nimport { BN } from './externals'\nimport { toBuffer, zeros } from './bytes'\nimport {\n isValidAddress,\n pubToAddress,\n privateToAddress,\n generateAddress,\n generateAddress2,\n} from './account'\n\nexport class Address {\n public readonly buf: Buffer\n\n constructor(buf: Buffer) {\n assert(buf.length === 20, 'Invalid address length')\n this.buf = buf\n }\n\n /**\n * Returns the zero address.\n */\n static zero(): Address {\n return new Address(zeros(20))\n }\n\n /**\n * Returns an Address object from a hex-encoded string.\n * @param str - Hex-encoded address\n */\n static fromString(str: string): Address {\n assert(isValidAddress(str), 'Invalid address')\n return new Address(toBuffer(str))\n }\n\n /**\n * Returns an address for a given public key.\n * @param pubKey The two points of an uncompressed key\n */\n static fromPublicKey(pubKey: Buffer): Address {\n assert(Buffer.isBuffer(pubKey), 'Public key should be Buffer')\n const buf = pubToAddress(pubKey)\n return new Address(buf)\n }\n\n /**\n * Returns an address for a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\n static fromPrivateKey(privateKey: Buffer): Address {\n assert(Buffer.isBuffer(privateKey), 'Private key should be Buffer')\n const buf = privateToAddress(privateKey)\n return new Address(buf)\n }\n\n /**\n * Generates an address for a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\n static generate(from: Address, nonce: BN): Address {\n assert(BN.isBN(nonce))\n return new Address(generateAddress(from.buf, nonce.toArrayLike(Buffer)))\n }\n\n /**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\n static generate2(from: Address, salt: Buffer, initCode: Buffer): Address {\n assert(Buffer.isBuffer(salt))\n assert(Buffer.isBuffer(initCode))\n return new Address(generateAddress2(from.buf, salt, initCode))\n }\n\n /**\n * Is address equal to another.\n */\n equals(address: Address): boolean {\n return this.buf.equals(address.buf)\n }\n\n /**\n * Is address zero.\n */\n isZero(): boolean {\n return this.equals(Address.zero())\n }\n\n /**\n * True if address is in the address range defined\n * by EIP-1352\n */\n isPrecompileOrSystemAddress(): boolean {\n const addressBN = new BN(this.buf)\n const rangeMin = new BN(0)\n const rangeMax = new BN('ffff', 'hex')\n\n return addressBN.gte(rangeMin) && addressBN.lte(rangeMax)\n }\n\n /**\n * Returns hex encoding of address.\n */\n toString(): string {\n return '0x' + this.buf.toString('hex')\n }\n\n /**\n * Returns Buffer representation of address.\n */\n toBuffer(): Buffer {\n return Buffer.from(this.buf)\n }\n}\n","import { BN } from './externals'\nimport { stripHexPrefix, padToEven, isHexString, isHexPrefixed } from './internal'\nimport {\n PrefixedHexString,\n TransformableToArray,\n TransformableToBuffer,\n NestedBufferArray,\n NestedUint8Array,\n} from './types'\nimport { assertIsBuffer, assertIsArray, assertIsHexString } from './helpers'\n\n/**\n * Converts a `Number` into a hex `String`\n * @param {Number} i\n * @return {String}\n */\nexport const intToHex = function (i: number) {\n if (!Number.isSafeInteger(i) || i < 0) {\n throw new Error(`Received an invalid integer type: ${i}`)\n }\n return `0x${i.toString(16)}`\n}\n\n/**\n * Converts an `Number` to a `Buffer`\n * @param {Number} i\n * @return {Buffer}\n */\nexport const intToBuffer = function (i: number) {\n const hex = intToHex(i)\n return Buffer.from(padToEven(hex.slice(2)), 'hex')\n}\n\n/**\n * Returns a buffer filled with 0s.\n * @param bytes the number of bytes the buffer should be\n */\nexport const zeros = function (bytes: number): Buffer {\n return Buffer.allocUnsafe(bytes).fill(0)\n}\n\n/**\n * Pads a `Buffer` with zeros till it has `length` bytes.\n * Truncates the beginning or end of input if its length exceeds `length`.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @param right whether to start padding form the left or right\n * @return (Buffer)\n */\nconst setLength = function (msg: Buffer, length: number, right: boolean) {\n const buf = zeros(length)\n if (right) {\n if (msg.length < length) {\n msg.copy(buf)\n return buf\n }\n return msg.slice(0, length)\n } else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length)\n return buf\n }\n return msg.slice(-length)\n }\n}\n\n/**\n * Left Pads a `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexport const setLengthLeft = function (msg: Buffer, length: number) {\n assertIsBuffer(msg)\n return setLength(msg, length, false)\n}\n\n/**\n * Right Pads a `Buffer` with trailing zeros till it has `length` bytes.\n * it truncates the end if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexport const setLengthRight = function (msg: Buffer, length: number) {\n assertIsBuffer(msg)\n return setLength(msg, length, true)\n}\n\n/**\n * Trims leading zeros from a `Buffer`, `String` or `Number[]`.\n * @param a (Buffer|Array|String)\n * @return (Buffer|Array|String)\n */\nconst stripZeros = function (a: any): Buffer | number[] | string {\n let first = a[0]\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1)\n first = a[0]\n }\n return a\n}\n\n/**\n * Trims leading zeros from a `Buffer`.\n * @param a (Buffer)\n * @return (Buffer)\n */\nexport const unpadBuffer = function (a: Buffer): Buffer {\n assertIsBuffer(a)\n return stripZeros(a) as Buffer\n}\n\n/**\n * Trims leading zeros from an `Array` (of numbers).\n * @param a (number[])\n * @return (number[])\n */\nexport const unpadArray = function (a: number[]): number[] {\n assertIsArray(a)\n return stripZeros(a) as number[]\n}\n\n/**\n * Trims leading zeros from a hex-prefixed `String`.\n * @param a (String)\n * @return (String)\n */\nexport const unpadHexString = function (a: string): string {\n assertIsHexString(a)\n a = stripHexPrefix(a)\n return stripZeros(a) as string\n}\n\nexport type ToBufferInputTypes =\n | PrefixedHexString\n | number\n | BN\n | Buffer\n | Uint8Array\n | number[]\n | TransformableToArray\n | TransformableToBuffer\n | null\n | undefined\n\n/**\n * Attempts to turn a value into a `Buffer`.\n * Inputs supported: `Buffer`, `String` (hex-prefixed), `Number`, null/undefined, `BN` and other objects\n * with a `toArray()` or `toBuffer()` method.\n * @param v the value\n */\nexport const toBuffer = function (v: ToBufferInputTypes): Buffer {\n if (v === null || v === undefined) {\n return Buffer.allocUnsafe(0)\n }\n\n if (Buffer.isBuffer(v)) {\n return Buffer.from(v)\n }\n\n if (Array.isArray(v) || v instanceof Uint8Array) {\n return Buffer.from(v as Uint8Array)\n }\n\n if (typeof v === 'string') {\n if (!isHexString(v)) {\n throw new Error(\n `Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: ${v}`\n )\n }\n return Buffer.from(padToEven(stripHexPrefix(v)), 'hex')\n }\n\n if (typeof v === 'number') {\n return intToBuffer(v)\n }\n\n if (BN.isBN(v)) {\n if (v.isNeg()) {\n throw new Error(`Cannot convert negative BN to buffer. Given: ${v}`)\n }\n return v.toArrayLike(Buffer)\n }\n\n if (v.toArray) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray())\n }\n\n if (v.toBuffer) {\n return Buffer.from(v.toBuffer())\n }\n\n throw new Error('invalid type')\n}\n\n/**\n * Converts a `Buffer` to a `Number`.\n * @param buf `Buffer` object to convert\n * @throws If the input number exceeds 53 bits.\n */\nexport const bufferToInt = function (buf: Buffer): number {\n return new BN(toBuffer(buf)).toNumber()\n}\n\n/**\n * Converts a `Buffer` into a `0x`-prefixed hex `String`.\n * @param buf `Buffer` object to convert\n */\nexport const bufferToHex = function (buf: Buffer): string {\n buf = toBuffer(buf)\n return '0x' + buf.toString('hex')\n}\n\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param num Signed integer value\n */\nexport const fromSigned = function (num: Buffer): BN {\n return new BN(num).fromTwos(256)\n}\n\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param num\n */\nexport const toUnsigned = function (num: BN): Buffer {\n return Buffer.from(num.toTwos(256).toArray())\n}\n\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\".\n */\nexport const addHexPrefix = function (str: string): string {\n if (typeof str !== 'string') {\n return str\n }\n\n return isHexPrefixed(str) ? str : '0x' + str\n}\n\n/**\n * Returns the utf8 string representation from a hex string.\n *\n * Examples:\n *\n * Input 1: '657468657265756d000000000000000000000000000000000000000000000000'\n * Input 2: '657468657265756d'\n * Input 3: '000000000000000000000000000000000000000000000000657468657265756d'\n *\n * Output (all 3 input variants): 'ethereum'\n *\n * Note that this method is not intended to be used with hex strings\n * representing quantities in both big endian or little endian notation.\n *\n * @param string Hex string, should be `0x` prefixed\n * @return Utf8 string\n */\nexport const toUtf8 = function (hex: string): string {\n const zerosRegexp = /^(00)+|(00)+$/g\n hex = stripHexPrefix(hex)\n if (hex.length % 2 !== 0) {\n throw new Error('Invalid non-even hex string input for toUtf8() provided')\n }\n const bufferVal = Buffer.from(hex.replace(zerosRegexp, ''), 'hex')\n\n return bufferVal.toString('utf8')\n}\n\n/**\n * Converts a `Buffer` or `Array` to JSON.\n * @param ba (Buffer|Array)\n * @return (Array|String|null)\n */\nexport const baToJSON = function (ba: any): any {\n if (Buffer.isBuffer(ba)) {\n return `0x${ba.toString('hex')}`\n } else if (ba instanceof Array) {\n const array = []\n for (let i = 0; i < ba.length; i++) {\n array.push(baToJSON(ba[i]))\n }\n return array\n }\n}\n\n/**\n * Checks provided Buffers for leading zeroes and throws if found.\n *\n * Examples:\n *\n * Valid values: 0x1, 0x, 0x01, 0x1234\n * Invalid values: 0x0, 0x00, 0x001, 0x0001\n *\n * Note: This method is useful for validating that RLP encoded integers comply with the rule that all\n * integer values encoded to RLP must be in the most compact form and contain no leading zero bytes\n * @param values An object containing string keys and Buffer values\n * @throws if any provided value is found to have leading zero bytes\n */\nexport const validateNoLeadingZeroes = function (values: { [key: string]: Buffer | undefined }) {\n for (const [k, v] of Object.entries(values)) {\n if (v !== undefined && v.length > 0 && v[0] === 0) {\n throw new Error(`${k} cannot have leading zeroes, received: ${v.toString('hex')}`)\n }\n }\n}\n\n/**\n * Converts a {@link Uint8Array} or {@link NestedUint8Array} to {@link Buffer} or {@link NestedBufferArray}\n */\nexport function arrToBufArr(arr: Uint8Array): Buffer\nexport function arrToBufArr(arr: NestedUint8Array): NestedBufferArray\nexport function arrToBufArr(arr: Uint8Array | NestedUint8Array): Buffer | NestedBufferArray\nexport function arrToBufArr(arr: Uint8Array | NestedUint8Array): Buffer | NestedBufferArray {\n if (!Array.isArray(arr)) {\n return Buffer.from(arr)\n }\n return arr.map((a) => arrToBufArr(a))\n}\n\n/**\n * Converts a {@link Buffer} or {@link NestedBufferArray} to {@link Uint8Array} or {@link NestedUint8Array}\n */\nexport function bufArrToArr(arr: Buffer): Uint8Array\nexport function bufArrToArr(arr: NestedBufferArray): NestedUint8Array\nexport function bufArrToArr(arr: Buffer | NestedBufferArray): Uint8Array | NestedUint8Array\nexport function bufArrToArr(arr: Buffer | NestedBufferArray): Uint8Array | NestedUint8Array {\n if (!Array.isArray(arr)) {\n return Uint8Array.from(arr ?? [])\n }\n return arr.map((a) => bufArrToArr(a))\n}\n","import { Buffer } from 'buffer'\nimport { BN } from './externals'\n\n/**\n * 2^64-1\n */\nexport const MAX_UINT64 = new BN('ffffffffffffffff', 16)\n\n/**\n * The max integer that the evm can handle (2^256-1)\n */\nexport const MAX_INTEGER = new BN(\n 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',\n 16\n)\n\n/**\n * 2^256\n */\nexport const TWO_POW256 = new BN(\n '10000000000000000000000000000000000000000000000000000000000000000',\n 16\n)\n\n/**\n * Keccak-256 hash of null\n */\nexport const KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'\n\n/**\n * Keccak-256 hash of null\n */\nexport const KECCAK256_NULL = Buffer.from(KECCAK256_NULL_S, 'hex')\n\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexport const KECCAK256_RLP_ARRAY_S =\n '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'\n\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexport const KECCAK256_RLP_ARRAY = Buffer.from(KECCAK256_RLP_ARRAY_S, 'hex')\n\n/**\n * Keccak-256 hash of the RLP of null\n */\nexport const KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'\n\n/**\n * Keccak-256 hash of the RLP of null\n */\nexport const KECCAK256_RLP = Buffer.from(KECCAK256_RLP_S, 'hex')\n","/**\n * Re-exports commonly used modules:\n * * Exports [`BN`](https://github.com/indutny/bn.js), [`rlp`](https://github.com/ethereumjs/rlp).\n * @packageDocumentation\n */\n\nimport BN from 'bn.js'\nimport * as rlp from 'rlp'\n\n/**\n * [`BN`](https://github.com/indutny/bn.js)\n */\nexport { BN }\n\n/**\n * [`rlp`](https://github.com/ethereumjs/rlp)\n */\nexport { rlp }\n","import { keccak224, keccak384, keccak256 as k256, keccak512 } from 'ethereum-cryptography/keccak'\nconst createHash = require('create-hash')\nimport { rlp } from './externals'\nimport { toBuffer, setLengthLeft } from './bytes'\nimport { assertIsString, assertIsBuffer, assertIsArray, assertIsHexString } from './helpers'\n\n/**\n * Creates Keccak hash of a Buffer input\n * @param a The input data (Buffer)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccak = function (a: Buffer, bits: number = 256): Buffer {\n assertIsBuffer(a)\n switch (bits) {\n case 224: {\n return keccak224(a)\n }\n case 256: {\n return k256(a)\n }\n case 384: {\n return keccak384(a)\n }\n case 512: {\n return keccak512(a)\n }\n default: {\n throw new Error(`Invald algorithm: keccak${bits}`)\n }\n }\n}\n\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256).\n * @param a The input data (Buffer)\n */\nexport const keccak256 = function (a: Buffer): Buffer {\n return keccak(a)\n}\n\n/**\n * Creates Keccak hash of a utf-8 string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromString = function (a: string, bits: number = 256) {\n assertIsString(a)\n const buf = Buffer.from(a, 'utf8')\n return keccak(buf, bits)\n}\n\n/**\n * Creates Keccak hash of an 0x-prefixed string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromHexString = function (a: string, bits: number = 256) {\n assertIsHexString(a)\n return keccak(toBuffer(a), bits)\n}\n\n/**\n * Creates Keccak hash of a number array input\n * @param a The input data (number[])\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromArray = function (a: number[], bits: number = 256) {\n assertIsArray(a)\n return keccak(toBuffer(a), bits)\n}\n\n/**\n * Creates SHA256 hash of an input.\n * @param a The input data (Buffer|Array|String)\n */\nconst _sha256 = function (a: any): Buffer {\n a = toBuffer(a)\n return createHash('sha256').update(a).digest()\n}\n\n/**\n * Creates SHA256 hash of a Buffer input.\n * @param a The input data (Buffer)\n */\nexport const sha256 = function (a: Buffer): Buffer {\n assertIsBuffer(a)\n return _sha256(a)\n}\n\n/**\n * Creates SHA256 hash of a string input.\n * @param a The input data (string)\n */\nexport const sha256FromString = function (a: string): Buffer {\n assertIsString(a)\n return _sha256(a)\n}\n\n/**\n * Creates SHA256 hash of a number[] input.\n * @param a The input data (number[])\n */\nexport const sha256FromArray = function (a: number[]): Buffer {\n assertIsArray(a)\n return _sha256(a)\n}\n\n/**\n * Creates RIPEMD160 hash of the input.\n * @param a The input data (Buffer|Array|String|Number)\n * @param padded Whether it should be padded to 256 bits or not\n */\nconst _ripemd160 = function (a: any, padded: boolean): Buffer {\n a = toBuffer(a)\n const hash = createHash('rmd160').update(a).digest()\n if (padded === true) {\n return setLengthLeft(hash, 32)\n } else {\n return hash\n }\n}\n\n/**\n * Creates RIPEMD160 hash of a Buffer input.\n * @param a The input data (Buffer)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160 = function (a: Buffer, padded: boolean): Buffer {\n assertIsBuffer(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates RIPEMD160 hash of a string input.\n * @param a The input data (String)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160FromString = function (a: string, padded: boolean): Buffer {\n assertIsString(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates RIPEMD160 hash of a number[] input.\n * @param a The input data (number[])\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160FromArray = function (a: number[], padded: boolean): Buffer {\n assertIsArray(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input.\n * @param a The input data\n */\nexport const rlphash = function (a: rlp.Input): Buffer {\n return keccak(rlp.encode(a))\n}\n","import { isHexString } from './internal'\n\n/**\n * Throws if a string is not hex prefixed\n * @param {string} input string to check hex prefix of\n */\nexport const assertIsHexString = function (input: string): void {\n if (!isHexString(input)) {\n const msg = `This method only supports 0x-prefixed hex strings but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not a buffer\n * @param {Buffer} input value to check\n */\nexport const assertIsBuffer = function (input: Buffer): void {\n if (!Buffer.isBuffer(input)) {\n const msg = `This method only supports Buffer but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not an array\n * @param {number[]} input value to check\n */\nexport const assertIsArray = function (input: number[]): void {\n if (!Array.isArray(input)) {\n const msg = `This method only supports number arrays but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not a string\n * @param {string} input value to check\n */\nexport const assertIsString = function (input: string): void {\n if (typeof input !== 'string') {\n const msg = `This method only supports strings but input was: ${input}`\n throw new Error(msg)\n }\n}\n","/**\n * Constants\n */\nexport * from './constants'\n\n/**\n * Account class and helper functions\n */\nexport * from './account'\n\n/**\n * Address type\n */\nexport * from './address'\n\n/**\n * Hash functions\n */\nexport * from './hash'\n\n/**\n * ECDSA signature\n */\nexport * from './signature'\n\n/**\n * Utilities for manipulating Buffers, byte arrays, etc.\n */\nexport * from './bytes'\n\n/**\n * Function for definining properties on an object\n */\nexport * from './object'\n\n/**\n * External exports (BN, rlp)\n */\nexport * from './externals'\n\n/**\n * Helpful TypeScript types\n */\nexport * from './types'\n\n/**\n * Export ethjs-util methods\n */\nexport {\n isHexPrefixed,\n stripHexPrefix,\n padToEven,\n getBinarySize,\n arrayContainsArray,\n toAscii,\n fromUtf8,\n fromAscii,\n getKeys,\n isHexString,\n} from './internal'\n","/*\nThe MIT License\n\nCopyright (c) 2016 Nick Dodson. nickdodson.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE\n */\n\n/**\n * Returns a `Boolean` on whether or not the a `String` starts with '0x'\n * @param str the string input value\n * @return a boolean if it is or is not hex prefixed\n * @throws if the str input is not a string\n */\nexport function isHexPrefixed(str: string): boolean {\n if (typeof str !== 'string') {\n throw new Error(`[isHexPrefixed] input must be type 'string', received type ${typeof str}`)\n }\n\n return str[0] === '0' && str[1] === 'x'\n}\n\n/**\n * Removes '0x' from a given `String` if present\n * @param str the string value\n * @returns the string without 0x prefix\n */\nexport const stripHexPrefix = (str: string): string => {\n if (typeof str !== 'string')\n throw new Error(`[stripHexPrefix] input must be type 'string', received ${typeof str}`)\n\n return isHexPrefixed(str) ? str.slice(2) : str\n}\n\n/**\n * Pads a `String` to have an even length\n * @param value\n * @return output\n */\nexport function padToEven(value: string): string {\n let a = value\n\n if (typeof a !== 'string') {\n throw new Error(`[padToEven] value must be type 'string', received ${typeof a}`)\n }\n\n if (a.length % 2) a = `0${a}`\n\n return a\n}\n\n/**\n * Get the binary size of a string\n * @param str\n * @returns the number of bytes contained within the string\n */\nexport function getBinarySize(str: string) {\n if (typeof str !== 'string') {\n throw new Error(`[getBinarySize] method requires input type 'string', recieved ${typeof str}`)\n }\n\n return Buffer.byteLength(str, 'utf8')\n}\n\n/**\n * Returns TRUE if the first specified array contains all elements\n * from the second one. FALSE otherwise.\n *\n * @param superset\n * @param subset\n *\n */\nexport function arrayContainsArray(\n superset: unknown[],\n subset: unknown[],\n some?: boolean\n): boolean {\n if (Array.isArray(superset) !== true) {\n throw new Error(\n `[arrayContainsArray] method requires input 'superset' to be an array, got type '${typeof superset}'`\n )\n }\n if (Array.isArray(subset) !== true) {\n throw new Error(\n `[arrayContainsArray] method requires input 'subset' to be an array, got type '${typeof subset}'`\n )\n }\n\n return subset[some ? 'some' : 'every']((value) => superset.indexOf(value) >= 0)\n}\n\n/**\n * Should be called to get ascii from its hex representation\n *\n * @param string in hex\n * @returns ascii string representation of hex value\n */\nexport function toAscii(hex: string): string {\n let str = ''\n let i = 0\n const l = hex.length\n\n if (hex.substring(0, 2) === '0x') i = 2\n\n for (; i < l; i += 2) {\n const code = parseInt(hex.substr(i, 2), 16)\n str += String.fromCharCode(code)\n }\n\n return str\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of utf8 string\n *\n * @param string\n * @param optional padding\n * @returns hex representation of input string\n */\nexport function fromUtf8(stringValue: string) {\n const str = Buffer.from(stringValue, 'utf8')\n\n return `0x${padToEven(str.toString('hex')).replace(/^0+|0+$/g, '')}`\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of ascii string\n *\n * @param string\n * @param optional padding\n * @returns hex representation of input string\n */\nexport function fromAscii(stringValue: string) {\n let hex = ''\n for (let i = 0; i < stringValue.length; i++) {\n const code = stringValue.charCodeAt(i)\n const n = code.toString(16)\n hex += n.length < 2 ? `0${n}` : n\n }\n\n return `0x${hex}`\n}\n\n/**\n * Returns the keys from an array of objects.\n * @example\n * ```js\n * getKeys([{a: '1', b: '2'}, {a: '3', b: '4'}], 'a') => ['1', '3']\n *````\n * @param params\n * @param key\n * @param allowEmpty\n * @returns output just a simple array of output keys\n */\nexport function getKeys(params: Record[], key: string, allowEmpty?: boolean) {\n if (!Array.isArray(params)) {\n throw new Error(`[getKeys] method expects input 'params' to be an array, got ${typeof params}`)\n }\n if (typeof key !== 'string') {\n throw new Error(\n `[getKeys] method expects input 'key' to be type 'string', got ${typeof params}`\n )\n }\n\n const result = []\n\n for (let i = 0; i < params.length; i++) {\n let value = params[i][key]\n if (allowEmpty && !value) {\n value = ''\n } else if (typeof value !== 'string') {\n throw new Error(`invalid abi - expected type 'string', received ${typeof value}`)\n }\n result.push(value)\n }\n\n return result\n}\n\n/**\n * Is the string a hex string.\n *\n * @param value\n * @param length\n * @returns output the string is a hex string\n */\nexport function isHexString(value: string, length?: number): boolean {\n if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) return false\n\n if (length && value.length !== 2 + 2 * length) return false\n\n return true\n}\n","import assert from 'assert'\nimport { stripHexPrefix } from './internal'\nimport { rlp } from './externals'\nimport { toBuffer, baToJSON, unpadBuffer } from './bytes'\n\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param self the `Object` to define properties on\n * @param fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param data data to be validated against the definitions\n * @deprecated\n */\nexport const defineProperties = function (self: any, fields: any, data?: any) {\n self.raw = []\n self._fields = []\n\n // attach the `toJSON`\n self.toJSON = function (label: boolean = false) {\n if (label) {\n type Dict = { [key: string]: string }\n const obj: Dict = {}\n self._fields.forEach((field: string) => {\n obj[field] = `0x${self[field].toString('hex')}`\n })\n return obj\n }\n return baToJSON(self.raw)\n }\n\n self.serialize = function serialize() {\n return rlp.encode(self.raw)\n }\n\n fields.forEach((field: any, i: number) => {\n self._fields.push(field.name)\n function getter() {\n return self.raw[i]\n }\n function setter(v: any) {\n v = toBuffer(v)\n\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0)\n }\n\n if (field.allowLess && field.length) {\n v = unpadBuffer(v)\n assert(\n field.length >= v.length,\n `The field ${field.name} must not have more ${field.length} bytes`\n )\n } else if (!(field.allowZero && v.length === 0) && field.length) {\n assert(\n field.length === v.length,\n `The field ${field.name} must have byte length of ${field.length}`\n )\n }\n\n self.raw[i] = v\n }\n\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter,\n })\n\n if (field.default) {\n self[field.name] = field.default\n }\n\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter,\n })\n }\n })\n\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(stripHexPrefix(data), 'hex')\n }\n\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data)\n }\n\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data')\n }\n\n // make sure all the items are buffers\n data.forEach((d, i) => {\n self[self._fields[i]] = toBuffer(d)\n })\n } else if (typeof data === 'object') {\n const keys = Object.keys(data)\n fields.forEach((field: any) => {\n if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]\n if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]\n })\n } else {\n throw new Error('invalid data')\n }\n }\n}\n","import { ecdsaSign, ecdsaRecover, publicKeyConvert } from 'ethereum-cryptography/secp256k1'\nimport { BN } from './externals'\nimport { toBuffer, setLengthLeft, bufferToHex, bufferToInt } from './bytes'\nimport { keccak } from './hash'\nimport { assertIsBuffer } from './helpers'\nimport { BNLike, toType, TypeOutput } from './types'\n\nexport interface ECDSASignature {\n v: number\n r: Buffer\n s: Buffer\n}\n\nexport interface ECDSASignatureBuffer {\n v: Buffer\n r: Buffer\n s: Buffer\n}\n\n/**\n * Returns the ECDSA signature of a message hash.\n */\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId?: number): ECDSASignature\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId: BNLike): ECDSASignatureBuffer\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId: any): any {\n const { signature, recid: recovery } = ecdsaSign(msgHash, privateKey)\n\n const r = Buffer.from(signature.slice(0, 32))\n const s = Buffer.from(signature.slice(32, 64))\n\n if (!chainId || typeof chainId === 'number') {\n // return legacy type ECDSASignature (deprecated in favor of ECDSASignatureBuffer to handle large chainIds)\n if (chainId && !Number.isSafeInteger(chainId)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)'\n )\n }\n const v = chainId ? recovery + (chainId * 2 + 35) : recovery + 27\n return { r, s, v }\n }\n\n const chainIdBN = toType(chainId as BNLike, TypeOutput.BN)\n const v = chainIdBN.muln(2).addn(35).addn(recovery).toArrayLike(Buffer)\n return { r, s, v }\n}\n\nfunction calculateSigRecovery(v: BNLike, chainId?: BNLike): BN {\n const vBN = toType(v, TypeOutput.BN)\n\n if (vBN.eqn(0) || vBN.eqn(1)) return toType(v, TypeOutput.BN)\n\n if (!chainId) {\n return vBN.subn(27)\n }\n const chainIdBN = toType(chainId, TypeOutput.BN)\n return vBN.sub(chainIdBN.muln(2).addn(35))\n}\n\nfunction isValidSigRecovery(recovery: number | BN): boolean {\n const rec = new BN(recovery)\n return rec.eqn(0) || rec.eqn(1)\n}\n\n/**\n * ECDSA public key recovery from signature.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Recovered public key\n */\nexport const ecrecover = function (\n msgHash: Buffer,\n v: BNLike,\n r: Buffer,\n s: Buffer,\n chainId?: BNLike\n): Buffer {\n const signature = Buffer.concat([setLengthLeft(r, 32), setLengthLeft(s, 32)], 64)\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n const senderPubKey = ecdsaRecover(signature, recovery.toNumber(), msgHash)\n return Buffer.from(publicKeyConvert(senderPubKey, false).slice(1))\n}\n\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Signature\n */\nexport const toRpcSig = function (v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike): string {\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n return bufferToHex(Buffer.concat([setLengthLeft(r, 32), setLengthLeft(s, 32), toBuffer(v)]))\n}\n\n/**\n * Convert signature parameters into the format of Compact Signature Representation (EIP-2098).\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Signature\n */\nexport const toCompactSig = function (v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike): string {\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n\n const vn = toType(v, TypeOutput.Number)\n let ss = s\n if ((vn > 28 && vn % 2 === 1) || vn === 1 || vn === 28) {\n ss = Buffer.from(s)\n ss[0] |= 0x80\n }\n\n return bufferToHex(Buffer.concat([setLengthLeft(r, 32), setLengthLeft(ss, 32)]))\n}\n\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n * NOTE: After EIP1559, `v` could be `0` or `1` but this function assumes\n * it's a signed message (EIP-191 or EIP-712) adding `27` at the end. Remove if needed.\n */\nexport const fromRpcSig = function (sig: string): ECDSASignature {\n const buf: Buffer = toBuffer(sig)\n\n let r: Buffer\n let s: Buffer\n let v: number\n if (buf.length >= 65) {\n r = buf.slice(0, 32)\n s = buf.slice(32, 64)\n v = bufferToInt(buf.slice(64))\n } else if (buf.length === 64) {\n // Compact Signature Representation (https://eips.ethereum.org/EIPS/eip-2098)\n r = buf.slice(0, 32)\n s = buf.slice(32, 64)\n v = bufferToInt(buf.slice(32, 33)) >> 7\n s[0] &= 0x7f\n } else {\n throw new Error('Invalid signature length')\n }\n\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27\n }\n\n return {\n v,\n r,\n s,\n }\n}\n\n/**\n * Validate a ECDSA signature.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @param homesteadOrLater Indicates whether this is being used on either the homestead hardfork or a later one\n */\nexport const isValidSignature = function (\n v: BNLike,\n r: Buffer,\n s: Buffer,\n homesteadOrLater: boolean = true,\n chainId?: BNLike\n): boolean {\n const SECP256K1_N_DIV_2 = new BN(\n '7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0',\n 16\n )\n const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)\n\n if (r.length !== 32 || s.length !== 32) {\n return false\n }\n\n if (!isValidSigRecovery(calculateSigRecovery(v, chainId))) {\n return false\n }\n\n const rBN = new BN(r)\n const sBN = new BN(s)\n\n if (rBN.isZero() || rBN.gt(SECP256K1_N) || sBN.isZero() || sBN.gt(SECP256K1_N)) {\n return false\n }\n\n if (homesteadOrLater && sBN.cmp(SECP256K1_N_DIV_2) === 1) {\n return false\n }\n\n return true\n}\n\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n */\nexport const hashPersonalMessage = function (message: Buffer): Buffer {\n assertIsBuffer(message)\n const prefix = Buffer.from(`\\u0019Ethereum Signed Message:\\n${message.length}`, 'utf-8')\n return keccak(Buffer.concat([prefix, message]))\n}\n","import { BN } from './externals'\nimport { isHexString } from './internal'\nimport { Address } from './address'\nimport { unpadBuffer, toBuffer, ToBufferInputTypes } from './bytes'\n\n/*\n * A type that represents a BNLike input that can be converted to a BN.\n */\nexport type BNLike = BN | PrefixedHexString | number | Buffer\n\n/*\n * A type that represents a BufferLike input that can be converted to a Buffer.\n */\nexport type BufferLike =\n | Buffer\n | Uint8Array\n | number[]\n | number\n | BN\n | TransformableToBuffer\n | PrefixedHexString\n\n/*\n * A type that represents a `0x`-prefixed hex string.\n */\nexport type PrefixedHexString = string\n\n/**\n * A type that represents an Address-like value.\n * To convert to address, use `new Address(toBuffer(value))`\n */\nexport type AddressLike = Address | Buffer | PrefixedHexString\n\n/*\n * A type that represents an object that has a `toArray()` method.\n */\nexport interface TransformableToArray {\n toArray(): Uint8Array\n toBuffer?(): Buffer\n}\n\n/*\n * A type that represents an object that has a `toBuffer()` method.\n */\nexport interface TransformableToBuffer {\n toBuffer(): Buffer\n toArray?(): Uint8Array\n}\n\nexport type NestedUint8Array = Array\nexport type NestedBufferArray = Array\n\n/**\n * Convert BN to 0x-prefixed hex string.\n */\nexport function bnToHex(value: BN): PrefixedHexString {\n return `0x${value.toString(16)}`\n}\n\n/**\n * Convert value from BN to an unpadded Buffer\n * (useful for RLP transport)\n * @param value value to convert\n */\nexport function bnToUnpaddedBuffer(value: BN): Buffer {\n // Using `bn.toArrayLike(Buffer)` instead of `bn.toBuffer()`\n // for compatibility with browserify and similar tools\n return unpadBuffer(value.toArrayLike(Buffer))\n}\n\n/**\n * Deprecated alias for {@link bnToUnpaddedBuffer}\n * @deprecated\n */\nexport function bnToRlp(value: BN): Buffer {\n return bnToUnpaddedBuffer(value)\n}\n\n/**\n * Type output options\n */\nexport enum TypeOutput {\n Number,\n BN,\n Buffer,\n PrefixedHexString,\n}\n\nexport type TypeOutputReturnType = {\n [TypeOutput.Number]: number\n [TypeOutput.BN]: BN\n [TypeOutput.Buffer]: Buffer\n [TypeOutput.PrefixedHexString]: PrefixedHexString\n}\n\n/**\n * Convert an input to a specified type.\n * Input of null/undefined returns null/undefined regardless of the output type.\n * @param input value to convert\n * @param outputType type to output\n */\nexport function toType(input: null, outputType: T): null\nexport function toType(input: undefined, outputType: T): undefined\nexport function toType(\n input: ToBufferInputTypes,\n outputType: T\n): TypeOutputReturnType[T]\nexport function toType(\n input: ToBufferInputTypes,\n outputType: T\n): TypeOutputReturnType[T] | undefined | null {\n if (input === null) {\n return null\n }\n if (input === undefined) {\n return undefined\n }\n\n if (typeof input === 'string' && !isHexString(input)) {\n throw new Error(`A string must be provided with a 0x-prefix, given: ${input}`)\n } else if (typeof input === 'number' && !Number.isSafeInteger(input)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)'\n )\n }\n\n const output = toBuffer(input)\n\n if (outputType === TypeOutput.Buffer) {\n return output as TypeOutputReturnType[T]\n } else if (outputType === TypeOutput.BN) {\n return new BN(output) as TypeOutputReturnType[T]\n } else if (outputType === TypeOutput.Number) {\n const bn = new BN(output)\n const max = new BN(Number.MAX_SAFE_INTEGER.toString())\n if (bn.gt(max)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative output type)'\n )\n }\n return bn.toNumber() as TypeOutputReturnType[T]\n } else {\n // outputType === TypeOutput.PrefixedHexString\n return `0x${output.toString('hex')}` as TypeOutputReturnType[T]\n }\n}\n","export const version = \"abi/5.6.4\";\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport interface JsonFragmentType {\n readonly name?: string;\n readonly indexed?: boolean;\n readonly type?: string;\n readonly internalType?: any; // @TODO: in v6 reduce type\n readonly components?: ReadonlyArray;\n}\n\nexport interface JsonFragment {\n readonly name?: string;\n readonly type?: string;\n\n readonly anonymous?: boolean;\n\n readonly payable?: boolean;\n readonly constant?: boolean;\n readonly stateMutability?: string;\n\n readonly inputs?: ReadonlyArray;\n readonly outputs?: ReadonlyArray;\n\n readonly gas?: string;\n};\n\nconst _constructorGuard = { };\n\n// AST Node parser state\ntype ParseState = {\n allowArray?: boolean,\n allowName?: boolean,\n allowParams?: boolean,\n allowType?: boolean,\n readArray?: boolean,\n};\n\n// AST Node\ntype ParseNode = {\n parent?: any,\n type?: string,\n name?: string,\n state?: ParseState,\n indexed?: boolean,\n components?: Array\n};\n\nlet ModifiersBytes: { [ name: string ]: boolean } = { calldata: true, memory: true, storage: true };\nlet ModifiersNest: { [ name: string ]: boolean } = { calldata: true, memory: true };\nfunction checkModifier(type: string, name: string): boolean {\n if (type === \"bytes\" || type === \"string\") {\n if (ModifiersBytes[name]) { return true; }\n } else if (type === \"address\") {\n if (name === \"payable\") { return true; }\n } else if (type.indexOf(\"[\") >= 0 || type === \"tuple\") {\n if (ModifiersNest[name]) { return true; }\n }\n if (ModifiersBytes[name] || name === \"payable\") {\n logger.throwArgumentError(\"invalid modifier\", \"name\", name);\n }\n return false;\n}\n\n// @TODO: Make sure that children of an indexed tuple are marked with a null indexed\nfunction parseParamType(param: string, allowIndexed: boolean): ParseNode {\n\n let originalParam = param;\n function throwError(i: number) {\n logger.throwArgumentError(`unexpected character at position ${ i }`, \"param\", param);\n }\n param = param.replace(/\\s/g, \" \");\n\n function newNode(parent: ParseNode): ParseNode {\n let node: ParseNode = { type: \"\", name: \"\", parent: parent, state: { allowType: true } };\n if (allowIndexed) { node.indexed = false; }\n return node\n }\n\n let parent: ParseNode = { type: \"\", name: \"\", state: { allowType: true } };\n let node = parent;\n\n for (let i = 0; i < param.length; i++) {\n let c = param[i];\n switch (c) {\n case \"(\":\n if (node.state.allowType && node.type === \"\") {\n node.type = \"tuple\";\n } else if (!node.state.allowParams) {\n throwError(i);\n }\n node.state.allowType = false;\n node.type = verifyType(node.type);\n node.components = [ newNode(node) ];\n node = node.components[0];\n break;\n\n case \")\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let child = node;\n node = node.parent;\n if (!node) { throwError(i); }\n delete child.parent;\n node.state.allowParams = false;\n node.state.allowName = true;\n node.state.allowArray = true;\n break;\n\n case \",\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let sibling: ParseNode = newNode(node.parent);\n //{ type: \"\", name: \"\", parent: node.parent, state: { allowType: true } };\n node.parent.components.push(sibling);\n delete node.parent;\n node = sibling;\n break;\n\n // Hit a space...\n case \" \":\n\n // If reading type, the type is done and may read a param or name\n if (node.state.allowType) {\n if (node.type !== \"\") {\n node.type = verifyType(node.type);\n delete node.state.allowType;\n node.state.allowName = true;\n node.state.allowParams = true;\n }\n }\n\n // If reading name, the name is done\n if (node.state.allowName) {\n if (node.name !== \"\") {\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n if (node.indexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n } else {\n node.state.allowName = false;\n }\n }\n }\n\n break;\n\n case \"[\":\n if (!node.state.allowArray) { throwError(i); }\n\n node.type += c;\n\n node.state.allowArray = false;\n node.state.allowName = false;\n node.state.readArray = true;\n break;\n\n case \"]\":\n if (!node.state.readArray) { throwError(i); }\n\n node.type += c;\n\n node.state.readArray = false;\n node.state.allowArray = true;\n node.state.allowName = true;\n break;\n\n default:\n if (node.state.allowType) {\n node.type += c;\n node.state.allowParams = true;\n node.state.allowArray = true;\n } else if (node.state.allowName) {\n node.name += c;\n delete node.state.allowArray;\n } else if (node.state.readArray) {\n node.type += c;\n } else {\n throwError(i);\n }\n }\n }\n\n if (node.parent) { logger.throwArgumentError(\"unexpected eof\", \"param\", param); }\n\n delete parent.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(originalParam.length - 7); }\n if (node.indexed) { throwError(originalParam.length - 7); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n }\n\n parent.type = verifyType(parent.type);\n\n return parent;\n}\n\nfunction populate(object: any, params: any) {\n for (let key in params) { defineReadOnly(object, key, params[key]); }\n}\n\nexport const FormatTypes: { [ name: string ]: string } = Object.freeze({\n // Bare formatting, as is needed for computing a sighash of an event or function\n sighash: \"sighash\",\n\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n minimal: \"minimal\",\n\n // Human-Readable with nice spacing, including all names\n full: \"full\",\n\n // JSON-format a la Solidity\n json: \"json\"\n});\n\nconst paramTypeArray = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\n\nexport class ParamType {\n\n // The local name of the parameter (of null if unbound)\n readonly name: string;\n\n // The fully qualified type (e.g. \"address\", \"tuple(address)\", \"uint256[3][]\"\n readonly type: string;\n\n // The base type (e.g. \"address\", \"tuple\", \"array\")\n readonly baseType: string;\n\n // Indexable Paramters ONLY (otherwise null)\n readonly indexed: boolean;\n\n // Tuples ONLY: (otherwise null)\n // - sub-components\n readonly components: Array;\n\n // Arrays ONLY: (otherwise null)\n // - length of the array (-1 for dynamic length)\n // - child type\n readonly arrayLength: number;\n readonly arrayChildren: ParamType;\n\n readonly _isParamType: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) { logger.throwError(\"use fromString\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new ParamType()\"\n }); }\n populate(this, params);\n\n let match = this.type.match(paramTypeArray);\n if (match) {\n populate(this, {\n arrayLength: parseInt(match[2] || \"-1\"),\n arrayChildren: ParamType.fromObject({\n type: match[1],\n components: this.components\n }),\n baseType: \"array\"\n });\n } else {\n populate(this, {\n arrayLength: null,\n arrayChildren: null,\n baseType: ((this.components != null) ? \"tuple\": this.type)\n });\n }\n\n this._isParamType = true;\n\n Object.freeze(this);\n }\n\n // Format the parameter fragment\n // - sighash: \"(uint256,address)\"\n // - minimal: \"tuple(uint256,address) indexed\"\n // - full: \"tuple(uint256 foo, address bar) indexed baz\"\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n let result: any = {\n type: ((this.baseType === \"tuple\") ? \"tuple\": this.type),\n name: (this.name || undefined)\n };\n if (typeof(this.indexed) === \"boolean\") { result.indexed = this.indexed; }\n if (this.components) {\n result.components = this.components.map((comp) => JSON.parse(comp.format(format)));\n }\n return JSON.stringify(result);\n }\n\n let result = \"\";\n\n // Array\n if (this.baseType === \"array\") {\n result += this.arrayChildren.format(format);\n result += \"[\" + (this.arrayLength < 0 ? \"\": String(this.arrayLength)) + \"]\";\n } else {\n if (this.baseType === \"tuple\") {\n if (format !== FormatTypes.sighash) {\n result += this.type;\n }\n result += \"(\" + this.components.map(\n (comp) => comp.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \")\";\n } else {\n result += this.type;\n }\n }\n\n if (format !== FormatTypes.sighash) {\n if (this.indexed === true) { result += \" indexed\"; }\n if (format === FormatTypes.full && this.name) {\n result += \" \" + this.name;\n }\n }\n\n return result;\n }\n\n static from(value: string | JsonFragmentType | ParamType, allowIndexed?: boolean): ParamType {\n if (typeof(value) === \"string\") {\n return ParamType.fromString(value, allowIndexed);\n }\n return ParamType.fromObject(value);\n }\n\n static fromObject(value: JsonFragmentType | ParamType): ParamType {\n if (ParamType.isParamType(value)) { return value; }\n\n return new ParamType(_constructorGuard, {\n name: (value.name || null),\n type: verifyType(value.type),\n indexed: ((value.indexed == null) ? null: !!value.indexed),\n components: (value.components ? value.components.map(ParamType.fromObject): null)\n });\n }\n\n static fromString(value: string, allowIndexed?: boolean): ParamType {\n function ParamTypify(node: ParseNode): ParamType {\n return ParamType.fromObject({\n name: node.name,\n type: node.type,\n indexed: node.indexed,\n components: node.components\n });\n }\n\n return ParamTypify(parseParamType(value, !!allowIndexed));\n }\n\n static isParamType(value: any): value is ParamType {\n return !!(value != null && value._isParamType);\n }\n};\n\nfunction parseParams(value: string, allowIndex: boolean): Array {\n return splitNesting(value).map((param) => ParamType.fromString(param, allowIndex));\n}\n\ntype TypeCheck = { -readonly [ K in keyof T ]: T[K] };\n\ninterface _Fragment {\n readonly type: string;\n readonly name: string;\n readonly inputs: ReadonlyArray;\n}\n\nexport abstract class Fragment {\n\n readonly type: string;\n readonly name: string;\n readonly inputs: Array;\n\n readonly _isFragment: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"use a static from method\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Fragment()\"\n });\n }\n populate(this, params);\n\n this._isFragment = true;\n\n Object.freeze(this);\n }\n\n abstract format(format?: string): string;\n\n static from(value: Fragment | JsonFragment | string): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n if (typeof(value) === \"string\") {\n return Fragment.fromString(value);\n }\n\n return Fragment.fromObject(value);\n }\n\n static fromObject(value: Fragment | JsonFragment): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n switch (value.type) {\n case \"function\":\n return FunctionFragment.fromObject(value);\n case \"event\":\n return EventFragment.fromObject(value);\n case \"constructor\":\n return ConstructorFragment.fromObject(value);\n case \"error\":\n return ErrorFragment.fromObject(value);\n case \"fallback\":\n case \"receive\":\n // @TODO: Something? Maybe return a FunctionFragment? A custom DefaultFunctionFragment?\n return null;\n }\n\n return logger.throwArgumentError(\"invalid fragment object\", \"value\", value);\n }\n\n static fromString(value: string): Fragment {\n // Make sure the \"returns\" is surrounded by a space and all whitespace is exactly one space\n value = value.replace(/\\s/g, \" \");\n value = value.replace(/\\(/g, \" (\").replace(/\\)/g, \") \").replace(/\\s+/g, \" \");\n value = value.trim();\n\n if (value.split(\" \")[0] === \"event\") {\n return EventFragment.fromString(value.substring(5).trim());\n } else if (value.split(\" \")[0] === \"function\") {\n return FunctionFragment.fromString(value.substring(8).trim());\n } else if (value.split(\"(\")[0].trim() === \"constructor\") {\n return ConstructorFragment.fromString(value.trim());\n } else if (value.split(\" \")[0] === \"error\") {\n return ErrorFragment.fromString(value.substring(5).trim());\n }\n\n return logger.throwArgumentError(\"unsupported fragment\", \"value\", value);\n }\n\n static isFragment(value: any): value is Fragment {\n return !!(value && value._isFragment);\n }\n}\n\ninterface _EventFragment extends _Fragment {\n readonly anonymous: boolean;\n}\n\nexport class EventFragment extends Fragment {\n readonly anonymous: boolean;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"event \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.anonymous) {\n result += \"anonymous \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: EventFragment | JsonFragment | string): EventFragment {\n if (typeof(value) === \"string\") {\n return EventFragment.fromString(value);\n }\n return EventFragment.fromObject(value);\n }\n\n static fromObject(value: JsonFragment | EventFragment): EventFragment {\n if (EventFragment.isEventFragment(value)) { return value; }\n\n if (value.type !== \"event\") {\n logger.throwArgumentError(\"invalid event object\", \"value\", value);\n }\n\n const params: TypeCheck<_EventFragment> = {\n name: verifyIdentifier(value.name),\n anonymous: value.anonymous,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject) : []),\n type: \"event\"\n };\n\n return new EventFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): EventFragment {\n\n let match = value.match(regexParen);\n if (!match) {\n logger.throwArgumentError(\"invalid event string\", \"value\", value);\n }\n\n let anonymous = false;\n match[3].split(\" \").forEach((modifier) => {\n switch(modifier.trim()) {\n case \"anonymous\":\n anonymous = true;\n break;\n case \"\":\n break;\n default:\n logger.warn(\"unknown modifier: \" + modifier);\n }\n });\n\n return EventFragment.fromObject({\n name: match[1].trim(),\n anonymous: anonymous,\n inputs: parseParams(match[2], true),\n type: \"event\"\n });\n }\n\n static isEventFragment(value: any): value is EventFragment {\n return (value && value._isFragment && value.type === \"event\");\n }\n}\n\nfunction parseGas(value: string, params: any): string {\n params.gas = null;\n\n let comps = value.split(\"@\");\n if (comps.length !== 1) {\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid human-readable ABI signature\", \"value\", value);\n }\n if (!comps[1].match(/^[0-9]+$/)) {\n logger.throwArgumentError(\"invalid human-readable ABI signature gas\", \"value\", value);\n }\n params.gas = BigNumber.from(comps[1]);\n return comps[0];\n }\n\n return value;\n}\n\nfunction parseModifiers(value: string, params: any): void {\n params.constant = false;\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n\n value.split(\" \").forEach((modifier) => {\n switch (modifier.trim()) {\n case \"constant\":\n params.constant = true;\n break;\n case \"payable\":\n params.payable = true;\n params.stateMutability = \"payable\";\n break;\n case \"nonpayable\":\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n break;\n case \"pure\":\n params.constant = true;\n params.stateMutability = \"pure\";\n break;\n case \"view\":\n params.constant = true;\n params.stateMutability = \"view\";\n break;\n case \"external\":\n case \"public\":\n case \"\":\n break;\n default:\n console.log(\"unknown modifier: \" + modifier);\n }\n });\n}\n\ntype StateInputValue = {\n constant?: boolean;\n payable?: boolean;\n stateMutability?: string;\n type?: string;\n};\n\ntype StateOutputValue = {\n constant: boolean;\n payable: boolean;\n stateMutability: string;\n};\n\nfunction verifyState(value: StateInputValue): StateOutputValue {\n let result: any = {\n constant: false,\n payable: true,\n stateMutability: \"payable\"\n };\n\n if (value.stateMutability != null) {\n result.stateMutability = value.stateMutability;\n\n // Set (and check things are consistent) the constant property\n result.constant = (result.stateMutability === \"view\" || result.stateMutability === \"pure\");\n if (value.constant != null) {\n if ((!!value.constant) !== result.constant) {\n logger.throwArgumentError(\"cannot have constant function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n // Set (and check things are consistent) the payable property\n result.payable = (result.stateMutability === \"payable\");\n if (value.payable != null) {\n if ((!!value.payable) !== result.payable) {\n logger.throwArgumentError(\"cannot have payable function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n } else if (value.payable != null) {\n result.payable = !!value.payable;\n\n // If payable we can assume non-constant; otherwise we can't assume\n if (value.constant == null && !result.payable && value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n result.constant = !!value.constant;\n\n if (result.constant) {\n result.stateMutability = \"view\";\n } else {\n result.stateMutability = (result.payable ? \"payable\": \"nonpayable\");\n }\n\n if (result.payable && result.constant) {\n logger.throwArgumentError(\"cannot have constant payable function\", \"value\", value);\n }\n\n } else if (value.constant != null) {\n result.constant = !!value.constant;\n result.payable = !result.constant;\n result.stateMutability = (result.constant ? \"view\": \"payable\");\n\n } else if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n return result;\n}\n\ninterface _ConstructorFragment extends _Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n}\n\nexport class ConstructorFragment extends Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payable: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n if (format === FormatTypes.sighash) {\n logger.throwError(\"cannot format a constructor for sighash\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"format(sighash)\"\n });\n }\n\n let result = \"constructor(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (this.stateMutability && this.stateMutability !== \"nonpayable\") {\n result += this.stateMutability + \" \";\n }\n\n return result.trim();\n }\n\n static from(value: ConstructorFragment | JsonFragment | string): ConstructorFragment {\n if (typeof(value) === \"string\") {\n return ConstructorFragment.fromString(value);\n }\n return ConstructorFragment.fromObject(value);\n }\n\n static fromObject(value: ConstructorFragment | JsonFragment): ConstructorFragment {\n if (ConstructorFragment.isConstructorFragment(value)) { return value; }\n\n if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor object\", \"value\", value);\n }\n\n let state = verifyState(value);\n if (state.constant) {\n logger.throwArgumentError(\"constructor cannot be constant\", \"value\", value);\n }\n\n const params: TypeCheck<_ConstructorFragment> = {\n name: null,\n type: value.type,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new ConstructorFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): ConstructorFragment {\n let params: any = { type: \"constructor\" };\n\n value = parseGas(value, params);\n\n let parens = value.match(regexParen);\n if (!parens || parens[1].trim() !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor string\", \"value\", value);\n }\n\n params.inputs = parseParams(parens[2].trim(), false);\n\n parseModifiers(parens[3].trim(), params);\n\n return ConstructorFragment.fromObject(params);\n }\n\n static isConstructorFragment(value: any): value is ConstructorFragment {\n return (value && value._isFragment && value.type === \"constructor\");\n }\n}\n\ninterface _FunctionFragment extends _ConstructorFragment {\n constant: boolean;\n outputs?: Array;\n}\n\nexport class FunctionFragment extends ConstructorFragment {\n constant: boolean;\n outputs?: Array;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"function\",\n name: this.name,\n constant: this.constant,\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payable: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n outputs: this.outputs.map((output) => JSON.parse(output.format(format))),\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"function \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.stateMutability) {\n if (this.stateMutability !== \"nonpayable\") {\n result += (this.stateMutability + \" \");\n }\n } else if (this.constant) {\n result += \"view \";\n }\n\n if (this.outputs && this.outputs.length) {\n result += \"returns (\" + this.outputs.map(\n (output) => output.format(format)\n ).join(\", \") + \") \";\n }\n\n if (this.gas != null) {\n result += \"@\" + this.gas.toString() + \" \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: FunctionFragment | JsonFragment | string): FunctionFragment {\n if (typeof(value) === \"string\") {\n return FunctionFragment.fromString(value);\n }\n return FunctionFragment.fromObject(value);\n }\n\n static fromObject(value: FunctionFragment | JsonFragment): FunctionFragment {\n if (FunctionFragment.isFunctionFragment(value)) { return value; }\n\n if (value.type !== \"function\") {\n logger.throwArgumentError(\"invalid function object\", \"value\", value);\n }\n\n let state = verifyState(value);\n\n const params: TypeCheck<_FunctionFragment> = {\n type: value.type,\n name: verifyIdentifier(value.name),\n constant: state.constant,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n outputs: (value.outputs ? value.outputs.map(ParamType.fromObject): [ ]),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new FunctionFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): FunctionFragment {\n let params: any = { type: \"function\" };\n value = parseGas(value, params);\n\n let comps = value.split(\" returns \");\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid function string\", \"value\", value);\n }\n\n let parens = comps[0].match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid function signature\", \"value\", value);\n }\n\n params.name = parens[1].trim();\n if (params.name) { verifyIdentifier(params.name); }\n\n params.inputs = parseParams(parens[2], false);\n\n parseModifiers(parens[3].trim(), params);\n\n // We have outputs\n if (comps.length > 1) {\n let returns = comps[1].match(regexParen);\n if (returns[1].trim() != \"\" || returns[3].trim() != \"\") {\n logger.throwArgumentError(\"unexpected tokens\", \"value\", value);\n }\n params.outputs = parseParams(returns[2], false);\n } else {\n params.outputs = [ ];\n }\n\n return FunctionFragment.fromObject(params);\n }\n\n static isFunctionFragment(value: any): value is FunctionFragment {\n return (value && value._isFragment && value.type === \"function\");\n }\n}\n\n//export class StructFragment extends Fragment {\n//}\n\nfunction checkForbidden(fragment: ErrorFragment): ErrorFragment {\n const sig = fragment.format();\n if (sig === \"Error(string)\" || sig === \"Panic(uint256)\") {\n logger.throwArgumentError(`cannot specify user defined ${ sig } error`, \"fragment\", fragment);\n }\n return fragment;\n}\n\nexport class ErrorFragment extends Fragment {\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"error\",\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"error \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n return result.trim();\n }\n\n static from(value: ErrorFragment | JsonFragment | string): ErrorFragment {\n if (typeof(value) === \"string\") {\n return ErrorFragment.fromString(value);\n }\n return ErrorFragment.fromObject(value);\n }\n\n static fromObject(value: ErrorFragment | JsonFragment): ErrorFragment {\n if (ErrorFragment.isErrorFragment(value)) { return value; }\n\n if (value.type !== \"error\") {\n logger.throwArgumentError(\"invalid error object\", \"value\", value);\n }\n\n const params: TypeCheck<_Fragment> = {\n type: value.type,\n name: verifyIdentifier(value.name),\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): [])\n };\n\n return checkForbidden(new ErrorFragment(_constructorGuard, params));\n }\n\n static fromString(value: string): ErrorFragment {\n let params: any = { type: \"error\" };\n\n let parens = value.match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid error signature\", \"value\", value);\n }\n\n params.name = parens[1].trim();\n if (params.name) { verifyIdentifier(params.name); }\n\n params.inputs = parseParams(parens[2], false);\n\n return checkForbidden(ErrorFragment.fromObject(params));\n }\n\n static isErrorFragment(value: any): value is ErrorFragment {\n return (value && value._isFragment && value.type === \"error\");\n }\n}\n\nfunction verifyType(type: string): string {\n\n // These need to be transformed to their full description\n if (type.match(/^uint($|[^1-9])/)) {\n type = \"uint256\" + type.substring(4);\n } else if (type.match(/^int($|[^1-9])/)) {\n type = \"int256\" + type.substring(3);\n }\n\n // @TODO: more verification\n\n return type;\n}\n\n// See: https://github.com/ethereum/solidity/blob/1f8f1a3db93a548d0555e3e14cfc55a10e25b60e/docs/grammar/SolidityLexer.g4#L234\nconst regexIdentifier = new RegExp(\"^[a-zA-Z$_][a-zA-Z0-9$_]*$\");\nfunction verifyIdentifier(value: string): string {\n if (!value || !value.match(regexIdentifier)) {\n logger.throwArgumentError(`invalid identifier \"${ value }\"`, \"value\", value);\n }\n return value;\n}\n\nconst regexParen = new RegExp(\"^([^)(]*)\\\\((.*)\\\\)([^)(]*)$\");\n\nfunction splitNesting(value: string): Array {\n value = value.trim();\n\n let result = [];\n let accum = \"\";\n let depth = 0;\n for (let offset = 0; offset < value.length; offset++) {\n let c = value[offset];\n if (c === \",\" && depth === 0) {\n result.push(accum);\n accum = \"\";\n } else {\n accum += c;\n if (c === \"(\") {\n depth++;\n } else if (c === \")\") {\n depth--;\n if (depth === -1) {\n logger.throwArgumentError(\"unbalanced parenthesis\", \"value\", value);\n }\n }\n }\n }\n if (accum) { result.push(accum); }\n\n return result;\n}\n\n","\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexConcat, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nexport interface Result extends ReadonlyArray {\n readonly [key: string]: any;\n}\n\nexport function checkResultErrors(result: Result): Array<{ path: Array, error: Error }> {\n // Find the first error (if any)\n const errors: Array<{ path: Array, error: Error }> = [ ];\n\n const checkErrors = function(path: Array, object: any): void {\n if (!Array.isArray(object)) { return; }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n\n try {\n checkErrors(childPath, object[key]);\n } catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n }\n checkErrors([ ], result);\n\n return errors;\n\n}\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport abstract class Coder {\n\n // The coder name:\n // - address, uint256, tuple, array, etc.\n readonly name: string;\n\n // The fully expanded type, including composite types:\n // - address, uint256, tuple(address,bytes), uint256[3][4][], etc.\n readonly type: string;\n\n // The localName bound in the signature, in this example it is \"baz\":\n // - tuple(address foo, uint bar) baz\n readonly localName: string;\n\n // Whether this type is dynamic:\n // - Dynamic: bytes, string, address[], tuple(boolean[]), etc.\n // - Not Dynamic: address, uint256, boolean[3], tuple(address, uint8)\n readonly dynamic: boolean;\n\n constructor(name: string, type: string, localName: string, dynamic: boolean) {\n // @TODO: defineReadOnly these\n this.name = name;\n this.type = type;\n this.localName = localName;\n this.dynamic = dynamic;\n }\n\n _throwError(message: string, value: any): void {\n logger.throwArgumentError(message, this.localName, value);\n }\n\n abstract encode(writer: Writer, value: any): number;\n abstract decode(reader: Reader): any;\n\n abstract defaultValue(): any;\n}\n\nexport class Writer {\n readonly wordSize: number;\n\n _data: Array;\n _dataLength: number;\n _padding: Uint8Array;\n\n constructor(wordSize?: number) {\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n this._data = [ ];\n this._dataLength = 0;\n this._padding = new Uint8Array(wordSize);\n }\n\n get data(): string {\n return hexConcat(this._data);\n }\n get length(): number { return this._dataLength; }\n\n _writeData(data: Uint8Array): number {\n this._data.push(data);\n this._dataLength += data.length;\n return data.length;\n }\n\n appendWriter(writer: Writer): number {\n return this._writeData(concat(writer._data));\n }\n\n // Arrayish items; padded on the right to wordSize\n writeBytes(value: BytesLike): number {\n let bytes = arrayify(value);\n const paddingOffset = bytes.length % this.wordSize;\n if (paddingOffset) {\n bytes = concat([ bytes, this._padding.slice(paddingOffset) ])\n }\n return this._writeData(bytes);\n }\n\n _getValue(value: BigNumberish): Uint8Array {\n let bytes = arrayify(BigNumber.from(value));\n if (bytes.length > this.wordSize) {\n logger.throwError(\"value out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this.wordSize,\n offset: bytes.length\n });\n }\n if (bytes.length % this.wordSize) {\n bytes = concat([ this._padding.slice(bytes.length % this.wordSize), bytes ]);\n }\n return bytes;\n }\n\n // BigNumberish items; padded on the left to wordSize\n writeValue(value: BigNumberish): number {\n return this._writeData(this._getValue(value));\n }\n\n writeUpdatableValue(): (value: BigNumberish) => void {\n const offset = this._data.length;\n this._data.push(this._padding);\n this._dataLength += this.wordSize;\n return (value: BigNumberish) => {\n this._data[offset] = this._getValue(value);\n };\n }\n}\n\nexport class Reader {\n readonly wordSize: number;\n readonly allowLoose: boolean;\n\n readonly _data: Uint8Array;\n readonly _coerceFunc: CoerceFunc;\n\n _offset: number;\n\n constructor(data: BytesLike, wordSize?: number, coerceFunc?: CoerceFunc, allowLoose?: boolean) {\n defineReadOnly(this, \"_data\", arrayify(data));\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n defineReadOnly(this, \"_coerceFunc\", coerceFunc);\n defineReadOnly(this, \"allowLoose\", allowLoose);\n\n this._offset = 0;\n }\n\n get data(): string { return hexlify(this._data); }\n get consumed(): number { return this._offset; }\n\n // The default Coerce function\n static coerce(name: string, value: any): any {\n let match = name.match(\"^u?int([0-9]+)$\");\n if (match && parseInt(match[1]) <= 48) { value = value.toNumber(); }\n return value;\n }\n\n coerce(name: string, value: any): any {\n if (this._coerceFunc) { return this._coerceFunc(name, value); }\n return Reader.coerce(name, value);\n }\n\n _peekBytes(offset: number, length: number, loose?: boolean): Uint8Array {\n let alignedLength = Math.ceil(length / this.wordSize) * this.wordSize;\n if (this._offset + alignedLength > this._data.length) {\n if (this.allowLoose && loose && this._offset + length <= this._data.length) {\n alignedLength = length;\n } else {\n logger.throwError(\"data out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this._data.length,\n offset: this._offset + alignedLength\n });\n }\n }\n return this._data.slice(this._offset, this._offset + alignedLength)\n }\n\n subReader(offset: number): Reader {\n return new Reader(this._data.slice(this._offset + offset), this.wordSize, this._coerceFunc, this.allowLoose);\n }\n\n readBytes(length: number, loose?: boolean): Uint8Array {\n let bytes = this._peekBytes(0, length, !!loose);\n this._offset += bytes.length;\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n\n readValue(): BigNumber {\n return BigNumber.from(this.readBytes(this.wordSize));\n }\n}\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { hexZeroPad } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class AddressCoder extends Coder {\n\n constructor(localName: string) {\n super(\"address\", \"address\", localName, false);\n }\n\n defaultValue(): string {\n return \"0x0000000000000000000000000000000000000000\";\n }\n\n encode(writer: Writer, value: string): number {\n try {\n value = getAddress(value)\n } catch (error) {\n this._throwError(error.message, value);\n }\n return writer.writeValue(value);\n }\n\n decode(reader: Reader): any {\n return getAddress(hexZeroPad(reader.readValue().toHexString(), 20));\n }\n}\n\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n private coder: Coder;\n\n constructor(coder: Coder) {\n super(coder.name, coder.type, undefined, coder.dynamic);\n this.coder = coder;\n }\n\n defaultValue(): any {\n return this.coder.defaultValue();\n }\n\n encode(writer: Writer, value: any): number {\n return this.coder.encode(writer, value);\n }\n\n decode(reader: Reader): any {\n return this.coder.decode(reader);\n }\n}\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./abstract-coder\";\nimport { AnonymousCoder } from \"./anonymous\";\n\nexport function pack(writer: Writer, coders: ReadonlyArray, values: Array | { [ name: string ]: any }): number {\n let arrayValues: Array = null;\n\n if (Array.isArray(values)) {\n arrayValues = values;\n\n } else if (values && typeof(values) === \"object\") {\n let unique: { [ name: string ]: boolean } = { };\n\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n if (!name) {\n logger.throwError(\"cannot encode object for signature with missing names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n if (unique[name]) {\n logger.throwError(\"cannot encode object for signature with duplicate names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n unique[name] = true;\n\n return values[name];\n });\n\n } else {\n logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n }\n\n if (coders.length !== arrayValues.length) {\n logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n }\n\n let staticWriter = new Writer(writer.wordSize);\n let dynamicWriter = new Writer(writer.wordSize);\n\n let updateFuncs: Array<(baseOffset: number) => void> = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset: number) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n\n } else {\n coder.encode(staticWriter, value);\n }\n });\n\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\n\nexport function unpack(reader: Reader, coders: Array): Result {\n let values: any = [];\n\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n\n coders.forEach((coder) => {\n let value: any = null;\n\n if (coder.dynamic) {\n let offset = reader.readValue();\n let offsetReader = baseReader.subReader(offset.toNumber());\n try {\n value = coder.decode(offsetReader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n\n } else {\n try {\n value = coder.decode(reader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n\n if (value != undefined) {\n values.push(value);\n }\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add any named parameters (i.e. tuples)\n coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n const value = values[index];\n\n if (value instanceof Error) {\n Object.defineProperty(values, name, {\n enumerable: true,\n get: () => { throw value; }\n });\n } else {\n values[name] = value;\n }\n });\n\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n if (value instanceof Error) {\n Object.defineProperty(values, i, {\n enumerable: true,\n get: () => { throw value; }\n });\n }\n }\n\n return Object.freeze(values);\n}\n\n\nexport class ArrayCoder extends Coder {\n readonly coder: Coder;\n readonly length: number;\n\n constructor(coder: Coder, length: number, localName: string) {\n const type = (coder.type + \"[\" + (length >= 0 ? length: \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n\n this.coder = coder;\n this.length = length;\n }\n\n defaultValue(): Array {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n\n const result: Array = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n\n encode(writer: Writer, value: Array): number {\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n\n let count = this.length;\n\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n\n logger.checkArgumentCount(value.length, count, \"coder array\" + (this.localName? (\" \"+ this.localName): \"\"));\n\n let coders = [];\n for (let i = 0; i < value.length; i++) { coders.push(this.coder); }\n\n return pack(writer, coders, value);\n }\n\n decode(reader: Reader): any {\n let count = this.length;\n if (count === -1) {\n count = reader.readValue().toNumber();\n\n // Check that there is *roughly* enough data to ensure\n // stray random data is not being read as a length. Each\n // slot requires at least 32 bytes for their value (or 32\n // bytes as a link to the data). This could use a much\n // tighter bound, but we are erroring on the side of safety.\n if (count * 32 > reader._data.length) {\n logger.throwError(\"insufficient data length\", Logger.errors.BUFFER_OVERRUN, {\n length: reader._data.length,\n count: count\n });\n }\n }\n let coders = [];\n for (let i = 0; i < count; i++) { coders.push(new AnonymousCoder(this.coder)); }\n\n return reader.coerce(this.name, unpack(reader, coders));\n }\n}\n\n","\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n\nexport enum UnicodeNormalizationForm {\n current = \"\",\n NFC = \"NFC\",\n NFD = \"NFD\",\n NFKC = \"NFKC\",\n NFKD = \"NFKD\"\n};\n\nexport enum Utf8ErrorReason {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n UNEXPECTED_CONTINUE = \"unexpected continuation byte\",\n\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n BAD_PREFIX = \"bad codepoint prefix\",\n\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n OVERRUN = \"string overrun\",\n\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n MISSING_CONTINUE = \"missing continuation byte\",\n\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n OUT_OF_RANGE = \"out of UTF-8 range\",\n\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n UTF16_SURROGATE = \"UTF-16 surrogate\",\n\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n OVERLONG = \"overlong representation\",\n};\n\n\nexport type Utf8ErrorFunc = (reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number) => number;\n\nfunction errorFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n return logger.throwArgumentError(`invalid codepoint at offset ${ offset }; ${ reason }`, \"bytes\", bytes);\n}\n\nfunction ignoreFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) { break; }\n i++;\n }\n return i;\n }\n\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n\n // Nothing to skip\n return 0;\n}\n\nfunction replaceFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n\n // Put the replacement character into the output\n output.push(0xfffd);\n\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n\n// Common error handing strategies\nexport const Utf8ErrorFuncs: { [ name: string ]: Utf8ErrorFunc } = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes: BytesLike, onError?: Utf8ErrorFunc): Array {\n if (onError == null) { onError = Utf8ErrorFuncs.error; }\n\n bytes = arrayify(bytes);\n\n const result: Array = [];\n let i = 0;\n\n // Invalid bytes are ignored\n while(i < bytes.length) {\n\n const c = bytes[i++];\n\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n\n // 1110 xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n\n } else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n } else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n };\n\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n\n // See above loop for invalid continuation byte\n if (res === null) { continue; }\n\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n result.push(res);\n }\n\n return result;\n}\n\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Uint8Array {\n\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n\n if (c < 0x80) {\n result.push(c);\n\n } else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n\n } else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n\n } else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n\n return arrayify(result);\n};\n\nfunction escapeChar(value: number) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\n\nexport function _toEscapedUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\"\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\n\nexport function _toUtf8String(codePoints: Array): string {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode(\n (((codePoint >> 10) & 0x3ff) + 0xd800),\n ((codePoint & 0x3ff) + 0xdc00)\n );\n }).join(\"\");\n}\n\nexport function toUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n\nexport function toUtf8CodePoints(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Array {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class BooleanCoder extends Coder {\n\n constructor(localName: string) {\n super(\"bool\", \"bool\", localName, false);\n }\n\n defaultValue(): boolean {\n return false;\n }\n\n encode(writer: Writer, value: boolean): number {\n return writer.writeValue(value ? 1: 0);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.type, !reader.readValue().isZero());\n }\n}\n\n","\"use strict\";\n\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class DynamicBytesCoder extends Coder {\n constructor(type: string, localName: string) {\n super(type, type, localName, true);\n }\n\n defaultValue(): string {\n return \"0x\";\n }\n\n encode(writer: Writer, value: any): number {\n value = arrayify(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n\n decode(reader: Reader): any {\n return reader.readBytes(reader.readValue().toNumber(), true);\n }\n}\n\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName: string) {\n super(\"bytes\", localName);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(super.decode(reader)));\n }\n}\n\n\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// @TODO: Merge this with bytes\nexport class FixedBytesCoder extends Coder {\n readonly size: number;\n\n constructor(size: number, localName: string) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n this.size = size;\n }\n\n defaultValue(): string {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n\n encode(writer: Writer, value: BytesLike): number {\n let data = arrayify(value);\n if (data.length !== this.size) { this._throwError(\"incorrect data length\", value); }\n return writer.writeBytes(data);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(reader.readBytes(this.size)));\n }\n}\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NullCoder extends Coder {\n\n constructor(localName: string) {\n super(\"null\", \"\", localName, false);\n }\n\n defaultValue(): null {\n return null;\n }\n\n encode(writer: Writer, value: any): number {\n if (value != null) { this._throwError(\"not null\", value); }\n return writer.writeBytes([ ]);\n }\n\n decode(reader: Reader): any {\n reader.readBytes(0);\n return reader.coerce(this.name, null);\n }\n}\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { MaxUint256, NegativeOne, One, Zero } from \"@ethersproject/constants\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NumberCoder extends Coder {\n readonly size: number;\n readonly signed: boolean;\n\n constructor(size: number, signed: boolean, localName: string) {\n const name = ((signed ? \"int\": \"uint\") + (size * 8));\n super(name, name, localName, false);\n\n this.size = size;\n this.signed = signed;\n }\n\n defaultValue(): number {\n return 0;\n }\n\n encode(writer: Writer, value: BigNumberish): number {\n let v = BigNumber.from(value);\n\n // Check bounds are safe for encoding\n let maxUintValue = MaxUint256.mask(writer.wordSize * 8);\n if (this.signed) {\n let bounds = maxUintValue.mask(this.size * 8 - 1);\n if (v.gt(bounds) || v.lt(bounds.add(One).mul(NegativeOne))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n } else if (v.lt(Zero) || v.gt(maxUintValue.mask(this.size * 8))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n\n v = v.toTwos(this.size * 8).mask(this.size * 8);\n\n if (this.signed) {\n v = v.fromTwos(this.size * 8).toTwos(8 * writer.wordSize);\n }\n\n return writer.writeValue(v);\n }\n\n decode(reader: Reader): any {\n let value = reader.readValue().mask(this.size * 8);\n\n if (this.signed) {\n value = value.fromTwos(this.size * 8);\n }\n\n return reader.coerce(this.name, value);\n }\n}\n\n","export const version = \"strings/5.6.1\";\n","\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Reader, Writer } from \"./abstract-coder\";\nimport { DynamicBytesCoder } from \"./bytes\";\n\nexport class StringCoder extends DynamicBytesCoder {\n\n constructor(localName: string) {\n super(\"string\", localName);\n }\n\n defaultValue(): string {\n return \"\";\n }\n\n encode(writer: Writer, value: any): number {\n return super.encode(writer, toUtf8Bytes(value));\n }\n\n decode(reader: Reader): any {\n return toUtf8String(super.decode(reader));\n }\n}\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\nimport { pack, unpack } from \"./array\";\n\nexport class TupleCoder extends Coder {\n readonly coders: Array;\n\n constructor(coders: Array, localName: string) {\n let dynamic = false;\n const types: Array = [];\n coders.forEach((coder) => {\n if (coder.dynamic) { dynamic = true; }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n\n super(\"tuple\", type, localName, dynamic);\n this.coders = coders;\n }\n\n defaultValue(): any {\n const values: any = [ ];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = this.coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add named values\n this.coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n values[name] = values[index];\n });\n\n return Object.freeze(values);\n }\n\n encode(writer: Writer, value: Array | { [ name: string ]: any }): number {\n return pack(writer, this.coders, value);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, unpack(reader, this.coders));\n }\n}\n\n","\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./coders/abstract-coder\";\nimport { AddressCoder } from \"./coders/address\";\nimport { ArrayCoder } from \"./coders/array\";\nimport { BooleanCoder } from \"./coders/boolean\";\nimport { BytesCoder } from \"./coders/bytes\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes\";\nimport { NullCoder } from \"./coders/null\";\nimport { NumberCoder } from \"./coders/number\";\nimport { StringCoder } from \"./coders/string\";\nimport { TupleCoder } from \"./coders/tuple\";\n\nimport { ParamType } from \"./fragments\";\n\n\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\n\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport class AbiCoder {\n readonly coerceFunc: CoerceFunc;\n\n constructor(coerceFunc?: CoerceFunc) {\n defineReadOnly(this, \"coerceFunc\", coerceFunc || null);\n }\n\n _getCoder(param: ParamType): Coder {\n\n switch (param.baseType) {\n case \"address\":\n return new AddressCoder(param.name);\n case \"bool\":\n return new BooleanCoder(param.name);\n case \"string\":\n return new StringCoder(param.name);\n case \"bytes\":\n return new BytesCoder(param.name);\n case \"array\":\n return new ArrayCoder(this._getCoder(param.arrayChildren), param.arrayLength, param.name);\n case \"tuple\":\n return new TupleCoder((param.components || []).map((component) => {\n return this._getCoder(component);\n }), param.name);\n case \"\":\n return new NullCoder(param.name);\n }\n\n // u?int[0-9]*\n let match = param.type.match(paramTypeNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if (size === 0 || size > 256 || (size % 8) !== 0) {\n logger.throwArgumentError(\"invalid \" + match[1] + \" bit length\", \"param\", param);\n }\n return new NumberCoder(size / 8, (match[1] === \"int\"), param.name);\n }\n\n // bytes[0-9]+\n match = param.type.match(paramTypeBytes);\n if (match) {\n let size = parseInt(match[1]);\n if (size === 0 || size > 32) {\n logger.throwArgumentError(\"invalid bytes length\", \"param\", param);\n }\n return new FixedBytesCoder(size, param.name);\n }\n\n return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n }\n\n _getWordSize(): number { return 32; }\n\n _getReader(data: Uint8Array, allowLoose?: boolean): Reader {\n return new Reader(data, this._getWordSize(), this.coerceFunc, allowLoose);\n }\n\n _getWriter(): Writer {\n return new Writer(this._getWordSize());\n }\n\n getDefaultValue(types: ReadonlyArray): Result {\n const coders: Array = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n\n encode(types: ReadonlyArray, values: ReadonlyArray): string {\n if (types.length !== values.length) {\n logger.throwError(\"types/values length mismatch\", Logger.errors.INVALID_ARGUMENT, {\n count: { types: types.length, values: values.length },\n value: { types: types, values: values }\n });\n }\n\n const coders = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n\n const writer = this._getWriter();\n coder.encode(writer, values);\n return writer.data;\n }\n\n decode(types: ReadonlyArray, data: BytesLike, loose?: boolean): Result {\n const coders: Array = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(this._getReader(arrayify(data), loose));\n }\n}\n\nexport const defaultAbiCoder: AbiCoder = new AbiCoder();\n\n","\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction getChecksumAddress(address: string): string {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n address = address.toLowerCase();\n\n const chars = address.substring(2).split(\"\");\n\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n\n const hashed = arrayify(keccak256(expanded));\n\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n\n return \"0x\" + chars.join(\"\");\n}\n\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER: number = 0x1fffffffffffff;\n\nfunction log10(x: number): number {\n if (Math.log10) { return Math.log10(x); }\n return Math.log(x) / Math.LN10;\n}\n\n\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n\n// Create lookup table\nconst ibanLookup: { [character: string]: string } = { };\nfor (let i = 0; i < 10; i++) { ibanLookup[String(i)] = String(i); }\nfor (let i = 0; i < 26; i++) { ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); }\n\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\n\nfunction ibanChecksum(address: string): string {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits){\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) { checksum = \"0\" + checksum; }\n\n return checksum;\n};\n\nexport function getAddress(address: string): string {\n let result = null;\n\n if (typeof(address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") { address = \"0x\" + address; }\n\n result = getChecksumAddress(address);\n\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n\n // Maybe ICAP? (we only support direct mode)\n } else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n\n result = _base36To16(address.substring(4));\n while (result.length < 40) { result = \"0\" + result; }\n result = getChecksumAddress(\"0x\" + result);\n\n } else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n return result;\n}\n\nexport function isAddress(address: string): boolean {\n try {\n getAddress(address);\n return true;\n } catch (error) { }\n return false;\n}\n\nexport function getIcapAddress(address: string): string {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) { base36 = \"0\" + base36; }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction: { from: string, nonce: BigNumberish }) {\n let from: string = null;\n try {\n from = getAddress(transaction.from);\n } catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n\n return getAddress(hexDataSlice(keccak256(encode([ from, nonce ])), 12));\n}\n\nexport function getCreate2Address(from: string, salt: BytesLike, initCodeHash: BytesLike): string {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([ \"0xff\", getAddress(from), salt, initCodeHash ])), 12))\n}\n","export const version = \"address/5.6.1\";\n","\"use strict\";\n\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\n\nimport _BN from \"bn.js\";\nimport BN = _BN.BN;\n\nimport { Bytes, Hexable, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst _constructorGuard = { };\n\nconst MAX_SAFE = 0x1fffffffffffff;\n\n\nexport type BigNumberish = BigNumber | Bytes | bigint | string | number;\n\nexport function isBigNumberish(value: any): value is BigNumberish {\n return (value != null) && (\n BigNumber.isBigNumber(value) ||\n (typeof(value) === \"number\" && (value % 1) === 0) ||\n (typeof(value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof(value) === \"bigint\") ||\n isBytes(value)\n );\n}\n\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\n\nexport class BigNumber implements Hexable {\n readonly _hex: string;\n readonly _isBigNumber: boolean;\n\n constructor(constructorGuard: any, hex: string) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n\n this._hex = hex;\n this._isBigNumber = true;\n\n Object.freeze(this);\n }\n\n fromTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n\n toTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).toTwos(value));\n }\n\n abs(): BigNumber {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n\n add(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n\n sub(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n\n div(other: BigNumberish): BigNumber {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n\n mul(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n\n mod(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n\n pow(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n\n and(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n\n or(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n\n xor(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n\n mask(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n\n shl(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n\n shr(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n\n eq(other: BigNumberish): boolean {\n return toBN(this).eq(toBN(other));\n }\n\n lt(other: BigNumberish): boolean {\n return toBN(this).lt(toBN(other));\n }\n\n lte(other: BigNumberish): boolean {\n return toBN(this).lte(toBN(other));\n }\n\n gt(other: BigNumberish): boolean {\n return toBN(this).gt(toBN(other));\n }\n\n gte(other: BigNumberish): boolean {\n return toBN(this).gte(toBN(other));\n }\n\n isNegative(): boolean {\n return (this._hex[0] === \"-\");\n }\n\n isZero(): boolean {\n return toBN(this).isZero();\n }\n\n toNumber(): number {\n try {\n return toBN(this).toNumber();\n } catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n\n toBigInt(): bigint {\n try {\n return BigInt(this.toString());\n } catch (e) { }\n\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n\n toString(): string {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n } else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n } else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n }\n }\n return toBN(this).toString(10);\n }\n\n toHexString(): string {\n return this._hex;\n }\n\n toJSON(key?: string): any {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n\n static from(value: any): BigNumber {\n if (value instanceof BigNumber) { return value; }\n\n if (typeof(value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n\n if (typeof(value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n\n return BigNumber.from(String(value));\n }\n\n const anyValue = value;\n\n if (typeof(anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n\n if (anyValue) {\n\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof(hex) === \"string\") {\n return BigNumber.from(hex);\n }\n\n } else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n\n if (typeof(hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n\n static isBigNumber(value: any): value is BigNumber {\n return !!(value && value._isBigNumber);\n }\n}\n\n// Normalize the hex string\nfunction toHex(value: string | BN): string {\n\n // For BN, call on the hex string\n if (typeof(value) !== \"string\") {\n return toHex(value.toString(16));\n }\n\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") { logger.throwArgumentError(\"invalid hex\", \"value\", value); }\n\n // Call toHex on the positive component\n value = toHex(value);\n\n // Do not allow \"-0x00\"\n if (value === \"0x00\") { return value; }\n\n // Negate the value\n return \"-\" + value;\n }\n\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n\n // Normalize zero\n if (value === \"0x\") { return \"0x00\"; }\n\n // Make the string even length\n if (value.length % 2) { value = \"0x0\" + value.substring(2); }\n\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n\n return value;\n}\n\nfunction toBigNumber(value: BN): BigNumber {\n return BigNumber.from(toHex(value));\n}\n\nfunction toBN(value: BigNumberish): BN {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\n\nfunction throwFault(fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value != null) { params.value = value; }\n\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// value should have no prefix\nexport function _base36To16(value: string): string {\n return (new BN(value, 36)).toString(16);\n}\n\n// value should have no prefix\nexport function _base16To36(value: string): string {\n return (new BN(value, 16)).toString(36);\n}\n","export const version = \"bignumber/5.6.2\";\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike;\n\nexport type BytesLike = Bytes | string;\n\nexport type DataOptions = {\n allowMissingPrefix?: boolean;\n hexPad?: \"left\" | \"right\" | null;\n};\n\nexport interface Hexable {\n toHexString(): string;\n}\n\n\n/*\nexport interface HexString {\n length: number;\n substring: (start: number, end?: number) => string;\n\n [index: number]: string;\n}\n*/\n\nexport type SignatureLike = {\n r: string;\n s?: string;\n _vs?: string,\n recoveryParam?: number;\n v?: number;\n} | BytesLike;\n\nexport interface Signature {\n r: string;\n\n s: string;\n _vs: string,\n\n recoveryParam: number;\n v: number;\n\n yParityAndS: string\n compact: string;\n}\n\n///////////////////////////////\n\n\nfunction isHexable(value: any): value is Hexable {\n return !!(value.toHexString);\n}\n\nfunction addSlice(array: Uint8Array): Uint8Array {\n if (array.slice) { return array; }\n\n array.slice = function() {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n }\n\n return array;\n}\n\nexport function isBytesLike(value: any): value is BytesLike {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\n\nfunction isInteger(value: number) {\n return (typeof(value) === \"number\" && value == value && (value % 1) === 0);\n}\n\nexport function isBytes(value: any): value is Bytes {\n if (value == null) { return false; }\n\n if (value.constructor === Uint8Array) { return true; }\n if (typeof(value) === \"string\") { return false; }\n if (!isInteger(value.length) || value.length < 0) { return false; }\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) { return false; }\n }\n return true;\n}\n\n\nexport function arrayify(value: BytesLike | Hexable | number, options?: DataOptions): Uint8Array {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) { result.push(0); }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { value = value.toHexString(); }\n\n if (isHexString(value)) {\n let hex = (value).substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n } else if (options.hexPad === \"right\") {\n hex += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\n\nexport function concat(items: ReadonlyArray): Uint8Array {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n\n const result = new Uint8Array(length);\n\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n\n return addSlice(result);\n}\n\nexport function stripZeros(value: BytesLike): Uint8Array {\n let result: Uint8Array = arrayify(value);\n\n if (result.length === 0) { return result; }\n\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) { start++ }\n\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n\n return result;\n}\n\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n value = arrayify(value);\n\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\n\n\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof(value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false\n }\n if (length && value.length !== 2 + 2 * length) { return false; }\n return true;\n}\n\nconst HexCharacters: string = \"0123456789abcdef\";\n\nexport function hexlify(value: BytesLike | Hexable | number | bigint, options?: DataOptions): string {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n\n if (hex.length) {\n if (hex.length % 2) { hex = \"0\" + hex; }\n return \"0x\" + hex;\n }\n\n return \"0x00\";\n }\n\n if (typeof(value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) { return (\"0x0\" + value); }\n return \"0x\" + value;\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { return value.toHexString(); }\n\n if (isHexString(value)) {\n if ((value).length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + (value).substring(2);\n } else if (options.hexPad === \"right\") {\n value += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return (value).toLowerCase();\n }\n\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data: BytesLike) {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n\n return (data.length - 2) / 2;\n}\n\nexport function hexDataSlice(data: BytesLike, offset: number, endOffset?: number): string {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data );\n }\n\n offset = 2 + 2 * offset;\n\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n\n return \"0x\" + data.substring(offset);\n}\n\nexport function hexConcat(items: ReadonlyArray): string {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\n\nexport function hexValue(value: BytesLike | Hexable | number | bigint): string {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") { return \"0x0\"; }\n return trimmed;\n}\n\nexport function hexStripZeros(value: BytesLike): string {\n if (typeof(value) !== \"string\") { value = hexlify(value); }\n\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") { offset++; }\n return \"0x\" + value.substring(offset);\n}\n\nexport function hexZeroPad(value: BytesLike, length: number): string {\n if (typeof(value) !== \"string\") {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n\n return value;\n}\n\nexport function splitSignature(signature: SignatureLike): Signature {\n\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n\n if (isBytesLike(signature)) {\n let bytes: Uint8Array = arrayify(signature);\n\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n\n } else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n } else {\n\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n\n\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) { bytes[32] |= 0x80; }\n result._vs = hexlify(bytes.slice(32, 64))\n\n } else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1: 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n } else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n } else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else {\n const recId = (result.v === 0 || result.v === 1) ? result.v :(1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) { vs[0] |= 0x80; }\n const _vs = hexlify(vs);\n\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n\n return result;\n}\n\nexport function joinSignature(signature: SignatureLike): string {\n signature = splitSignature(signature);\n\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\": \"0x1b\")\n ]));\n}\n\n","export const version = \"bytes/5.6.1\";\n","import { BigNumber } from \"@ethersproject/bignumber\";\n\nconst NegativeOne: BigNumber = (/*#__PURE__*/BigNumber.from(-1));\nconst Zero: BigNumber = (/*#__PURE__*/BigNumber.from(0));\nconst One: BigNumber = (/*#__PURE__*/BigNumber.from(1));\nconst Two: BigNumber = (/*#__PURE__*/BigNumber.from(2));\nconst WeiPerEther: BigNumber = (/*#__PURE__*/BigNumber.from(\"1000000000000000000\"));\nconst MaxUint256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nconst MinInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"-0x8000000000000000000000000000000000000000000000000000000000000000\"));\nconst MaxInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nexport {\n NegativeOne,\n Zero,\n One,\n Two,\n WeiPerEther,\n MaxUint256,\n MinInt256,\n MaxInt256,\n};\n","\"use strict\";\n\nimport sha3 from \"js-sha3\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function keccak256(data: BytesLike): string {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n","\"use strict\";\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\n\nconst LogLevels: { [ name: string ]: number } = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\n\nimport { version } from \"./_version\";\n\nlet _globalLogger: Logger = null;\n\nfunction _checkNormalize(): string {\n try {\n const missing: Array = [ ];\n\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n };\n } catch(error) {\n missing.push(form);\n }\n });\n\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\")\n }\n } catch (error) {\n return error.message;\n }\n\n return null;\n}\n\nconst _normalizeError = _checkNormalize();\n\nexport enum LogLevel {\n DEBUG = \"DEBUG\",\n INFO = \"INFO\",\n WARNING = \"WARNING\",\n ERROR = \"ERROR\",\n OFF = \"OFF\"\n}\n\n\nexport enum ErrorCode {\n\n ///////////////////\n // Generic Errors\n\n // Unknown Error\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n\n // Not Implemented\n NOT_IMPLEMENTED = \"NOT_IMPLEMENTED\",\n\n // Unsupported Operation\n // - operation\n UNSUPPORTED_OPERATION = \"UNSUPPORTED_OPERATION\",\n\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n NETWORK_ERROR = \"NETWORK_ERROR\",\n\n // Some sort of bad response from the server\n SERVER_ERROR = \"SERVER_ERROR\",\n\n // Timeout\n TIMEOUT = \"TIMEOUT\",\n\n ///////////////////\n // Operational Errors\n\n // Buffer Overrun\n BUFFER_OVERRUN = \"BUFFER_OVERRUN\",\n\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n NUMERIC_FAULT = \"NUMERIC_FAULT\",\n\n\n ///////////////////\n // Argument Errors\n\n // Missing new operator to an object\n // - name: The name of the class\n MISSING_NEW = \"MISSING_NEW\",\n\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n INVALID_ARGUMENT = \"INVALID_ARGUMENT\",\n\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n MISSING_ARGUMENT = \"MISSING_ARGUMENT\",\n\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n UNEXPECTED_ARGUMENT = \"UNEXPECTED_ARGUMENT\",\n\n\n ///////////////////\n // Blockchain Errors\n\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n CALL_EXCEPTION = \"CALL_EXCEPTION\",\n\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n INSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\n // Nonce has already been used\n // - transaction: the transaction attempted\n NONCE_EXPIRED = \"NONCE_EXPIRED\",\n\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n REPLACEMENT_UNDERPRICED = \"REPLACEMENT_UNDERPRICED\",\n\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n UNPREDICTABLE_GAS_LIMIT = \"UNPREDICTABLE_GAS_LIMIT\",\n\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n TRANSACTION_REPLACED = \"TRANSACTION_REPLACED\",\n};\n\nconst HEX = \"0123456789abcdef\";\n\nexport class Logger {\n readonly version: string;\n\n static errors = ErrorCode;\n\n static levels = LogLevel;\n\n constructor(version: string) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n\n _log(logLevel: LogLevel, args: Array): void {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) { return; }\n console.log.apply(console, args);\n }\n\n debug(...args: Array): void {\n this._log(Logger.levels.DEBUG, args);\n }\n\n info(...args: Array): void {\n this._log(Logger.levels.INFO, args);\n }\n\n warn(...args: Array): void {\n this._log(Logger.levels.WARNING, args);\n }\n\n makeError(message: string, code?: ErrorCode, params?: any): Error {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, { });\n }\n\n if (!code) { code = Logger.errors.UNKNOWN_ERROR; }\n if (!params) { params = {}; }\n\n const messageDetails: Array = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n } else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n } catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${ code }`);\n messageDetails.push(`version=${ this.version }`);\n\n const reason = message;\n\n let url = \"\";\n\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n\n switch (fault) {\n case \"overflow\": case \"underflow\": case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\": case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n\n // @TODO: Any??\n const error: any = new Error(message);\n error.reason = reason;\n error.code = code\n\n Object.keys(params).forEach(function(key) {\n error[key] = params[key];\n });\n\n return error;\n }\n\n throwError(message: string, code?: ErrorCode, params?: any): never {\n throw this.makeError(message, code, params);\n }\n\n throwArgumentError(message: string, name: string, value: any): never {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n\n assert(condition: any, message: string, code?: ErrorCode, params?: any): void {\n if (!!condition) { return; }\n this.throwError(message, code, params);\n }\n\n assertArgument(condition: any, message: string, name: string, value: any): void {\n if (!!condition) { return; }\n this.throwArgumentError(message, name, value);\n }\n\n checkNormalize(message?: string): void {\n if (message == null) { message = \"platform missing String.prototype.normalize\"; }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n\n checkSafeUint53(value: number, message?: string): void {\n if (typeof(value) !== \"number\") { return; }\n\n if (message == null) { message = \"value not safe\"; }\n\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n\n checkArgumentCount(count: number, expectedCount: number, message?: string): void {\n if (message) {\n message = \": \" + message;\n } else {\n message = \"\";\n }\n\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n\n checkNew(target: any, kind: any): void {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n checkAbstract(target: any, kind: any): void {\n if (target === kind) {\n this.throwError(\n \"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { name: target.name, operation: \"new\" }\n );\n } else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n static globalLogger(): Logger {\n if (!_globalLogger) { _globalLogger = new Logger(version); }\n return _globalLogger;\n }\n\n static setCensorship(censorship: boolean, permanent?: boolean): void {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n if (_permanentCensorErrors) {\n if (!censorship) { return; }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n\n static setLogLevel(logLevel: LogLevel): void {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n\n static from(version: string): Logger {\n return new Logger(version);\n }\n}\n","export const version = \"logger/5.6.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable = {\n [ K in keyof T ]: T[K] | Promise;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties(object: Readonly>): Promise {\n const promises: Array> = Object.keys(object).map((key) => {\n const value = object[>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, { });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value: any = null;\n try {\n value = object[keys[i]];\n } catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n\n if (!_isFrozen(value)) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (this)[key] = deepCopy(info[key]);\n }\n }\n}\n","export const version = \"properties/5.6.0\";\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","\"use strict\";\n\n//See: https://github.com/ethereum/wiki/wiki/RLP\n\nimport { arrayify, BytesLike, hexlify, isBytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction arrayifyInteger(value: number): Array {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\n\nfunction unarrayifyInteger(data: Uint8Array, offset: number, length: number): number {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\n\nfunction _encode(object: Array | string): Array {\n if (Array.isArray(object)) {\n let payload: Array = [];\n object.forEach(function(child) {\n payload = payload.concat(_encode(child));\n });\n\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length)\n return payload;\n }\n\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n\n return length.concat(payload);\n\n }\n\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n\n const data: Array = Array.prototype.slice.call(arrayify(object));\n\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n\n } else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n\n return length.concat(data);\n}\n\nexport function encode(object: any): string {\n return hexlify(_encode(object));\n}\n\ntype Decoded = {\n result: any;\n consumed: number;\n};\n\nfunction _decodeChildren(data: Uint8Array, offset: number, childOffset: number, length: number): Decoded {\n const result = [];\n\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n\n result.push(decoded.result);\n\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n }\n\n return {consumed: (1 + length), result: result};\n}\n\n// returns { consumed: number, result: Object }\nfunction _decode(data: Uint8Array, offset: number): { consumed: number, result: any } {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n\n } else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1, length);\n\n } else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result }\n\n } else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result }\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\n\nexport function decode(data: BytesLike): any {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n\n","export const version = \"rlp/5.6.1\";\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","import _ec from \"elliptic\";\nvar EC = _ec.ec;\nexport { EC };\n//# sourceMappingURL=elliptic.js.map","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","\"use strict\";\n\nimport { EC } from \"./elliptic\";\n\nimport { arrayify, BytesLike, hexDataLength, hexlify, hexZeroPad, Signature, SignatureLike, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nlet _curve: EC = null\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\n\nexport class SigningKey {\n\n readonly curve: string;\n\n readonly privateKey: string;\n readonly publicKey: string;\n readonly compressedPublicKey: string;\n\n //readonly address: string;\n\n readonly _isSigningKey: boolean;\n\n constructor(privateKey: BytesLike) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n\n _addPoint(other: BytesLike): string {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n\n signDigest(digest: BytesLike): Signature {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n })\n }\n\n computeSharedSecret(otherKey: BytesLike): string {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n\n static isSigningKey(value: any): value is SigningKey {\n return !!(value && value._isSigningKey);\n }\n}\n\nexport function recoverPublicKey(digest: BytesLike, signature: SignatureLike): string {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\n\nexport function computePublicKey(key: BytesLike, compressed?: boolean): string {\n const bytes = arrayify(key);\n\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n\n } else if (bytes.length === 33) {\n if (compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n\n } else if (bytes.length === 65) {\n if (!compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n\n","export const version = \"signing-key/5.6.2\";\n","export const version = \"transactions/5.6.2\";\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, DataOptions, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, SignatureLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type AccessList = Array<{ address: string, storageKeys: Array }>;\n\n// Input allows flexibility in describing an access list\nexport type AccessListish = AccessList |\n Array<[ string, Array ]> |\n Record>;\n\nexport enum TransactionTypes {\n legacy = 0,\n eip2930 = 1,\n eip1559 = 2,\n};\n\nexport type UnsignedTransaction = {\n to?: string;\n nonce?: number;\n\n gasLimit?: BigNumberish;\n gasPrice?: BigNumberish;\n\n data?: BytesLike;\n value?: BigNumberish;\n chainId?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessListish;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n}\n\nexport interface Transaction {\n hash?: string;\n\n to?: string;\n from?: string;\n nonce: number;\n\n gasLimit: BigNumber;\n gasPrice?: BigNumber;\n\n data: string;\n value: BigNumber;\n chainId: number;\n\n r?: string;\n s?: string;\n v?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessList;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumber;\n maxFeePerGas?: BigNumber;\n}\n\n///////////////////////////////\n\nfunction handleAddress(value: string): string {\n if (value === \"0x\") { return null; }\n return getAddress(value);\n}\n\nfunction handleNumber(value: string): BigNumber {\n if (value === \"0x\") { return Zero; }\n return BigNumber.from(value);\n}\n\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, type: true, value: true\n}\n\nexport function computeAddress(key: BytesLike | string): string {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\n\nexport function recoverAddress(digest: BytesLike, signature: SignatureLike): string {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\n\nfunction formatNumber(value: BigNumberish, name: string): Uint8Array {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\n\nfunction accessSetify(addr: string, storageKeys: Array): { address: string,storageKeys: Array } {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }:${ index }]`, storageKey)\n }\n return storageKey.toLowerCase();\n })\n };\n}\n\nexport function accessListify(value: AccessListish): AccessList {\n if (Array.isArray(value)) {\n return (] | { address: string, storageKeys: Array}>>value).map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${ index }]`, set);\n }\n return accessSetify(set[0], set[1])\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n\n const result: Array<{ address: string, storageKeys: Array }> = Object.keys(value).map((addr) => {\n const storageKeys: Record = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, >{ });\n return accessSetify(addr, Object.keys(storageKeys).sort())\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\n\nfunction formatAccessList(value: AccessListish): Array<[ string, Array ]> {\n return accessListify(value).map((set) => [ set.address, set.storageKeys ]);\n}\n\nfunction _serializeEip1559(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x02\", RLP.encode(fields)]);\n}\n\nfunction _serializeEip2930(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x01\", RLP.encode(fields)]);\n}\n\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n checkProperties(transaction, allowedTransactionKeys);\n\n const raw: Array = [];\n\n transactionFields.forEach(function(fieldInfo) {\n let value = (transaction)[fieldInfo.name] || ([]);\n const options: DataOptions = { };\n if (fieldInfo.numeric) { options.hexPad = \"left\"; }\n value = arrayify(hexlify(value, options));\n\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value );\n }\n }\n\n raw.push(hexlify(value));\n });\n\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n\n if (typeof(chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n\n } else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n } else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n\n return RLP.encode(raw);\n}\n\nexport function serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ transaction.type }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\n\nfunction _parseEipSignature(tx: Transaction, fields: Array, serialize: (tx: UnsignedTransaction) => string): void {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) { throw new Error(\"bad recid\"); }\n tx.v = recid;\n } catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n } catch (error) { }\n}\n\nfunction _parseEip1559(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx: Transaction = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n\n return tx;\n}\n\nfunction _parseEip2930(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n\n const tx: Transaction = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n\n return tx;\n}\n\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction: Uint8Array): Transaction {\n const transaction = RLP.decode(rawTransaction);\n\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n\n const tx: Transaction = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n\n // Legacy unsigned transaction\n if (transaction.length === 6) { return tx; }\n\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n\n } catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n\n } else {\n // Signed Transaction\n\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) { tx.chainId = 0; }\n\n let recoveryParam = tx.v - 27;\n\n const raw = transaction.slice(0, 6);\n\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n } catch (error) { }\n\n tx.hash = keccak256(rawTransaction);\n }\n\n tx.type = null;\n\n return tx;\n}\n\n\nexport function parse(rawTransaction: BytesLike): Transaction {\n const payload = arrayify(rawTransaction);\n\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) { return _parse(payload); }\n\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ payload[0] }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n\n","/* eslint-disable no-continue */\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-prototype-builtins */\n\nconst errorClasses = {};\nconst deserializers = {};\n\nexport const addCustomErrorDeserializer = (\n name: string,\n deserializer: (obj: any) => any\n): void => {\n deserializers[name] = deserializer;\n};\n\ntype CustomErrorFunc = (\n message?: string,\n fields?: { [key: string]: any }\n) => void;\n\nexport const createCustomErrorClass = (name: string): CustomErrorFunc => {\n const C: CustomErrorFunc = function CustomError(message, fields): void {\n Object.assign(this, fields);\n this.name = name;\n this.message = message || name;\n this.stack = new Error().stack;\n };\n C.prototype = new Error();\n errorClasses[name] = C;\n return C;\n};\n\n// inspired from https://github.com/programble/errio/blob/master/index.js\nexport const deserializeError = (object: any): Error => {\n if (typeof object === \"object\" && object) {\n try {\n // $FlowFixMe FIXME HACK\n const msg = JSON.parse(object.message);\n if (msg.message && msg.name) {\n object = msg;\n }\n } catch (e) {\n // nothing\n }\n\n let error;\n if (typeof object.name === \"string\") {\n const { name } = object;\n const des = deserializers[name];\n if (des) {\n error = des(object);\n } else {\n let constructor = name === \"Error\" ? Error : errorClasses[name];\n\n if (!constructor) {\n console.warn(\"deserializing an unknown class '\" + name + \"'\");\n constructor = createCustomErrorClass(name);\n }\n\n error = Object.create(constructor.prototype);\n try {\n for (const prop in object) {\n if (object.hasOwnProperty(prop)) {\n error[prop] = object[prop];\n }\n }\n } catch (e) {\n // sometimes setting a property can fail (e.g. .name)\n }\n }\n } else {\n error = new Error(object.message);\n }\n\n if (!error.stack && Error.captureStackTrace) {\n Error.captureStackTrace(error, deserializeError);\n }\n return error;\n }\n return new Error(String(object));\n};\n\n// inspired from https://github.com/sindresorhus/serialize-error/blob/master/index.js\nexport const serializeError = (value: any): undefined | To | string => {\n if (!value) return value;\n if (typeof value === \"object\") {\n return destroyCircular(value, []);\n }\n if (typeof value === \"function\") {\n return `[Function: ${value.name || \"anonymous\"}]`;\n }\n return value;\n};\n\ninterface To {\n name?: string;\n message?: string;\n stack?: string;\n}\n\n// https://www.npmjs.com/package/destroy-circular\nfunction destroyCircular(from: any, seen: any[]): To {\n const to: To = {};\n seen.push(from);\n for (const key of Object.keys(from)) {\n const value = from[key];\n if (typeof value === \"function\") {\n continue;\n }\n if (!value || typeof value !== \"object\") {\n to[key] = value;\n continue;\n }\n if (seen.indexOf(from[key]) === -1) {\n to[key] = destroyCircular(from[key], seen.slice(0));\n continue;\n }\n to[key] = \"[Circular]\";\n }\n if (typeof from.name === \"string\") {\n to.name = from.name;\n }\n if (typeof from.message === \"string\") {\n to.message = from.message;\n }\n if (typeof from.stack === \"string\") {\n to.stack = from.stack;\n }\n return to;\n}\n","import {\n serializeError,\n deserializeError,\n createCustomErrorClass,\n addCustomErrorDeserializer,\n} from \"./helpers\";\n\nexport {\n serializeError,\n deserializeError,\n createCustomErrorClass,\n addCustomErrorDeserializer,\n};\n\nexport const AccountNameRequiredError = createCustomErrorClass(\n \"AccountNameRequired\"\n);\nexport const AccountNotSupported = createCustomErrorClass(\n \"AccountNotSupported\"\n);\nexport const AmountRequired = createCustomErrorClass(\"AmountRequired\");\nexport const BluetoothRequired = createCustomErrorClass(\"BluetoothRequired\");\nexport const BtcUnmatchedApp = createCustomErrorClass(\"BtcUnmatchedApp\");\nexport const CantOpenDevice = createCustomErrorClass(\"CantOpenDevice\");\nexport const CashAddrNotSupported = createCustomErrorClass(\n \"CashAddrNotSupported\"\n);\nexport const CurrencyNotSupported = createCustomErrorClass(\n \"CurrencyNotSupported\"\n);\nexport const DeviceAppVerifyNotSupported = createCustomErrorClass(\n \"DeviceAppVerifyNotSupported\"\n);\nexport const DeviceGenuineSocketEarlyClose = createCustomErrorClass(\n \"DeviceGenuineSocketEarlyClose\"\n);\nexport const DeviceNotGenuineError = createCustomErrorClass(\"DeviceNotGenuine\");\nexport const DeviceOnDashboardExpected = createCustomErrorClass(\n \"DeviceOnDashboardExpected\"\n);\nexport const DeviceOnDashboardUnexpected = createCustomErrorClass(\n \"DeviceOnDashboardUnexpected\"\n);\nexport const DeviceInOSUExpected = createCustomErrorClass(\n \"DeviceInOSUExpected\"\n);\nexport const DeviceHalted = createCustomErrorClass(\"DeviceHalted\");\nexport const DeviceNameInvalid = createCustomErrorClass(\"DeviceNameInvalid\");\nexport const DeviceSocketFail = createCustomErrorClass(\"DeviceSocketFail\");\nexport const DeviceSocketNoBulkStatus = createCustomErrorClass(\n \"DeviceSocketNoBulkStatus\"\n);\nexport const DisconnectedDevice = createCustomErrorClass(\"DisconnectedDevice\");\nexport const DisconnectedDeviceDuringOperation = createCustomErrorClass(\n \"DisconnectedDeviceDuringOperation\"\n);\nexport const EnpointConfigError = createCustomErrorClass(\"EnpointConfig\");\nexport const EthAppPleaseEnableContractData = createCustomErrorClass(\n \"EthAppPleaseEnableContractData\"\n);\nexport const FeeEstimationFailed = createCustomErrorClass(\n \"FeeEstimationFailed\"\n);\nexport const FirmwareNotRecognized = createCustomErrorClass(\n \"FirmwareNotRecognized\"\n);\nexport const HardResetFail = createCustomErrorClass(\"HardResetFail\");\nexport const InvalidXRPTag = createCustomErrorClass(\"InvalidXRPTag\");\nexport const InvalidAddress = createCustomErrorClass(\"InvalidAddress\");\nexport const InvalidAddressBecauseDestinationIsAlsoSource = createCustomErrorClass(\n \"InvalidAddressBecauseDestinationIsAlsoSource\"\n);\nexport const LatestMCUInstalledError = createCustomErrorClass(\n \"LatestMCUInstalledError\"\n);\nexport const UnknownMCU = createCustomErrorClass(\"UnknownMCU\");\nexport const LedgerAPIError = createCustomErrorClass(\"LedgerAPIError\");\nexport const LedgerAPIErrorWithMessage = createCustomErrorClass(\n \"LedgerAPIErrorWithMessage\"\n);\nexport const LedgerAPINotAvailable = createCustomErrorClass(\n \"LedgerAPINotAvailable\"\n);\nexport const ManagerAppAlreadyInstalledError = createCustomErrorClass(\n \"ManagerAppAlreadyInstalled\"\n);\nexport const ManagerAppRelyOnBTCError = createCustomErrorClass(\n \"ManagerAppRelyOnBTC\"\n);\nexport const ManagerAppDepInstallRequired = createCustomErrorClass(\n \"ManagerAppDepInstallRequired\"\n);\nexport const ManagerAppDepUninstallRequired = createCustomErrorClass(\n \"ManagerAppDepUninstallRequired\"\n);\nexport const ManagerDeviceLockedError = createCustomErrorClass(\n \"ManagerDeviceLocked\"\n);\nexport const ManagerFirmwareNotEnoughSpaceError = createCustomErrorClass(\n \"ManagerFirmwareNotEnoughSpace\"\n);\nexport const ManagerNotEnoughSpaceError = createCustomErrorClass(\n \"ManagerNotEnoughSpace\"\n);\nexport const ManagerUninstallBTCDep = createCustomErrorClass(\n \"ManagerUninstallBTCDep\"\n);\nexport const NetworkDown = createCustomErrorClass(\"NetworkDown\");\nexport const NoAddressesFound = createCustomErrorClass(\"NoAddressesFound\");\nexport const NotEnoughBalance = createCustomErrorClass(\"NotEnoughBalance\");\nexport const NotEnoughBalanceToDelegate = createCustomErrorClass(\n \"NotEnoughBalanceToDelegate\"\n);\nexport const NotEnoughBalanceInParentAccount = createCustomErrorClass(\n \"NotEnoughBalanceInParentAccount\"\n);\nexport const NotEnoughSpendableBalance = createCustomErrorClass(\n \"NotEnoughSpendableBalance\"\n);\nexport const NotEnoughBalanceBecauseDestinationNotCreated = createCustomErrorClass(\n \"NotEnoughBalanceBecauseDestinationNotCreated\"\n);\nexport const NoAccessToCamera = createCustomErrorClass(\"NoAccessToCamera\");\nexport const NotEnoughGas = createCustomErrorClass(\"NotEnoughGas\");\nexport const NotSupportedLegacyAddress = createCustomErrorClass(\n \"NotSupportedLegacyAddress\"\n);\nexport const GasLessThanEstimate = createCustomErrorClass(\n \"GasLessThanEstimate\"\n);\nexport const PasswordsDontMatchError = createCustomErrorClass(\n \"PasswordsDontMatch\"\n);\nexport const PasswordIncorrectError = createCustomErrorClass(\n \"PasswordIncorrect\"\n);\nexport const RecommendSubAccountsToEmpty = createCustomErrorClass(\n \"RecommendSubAccountsToEmpty\"\n);\nexport const RecommendUndelegation = createCustomErrorClass(\n \"RecommendUndelegation\"\n);\nexport const TimeoutTagged = createCustomErrorClass(\"TimeoutTagged\");\nexport const UnexpectedBootloader = createCustomErrorClass(\n \"UnexpectedBootloader\"\n);\nexport const MCUNotGenuineToDashboard = createCustomErrorClass(\n \"MCUNotGenuineToDashboard\"\n);\nexport const RecipientRequired = createCustomErrorClass(\"RecipientRequired\");\nexport const UnavailableTezosOriginatedAccountReceive = createCustomErrorClass(\n \"UnavailableTezosOriginatedAccountReceive\"\n);\nexport const UnavailableTezosOriginatedAccountSend = createCustomErrorClass(\n \"UnavailableTezosOriginatedAccountSend\"\n);\nexport const UpdateFetchFileFail = createCustomErrorClass(\n \"UpdateFetchFileFail\"\n);\nexport const UpdateIncorrectHash = createCustomErrorClass(\n \"UpdateIncorrectHash\"\n);\nexport const UpdateIncorrectSig = createCustomErrorClass(\"UpdateIncorrectSig\");\nexport const UpdateYourApp = createCustomErrorClass(\"UpdateYourApp\");\nexport const UserRefusedDeviceNameChange = createCustomErrorClass(\n \"UserRefusedDeviceNameChange\"\n);\nexport const UserRefusedAddress = createCustomErrorClass(\"UserRefusedAddress\");\nexport const UserRefusedFirmwareUpdate = createCustomErrorClass(\n \"UserRefusedFirmwareUpdate\"\n);\nexport const UserRefusedAllowManager = createCustomErrorClass(\n \"UserRefusedAllowManager\"\n);\nexport const UserRefusedOnDevice = createCustomErrorClass(\n \"UserRefusedOnDevice\"\n); // TODO rename because it's just for transaction refusal\nexport const TransportOpenUserCancelled = createCustomErrorClass(\n \"TransportOpenUserCancelled\"\n);\nexport const TransportInterfaceNotAvailable = createCustomErrorClass(\n \"TransportInterfaceNotAvailable\"\n);\nexport const TransportRaceCondition = createCustomErrorClass(\n \"TransportRaceCondition\"\n);\nexport const TransportWebUSBGestureRequired = createCustomErrorClass(\n \"TransportWebUSBGestureRequired\"\n);\nexport const DeviceShouldStayInApp = createCustomErrorClass(\n \"DeviceShouldStayInApp\"\n);\nexport const WebsocketConnectionError = createCustomErrorClass(\n \"WebsocketConnectionError\"\n);\nexport const WebsocketConnectionFailed = createCustomErrorClass(\n \"WebsocketConnectionFailed\"\n);\nexport const WrongDeviceForAccount = createCustomErrorClass(\n \"WrongDeviceForAccount\"\n);\nexport const WrongAppForCurrency = createCustomErrorClass(\n \"WrongAppForCurrency\"\n);\nexport const ETHAddressNonEIP = createCustomErrorClass(\"ETHAddressNonEIP\");\nexport const CantScanQRCode = createCustomErrorClass(\"CantScanQRCode\");\nexport const FeeNotLoaded = createCustomErrorClass(\"FeeNotLoaded\");\nexport const FeeRequired = createCustomErrorClass(\"FeeRequired\");\nexport const FeeTooHigh = createCustomErrorClass(\"FeeTooHigh\");\nexport const SyncError = createCustomErrorClass(\"SyncError\");\nexport const PairingFailed = createCustomErrorClass(\"PairingFailed\");\nexport const GenuineCheckFailed = createCustomErrorClass(\"GenuineCheckFailed\");\nexport const LedgerAPI4xx = createCustomErrorClass(\"LedgerAPI4xx\");\nexport const LedgerAPI5xx = createCustomErrorClass(\"LedgerAPI5xx\");\nexport const FirmwareOrAppUpdateRequired = createCustomErrorClass(\n \"FirmwareOrAppUpdateRequired\"\n);\n\n// db stuff, no need to translate\nexport const NoDBPathGiven = createCustomErrorClass(\"NoDBPathGiven\");\nexport const DBWrongPassword = createCustomErrorClass(\"DBWrongPassword\");\nexport const DBNotReset = createCustomErrorClass(\"DBNotReset\");\n\n/**\n * TransportError is used for any generic transport errors.\n * e.g. Error thrown when data received by exchanges are incorrect or if exchanged failed to communicate with the device for various reason.\n */\nexport function TransportError(message: string, id: string): void {\n this.name = \"TransportError\";\n this.message = message;\n this.stack = new Error().stack;\n this.id = id;\n}\nTransportError.prototype = new Error();\n\naddCustomErrorDeserializer(\n \"TransportError\",\n (e) => new TransportError(e.message, e.id)\n);\n\nexport const StatusCodes = {\n PIN_REMAINING_ATTEMPTS: 0x63c0,\n INCORRECT_LENGTH: 0x6700,\n MISSING_CRITICAL_PARAMETER: 0x6800,\n COMMAND_INCOMPATIBLE_FILE_STRUCTURE: 0x6981,\n SECURITY_STATUS_NOT_SATISFIED: 0x6982,\n CONDITIONS_OF_USE_NOT_SATISFIED: 0x6985,\n INCORRECT_DATA: 0x6a80,\n NOT_ENOUGH_MEMORY_SPACE: 0x6a84,\n REFERENCED_DATA_NOT_FOUND: 0x6a88,\n FILE_ALREADY_EXISTS: 0x6a89,\n INCORRECT_P1_P2: 0x6b00,\n INS_NOT_SUPPORTED: 0x6d00,\n CLA_NOT_SUPPORTED: 0x6e00,\n TECHNICAL_PROBLEM: 0x6f00,\n OK: 0x9000,\n MEMORY_PROBLEM: 0x9240,\n NO_EF_SELECTED: 0x9400,\n INVALID_OFFSET: 0x9402,\n FILE_NOT_FOUND: 0x9404,\n INCONSISTENT_FILE: 0x9408,\n ALGORITHM_NOT_SUPPORTED: 0x9484,\n INVALID_KCV: 0x9485,\n CODE_NOT_INITIALIZED: 0x9802,\n ACCESS_CONDITION_NOT_FULFILLED: 0x9804,\n CONTRADICTION_SECRET_CODE_STATUS: 0x9808,\n CONTRADICTION_INVALIDATION: 0x9810,\n CODE_BLOCKED: 0x9840,\n MAX_VALUE_REACHED: 0x9850,\n GP_AUTH_FAILED: 0x6300,\n LICENSING: 0x6f42,\n HALTED: 0x6faa,\n};\n\nexport function getAltStatusMessage(code: number): string | undefined | null {\n switch (code) {\n // improve text of most common errors\n case 0x6700:\n return \"Incorrect length\";\n case 0x6800:\n return \"Missing critical parameter\";\n case 0x6982:\n return \"Security not satisfied (dongle locked or have invalid access rights)\";\n case 0x6985:\n return \"Condition of use not satisfied (denied by the user?)\";\n case 0x6a80:\n return \"Invalid data received\";\n case 0x6b00:\n return \"Invalid parameter received\";\n }\n if (0x6f00 <= code && code <= 0x6fff) {\n return \"Internal error, please report\";\n }\n}\n\n/**\n * Error thrown when a device returned a non success status.\n * the error.statusCode is one of the `StatusCodes` exported by this library.\n */\nexport function TransportStatusError(statusCode: number): void {\n this.name = \"TransportStatusError\";\n const statusText =\n Object.keys(StatusCodes).find((k) => StatusCodes[k] === statusCode) ||\n \"UNKNOWN_ERROR\";\n const smsg = getAltStatusMessage(statusCode) || statusText;\n const statusCodeStr = statusCode.toString(16);\n this.message = `Ledger device: ${smsg} (0x${statusCodeStr})`;\n this.stack = new Error().stack;\n this.statusCode = statusCode;\n this.statusText = statusText;\n}\nTransportStatusError.prototype = new Error();\n\naddCustomErrorDeserializer(\n \"TransportStatusError\",\n (e) => new TransportStatusError(e.statusCode)\n);\n","import EventEmitter from \"events\";\nimport type { DeviceModel } from \"@ledgerhq/devices\";\nimport {\n TransportRaceCondition,\n TransportError,\n StatusCodes,\n getAltStatusMessage,\n TransportStatusError,\n} from \"@ledgerhq/errors\";\nexport {\n TransportError,\n TransportStatusError,\n StatusCodes,\n getAltStatusMessage,\n};\n\n/**\n */\nexport type Subscription = {\n unsubscribe: () => void;\n};\n\n/**\n */\nexport type Device = any; // Should be a union type of all possible Device object's shape\n\n/**\n * type: add or remove event\n * descriptor: a parameter that can be passed to open(descriptor)\n * deviceModel: device info on the model (is it a nano s, nano x, ...)\n * device: transport specific device info\n */\nexport interface DescriptorEvent {\n type: \"add\" | \"remove\";\n descriptor: Descriptor;\n deviceModel?: DeviceModel | null | undefined;\n device?: Device;\n}\n\n/**\n */\nexport type Observer = Readonly<{\n next: (event: Ev) => unknown;\n error: (e: any) => unknown;\n complete: () => unknown;\n}>;\n/**\n * Transport defines the generic interface to share between node/u2f impl\n * A **Descriptor** is a parametric type that is up to be determined for the implementation.\n * it can be for instance an ID, an file path, a URL,...\n */\n\nexport default class Transport {\n exchangeTimeout = 30000;\n unresponsiveTimeout = 15000;\n deviceModel: DeviceModel | null | undefined = null;\n\n /**\n * Statically check if a transport is supported on the user's platform/browser.\n */\n static readonly isSupported: () => Promise;\n\n /**\n * List once all available descriptors. For a better granularity, checkout `listen()`.\n * @return a promise of descriptors\n * @example\n * TransportFoo.list().then(descriptors => ...)\n */\n static readonly list: () => Promise>;\n\n /**\n * Listen all device events for a given Transport. The method takes an Obverver of DescriptorEvent and returns a Subscription (according to Observable paradigm https://github.com/tc39/proposal-observable )\n * a DescriptorEvent is a `{ descriptor, type }` object. type can be `\"add\"` or `\"remove\"` and descriptor is a value you can pass to `open(descriptor)`.\n * each listen() call will first emit all potential device already connected and then will emit events can come over times,\n * for instance if you plug a USB device after listen() or a bluetooth device become discoverable.\n * @param observer is an object with a next, error and complete function (compatible with observer pattern)\n * @return a Subscription object on which you can `.unsubscribe()` to stop listening descriptors.\n * @example\n const sub = TransportFoo.listen({\n next: e => {\n if (e.type===\"add\") {\n sub.unsubscribe();\n const transport = await TransportFoo.open(e.descriptor);\n ...\n }\n },\n error: error => {},\n complete: () => {}\n })\n */\n static readonly listen: (\n observer: Observer>\n ) => Subscription;\n\n /**\n * attempt to create a Transport instance with potentially a descriptor.\n * @param descriptor: the descriptor to open the transport with.\n * @param timeout: an optional timeout\n * @return a Promise of Transport instance\n * @example\n TransportFoo.open(descriptor).then(transport => ...)\n */\n static readonly open: (\n descriptor?: any,\n timeout?: number\n ) => Promise;\n\n /**\n * low level api to communicate with the device\n * This method is for implementations to implement but should not be directly called.\n * Instead, the recommanded way is to use send() method\n * @param apdu the data to send\n * @return a Promise of response data\n */\n exchange(_apdu: Buffer): Promise {\n throw new Error(\"exchange not implemented\");\n }\n\n /**\n * set the \"scramble key\" for the next exchanges with the device.\n * Each App can have a different scramble key and they internally will set it at instanciation.\n * @param key the scramble key\n */\n setScrambleKey(_key: string) {}\n\n /**\n * close the exchange with the device.\n * @return a Promise that ends when the transport is closed.\n */\n close(): Promise {\n return Promise.resolve();\n }\n\n _events = new EventEmitter();\n\n /**\n * Listen to an event on an instance of transport.\n * Transport implementation can have specific events. Here is the common events:\n * * `\"disconnect\"` : triggered if Transport is disconnected\n */\n on(eventName: string, cb: (...args: Array) => any): void {\n this._events.on(eventName, cb);\n }\n\n /**\n * Stop listening to an event on an instance of transport.\n */\n off(eventName: string, cb: (...args: Array) => any): void {\n this._events.removeListener(eventName, cb);\n }\n\n emit(event: string, ...args: any): void {\n this._events.emit(event, ...args);\n }\n\n /**\n * Enable or not logs of the binary exchange\n */\n setDebugMode() {\n console.warn(\n \"setDebugMode is deprecated. use @ledgerhq/logs instead. No logs are emitted in this anymore.\"\n );\n }\n\n /**\n * Set a timeout (in milliseconds) for the exchange call. Only some transport might implement it. (e.g. U2F)\n */\n setExchangeTimeout(exchangeTimeout: number): void {\n this.exchangeTimeout = exchangeTimeout;\n }\n\n /**\n * Define the delay before emitting \"unresponsive\" on an exchange that does not respond\n */\n setExchangeUnresponsiveTimeout(unresponsiveTimeout: number): void {\n this.unresponsiveTimeout = unresponsiveTimeout;\n }\n\n /**\n * wrapper on top of exchange to simplify work of the implementation.\n * @param cla\n * @param ins\n * @param p1\n * @param p2\n * @param data\n * @param statusList is a list of accepted status code (shorts). [0x9000] by default\n * @return a Promise of response buffer\n */\n send = async (\n cla: number,\n ins: number,\n p1: number,\n p2: number,\n data: Buffer = Buffer.alloc(0),\n statusList: Array = [StatusCodes.OK]\n ): Promise => {\n if (data.length >= 256) {\n throw new TransportError(\n \"data.length exceed 256 bytes limit. Got: \" + data.length,\n \"DataLengthTooBig\"\n );\n }\n\n const response = await this.exchange(\n Buffer.concat([\n Buffer.from([cla, ins, p1, p2]),\n Buffer.from([data.length]),\n data,\n ])\n );\n const sw = response.readUInt16BE(response.length - 2);\n\n if (!statusList.some((s) => s === sw)) {\n throw new TransportStatusError(sw);\n }\n\n return response;\n };\n\n /**\n * create() allows to open the first descriptor available or\n * throw if there is none or if timeout is reached.\n * This is a light helper, alternative to using listen() and open() (that you may need for any more advanced usecase)\n * @example\n TransportFoo.create().then(transport => ...)\n */\n static create(\n openTimeout = 3000,\n listenTimeout?: number\n ): Promise {\n return new Promise((resolve, reject) => {\n let found = false;\n const sub = this.listen({\n next: (e) => {\n found = true;\n if (sub) sub.unsubscribe();\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n this.open(e.descriptor, openTimeout).then(resolve, reject);\n },\n error: (e) => {\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n reject(e);\n },\n complete: () => {\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n\n if (!found) {\n reject(\n new TransportError(\n this.ErrorMessage_NoDeviceFound,\n \"NoDeviceFound\"\n )\n );\n }\n },\n });\n const listenTimeoutId = listenTimeout\n ? setTimeout(() => {\n sub.unsubscribe();\n reject(\n new TransportError(\n this.ErrorMessage_ListenTimeout,\n \"ListenTimeout\"\n )\n );\n }, listenTimeout)\n : null;\n });\n }\n\n exchangeBusyPromise: Promise | null | undefined;\n exchangeAtomicImpl = async (\n f: () => Promise\n ): Promise => {\n if (this.exchangeBusyPromise) {\n throw new TransportRaceCondition(\n \"An action was already pending on the Ledger device. Please deny or reconnect.\"\n );\n }\n\n let resolveBusy;\n const busyPromise: Promise = new Promise((r) => {\n resolveBusy = r;\n });\n this.exchangeBusyPromise = busyPromise;\n let unresponsiveReached = false;\n const timeout = setTimeout(() => {\n unresponsiveReached = true;\n this.emit(\"unresponsive\");\n }, this.unresponsiveTimeout);\n\n try {\n const res = await f();\n\n if (unresponsiveReached) {\n this.emit(\"responsive\");\n }\n\n return res;\n } finally {\n clearTimeout(timeout);\n if (resolveBusy) resolveBusy();\n this.exchangeBusyPromise = null;\n }\n };\n\n decorateAppAPIMethods(\n self: Record,\n methods: Array,\n scrambleKey: string\n ) {\n for (const methodName of methods) {\n self[methodName] = this.decorateAppAPIMethod(\n methodName,\n self[methodName],\n self,\n scrambleKey\n );\n }\n }\n\n _appAPIlock: string | null = null;\n\n decorateAppAPIMethod(\n methodName: string,\n f: (...args: A) => Promise,\n ctx: any,\n scrambleKey: string\n ): (...args: A) => Promise {\n return async (...args) => {\n const { _appAPIlock } = this;\n\n if (_appAPIlock) {\n return Promise.reject(\n new TransportError(\n \"Ledger Device is busy (lock \" + _appAPIlock + \")\",\n \"TransportLocked\"\n )\n );\n }\n\n try {\n this._appAPIlock = methodName;\n this.setScrambleKey(scrambleKey);\n return await f.apply(ctx, args);\n } finally {\n this._appAPIlock = null;\n }\n };\n }\n\n static ErrorMessage_ListenTimeout = \"No Ledger device found (timeout)\";\n static ErrorMessage_NoDeviceFound = \"No Ledger device found\";\n}\n","import { ObservableStore } from './ObservableStore';\n\nexport class ComposedStore<\n T extends Record>,\n> extends ObservableStore {\n private _children: Record>;\n\n constructor(children: Record>) {\n // Typecast: Preserve existing behavior\n super({} as unknown as T);\n\n // subscribe to children\n this._children = children || {};\n Object.keys(this._children).forEach((childKey) => {\n const child = this._children[childKey];\n this._addChild(childKey, child);\n });\n }\n\n _addChild(childKey: keyof T, child: ObservableStore) {\n const updateFromChild = (childValue: T[keyof T]) => {\n const state = this.getState();\n state[childKey] = childValue;\n this.putState(state);\n };\n\n child.subscribe(updateFromChild);\n updateFromChild(child.getState());\n }\n}\n","import { ObservableStore } from './ObservableStore';\n\nexport class MergedStore<\n T extends Record,\n> extends ObservableStore {\n private _children: ObservableStore>[];\n\n constructor(children = []) {\n // Typecast: Preserve existing behavior\n super({} as unknown as T);\n\n this._children = children;\n // subscribe to children\n children.forEach((child) => this._addChild(child));\n this._updateWholeState();\n }\n\n _addChild(child: ObservableStore>): void {\n child.subscribe(() => this._updateWholeState());\n }\n\n _updateWholeState(): void {\n const childStates = this._children.map((child) => child.getState());\n // apply shallow merge over states\n const state = Object.assign({}, ...childStates);\n this.putState(state);\n }\n}\n","import SafeEventEmitter from '@metamask/safe-event-emitter';\n\nexport class ObservableStore extends SafeEventEmitter {\n private _state: T;\n\n constructor(initState: T) {\n super();\n if (initState) {\n this._state = initState;\n } else {\n // Typecast/default state: Preserve existing behavior\n this._state = {} as unknown as T;\n }\n }\n\n // wrapper around internal getState\n getState(): T {\n return this._getState();\n }\n\n // wrapper around internal putState\n putState(newState: T): void {\n this._putState(newState);\n this.emit('update', newState);\n }\n\n updateState(partialState: Partial): void {\n // if non-null object, merge\n if (partialState && typeof partialState === 'object') {\n const state = this.getState();\n this.putState({ ...state, ...partialState });\n // if not object, use new value\n } else {\n this.putState(partialState);\n }\n }\n\n // subscribe to changes\n subscribe(handler: (state: T) => void): void {\n this.on('update', handler);\n }\n\n // unsubscribe to changes\n unsubscribe(handler: (state: T) => void): void {\n this.removeListener('update', handler);\n }\n\n //\n // private\n //\n\n // read from persistence\n protected _getState(): T {\n return this._state;\n }\n\n // write to persistence\n protected _putState(newState: T): void {\n this._state = newState;\n }\n}\n","import { Duplex as DuplexStream } from 'stream';\n\nimport { ObservableStore } from './ObservableStore';\n\nclass ObservableStoreStream extends DuplexStream {\n handler: (state: T) => void;\n\n obsStore: ObservableStore;\n\n constructor(obsStore: ObservableStore) {\n super({\n // pass values, not serializations\n objectMode: true,\n });\n // dont buffer outgoing updates\n this.resume();\n // save handler so we can unsubscribe later\n this.handler = (state: T) => this.push(state);\n // subscribe to obsStore changes\n this.obsStore = obsStore;\n this.obsStore.subscribe(this.handler);\n }\n\n // emit current state on new destination\n pipe(\n dest: U,\n options?: { end?: boolean },\n ): U {\n const result = super.pipe(dest, options);\n dest.write(this.obsStore.getState() as any);\n return result;\n }\n\n // write from incoming stream to state\n _write(\n chunk: any,\n _encoding: string,\n callback: (error?: Error | null) => void,\n ): void {\n this.obsStore.putState(chunk);\n callback();\n }\n\n // noop - outgoing stream is asking us if we have data we arent giving it\n _read(_size: number): void {\n return undefined;\n }\n\n // unsubscribe from event emitter\n _destroy(err: Error | null, callback: (error: Error | null) => void): void {\n this.obsStore.unsubscribe(this.handler);\n super._destroy(err, callback);\n }\n}\n\nexport function storeAsStream(\n obsStore: ObservableStore,\n): ObservableStoreStream {\n return new ObservableStoreStream(obsStore);\n}\n","export * from './asStream';\nexport * from './ComposedStore';\nexport * from './MergedStore';\nexport * from './ObservableStore';\nexport * from './transform';\n","import { obj as TransformStream } from 'through2';\n\nexport function storeTransformStream(syncTransformFn: (state: T) => U) {\n return TransformStream((state, _encoding, cb) => {\n try {\n const newState = syncTransformFn(state);\n cb(null, newState);\n return undefined;\n } catch (err) {\n cb(err);\n return undefined;\n }\n });\n}\n",null,null,"import { Struct, Infer, Result, Context, Describe } from './struct'\nimport { Failure } from './error'\n\n/**\n * Check if a value is an iterator.\n */\n\nfunction isIterable(x: unknown): x is Iterable {\n return isObject(x) && typeof x[Symbol.iterator] === 'function'\n}\n\n/**\n * Check if a value is a plain object.\n */\n\nexport function isObject(x: unknown): x is object {\n return typeof x === 'object' && x != null\n}\n\n/**\n * Check if a value is a plain object.\n */\n\nexport function isPlainObject(x: unknown): x is { [key: string]: any } {\n if (Object.prototype.toString.call(x) !== '[object Object]') {\n return false\n }\n\n const prototype = Object.getPrototypeOf(x)\n return prototype === null || prototype === Object.prototype\n}\n\n/**\n * Return a value as a printable string.\n */\n\nexport function print(value: any): string {\n return typeof value === 'string' ? JSON.stringify(value) : `${value}`\n}\n\n/**\n * Shifts (removes and returns) the first value from the `input` iterator.\n * Like `Array.prototype.shift()` but for an `Iterator`.\n */\n\nexport function shiftIterator(input: Iterator): T | undefined {\n const { done, value } = input.next()\n return done ? undefined : value\n}\n\n/**\n * Convert a single validation result to a failure.\n */\n\nexport function toFailure(\n result: string | boolean | Partial,\n context: Context,\n struct: Struct,\n value: any\n): Failure | undefined {\n if (result === true) {\n return\n } else if (result === false) {\n result = {}\n } else if (typeof result === 'string') {\n result = { message: result }\n }\n\n const { path, branch } = context\n const { type } = struct\n const {\n refinement,\n message = `Expected a value of type \\`${type}\\`${\n refinement ? ` with refinement \\`${refinement}\\`` : ''\n }, but received: \\`${print(value)}\\``,\n } = result\n\n return {\n value,\n type,\n refinement,\n key: path[path.length - 1],\n path,\n branch,\n ...result,\n message,\n }\n}\n\n/**\n * Convert a validation result to an iterable of failures.\n */\n\nexport function* toFailures(\n result: Result,\n context: Context,\n struct: Struct,\n value: any\n): IterableIterator {\n if (!isIterable(result)) {\n result = [result]\n }\n\n for (const r of result) {\n const failure = toFailure(r, context, struct, value)\n\n if (failure) {\n yield failure\n }\n }\n}\n\n/**\n * Check a value against a struct, traversing deeply into nested values, and\n * returning an iterator of failures or success.\n */\n\nexport function* run(\n value: unknown,\n struct: Struct,\n options: {\n path?: any[]\n branch?: any[]\n coerce?: boolean\n mask?: boolean\n } = {}\n): IterableIterator<[Failure, undefined] | [undefined, T]> {\n const { path = [], branch = [value], coerce = false, mask = false } = options\n const ctx: Context = { path, branch }\n\n if (coerce) {\n value = struct.coercer(value, ctx)\n\n if (\n mask &&\n struct.type !== 'type' &&\n isObject(struct.schema) &&\n isObject(value) &&\n !Array.isArray(value)\n ) {\n for (const key in value) {\n if (struct.schema[key] === undefined) {\n delete value[key]\n }\n }\n }\n }\n\n let valid = true\n\n for (const failure of struct.validator(value, ctx)) {\n valid = false\n yield [failure, undefined]\n }\n\n for (let [k, v, s] of struct.entries(value, ctx)) {\n const ts = run(v, s as Struct, {\n path: k === undefined ? path : [...path, k],\n branch: k === undefined ? branch : [...branch, v],\n coerce,\n mask,\n })\n\n for (const t of ts) {\n if (t[0]) {\n valid = false\n yield [t[0], undefined]\n } else if (coerce) {\n v = t[1]\n\n if (k === undefined) {\n value = v\n } else if (value instanceof Map) {\n value.set(k, v)\n } else if (value instanceof Set) {\n value.add(v)\n } else if (isObject(value)) {\n value[k] = v\n }\n }\n }\n }\n\n if (valid) {\n for (const failure of struct.refiner(value as T, ctx)) {\n valid = false\n yield [failure, undefined]\n }\n }\n\n if (valid) {\n yield [undefined, value as T]\n }\n}\n\n/**\n * Assign properties from one type to another, overwriting existing.\n */\n\nexport type Assign = Simplify>\n\n/**\n * A schema for enum structs.\n */\n\nexport type EnumSchema = { [K in T]: K }\n\n/**\n * Check if a type is an exact match.\n */\n\nexport type IsMatch = T extends G ? (G extends T ? T : never) : never\n\n/**\n * Check if a type is a record type.\n */\n\nexport type IsRecord = T extends object\n ? string extends keyof T\n ? T\n : never\n : never\n/**\n * Check if a type is a tuple.\n */\n\nexport type IsTuple = T extends [any]\n ? T\n : T extends [any, any]\n ? T\n : T extends [any, any, any]\n ? T\n : T extends [any, any, any, any]\n ? T\n : T extends [any, any, any, any, any]\n ? T\n : never\n\n/**\n * Check if a type is a union.\n */\n\nexport type IsUnion = (\n T extends any ? (U extends T ? false : true) : false\n) extends false\n ? never\n : T\n\n/**\n * A schema for object structs.\n */\n\nexport type ObjectSchema = Record>\n\n/**\n * Infer a type from an object struct schema.\n */\n\nexport type ObjectType = Simplify<\n Optionalize<{ [K in keyof S]: Infer }>\n>\n\n/**\n * Omit properties from a type that extend from a specific type.\n */\n\nexport type OmitBy = Omit<\n T,\n { [K in keyof T]: V extends Extract ? K : never }[keyof T]\n>\n\n/**\n * Normalize properties of a type that allow `undefined` to make them optional.\n */\n\nexport type Optionalize = OmitBy &\n Partial>\n\n/**\n * Transform an object schema type to represent a partial.\n */\n\nexport type PartialObjectSchema = {\n [K in keyof S]: Struct | undefined>\n}\n\n/**\n * Pick properties from a type that extend from a specific type.\n */\n\nexport type PickBy = Pick<\n T,\n { [K in keyof T]: V extends Extract ? K : never }[keyof T]\n>\n\n/**\n * Simplifies a type definition to its most basic representation.\n */\n\nexport type Simplify = T extends any[] | Date\n ? T\n : { [K in keyof T]: T[K] } & {}\n\nexport type If = B extends true ? Then : Else\n\n/**\n * A schema for any type of struct.\n */\n\nexport type StructSchema = [T] extends [string]\n ? [T] extends [IsMatch]\n ? null\n : [T] extends [IsUnion]\n ? EnumSchema\n : T\n : [T] extends [number]\n ? [T] extends [IsMatch]\n ? null\n : [T] extends [IsUnion]\n ? EnumSchema\n : T\n : [T] extends [boolean]\n ? [T] extends [IsMatch]\n ? null\n : T\n : T extends\n | bigint\n | symbol\n | undefined\n | null\n | Function\n | Date\n | Error\n | RegExp\n | Map\n | WeakMap\n | Set\n | WeakSet\n | Promise\n ? null\n : T extends Array\n ? T extends IsTuple\n ? null\n : Struct\n : T extends object\n ? T extends IsRecord\n ? null\n : { [K in keyof T]: Describe }\n : null\n\n/**\n * A schema for tuple structs.\n */\n\nexport type TupleSchema = { [K in keyof T]: Struct }\n","/**\n * A `StructFailure` represents a single specific failure in validation.\n */\n\nexport type Failure = {\n value: any\n key: any\n type: string\n refinement: string | undefined\n message: string\n branch: Array\n path: Array\n}\n\n/**\n * `StructError` objects are thrown (or returned) when validation fails.\n *\n * Validation logic is design to exit early for maximum performance. The error\n * represents the first error encountered during validation. For more detail,\n * the `error.failures` property is a generator function that can be run to\n * continue validation and receive all the failures in the data.\n */\n\nexport class StructError extends TypeError {\n value: any\n key!: any\n type!: string\n refinement!: string | undefined\n path!: Array\n branch!: Array\n failures: () => Array;\n [x: string]: any\n\n constructor(failure: Failure, failures: () => Generator) {\n let cached: Array | undefined\n const { message, ...rest } = failure\n const { path } = failure\n const msg =\n path.length === 0 ? message : `At path: ${path.join('.')} -- ${message}`\n super(msg)\n Object.assign(this, rest)\n this.name = this.constructor.name\n this.failures = () => {\n return (cached ??= [failure, ...failures()])\n }\n }\n}\n","import { toFailures, shiftIterator, StructSchema, run } from './utils'\nimport { StructError, Failure } from './error'\n\n/**\n * `Struct` objects encapsulate the validation logic for a specific type of\n * values. Once constructed, you use the `assert`, `is` or `validate` helpers to\n * validate unknown input data against the struct.\n */\n\nexport class Struct {\n readonly TYPE!: T\n type: string\n schema: S\n coercer: (value: unknown, context: Context) => unknown\n validator: (value: unknown, context: Context) => Iterable\n refiner: (value: T, context: Context) => Iterable\n entries: (\n value: unknown,\n context: Context\n ) => Iterable<[string | number, unknown, Struct | Struct]>\n\n constructor(props: {\n type: string\n schema: S\n coercer?: Coercer\n validator?: Validator\n refiner?: Refiner\n entries?: Struct['entries']\n }) {\n const {\n type,\n schema,\n validator,\n refiner,\n coercer = (value: unknown) => value,\n entries = function* () {},\n } = props\n\n this.type = type\n this.schema = schema\n this.entries = entries\n this.coercer = coercer\n\n if (validator) {\n this.validator = (value, context) => {\n const result = validator(value, context)\n return toFailures(result, context, this, value)\n }\n } else {\n this.validator = () => []\n }\n\n if (refiner) {\n this.refiner = (value, context) => {\n const result = refiner(value, context)\n return toFailures(result, context, this, value)\n }\n } else {\n this.refiner = () => []\n }\n }\n\n /**\n * Assert that a value passes the struct's validation, throwing if it doesn't.\n */\n\n assert(value: unknown): asserts value is T {\n return assert(value, this)\n }\n\n /**\n * Create a value with the struct's coercion logic, then validate it.\n */\n\n create(value: unknown): T {\n return create(value, this)\n }\n\n /**\n * Check if a value passes the struct's validation.\n */\n\n is(value: unknown): value is T {\n return is(value, this)\n }\n\n /**\n * Mask a value, coercing and validating it, but returning only the subset of\n * properties defined by the struct's schema.\n */\n\n mask(value: unknown): T {\n return mask(value, this)\n }\n\n /**\n * Validate a value with the struct's validation logic, returning a tuple\n * representing the result.\n *\n * You may optionally pass `true` for the `withCoercion` argument to coerce\n * the value before attempting to validate it. If you do, the result will\n * contain the coerced result when successful.\n */\n\n validate(\n value: unknown,\n options: {\n coerce?: boolean\n } = {}\n ): [StructError, undefined] | [undefined, T] {\n return validate(value, this, options)\n }\n}\n\n/**\n * Assert that a value passes a struct, throwing if it doesn't.\n */\n\nexport function assert(\n value: unknown,\n struct: Struct\n): asserts value is T {\n const result = validate(value, struct)\n\n if (result[0]) {\n throw result[0]\n }\n}\n\n/**\n * Create a value with the coercion logic of struct and validate it.\n */\n\nexport function create(value: unknown, struct: Struct): T {\n const result = validate(value, struct, { coerce: true })\n\n if (result[0]) {\n throw result[0]\n } else {\n return result[1]\n }\n}\n\n/**\n * Mask a value, returning only the subset of properties defined by a struct.\n */\n\nexport function mask(value: unknown, struct: Struct): T {\n const result = validate(value, struct, { coerce: true, mask: true })\n\n if (result[0]) {\n throw result[0]\n } else {\n return result[1]\n }\n}\n\n/**\n * Check if a value passes a struct.\n */\n\nexport function is(value: unknown, struct: Struct): value is T {\n const result = validate(value, struct)\n return !result[0]\n}\n\n/**\n * Validate a value against a struct, returning an error if invalid, or the\n * value (with potential coercion) if valid.\n */\n\nexport function validate(\n value: unknown,\n struct: Struct,\n options: {\n coerce?: boolean\n mask?: boolean\n } = {}\n): [StructError, undefined] | [undefined, T] {\n const tuples = run(value, struct, options)\n const tuple = shiftIterator(tuples)!\n\n if (tuple[0]) {\n const error = new StructError(tuple[0], function* () {\n for (const t of tuples) {\n if (t[0]) {\n yield t[0]\n }\n }\n })\n\n return [error, undefined]\n } else {\n const v = tuple[1]\n return [undefined, v]\n }\n}\n\n/**\n * A `Context` contains information about the current location of the\n * validation inside the initial input value.\n */\n\nexport type Context = {\n branch: Array\n path: Array\n}\n\n/**\n * A type utility to extract the type from a `Struct` class.\n */\n\nexport type Infer> = T['TYPE']\n\n/**\n * A type utility to describe that a struct represents a TypeScript type.\n */\n\nexport type Describe = Struct>\n\n/**\n * A `Result` is returned from validation functions.\n */\n\nexport type Result =\n | boolean\n | string\n | Partial\n | Iterable>\n\n/**\n * A `Coercer` takes an unknown value and optionally coerces it.\n */\n\nexport type Coercer = (value: T, context: Context) => unknown\n\n/**\n * A `Validator` takes an unknown value and validates it.\n */\n\nexport type Validator = (value: unknown, context: Context) => Result\n\n/**\n * A `Refiner` takes a value of a known type and validates it against a further\n * constraint.\n */\n\nexport type Refiner = (value: T, context: Context) => Result\n","import { Struct, Context, Validator } from '../struct'\nimport { object, optional } from './types'\nimport { ObjectSchema, Assign, ObjectType, PartialObjectSchema } from '../utils'\n\n/**\n * Create a new struct that combines the properties properties from multiple\n * object structs.\n *\n * Like JavaScript's `Object.assign` utility.\n */\n\nexport function assign(\n A: Struct, A>,\n B: Struct, B>\n): Struct>, Assign>\nexport function assign<\n A extends ObjectSchema,\n B extends ObjectSchema,\n C extends ObjectSchema\n>(\n A: Struct, A>,\n B: Struct, B>,\n C: Struct, C>\n): Struct, C>>, Assign, C>>\nexport function assign<\n A extends ObjectSchema,\n B extends ObjectSchema,\n C extends ObjectSchema,\n D extends ObjectSchema\n>(\n A: Struct, A>,\n B: Struct, B>,\n C: Struct, C>,\n D: Struct, D>\n): Struct<\n ObjectType, C>, D>>,\n Assign, C>, D>\n>\nexport function assign<\n A extends ObjectSchema,\n B extends ObjectSchema,\n C extends ObjectSchema,\n D extends ObjectSchema,\n E extends ObjectSchema\n>(\n A: Struct, A>,\n B: Struct, B>,\n C: Struct, C>,\n D: Struct, D>,\n E: Struct, E>\n): Struct<\n ObjectType, C>, D>, E>>,\n Assign, C>, D>, E>\n>\nexport function assign(...Structs: Struct[]): any {\n const schemas = Structs.map((s) => s.schema)\n const schema = Object.assign({}, ...schemas)\n return object(schema)\n}\n\n/**\n * Define a new struct type with a custom validation function.\n */\n\nexport function define(name: string, validator: Validator): Struct {\n return new Struct({ type: name, schema: null, validator })\n}\n\n/**\n * Create a new struct based on an existing struct, but the value is allowed to\n * be `undefined`. `log` will be called if the value is not `undefined`.\n */\n\nexport function deprecated(\n struct: Struct,\n log: (value: unknown, ctx: Context) => void\n): Struct {\n return new Struct({\n ...struct,\n refiner: (value, ctx) => value === undefined || struct.refiner(value, ctx),\n validator(value, ctx) {\n if (value === undefined) {\n return true\n } else {\n log(value, ctx)\n return struct.validator(value, ctx)\n }\n },\n })\n}\n\n/**\n * Create a struct with dynamic validation logic.\n *\n * The callback will receive the value currently being validated, and must\n * return a struct object to validate it with. This can be useful to model\n * validation logic that changes based on its input.\n */\n\nexport function dynamic(\n fn: (value: unknown, ctx: Context) => Struct\n): Struct {\n return new Struct({\n type: 'dynamic',\n schema: null,\n *entries(value, ctx) {\n const struct = fn(value, ctx)\n yield* struct.entries(value, ctx)\n },\n validator(value, ctx) {\n const struct = fn(value, ctx)\n return struct.validator(value, ctx)\n },\n coercer(value, ctx) {\n const struct = fn(value, ctx)\n return struct.coercer(value, ctx)\n },\n })\n}\n\n/**\n * Create a struct with lazily evaluated validation logic.\n *\n * The first time validation is run with the struct, the callback will be called\n * and must return a struct object to use. This is useful for cases where you\n * want to have self-referential structs for nested data structures to avoid a\n * circular definition problem.\n */\n\nexport function lazy(fn: () => Struct): Struct {\n let struct: Struct | undefined\n return new Struct({\n type: 'lazy',\n schema: null,\n *entries(value, ctx) {\n struct ??= fn()\n yield* struct.entries(value, ctx)\n },\n validator(value, ctx) {\n struct ??= fn()\n return struct.validator(value, ctx)\n },\n coercer(value, ctx) {\n struct ??= fn()\n return struct.coercer(value, ctx)\n },\n })\n}\n\n/**\n * Create a new struct based on an existing object struct, but excluding\n * specific properties.\n *\n * Like TypeScript's `Omit` utility.\n */\n\nexport function omit(\n struct: Struct, S>,\n keys: K[]\n): Struct>, Omit> {\n const { schema } = struct\n const subschema: any = { ...schema }\n\n for (const key of keys) {\n delete subschema[key]\n }\n\n return object(subschema as Omit)\n}\n\n/**\n * Create a new struct based on an existing object struct, but with all of its\n * properties allowed to be `undefined`.\n *\n * Like TypeScript's `Partial` utility.\n */\n\nexport function partial(\n struct: Struct, S> | S\n): Struct>, PartialObjectSchema> {\n const schema: any =\n struct instanceof Struct ? { ...struct.schema } : { ...struct }\n\n for (const key in schema) {\n schema[key] = optional(schema[key])\n }\n\n return object(schema) as any\n}\n\n/**\n * Create a new struct based on an existing object struct, but only including\n * specific properties.\n *\n * Like TypeScript's `Pick` utility.\n */\n\nexport function pick(\n struct: Struct, S>,\n keys: K[]\n): Struct>, Pick> {\n const { schema } = struct\n const subschema: any = {}\n\n for (const key of keys) {\n subschema[key] = schema[key]\n }\n\n return object(subschema as Pick)\n}\n\n/**\n * Define a new struct type with a custom validation function.\n *\n * @deprecated This function has been renamed to `define`.\n */\n\nexport function struct(name: string, validator: Validator): Struct {\n console.warn(\n 'superstruct@0.11 - The `struct` helper has been renamed to `define`.'\n )\n\n return define(name, validator)\n}\n","import { Infer, Struct } from '../struct'\nimport { define } from './utilities'\nimport {\n TupleSchema,\n ObjectSchema,\n ObjectType,\n print,\n run,\n isObject,\n} from '../utils'\n\n/**\n * Ensure that any value passes validation.\n */\n\nexport function any(): Struct {\n return define('any', () => true)\n}\n\n/**\n * Ensure that a value is an array and that its elements are of a specific type.\n *\n * Note: If you omit the element struct, the arrays elements will not be\n * iterated at all. This can be helpful for cases where performance is critical,\n * and it is preferred to using `array(any())`.\n */\n\nexport function array>(Element: T): Struct[], T>\nexport function array(): Struct\nexport function array>(Element?: T): any {\n return new Struct({\n type: 'array',\n schema: Element,\n *entries(value) {\n if (Element && Array.isArray(value)) {\n for (const [i, v] of value.entries()) {\n yield [i, v, Element]\n }\n }\n },\n coercer(value) {\n return Array.isArray(value) ? value.slice() : value\n },\n validator(value) {\n return (\n Array.isArray(value) ||\n `Expected an array value, but received: ${print(value)}`\n )\n },\n })\n}\n\n/**\n * Ensure that a value is a boolean.\n */\n\nexport function boolean(): Struct {\n return define('boolean', (value) => {\n return typeof value === 'boolean'\n })\n}\n\n/**\n * Ensure that a value is a valid `Date`.\n *\n * Note: this also ensures that the value is *not* an invalid `Date` object,\n * which can occur when parsing a date fails but still returns a `Date`.\n */\n\nexport function date(): Struct {\n return define('date', (value) => {\n return (\n (value instanceof Date && !isNaN(value.getTime())) ||\n `Expected a valid \\`Date\\` object, but received: ${print(value)}`\n )\n })\n}\n\n/**\n * Ensure that a value is one of a set of potential values.\n *\n * Note: after creating the struct, you can access the definition of the\n * potential values as `struct.schema`.\n */\n\nexport function enums(\n values: readonly T[]\n): Struct\nexport function enums(\n values: readonly T[]\n): Struct\nexport function enums(values: readonly T[]): any {\n const schema: any = {}\n const description = values.map((v) => print(v)).join()\n\n for (const key of values) {\n schema[key] = key\n }\n\n return new Struct({\n type: 'enums',\n schema,\n validator(value) {\n return (\n values.includes(value as any) ||\n `Expected one of \\`${description}\\`, but received: ${print(value)}`\n )\n },\n })\n}\n\n/**\n * Ensure that a value is a function.\n */\n\nexport function func(): Struct {\n return define('func', (value) => {\n return (\n typeof value === 'function' ||\n `Expected a function, but received: ${print(value)}`\n )\n })\n}\n\n/**\n * Ensure that a value is an instance of a specific class.\n */\n\nexport function instance(\n Class: T\n): Struct, null> {\n return define('instance', (value) => {\n return (\n value instanceof Class ||\n `Expected a \\`${Class.name}\\` instance, but received: ${print(value)}`\n )\n })\n}\n\n/**\n * Ensure that a value is an integer.\n */\n\nexport function integer(): Struct {\n return define('integer', (value) => {\n return (\n (typeof value === 'number' && !isNaN(value) && Number.isInteger(value)) ||\n `Expected an integer, but received: ${print(value)}`\n )\n })\n}\n\n/**\n * Ensure that a value matches all of a set of types.\n */\n\nexport function intersection(Structs: TupleSchema<[A]>): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q]>\n): Struct<\n A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q,\n null\n>\nexport function intersection(Structs: Array>): any {\n return new Struct({\n type: 'intersection',\n schema: null,\n *entries(value, ctx) {\n for (const S of Structs) {\n yield* S.entries(value, ctx)\n }\n },\n *validator(value, ctx) {\n for (const S of Structs) {\n yield* S.validator(value, ctx)\n }\n },\n *refiner(value, ctx) {\n for (const S of Structs) {\n yield* S.refiner(value, ctx)\n }\n },\n })\n}\n\n/**\n * Ensure that a value is an exact value, using `===` for comparison.\n */\n\nexport function literal(constant: T): Struct\nexport function literal(constant: T): Struct\nexport function literal(constant: T): Struct\nexport function literal(constant: T): Struct\nexport function literal(constant: T): any {\n const description = print(constant)\n const t = typeof constant\n return new Struct({\n type: 'literal',\n schema:\n t === 'string' || t === 'number' || t === 'boolean' ? constant : null,\n validator(value) {\n return (\n value === constant ||\n `Expected the literal \\`${description}\\`, but received: ${print(value)}`\n )\n },\n })\n}\n\n/**\n * Ensure that a value is a `Map` object, and that its keys and values are of\n * specific types.\n */\n\nexport function map(): Struct, null>\nexport function map(\n Key: Struct,\n Value: Struct\n): Struct, null>\nexport function map(Key?: Struct, Value?: Struct): any {\n return new Struct({\n type: 'map',\n schema: null,\n *entries(value) {\n if (Key && Value && value instanceof Map) {\n for (const [k, v] of value.entries()) {\n yield [k as string, k, Key]\n yield [k as string, v, Value]\n }\n }\n },\n coercer(value) {\n return value instanceof Map ? new Map(value) : value\n },\n validator(value) {\n return (\n value instanceof Map ||\n `Expected a \\`Map\\` object, but received: ${print(value)}`\n )\n },\n })\n}\n\n/**\n * Ensure that no value ever passes validation.\n */\n\nexport function never(): Struct {\n return define('never', () => false)\n}\n\n/**\n * Augment an existing struct to allow `null` values.\n */\n\nexport function nullable(struct: Struct): Struct {\n return new Struct({\n ...struct,\n validator: (value, ctx) => value === null || struct.validator(value, ctx),\n refiner: (value, ctx) => value === null || struct.refiner(value, ctx),\n })\n}\n\n/**\n * Ensure that a value is a number.\n */\n\nexport function number(): Struct {\n return define('number', (value) => {\n return (\n (typeof value === 'number' && !isNaN(value)) ||\n `Expected a number, but received: ${print(value)}`\n )\n })\n}\n\n/**\n * Ensure that a value is an object, that is has a known set of properties,\n * and that its properties are of specific types.\n *\n * Note: Unrecognized properties will fail validation.\n */\n\nexport function object(): Struct, null>\nexport function object(\n schema: S\n): Struct, S>\nexport function object(schema?: S): any {\n const knowns = schema ? Object.keys(schema) : []\n const Never = never()\n return new Struct({\n type: 'object',\n schema: schema ? schema : null,\n *entries(value) {\n if (schema && isObject(value)) {\n const unknowns = new Set(Object.keys(value))\n\n for (const key of knowns) {\n unknowns.delete(key)\n yield [key, value[key], schema[key]]\n }\n\n for (const key of unknowns) {\n yield [key, value[key], Never]\n }\n }\n },\n validator(value) {\n return (\n isObject(value) || `Expected an object, but received: ${print(value)}`\n )\n },\n coercer(value) {\n return isObject(value) ? { ...value } : value\n },\n })\n}\n\n/**\n * Augment a struct to allow `undefined` values.\n */\n\nexport function optional(struct: Struct): Struct {\n return new Struct({\n ...struct,\n validator: (value, ctx) =>\n value === undefined || struct.validator(value, ctx),\n refiner: (value, ctx) => value === undefined || struct.refiner(value, ctx),\n })\n}\n\n/**\n * Ensure that a value is an object with keys and values of specific types, but\n * without ensuring any specific shape of properties.\n *\n * Like TypeScript's `Record` utility.\n */\n\nexport function record(\n Key: Struct,\n Value: Struct\n): Struct, null> {\n return new Struct({\n type: 'record',\n schema: null,\n *entries(value) {\n if (isObject(value)) {\n for (const k in value) {\n const v = value[k]\n yield [k, k, Key]\n yield [k, v, Value]\n }\n }\n },\n validator(value) {\n return (\n isObject(value) || `Expected an object, but received: ${print(value)}`\n )\n },\n })\n}\n\n/**\n * Ensure that a value is a `RegExp`.\n *\n * Note: this does not test the value against the regular expression! For that\n * you need to use the `pattern()` refinement.\n */\n\nexport function regexp(): Struct {\n return define('regexp', (value) => {\n return value instanceof RegExp\n })\n}\n\n/**\n * Ensure that a value is a `Set` object, and that its elements are of a\n * specific type.\n */\n\nexport function set(): Struct, null>\nexport function set(Element: Struct): Struct, null>\nexport function set(Element?: Struct): any {\n return new Struct({\n type: 'set',\n schema: null,\n *entries(value) {\n if (Element && value instanceof Set) {\n for (const v of value) {\n yield [v as string, v, Element]\n }\n }\n },\n coercer(value) {\n return value instanceof Set ? new Set(value) : value\n },\n validator(value) {\n return (\n value instanceof Set ||\n `Expected a \\`Set\\` object, but received: ${print(value)}`\n )\n },\n })\n}\n\n/**\n * Ensure that a value is a string.\n */\n\nexport function string(): Struct {\n return define('string', (value) => {\n return (\n typeof value === 'string' ||\n `Expected a string, but received: ${print(value)}`\n )\n })\n}\n\n/**\n * Ensure that a value is a tuple of a specific length, and that each of its\n * elements is of a specific type.\n */\n\nexport function tuple(Structs: TupleSchema<[A]>): Struct<[A], null>\nexport function tuple(Structs: TupleSchema<[A, B]>): Struct<[A, B], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C]>\n): Struct<[A, B, C], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D]>\n): Struct<[A, B, C, D], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E]>\n): Struct<[A, B, C, D, E], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F]>\n): Struct<[A, B, C, D, E, F], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G]>\n): Struct<[A, B, C, D, E, F, G], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H]>\n): Struct<[A, B, C, D, E, F, G, H], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I]>\n): Struct<[A, B, C, D, E, F, G, H, I], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J]>\n): Struct<[A, B, C, D, E, F, G, H, I, J], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K]>\n): Struct<[A, B, C, D, E, F, G, H, I, J, K], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L]>\n): Struct<[A, B, C, D, E, F, G, H, I, J, K, L], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M]>\n): Struct<[A, B, C, D, E, F, G, H, I, J, K, L, M], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N]>\n): Struct<[A, B, C, D, E, F, G, H, I, J, K, L, M, N], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O]>\n): Struct<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P]>\n): Struct<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q]>\n): Struct<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q], null>\nexport function tuple(Elements: Struct[]): any {\n const Never = never()\n\n return new Struct({\n type: 'tuple',\n schema: null,\n *entries(value) {\n if (Array.isArray(value)) {\n const length = Math.max(Elements.length, value.length)\n\n for (let i = 0; i < length; i++) {\n yield [i, value[i], Elements[i] || Never]\n }\n }\n },\n validator(value) {\n return (\n Array.isArray(value) ||\n `Expected an array, but received: ${print(value)}`\n )\n },\n })\n}\n\n/**\n * Ensure that a value has a set of known properties of specific types.\n *\n * Note: Unrecognized properties are allowed and untouched. This is similar to\n * how TypeScript's structural typing works.\n */\n\nexport function type(\n schema: S\n): Struct, S> {\n const keys = Object.keys(schema)\n return new Struct({\n type: 'type',\n schema,\n *entries(value) {\n if (isObject(value)) {\n for (const k of keys) {\n yield [k, value[k], schema[k]]\n }\n }\n },\n validator(value) {\n return (\n isObject(value) || `Expected an object, but received: ${print(value)}`\n )\n },\n })\n}\n\n/**\n * Ensure that a value matches one of a set of types.\n */\n\nexport function union(Structs: TupleSchema<[A]>): Struct\nexport function union(Structs: TupleSchema<[A, B]>): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q]>\n): Struct<\n A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q,\n null\n>\nexport function union(Structs: Struct[]): any {\n const description = Structs.map((s) => s.type).join(' | ')\n return new Struct({\n type: 'union',\n schema: null,\n validator(value, ctx) {\n const failures = []\n\n for (const S of Structs) {\n const [...tuples] = run(value, S, ctx)\n const [first] = tuples\n\n if (!first[0]) {\n return []\n } else {\n for (const [failure] of tuples) {\n if (failure) {\n failures.push(failure)\n }\n }\n }\n }\n\n return [\n `Expected the value to satisfy a union of \\`${description}\\`, but received: ${print(\n value\n )}`,\n ...failures,\n ]\n },\n })\n}\n\n/**\n * Ensure that any value passes validation, without widening its type to `any`.\n */\n\nexport function unknown(): Struct {\n return define('unknown', () => true)\n}\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import { Struct, is, Coercer } from '../struct'\nimport { isPlainObject } from '../utils'\nimport { string, unknown } from './types'\n\n/**\n * Augment a `Struct` to add an additional coercion step to its input.\n *\n * This allows you to transform input data before validating it, to increase the\n * likelihood that it passes validation—for example for default values, parsing\n * different formats, etc.\n *\n * Note: You must use `create(value, Struct)` on the value to have the coercion\n * take effect! Using simply `assert()` or `is()` will not use coercion.\n */\n\nexport function coerce(\n struct: Struct,\n condition: Struct,\n coercer: Coercer\n): Struct {\n return new Struct({\n ...struct,\n coercer: (value, ctx) => {\n return is(value, condition)\n ? struct.coercer(coercer(value, ctx), ctx)\n : struct.coercer(value, ctx)\n },\n })\n}\n\n/**\n * Augment a struct to replace `undefined` values with a default.\n *\n * Note: You must use `create(value, Struct)` on the value to have the coercion\n * take effect! Using simply `assert()` or `is()` will not use coercion.\n */\n\nexport function defaulted(\n struct: Struct,\n fallback: any,\n options: {\n strict?: boolean\n } = {}\n): Struct {\n return coerce(struct, unknown(), (x) => {\n const f = typeof fallback === 'function' ? fallback() : fallback\n\n if (x === undefined) {\n return f\n }\n\n if (!options.strict && isPlainObject(x) && isPlainObject(f)) {\n const ret = { ...x }\n let changed = false\n\n for (const key in f) {\n if (ret[key] === undefined) {\n ret[key] = f[key]\n changed = true\n }\n }\n\n if (changed) {\n return ret\n }\n }\n\n return x\n })\n}\n\n/**\n * Augment a struct to trim string inputs.\n *\n * Note: You must use `create(value, Struct)` on the value to have the coercion\n * take effect! Using simply `assert()` or `is()` will not use coercion.\n */\n\nexport function trimmed(struct: Struct): Struct {\n return coerce(struct, string(), (x) => x.trim())\n}\n","import {Buffer} from 'buffer';\n\nexport const toBuffer = (arr: Buffer | Uint8Array | Array): Buffer => {\n if (Buffer.isBuffer(arr)) {\n return arr;\n } else if (arr instanceof Uint8Array) {\n return Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength);\n } else {\n return Buffer.from(arr);\n }\n};\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"logger/5.6.0\";\n//# sourceMappingURL=_version.js.map","export const version = \"bytes/5.6.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0x0\" + hex.substring(2);\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport hash from \"hash.js\";\n//const _ripemd160 = _hash.ripemd160;\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { SupportedAlgorithm } from \"./types\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function ripemd160(data) {\n return \"0x\" + (hash.ripemd160().update(arrayify(data)).digest(\"hex\"));\n}\nexport function sha256(data) {\n return \"0x\" + (hash.sha256().update(arrayify(data)).digest(\"hex\"));\n}\nexport function sha512(data) {\n return \"0x\" + (hash.sha512().update(arrayify(data)).digest(\"hex\"));\n}\nexport function computeHmac(algorithm, key, data) {\n if (!SupportedAlgorithm[algorithm]) {\n logger.throwError(\"unsupported algorithm \" + algorithm, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"hmac\",\n algorithm: algorithm\n });\n }\n return \"0x\" + hash.hmac(hash[algorithm], arrayify(key)).update(arrayify(data)).digest(\"hex\");\n}\n//# sourceMappingURL=sha2.js.map","export const version = \"sha2/5.6.0\";\n//# sourceMappingURL=_version.js.map","import {Buffer} from 'buffer';\nimport {serialize, deserialize, deserializeUnchecked} from 'borsh';\n\n// Class wrapping a plain object\nexport class Struct {\n constructor(properties: any) {\n Object.assign(this, properties);\n }\n\n encode(): Buffer {\n return Buffer.from(serialize(SOLANA_SCHEMA, this));\n }\n\n static decode(data: Buffer): any {\n return deserialize(SOLANA_SCHEMA, this, data);\n }\n\n static decodeUnchecked(data: Buffer): any {\n return deserializeUnchecked(SOLANA_SCHEMA, this, data);\n }\n}\n\n// Class representing a Rust-compatible enum, since enums are only strings or\n// numbers in pure JS\nexport class Enum extends Struct {\n enum: string = '';\n constructor(properties: any) {\n super(properties);\n if (Object.keys(properties).length !== 1) {\n throw new Error('Enum can only take single value');\n }\n Object.keys(properties).map(key => {\n this.enum = key;\n });\n }\n}\n\nexport const SOLANA_SCHEMA: Map = new Map();\n","import BN from 'bn.js';\nimport bs58 from 'bs58';\nimport {Buffer} from 'buffer';\nimport nacl from 'tweetnacl';\nimport {sha256} from '@ethersproject/sha2';\n\nimport {Struct, SOLANA_SCHEMA} from './util/borsh-schema';\nimport {toBuffer} from './util/to-buffer';\n\n/**\n * Maximum length of derived pubkey seed\n */\nexport const MAX_SEED_LENGTH = 32;\n\n/**\n * Value to be converted into public key\n */\nexport type PublicKeyInitData =\n | number\n | string\n | Buffer\n | Uint8Array\n | Array\n | PublicKeyData;\n\n/**\n * JSON object representation of PublicKey class\n */\nexport type PublicKeyData = {\n /** @internal */\n _bn: BN;\n};\n\nfunction isPublicKeyData(value: PublicKeyInitData): value is PublicKeyData {\n return (value as PublicKeyData)._bn !== undefined;\n}\n\n/**\n * A public key\n */\nexport class PublicKey extends Struct {\n /** @internal */\n _bn: BN;\n\n /**\n * Create a new PublicKey object\n * @param value ed25519 public key as buffer or base-58 encoded string\n */\n constructor(value: PublicKeyInitData) {\n super({});\n if (isPublicKeyData(value)) {\n this._bn = value._bn;\n } else {\n if (typeof value === 'string') {\n // assume base 58 encoding by default\n const decoded = bs58.decode(value);\n if (decoded.length != 32) {\n throw new Error(`Invalid public key input`);\n }\n this._bn = new BN(decoded);\n } else {\n this._bn = new BN(value);\n }\n\n if (this._bn.byteLength() > 32) {\n throw new Error(`Invalid public key input`);\n }\n }\n }\n\n /**\n * Default public key value. (All zeros)\n */\n static default: PublicKey = new PublicKey('11111111111111111111111111111111');\n\n /**\n * Checks if two publicKeys are equal\n */\n equals(publicKey: PublicKey): boolean {\n return this._bn.eq(publicKey._bn);\n }\n\n /**\n * Return the base-58 representation of the public key\n */\n toBase58(): string {\n return bs58.encode(this.toBytes());\n }\n\n toJSON(): string {\n return this.toBase58();\n }\n\n /**\n * Return the byte array representation of the public key\n */\n toBytes(): Uint8Array {\n return this.toBuffer();\n }\n\n /**\n * Return the Buffer representation of the public key\n */\n toBuffer(): Buffer {\n const b = this._bn.toArrayLike(Buffer);\n if (b.length === 32) {\n return b;\n }\n\n const zeroPad = Buffer.alloc(32);\n b.copy(zeroPad, 32 - b.length);\n return zeroPad;\n }\n\n /**\n * Return the base-58 representation of the public key\n */\n toString(): string {\n return this.toBase58();\n }\n\n /**\n * Derive a public key from another key, a seed, and a program ID.\n * The program ID will also serve as the owner of the public key, giving\n * it permission to write data to the account.\n */\n /* eslint-disable require-await */\n static async createWithSeed(\n fromPublicKey: PublicKey,\n seed: string,\n programId: PublicKey,\n ): Promise {\n const buffer = Buffer.concat([\n fromPublicKey.toBuffer(),\n Buffer.from(seed),\n programId.toBuffer(),\n ]);\n const hash = sha256(new Uint8Array(buffer)).slice(2);\n return new PublicKey(Buffer.from(hash, 'hex'));\n }\n\n /**\n * Derive a program address from seeds and a program ID.\n */\n /* eslint-disable require-await */\n static createProgramAddressSync(\n seeds: Array,\n programId: PublicKey,\n ): PublicKey {\n let buffer = Buffer.alloc(0);\n seeds.forEach(function (seed) {\n if (seed.length > MAX_SEED_LENGTH) {\n throw new TypeError(`Max seed length exceeded`);\n }\n buffer = Buffer.concat([buffer, toBuffer(seed)]);\n });\n buffer = Buffer.concat([\n buffer,\n programId.toBuffer(),\n Buffer.from('ProgramDerivedAddress'),\n ]);\n let hash = sha256(new Uint8Array(buffer)).slice(2);\n let publicKeyBytes = new BN(hash, 16).toArray(undefined, 32);\n if (is_on_curve(publicKeyBytes)) {\n throw new Error(`Invalid seeds, address must fall off the curve`);\n }\n return new PublicKey(publicKeyBytes);\n }\n\n /**\n * Async version of createProgramAddressSync\n * For backwards compatibility\n */\n /* eslint-disable require-await */\n static async createProgramAddress(\n seeds: Array,\n programId: PublicKey,\n ): Promise {\n return this.createProgramAddressSync(seeds, programId);\n }\n\n /**\n * Find a valid program address\n *\n * Valid program addresses must fall off the ed25519 curve. This function\n * iterates a nonce until it finds one that when combined with the seeds\n * results in a valid program address.\n */\n static findProgramAddressSync(\n seeds: Array,\n programId: PublicKey,\n ): [PublicKey, number] {\n let nonce = 255;\n let address;\n while (nonce != 0) {\n try {\n const seedsWithNonce = seeds.concat(Buffer.from([nonce]));\n address = this.createProgramAddressSync(seedsWithNonce, programId);\n } catch (err) {\n if (err instanceof TypeError) {\n throw err;\n }\n nonce--;\n continue;\n }\n return [address, nonce];\n }\n throw new Error(`Unable to find a viable program address nonce`);\n }\n\n /**\n * Async version of findProgramAddressSync\n * For backwards compatibility\n */\n static async findProgramAddress(\n seeds: Array,\n programId: PublicKey,\n ): Promise<[PublicKey, number]> {\n return this.findProgramAddressSync(seeds, programId);\n }\n\n /**\n * Check that a pubkey is on the ed25519 curve.\n */\n static isOnCurve(pubkeyData: PublicKeyInitData): boolean {\n const pubkey = new PublicKey(pubkeyData);\n return is_on_curve(pubkey.toBytes()) == 1;\n }\n}\n\nSOLANA_SCHEMA.set(PublicKey, {\n kind: 'struct',\n fields: [['_bn', 'u256']],\n});\n\n// @ts-ignore\nlet naclLowLevel = nacl.lowlevel;\n\n// Check that a pubkey is on the curve.\n// This function and its dependents were sourced from:\n// https://github.com/dchest/tweetnacl-js/blob/f1ec050ceae0861f34280e62498b1d3ed9c350c6/nacl.js#L792\nfunction is_on_curve(p: any) {\n var r = [\n naclLowLevel.gf(),\n naclLowLevel.gf(),\n naclLowLevel.gf(),\n naclLowLevel.gf(),\n ];\n\n var t = naclLowLevel.gf(),\n chk = naclLowLevel.gf(),\n num = naclLowLevel.gf(),\n den = naclLowLevel.gf(),\n den2 = naclLowLevel.gf(),\n den4 = naclLowLevel.gf(),\n den6 = naclLowLevel.gf();\n\n naclLowLevel.set25519(r[2], gf1);\n naclLowLevel.unpack25519(r[1], p);\n naclLowLevel.S(num, r[1]);\n naclLowLevel.M(den, num, naclLowLevel.D);\n naclLowLevel.Z(num, num, r[2]);\n naclLowLevel.A(den, r[2], den);\n\n naclLowLevel.S(den2, den);\n naclLowLevel.S(den4, den2);\n naclLowLevel.M(den6, den4, den2);\n naclLowLevel.M(t, den6, num);\n naclLowLevel.M(t, t, den);\n\n naclLowLevel.pow2523(t, t);\n naclLowLevel.M(t, t, num);\n naclLowLevel.M(t, t, den);\n naclLowLevel.M(t, t, den);\n naclLowLevel.M(r[0], t, den);\n\n naclLowLevel.S(chk, r[0]);\n naclLowLevel.M(chk, chk, den);\n if (neq25519(chk, num)) naclLowLevel.M(r[0], r[0], I);\n\n naclLowLevel.S(chk, r[0]);\n naclLowLevel.M(chk, chk, den);\n if (neq25519(chk, num)) return 0;\n return 1;\n}\nlet gf1 = naclLowLevel.gf([1]);\nlet I = naclLowLevel.gf([\n 0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7,\n 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83,\n]);\nfunction neq25519(a: any, b: any) {\n var c = new Uint8Array(32),\n d = new Uint8Array(32);\n naclLowLevel.pack25519(c, a);\n naclLowLevel.pack25519(d, b);\n return naclLowLevel.crypto_verify_32(c, 0, d, 0);\n}\n","import {PublicKey} from './publickey';\n\nexport const BPF_LOADER_DEPRECATED_PROGRAM_ID = new PublicKey(\n 'BPFLoader1111111111111111111111111111111111',\n);\n","/**\n * Maximum over-the-wire size of a Transaction\n *\n * 1280 is IPv6 minimum MTU\n * 40 bytes is the size of the IPv6 header\n * 8 bytes is the size of the fragment header\n */\nexport const PACKET_DATA_SIZE = 1280 - 40 - 8;\n\nexport const SIGNATURE_LENGTH_IN_BYTES = 64;\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\n/**\n * Layout for a public key\n */\nexport const publicKey = (property: string = 'publicKey') => {\n return BufferLayout.blob(32, property);\n};\n\n/**\n * Layout for a 64bit unsigned value\n */\nexport const uint64 = (property: string = 'uint64') => {\n return BufferLayout.blob(8, property);\n};\n\ninterface IRustStringShim\n extends Omit<\n BufferLayout.Structure<\n Readonly<{\n length: number;\n lengthPadding: number;\n chars: Uint8Array;\n }>\n >,\n 'decode' | 'encode' | 'replicate'\n > {\n alloc: (str: string) => number;\n decode: (b: Uint8Array, offset?: number) => string;\n encode: (str: string, b: Uint8Array, offset?: number) => number;\n replicate: (property: string) => this;\n}\n\n/**\n * Layout for a Rust String type\n */\nexport const rustString = (\n property: string = 'string',\n): BufferLayout.Layout => {\n const rsl = BufferLayout.struct<\n Readonly<{\n length?: number;\n lengthPadding?: number;\n chars: Uint8Array;\n }>\n >(\n [\n BufferLayout.u32('length'),\n BufferLayout.u32('lengthPadding'),\n BufferLayout.blob(BufferLayout.offset(BufferLayout.u32(), -8), 'chars'),\n ],\n property,\n );\n const _decode = rsl.decode.bind(rsl);\n const _encode = rsl.encode.bind(rsl);\n\n const rslShim = rsl as unknown as IRustStringShim;\n\n rslShim.decode = (b: Uint8Array, offset?: number) => {\n const data = _decode(b, offset);\n return data['chars'].toString();\n };\n\n rslShim.encode = (str: string, b: Uint8Array, offset?: number) => {\n const data = {\n chars: Buffer.from(str, 'utf8'),\n };\n return _encode(data, b, offset);\n };\n\n rslShim.alloc = (str: string) => {\n return (\n BufferLayout.u32().span +\n BufferLayout.u32().span +\n Buffer.from(str, 'utf8').length\n );\n };\n\n return rslShim;\n};\n\n/**\n * Layout for an Authorized object\n */\nexport const authorized = (property: string = 'authorized') => {\n return BufferLayout.struct<\n Readonly<{\n staker: Uint8Array;\n withdrawer: Uint8Array;\n }>\n >([publicKey('staker'), publicKey('withdrawer')], property);\n};\n\n/**\n * Layout for a Lockup object\n */\nexport const lockup = (property: string = 'lockup') => {\n return BufferLayout.struct<\n Readonly<{\n custodian: Uint8Array;\n epoch: number;\n unixTimestamp: number;\n }>\n >(\n [\n BufferLayout.ns64('unixTimestamp'),\n BufferLayout.ns64('epoch'),\n publicKey('custodian'),\n ],\n property,\n );\n};\n\n/**\n * Layout for a VoteInit object\n */\nexport const voteInit = (property: string = 'voteInit') => {\n return BufferLayout.struct<\n Readonly<{\n authorizedVoter: Uint8Array;\n authorizedWithdrawer: Uint8Array;\n commission: number;\n nodePubkey: Uint8Array;\n }>\n >(\n [\n publicKey('nodePubkey'),\n publicKey('authorizedVoter'),\n publicKey('authorizedWithdrawer'),\n BufferLayout.u8('commission'),\n ],\n property,\n );\n};\n\nexport function getAlloc(type: any, fields: any): number {\n let alloc = 0;\n type.layout.fields.forEach((item: any) => {\n if (item.span >= 0) {\n alloc += item.span;\n } else if (typeof item.alloc === 'function') {\n alloc += item.alloc(fields[item.property]);\n }\n });\n return alloc;\n}\n","export function decodeLength(bytes: Array): number {\n let len = 0;\n let size = 0;\n for (;;) {\n let elem = bytes.shift() as number;\n len |= (elem & 0x7f) << (size * 7);\n size += 1;\n if ((elem & 0x80) === 0) {\n break;\n }\n }\n return len;\n}\n\nexport function encodeLength(bytes: Array, len: number) {\n let rem_len = len;\n for (;;) {\n let elem = rem_len & 0x7f;\n rem_len >>= 7;\n if (rem_len == 0) {\n bytes.push(elem);\n break;\n } else {\n elem |= 0x80;\n bytes.push(elem);\n }\n }\n}\n","import bs58 from 'bs58';\nimport {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {PublicKey} from './publickey';\nimport type {Blockhash} from './blockhash';\nimport * as Layout from './layout';\nimport {PACKET_DATA_SIZE} from './transaction-constants';\nimport * as shortvec from './util/shortvec-encoding';\nimport {toBuffer} from './util/to-buffer';\n\n/**\n * The message header, identifying signed and read-only account\n */\nexport type MessageHeader = {\n /**\n * The number of signatures required for this message to be considered valid. The\n * signatures must match the first `numRequiredSignatures` of `accountKeys`.\n */\n numRequiredSignatures: number;\n /** The last `numReadonlySignedAccounts` of the signed keys are read-only accounts */\n numReadonlySignedAccounts: number;\n /** The last `numReadonlySignedAccounts` of the unsigned keys are read-only accounts */\n numReadonlyUnsignedAccounts: number;\n};\n\n/**\n * An instruction to execute by a program\n *\n * @property {number} programIdIndex\n * @property {number[]} accounts\n * @property {string} data\n */\nexport type CompiledInstruction = {\n /** Index into the transaction keys array indicating the program account that executes this instruction */\n programIdIndex: number;\n /** Ordered indices into the transaction keys array indicating which accounts to pass to the program */\n accounts: number[];\n /** The program input data encoded as base 58 */\n data: string;\n};\n\n/**\n * Message constructor arguments\n */\nexport type MessageArgs = {\n /** The message header, identifying signed and read-only `accountKeys` */\n header: MessageHeader;\n /** All the account keys used by this transaction */\n accountKeys: string[];\n /** The hash of a recent ledger block */\n recentBlockhash: Blockhash;\n /** Instructions that will be executed in sequence and committed in one atomic transaction if all succeed. */\n instructions: CompiledInstruction[];\n};\n\nconst PUBKEY_LENGTH = 32;\n\n/**\n * List of instructions to be processed atomically\n */\nexport class Message {\n header: MessageHeader;\n accountKeys: PublicKey[];\n recentBlockhash: Blockhash;\n instructions: CompiledInstruction[];\n\n private indexToProgramIds: Map = new Map<\n number,\n PublicKey\n >();\n\n constructor(args: MessageArgs) {\n this.header = args.header;\n this.accountKeys = args.accountKeys.map(account => new PublicKey(account));\n this.recentBlockhash = args.recentBlockhash;\n this.instructions = args.instructions;\n this.instructions.forEach(ix =>\n this.indexToProgramIds.set(\n ix.programIdIndex,\n this.accountKeys[ix.programIdIndex],\n ),\n );\n }\n\n isAccountSigner(index: number): boolean {\n return index < this.header.numRequiredSignatures;\n }\n\n isAccountWritable(index: number): boolean {\n return (\n index <\n this.header.numRequiredSignatures -\n this.header.numReadonlySignedAccounts ||\n (index >= this.header.numRequiredSignatures &&\n index <\n this.accountKeys.length - this.header.numReadonlyUnsignedAccounts)\n );\n }\n\n isProgramId(index: number): boolean {\n return this.indexToProgramIds.has(index);\n }\n\n programIds(): PublicKey[] {\n return [...this.indexToProgramIds.values()];\n }\n\n nonProgramIds(): PublicKey[] {\n return this.accountKeys.filter((_, index) => !this.isProgramId(index));\n }\n\n serialize(): Buffer {\n const numKeys = this.accountKeys.length;\n\n let keyCount: number[] = [];\n shortvec.encodeLength(keyCount, numKeys);\n\n const instructions = this.instructions.map(instruction => {\n const {accounts, programIdIndex} = instruction;\n const data = Array.from(bs58.decode(instruction.data));\n\n let keyIndicesCount: number[] = [];\n shortvec.encodeLength(keyIndicesCount, accounts.length);\n\n let dataCount: number[] = [];\n shortvec.encodeLength(dataCount, data.length);\n\n return {\n programIdIndex,\n keyIndicesCount: Buffer.from(keyIndicesCount),\n keyIndices: accounts,\n dataLength: Buffer.from(dataCount),\n data,\n };\n });\n\n let instructionCount: number[] = [];\n shortvec.encodeLength(instructionCount, instructions.length);\n let instructionBuffer = Buffer.alloc(PACKET_DATA_SIZE);\n Buffer.from(instructionCount).copy(instructionBuffer);\n let instructionBufferLength = instructionCount.length;\n\n instructions.forEach(instruction => {\n const instructionLayout = BufferLayout.struct<\n Readonly<{\n data: number[];\n dataLength: Uint8Array;\n keyIndices: number[];\n keyIndicesCount: Uint8Array;\n programIdIndex: number;\n }>\n >([\n BufferLayout.u8('programIdIndex'),\n\n BufferLayout.blob(\n instruction.keyIndicesCount.length,\n 'keyIndicesCount',\n ),\n BufferLayout.seq(\n BufferLayout.u8('keyIndex'),\n instruction.keyIndices.length,\n 'keyIndices',\n ),\n BufferLayout.blob(instruction.dataLength.length, 'dataLength'),\n BufferLayout.seq(\n BufferLayout.u8('userdatum'),\n instruction.data.length,\n 'data',\n ),\n ]);\n const length = instructionLayout.encode(\n instruction,\n instructionBuffer,\n instructionBufferLength,\n );\n instructionBufferLength += length;\n });\n instructionBuffer = instructionBuffer.slice(0, instructionBufferLength);\n\n const signDataLayout = BufferLayout.struct<\n Readonly<{\n keyCount: Uint8Array;\n keys: Uint8Array[];\n numReadonlySignedAccounts: Uint8Array;\n numReadonlyUnsignedAccounts: Uint8Array;\n numRequiredSignatures: Uint8Array;\n recentBlockhash: Uint8Array;\n }>\n >([\n BufferLayout.blob(1, 'numRequiredSignatures'),\n BufferLayout.blob(1, 'numReadonlySignedAccounts'),\n BufferLayout.blob(1, 'numReadonlyUnsignedAccounts'),\n BufferLayout.blob(keyCount.length, 'keyCount'),\n BufferLayout.seq(Layout.publicKey('key'), numKeys, 'keys'),\n Layout.publicKey('recentBlockhash'),\n ]);\n\n const transaction = {\n numRequiredSignatures: Buffer.from([this.header.numRequiredSignatures]),\n numReadonlySignedAccounts: Buffer.from([\n this.header.numReadonlySignedAccounts,\n ]),\n numReadonlyUnsignedAccounts: Buffer.from([\n this.header.numReadonlyUnsignedAccounts,\n ]),\n keyCount: Buffer.from(keyCount),\n keys: this.accountKeys.map(key => toBuffer(key.toBytes())),\n recentBlockhash: bs58.decode(this.recentBlockhash),\n };\n\n let signData = Buffer.alloc(2048);\n const length = signDataLayout.encode(transaction, signData);\n instructionBuffer.copy(signData, length);\n return signData.slice(0, length + instructionBuffer.length);\n }\n\n /**\n * Decode a compiled message into a Message object.\n */\n static from(buffer: Buffer | Uint8Array | Array): Message {\n // Slice up wire data\n let byteArray = [...buffer];\n\n const numRequiredSignatures = byteArray.shift() as number;\n const numReadonlySignedAccounts = byteArray.shift() as number;\n const numReadonlyUnsignedAccounts = byteArray.shift() as number;\n\n const accountCount = shortvec.decodeLength(byteArray);\n let accountKeys = [];\n for (let i = 0; i < accountCount; i++) {\n const account = byteArray.slice(0, PUBKEY_LENGTH);\n byteArray = byteArray.slice(PUBKEY_LENGTH);\n accountKeys.push(bs58.encode(Buffer.from(account)));\n }\n\n const recentBlockhash = byteArray.slice(0, PUBKEY_LENGTH);\n byteArray = byteArray.slice(PUBKEY_LENGTH);\n\n const instructionCount = shortvec.decodeLength(byteArray);\n let instructions: CompiledInstruction[] = [];\n for (let i = 0; i < instructionCount; i++) {\n const programIdIndex = byteArray.shift() as number;\n const accountCount = shortvec.decodeLength(byteArray);\n const accounts = byteArray.slice(0, accountCount);\n byteArray = byteArray.slice(accountCount);\n const dataLength = shortvec.decodeLength(byteArray);\n const dataSlice = byteArray.slice(0, dataLength);\n const data = bs58.encode(Buffer.from(dataSlice));\n byteArray = byteArray.slice(dataLength);\n instructions.push({\n programIdIndex,\n accounts,\n data,\n });\n }\n\n const messageArgs = {\n header: {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n },\n recentBlockhash: bs58.encode(Buffer.from(recentBlockhash)),\n accountKeys,\n instructions,\n };\n\n return new Message(messageArgs);\n }\n}\n","import nacl from 'tweetnacl';\nimport bs58 from 'bs58';\nimport {Buffer} from 'buffer';\n\nimport {\n PACKET_DATA_SIZE,\n SIGNATURE_LENGTH_IN_BYTES,\n} from './transaction-constants';\nimport {Connection} from './connection';\nimport {Message} from './message';\nimport {PublicKey} from './publickey';\nimport * as shortvec from './util/shortvec-encoding';\nimport {toBuffer} from './util/to-buffer';\nimport invariant from './util/assert';\nimport type {Signer} from './keypair';\nimport type {Blockhash} from './blockhash';\nimport type {CompiledInstruction} from './message';\n\n/**\n * Transaction signature as base-58 encoded string\n */\nexport type TransactionSignature = string;\n\nexport const enum TransactionStatus {\n BLOCKHEIGHT_EXCEEDED,\n PROCESSED,\n TIMED_OUT,\n}\n\n/**\n * Default (empty) signature\n */\nconst DEFAULT_SIGNATURE = Buffer.alloc(SIGNATURE_LENGTH_IN_BYTES).fill(0);\n\n/**\n * Account metadata used to define instructions\n */\nexport type AccountMeta = {\n /** An account's public key */\n pubkey: PublicKey;\n /** True if an instruction requires a transaction signature matching `pubkey` */\n isSigner: boolean;\n /** True if the `pubkey` can be loaded as a read-write account. */\n isWritable: boolean;\n};\n\n/**\n * List of TransactionInstruction object fields that may be initialized at construction\n */\nexport type TransactionInstructionCtorFields = {\n keys: Array;\n programId: PublicKey;\n data?: Buffer;\n};\n\n/**\n * Configuration object for Transaction.serialize()\n */\nexport type SerializeConfig = {\n /** Require all transaction signatures be present (default: true) */\n requireAllSignatures?: boolean;\n /** Verify provided signatures (default: true) */\n verifySignatures?: boolean;\n};\n\n/**\n * @internal\n */\nexport interface TransactionInstructionJSON {\n keys: {\n pubkey: string;\n isSigner: boolean;\n isWritable: boolean;\n }[];\n programId: string;\n data: number[];\n}\n\n/**\n * Transaction Instruction class\n */\nexport class TransactionInstruction {\n /**\n * Public keys to include in this transaction\n * Boolean represents whether this pubkey needs to sign the transaction\n */\n keys: Array;\n\n /**\n * Program Id to execute\n */\n programId: PublicKey;\n\n /**\n * Program input\n */\n data: Buffer = Buffer.alloc(0);\n\n constructor(opts: TransactionInstructionCtorFields) {\n this.programId = opts.programId;\n this.keys = opts.keys;\n if (opts.data) {\n this.data = opts.data;\n }\n }\n\n /**\n * @internal\n */\n toJSON(): TransactionInstructionJSON {\n return {\n keys: this.keys.map(({pubkey, isSigner, isWritable}) => ({\n pubkey: pubkey.toJSON(),\n isSigner,\n isWritable,\n })),\n programId: this.programId.toJSON(),\n data: [...this.data],\n };\n }\n}\n\n/**\n * Pair of signature and corresponding public key\n */\nexport type SignaturePubkeyPair = {\n signature: Buffer | null;\n publicKey: PublicKey;\n};\n\n/**\n * List of Transaction object fields that may be initialized at construction\n */\nexport type TransactionCtorFields_DEPRECATED = {\n /** Optional nonce information used for offline nonce'd transactions */\n nonceInfo?: NonceInformation | null;\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n /** One or more signatures */\n signatures?: Array;\n /** A recent blockhash */\n recentBlockhash?: Blockhash;\n};\n\n// For backward compatibility; an unfortunate consequence of being\n// forced to over-export types by the documentation generator.\n// See https://github.com/solana-labs/solana/pull/25820\nexport type TransactionCtorFields = TransactionCtorFields_DEPRECATED;\n\n/**\n * List of Transaction object fields that may be initialized at construction\n */\nexport type TransactionBlockhashCtor = {\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n /** One or more signatures */\n signatures?: Array;\n /** A recent blockhash */\n blockhash: Blockhash;\n /** the last block chain can advance to before tx is declared expired */\n lastValidBlockHeight: number;\n};\n\n/**\n * Nonce information to be used to build an offline Transaction.\n */\nexport type NonceInformation = {\n /** The current blockhash stored in the nonce */\n nonce: Blockhash;\n /** AdvanceNonceAccount Instruction */\n nonceInstruction: TransactionInstruction;\n};\n\n/**\n * @internal\n */\nexport interface TransactionJSON {\n recentBlockhash: string | null;\n feePayer: string | null;\n nonceInfo: {\n nonce: string;\n nonceInstruction: TransactionInstructionJSON;\n } | null;\n instructions: TransactionInstructionJSON[];\n signers: string[];\n}\n\n/**\n * Transaction class\n */\nexport class Transaction {\n /**\n * Signatures for the transaction. Typically created by invoking the\n * `sign()` method\n */\n signatures: Array = [];\n\n /**\n * The first (payer) Transaction signature\n */\n get signature(): Buffer | null {\n if (this.signatures.length > 0) {\n return this.signatures[0].signature;\n }\n return null;\n }\n\n /**\n * The transaction fee payer\n */\n feePayer?: PublicKey;\n\n /**\n * The instructions to atomically execute\n */\n instructions: Array = [];\n\n /**\n * A recent transaction id. Must be populated by the caller\n */\n recentBlockhash?: Blockhash;\n\n /**\n * the last block chain can advance to before tx is declared expired\n * */\n lastValidBlockHeight?: number;\n\n /**\n * Optional Nonce information. If populated, transaction will use a durable\n * Nonce hash instead of a recentBlockhash. Must be populated by the caller\n */\n nonceInfo?: NonceInformation;\n\n /**\n * @internal\n */\n _message?: Message;\n\n /**\n * @internal\n */\n _json?: TransactionJSON;\n\n // Construct a transaction with a blockhash and lastValidBlockHeight\n constructor(opts?: TransactionBlockhashCtor);\n\n /**\n * @deprecated `TransactionCtorFields` has been deprecated and will be removed in a future version.\n * Please supply a `TransactionBlockhashCtor` instead.\n */\n constructor(opts?: TransactionCtorFields_DEPRECATED);\n\n /**\n * Construct an empty Transaction\n */\n constructor(\n opts?: TransactionBlockhashCtor | TransactionCtorFields_DEPRECATED,\n ) {\n if (!opts) {\n return;\n } else if (\n Object.prototype.hasOwnProperty.call(opts, 'lastValidBlockHeight')\n ) {\n const newOpts = opts as TransactionBlockhashCtor;\n Object.assign(this, newOpts);\n this.recentBlockhash = newOpts.blockhash;\n this.lastValidBlockHeight = newOpts.lastValidBlockHeight;\n } else {\n const oldOpts = opts as TransactionCtorFields_DEPRECATED;\n Object.assign(this, oldOpts);\n this.recentBlockhash = oldOpts.recentBlockhash;\n }\n }\n\n /**\n * @internal\n */\n toJSON(): TransactionJSON {\n return {\n recentBlockhash: this.recentBlockhash || null,\n feePayer: this.feePayer ? this.feePayer.toJSON() : null,\n nonceInfo: this.nonceInfo\n ? {\n nonce: this.nonceInfo.nonce,\n nonceInstruction: this.nonceInfo.nonceInstruction.toJSON(),\n }\n : null,\n instructions: this.instructions.map(instruction => instruction.toJSON()),\n signers: this.signatures.map(({publicKey}) => {\n return publicKey.toJSON();\n }),\n };\n }\n\n /**\n * Add one or more instructions to this Transaction\n */\n add(\n ...items: Array<\n Transaction | TransactionInstruction | TransactionInstructionCtorFields\n >\n ): Transaction {\n if (items.length === 0) {\n throw new Error('No instructions');\n }\n\n items.forEach((item: any) => {\n if ('instructions' in item) {\n this.instructions = this.instructions.concat(item.instructions);\n } else if ('data' in item && 'programId' in item && 'keys' in item) {\n this.instructions.push(item);\n } else {\n this.instructions.push(new TransactionInstruction(item));\n }\n });\n return this;\n }\n\n /**\n * Compile transaction data\n */\n compileMessage(): Message {\n if (\n this._message &&\n JSON.stringify(this.toJSON()) === JSON.stringify(this._json)\n ) {\n return this._message;\n }\n\n const {nonceInfo} = this;\n if (nonceInfo && this.instructions[0] != nonceInfo.nonceInstruction) {\n this.recentBlockhash = nonceInfo.nonce;\n this.instructions.unshift(nonceInfo.nonceInstruction);\n }\n const {recentBlockhash} = this;\n if (!recentBlockhash) {\n throw new Error('Transaction recentBlockhash required');\n }\n\n if (this.instructions.length < 1) {\n console.warn('No instructions provided');\n }\n\n let feePayer: PublicKey;\n if (this.feePayer) {\n feePayer = this.feePayer;\n } else if (this.signatures.length > 0 && this.signatures[0].publicKey) {\n // Use implicit fee payer\n feePayer = this.signatures[0].publicKey;\n } else {\n throw new Error('Transaction fee payer required');\n }\n\n for (let i = 0; i < this.instructions.length; i++) {\n if (this.instructions[i].programId === undefined) {\n throw new Error(\n `Transaction instruction index ${i} has undefined program id`,\n );\n }\n }\n\n const programIds: string[] = [];\n const accountMetas: AccountMeta[] = [];\n this.instructions.forEach(instruction => {\n instruction.keys.forEach(accountMeta => {\n accountMetas.push({...accountMeta});\n });\n\n const programId = instruction.programId.toString();\n if (!programIds.includes(programId)) {\n programIds.push(programId);\n }\n });\n\n // Append programID account metas\n programIds.forEach(programId => {\n accountMetas.push({\n pubkey: new PublicKey(programId),\n isSigner: false,\n isWritable: false,\n });\n });\n\n // Cull duplicate account metas\n const uniqueMetas: AccountMeta[] = [];\n accountMetas.forEach(accountMeta => {\n const pubkeyString = accountMeta.pubkey.toString();\n const uniqueIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.toString() === pubkeyString;\n });\n if (uniqueIndex > -1) {\n uniqueMetas[uniqueIndex].isWritable =\n uniqueMetas[uniqueIndex].isWritable || accountMeta.isWritable;\n uniqueMetas[uniqueIndex].isSigner =\n uniqueMetas[uniqueIndex].isSigner || accountMeta.isSigner;\n } else {\n uniqueMetas.push(accountMeta);\n }\n });\n\n // Sort. Prioritizing first by signer, then by writable\n uniqueMetas.sort(function (x, y) {\n if (x.isSigner !== y.isSigner) {\n // Signers always come before non-signers\n return x.isSigner ? -1 : 1;\n }\n if (x.isWritable !== y.isWritable) {\n // Writable accounts always come before read-only accounts\n return x.isWritable ? -1 : 1;\n }\n // Otherwise, sort by pubkey, stringwise.\n return x.pubkey.toBase58().localeCompare(y.pubkey.toBase58());\n });\n\n // Move fee payer to the front\n const feePayerIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.equals(feePayer);\n });\n if (feePayerIndex > -1) {\n const [payerMeta] = uniqueMetas.splice(feePayerIndex, 1);\n payerMeta.isSigner = true;\n payerMeta.isWritable = true;\n uniqueMetas.unshift(payerMeta);\n } else {\n uniqueMetas.unshift({\n pubkey: feePayer,\n isSigner: true,\n isWritable: true,\n });\n }\n\n // Disallow unknown signers\n for (const signature of this.signatures) {\n const uniqueIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.equals(signature.publicKey);\n });\n if (uniqueIndex > -1) {\n if (!uniqueMetas[uniqueIndex].isSigner) {\n uniqueMetas[uniqueIndex].isSigner = true;\n console.warn(\n 'Transaction references a signature that is unnecessary, ' +\n 'only the fee payer and instruction signer accounts should sign a transaction. ' +\n 'This behavior is deprecated and will throw an error in the next major version release.',\n );\n }\n } else {\n throw new Error(`unknown signer: ${signature.publicKey.toString()}`);\n }\n }\n\n let numRequiredSignatures = 0;\n let numReadonlySignedAccounts = 0;\n let numReadonlyUnsignedAccounts = 0;\n\n // Split out signing from non-signing keys and count header values\n const signedKeys: string[] = [];\n const unsignedKeys: string[] = [];\n uniqueMetas.forEach(({pubkey, isSigner, isWritable}) => {\n if (isSigner) {\n signedKeys.push(pubkey.toString());\n numRequiredSignatures += 1;\n if (!isWritable) {\n numReadonlySignedAccounts += 1;\n }\n } else {\n unsignedKeys.push(pubkey.toString());\n if (!isWritable) {\n numReadonlyUnsignedAccounts += 1;\n }\n }\n });\n\n const accountKeys = signedKeys.concat(unsignedKeys);\n const instructions: CompiledInstruction[] = this.instructions.map(\n instruction => {\n const {data, programId} = instruction;\n return {\n programIdIndex: accountKeys.indexOf(programId.toString()),\n accounts: instruction.keys.map(meta =>\n accountKeys.indexOf(meta.pubkey.toString()),\n ),\n data: bs58.encode(data),\n };\n },\n );\n\n instructions.forEach(instruction => {\n invariant(instruction.programIdIndex >= 0);\n instruction.accounts.forEach(keyIndex => invariant(keyIndex >= 0));\n });\n\n return new Message({\n header: {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n },\n accountKeys,\n recentBlockhash,\n instructions,\n });\n }\n\n /**\n * @internal\n */\n _compile(): Message {\n const message = this.compileMessage();\n const signedKeys = message.accountKeys.slice(\n 0,\n message.header.numRequiredSignatures,\n );\n\n if (this.signatures.length === signedKeys.length) {\n const valid = this.signatures.every((pair, index) => {\n return signedKeys[index].equals(pair.publicKey);\n });\n\n if (valid) return message;\n }\n\n this.signatures = signedKeys.map(publicKey => ({\n signature: null,\n publicKey,\n }));\n\n return message;\n }\n\n /**\n * Get a buffer of the Transaction data that need to be covered by signatures\n */\n serializeMessage(): Buffer {\n return this._compile().serialize();\n }\n\n /**\n * Get the estimated fee associated with a transaction\n */\n async getEstimatedFee(connection: Connection): Promise {\n return (await connection.getFeeForMessage(this.compileMessage())).value;\n }\n\n /**\n * Specify the public keys which will be used to sign the Transaction.\n * The first signer will be used as the transaction fee payer account.\n *\n * Signatures can be added with either `partialSign` or `addSignature`\n *\n * @deprecated Deprecated since v0.84.0. Only the fee payer needs to be\n * specified and it can be set in the Transaction constructor or with the\n * `feePayer` property.\n */\n setSigners(...signers: Array) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n const seen = new Set();\n this.signatures = signers\n .filter(publicKey => {\n const key = publicKey.toString();\n if (seen.has(key)) {\n return false;\n } else {\n seen.add(key);\n return true;\n }\n })\n .map(publicKey => ({signature: null, publicKey}));\n }\n\n /**\n * Sign the Transaction with the specified signers. Multiple signatures may\n * be applied to a Transaction. The first signature is considered \"primary\"\n * and is used identify and confirm transactions.\n *\n * If the Transaction `feePayer` is not set, the first signer will be used\n * as the transaction fee payer account.\n *\n * Transaction fields should not be modified after the first call to `sign`,\n * as doing so may invalidate the signature and cause the Transaction to be\n * rejected.\n *\n * The Transaction must be assigned a valid `recentBlockhash` before invoking this method\n */\n sign(...signers: Array) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n // Dedupe signers\n const seen = new Set();\n const uniqueSigners = [];\n for (const signer of signers) {\n const key = signer.publicKey.toString();\n if (seen.has(key)) {\n continue;\n } else {\n seen.add(key);\n uniqueSigners.push(signer);\n }\n }\n\n this.signatures = uniqueSigners.map(signer => ({\n signature: null,\n publicKey: signer.publicKey,\n }));\n\n const message = this._compile();\n this._partialSign(message, ...uniqueSigners);\n }\n\n /**\n * Partially sign a transaction with the specified accounts. All accounts must\n * correspond to either the fee payer or a signer account in the transaction\n * instructions.\n *\n * All the caveats from the `sign` method apply to `partialSign`\n */\n partialSign(...signers: Array) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n // Dedupe signers\n const seen = new Set();\n const uniqueSigners = [];\n for (const signer of signers) {\n const key = signer.publicKey.toString();\n if (seen.has(key)) {\n continue;\n } else {\n seen.add(key);\n uniqueSigners.push(signer);\n }\n }\n\n const message = this._compile();\n this._partialSign(message, ...uniqueSigners);\n }\n\n /**\n * @internal\n */\n _partialSign(message: Message, ...signers: Array) {\n const signData = message.serialize();\n signers.forEach(signer => {\n const signature = nacl.sign.detached(signData, signer.secretKey);\n this._addSignature(signer.publicKey, toBuffer(signature));\n });\n }\n\n /**\n * Add an externally created signature to a transaction. The public key\n * must correspond to either the fee payer or a signer account in the transaction\n * instructions.\n */\n addSignature(pubkey: PublicKey, signature: Buffer) {\n this._compile(); // Ensure signatures array is populated\n this._addSignature(pubkey, signature);\n }\n\n /**\n * @internal\n */\n _addSignature(pubkey: PublicKey, signature: Buffer) {\n invariant(signature.length === 64);\n\n const index = this.signatures.findIndex(sigpair =>\n pubkey.equals(sigpair.publicKey),\n );\n if (index < 0) {\n throw new Error(`unknown signer: ${pubkey.toString()}`);\n }\n\n this.signatures[index].signature = Buffer.from(signature);\n }\n\n /**\n * Verify signatures of a complete, signed Transaction\n */\n verifySignatures(): boolean {\n return this._verifySignatures(this.serializeMessage(), true);\n }\n\n /**\n * @internal\n */\n _verifySignatures(signData: Buffer, requireAllSignatures: boolean): boolean {\n for (const {signature, publicKey} of this.signatures) {\n if (signature === null) {\n if (requireAllSignatures) {\n return false;\n }\n } else {\n if (\n !nacl.sign.detached.verify(signData, signature, publicKey.toBuffer())\n ) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * Serialize the Transaction in the wire format.\n */\n serialize(config?: SerializeConfig): Buffer {\n const {requireAllSignatures, verifySignatures} = Object.assign(\n {requireAllSignatures: true, verifySignatures: true},\n config,\n );\n\n const signData = this.serializeMessage();\n if (\n verifySignatures &&\n !this._verifySignatures(signData, requireAllSignatures)\n ) {\n throw new Error('Signature verification failed');\n }\n\n return this._serialize(signData);\n }\n\n /**\n * @internal\n */\n _serialize(signData: Buffer): Buffer {\n const {signatures} = this;\n const signatureCount: number[] = [];\n shortvec.encodeLength(signatureCount, signatures.length);\n const transactionLength =\n signatureCount.length + signatures.length * 64 + signData.length;\n const wireTransaction = Buffer.alloc(transactionLength);\n invariant(signatures.length < 256);\n Buffer.from(signatureCount).copy(wireTransaction, 0);\n signatures.forEach(({signature}, index) => {\n if (signature !== null) {\n invariant(signature.length === 64, `signature has invalid length`);\n Buffer.from(signature).copy(\n wireTransaction,\n signatureCount.length + index * 64,\n );\n }\n });\n signData.copy(\n wireTransaction,\n signatureCount.length + signatures.length * 64,\n );\n invariant(\n wireTransaction.length <= PACKET_DATA_SIZE,\n `Transaction too large: ${wireTransaction.length} > ${PACKET_DATA_SIZE}`,\n );\n return wireTransaction;\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get keys(): Array {\n invariant(this.instructions.length === 1);\n return this.instructions[0].keys.map(keyObj => keyObj.pubkey);\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get programId(): PublicKey {\n invariant(this.instructions.length === 1);\n return this.instructions[0].programId;\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get data(): Buffer {\n invariant(this.instructions.length === 1);\n return this.instructions[0].data;\n }\n\n /**\n * Parse a wire transaction into a Transaction object.\n */\n static from(buffer: Buffer | Uint8Array | Array): Transaction {\n // Slice up wire data\n let byteArray = [...buffer];\n\n const signatureCount = shortvec.decodeLength(byteArray);\n let signatures = [];\n for (let i = 0; i < signatureCount; i++) {\n const signature = byteArray.slice(0, SIGNATURE_LENGTH_IN_BYTES);\n byteArray = byteArray.slice(SIGNATURE_LENGTH_IN_BYTES);\n signatures.push(bs58.encode(Buffer.from(signature)));\n }\n\n return Transaction.populate(Message.from(byteArray), signatures);\n }\n\n /**\n * Populate Transaction object from message and signatures\n */\n static populate(\n message: Message,\n signatures: Array = [],\n ): Transaction {\n const transaction = new Transaction();\n transaction.recentBlockhash = message.recentBlockhash;\n if (message.header.numRequiredSignatures > 0) {\n transaction.feePayer = message.accountKeys[0];\n }\n signatures.forEach((signature, index) => {\n const sigPubkeyPair = {\n signature:\n signature == bs58.encode(DEFAULT_SIGNATURE)\n ? null\n : bs58.decode(signature),\n publicKey: message.accountKeys[index],\n };\n transaction.signatures.push(sigPubkeyPair);\n });\n\n message.instructions.forEach(instruction => {\n const keys = instruction.accounts.map(account => {\n const pubkey = message.accountKeys[account];\n return {\n pubkey,\n isSigner:\n transaction.signatures.some(\n keyObj => keyObj.publicKey.toString() === pubkey.toString(),\n ) || message.isAccountSigner(account),\n isWritable: message.isAccountWritable(account),\n };\n });\n\n transaction.instructions.push(\n new TransactionInstruction({\n keys,\n programId: message.accountKeys[instruction.programIdIndex],\n data: bs58.decode(instruction.data),\n }),\n );\n });\n\n transaction._message = message;\n transaction._json = transaction.toJSON();\n\n return transaction;\n }\n}\n","export default function (\n condition: unknown,\n message?: string,\n): asserts condition {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n","import {PublicKey} from './publickey';\n\nexport const SYSVAR_CLOCK_PUBKEY = new PublicKey(\n 'SysvarC1ock11111111111111111111111111111111',\n);\n\nexport const SYSVAR_EPOCH_SCHEDULE_PUBKEY = new PublicKey(\n 'SysvarEpochSchedu1e111111111111111111111111',\n);\n\nexport const SYSVAR_INSTRUCTIONS_PUBKEY = new PublicKey(\n 'Sysvar1nstructions1111111111111111111111111',\n);\n\nexport const SYSVAR_RECENT_BLOCKHASHES_PUBKEY = new PublicKey(\n 'SysvarRecentB1ockHashes11111111111111111111',\n);\n\nexport const SYSVAR_RENT_PUBKEY = new PublicKey(\n 'SysvarRent111111111111111111111111111111111',\n);\n\nexport const SYSVAR_REWARDS_PUBKEY = new PublicKey(\n 'SysvarRewards111111111111111111111111111111',\n);\n\nexport const SYSVAR_SLOT_HASHES_PUBKEY = new PublicKey(\n 'SysvarS1otHashes111111111111111111111111111',\n);\n\nexport const SYSVAR_SLOT_HISTORY_PUBKEY = new PublicKey(\n 'SysvarS1otHistory11111111111111111111111111',\n);\n\nexport const SYSVAR_STAKE_HISTORY_PUBKEY = new PublicKey(\n 'SysvarStakeHistory1111111111111111111111111',\n);\n","import {Connection} from '../connection';\nimport {Transaction} from '../transaction';\nimport type {ConfirmOptions} from '../connection';\nimport type {Signer} from '../keypair';\nimport type {TransactionSignature} from '../transaction';\n\n/**\n * Sign, send and confirm a transaction.\n *\n * If `commitment` option is not specified, defaults to 'max' commitment.\n *\n * @param {Connection} connection\n * @param {Transaction} transaction\n * @param {Array} signers\n * @param {ConfirmOptions} [options]\n * @returns {Promise}\n */\nexport async function sendAndConfirmTransaction(\n connection: Connection,\n transaction: Transaction,\n signers: Array,\n options?: ConfirmOptions,\n): Promise {\n const sendOptions = options && {\n skipPreflight: options.skipPreflight,\n preflightCommitment: options.preflightCommitment || options.commitment,\n maxRetries: options.maxRetries,\n };\n\n const signature = await connection.sendTransaction(\n transaction,\n signers,\n sendOptions,\n );\n\n const status =\n transaction.recentBlockhash != null &&\n transaction.lastValidBlockHeight != null\n ? (\n await connection.confirmTransaction(\n {\n signature: signature,\n blockhash: transaction.recentBlockhash,\n lastValidBlockHeight: transaction.lastValidBlockHeight,\n },\n options && options.commitment,\n )\n ).value\n : (\n await connection.confirmTransaction(\n signature,\n options && options.commitment,\n )\n ).value;\n\n if (status.err) {\n throw new Error(\n `Transaction ${signature} failed (${JSON.stringify(status)})`,\n );\n }\n\n return signature;\n}\n","// zzz\nexport function sleep(ms: number): Promise {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from './layout';\n\nexport interface IInstructionInputData {\n readonly instruction: number;\n}\n\n/**\n * @internal\n */\nexport type InstructionType = {\n /** The Instruction index (from solana upstream program) */\n index: number;\n /** The BufferLayout to use to build data */\n layout: BufferLayout.Layout;\n};\n\n/**\n * Populate a buffer of instruction data using an InstructionType\n * @internal\n */\nexport function encodeData(\n type: InstructionType,\n fields?: any,\n): Buffer {\n const allocLength =\n type.layout.span >= 0 ? type.layout.span : Layout.getAlloc(type, fields);\n const data = Buffer.alloc(allocLength);\n const layoutFields = Object.assign({instruction: type.index}, fields);\n type.layout.encode(layoutFields, data);\n return data;\n}\n\n/**\n * Decode instruction data buffer using an InstructionType\n * @internal\n */\nexport function decodeData(\n type: InstructionType,\n buffer: Buffer,\n): TInputData {\n let data: TInputData;\n try {\n data = type.layout.decode(buffer);\n } catch (err) {\n throw new Error('invalid instruction; ' + err);\n }\n\n if (data.instruction !== type.index) {\n throw new Error(\n `invalid instruction; instruction index mismatch ${data.instruction} != ${type.index}`,\n );\n }\n\n return data;\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\n/**\n * https://github.com/solana-labs/solana/blob/90bedd7e067b5b8f3ddbb45da00a4e9cabb22c62/sdk/src/fee_calculator.rs#L7-L11\n *\n * @internal\n */\nexport const FeeCalculatorLayout = BufferLayout.nu64('lamportsPerSignature');\n\n/**\n * Calculator for transaction fees.\n */\nexport interface FeeCalculator {\n /** Cost in lamports to validate a signature. */\n lamportsPerSignature: number;\n}\n","import {Buffer} from 'buffer';\nimport {blob, Layout} from '@solana/buffer-layout';\nimport {toBigIntLE, toBufferLE} from 'bigint-buffer';\n\ninterface EncodeDecode {\n decode(buffer: Buffer, offset?: number): T;\n encode(src: T, buffer: Buffer, offset?: number): number;\n}\n\nconst encodeDecode = (layout: Layout): EncodeDecode => {\n const decode = layout.decode.bind(layout);\n const encode = layout.encode.bind(layout);\n return {decode, encode};\n};\n\nconst bigInt =\n (length: number) =>\n (property?: string): Layout => {\n const layout = blob(length, property);\n const {encode, decode} = encodeDecode(layout);\n\n const bigIntLayout = layout as Layout as Layout;\n\n bigIntLayout.decode = (buffer: Buffer, offset: number) => {\n const src = decode(buffer, offset);\n return toBigIntLE(Buffer.from(src));\n };\n\n bigIntLayout.encode = (bigInt: bigint, buffer: Buffer, offset: number) => {\n const src = toBufferLE(bigInt, length);\n return encode(src, buffer, offset);\n };\n\n return bigIntLayout;\n };\n\nexport const u64 = bigInt(8);\n\nexport const u128 = bigInt(16);\n\nexport const u192 = bigInt(24);\n\nexport const u256 = bigInt(32);\n","import * as BufferLayout from '@solana/buffer-layout';\nimport {Buffer} from 'buffer';\n\nimport type {Blockhash} from './blockhash';\nimport * as Layout from './layout';\nimport {PublicKey} from './publickey';\nimport type {FeeCalculator} from './fee-calculator';\nimport {FeeCalculatorLayout} from './fee-calculator';\nimport {toBuffer} from './util/to-buffer';\n\n/**\n * See https://github.com/solana-labs/solana/blob/0ea2843ec9cdc517572b8e62c959f41b55cf4453/sdk/src/nonce_state.rs#L29-L32\n *\n * @internal\n */\nconst NonceAccountLayout = BufferLayout.struct<\n Readonly<{\n authorizedPubkey: Uint8Array;\n feeCalculator: Readonly<{\n lamportsPerSignature: number;\n }>;\n nonce: Uint8Array;\n state: number;\n version: number;\n }>\n>([\n BufferLayout.u32('version'),\n BufferLayout.u32('state'),\n Layout.publicKey('authorizedPubkey'),\n Layout.publicKey('nonce'),\n BufferLayout.struct>(\n [FeeCalculatorLayout],\n 'feeCalculator',\n ),\n]);\n\nexport const NONCE_ACCOUNT_LENGTH = NonceAccountLayout.span;\n\ntype NonceAccountArgs = {\n authorizedPubkey: PublicKey;\n nonce: Blockhash;\n feeCalculator: FeeCalculator;\n};\n\n/**\n * NonceAccount class\n */\nexport class NonceAccount {\n authorizedPubkey: PublicKey;\n nonce: Blockhash;\n feeCalculator: FeeCalculator;\n\n /**\n * @internal\n */\n constructor(args: NonceAccountArgs) {\n this.authorizedPubkey = args.authorizedPubkey;\n this.nonce = args.nonce;\n this.feeCalculator = args.feeCalculator;\n }\n\n /**\n * Deserialize NonceAccount from the account data.\n *\n * @param buffer account data\n * @return NonceAccount\n */\n static fromAccountData(\n buffer: Buffer | Uint8Array | Array,\n ): NonceAccount {\n const nonceAccount = NonceAccountLayout.decode(toBuffer(buffer), 0);\n return new NonceAccount({\n authorizedPubkey: new PublicKey(nonceAccount.authorizedPubkey),\n nonce: new PublicKey(nonceAccount.nonce).toString(),\n feeCalculator: nonceAccount.feeCalculator,\n });\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from './instruction';\nimport * as Layout from './layout';\nimport {NONCE_ACCOUNT_LENGTH} from './nonce-account';\nimport {PublicKey} from './publickey';\nimport {SYSVAR_RECENT_BLOCKHASHES_PUBKEY, SYSVAR_RENT_PUBKEY} from './sysvar';\nimport {Transaction, TransactionInstruction} from './transaction';\nimport {toBuffer} from './util/to-buffer';\nimport {u64} from './util/bigint';\n\n/**\n * Create account system transaction params\n */\nexport type CreateAccountParams = {\n /** The account that will transfer lamports to the created account */\n fromPubkey: PublicKey;\n /** Public key of the created account */\n newAccountPubkey: PublicKey;\n /** Amount of lamports to transfer to the created account */\n lamports: number;\n /** Amount of space in bytes to allocate to the created account */\n space: number;\n /** Public key of the program to assign as the owner of the created account */\n programId: PublicKey;\n};\n\n/**\n * Transfer system transaction params\n */\nexport type TransferParams = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: number | bigint;\n};\n\n/**\n * Assign system transaction params\n */\nexport type AssignParams = {\n /** Public key of the account which will be assigned a new owner */\n accountPubkey: PublicKey;\n /** Public key of the program to assign as the owner */\n programId: PublicKey;\n};\n\n/**\n * Create account with seed system transaction params\n */\nexport type CreateAccountWithSeedParams = {\n /** The account that will transfer lamports to the created account */\n fromPubkey: PublicKey;\n /** Public key of the created account. Must be pre-calculated with PublicKey.createWithSeed() */\n newAccountPubkey: PublicKey;\n /** Base public key to use to derive the address of the created account. Must be the same as the base key used to create `newAccountPubkey` */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the created account. Must be the same as the seed used to create `newAccountPubkey` */\n seed: string;\n /** Amount of lamports to transfer to the created account */\n lamports: number;\n /** Amount of space in bytes to allocate to the created account */\n space: number;\n /** Public key of the program to assign as the owner of the created account */\n programId: PublicKey;\n};\n\n/**\n * Create nonce account system transaction params\n */\nexport type CreateNonceAccountParams = {\n /** The account that will transfer lamports to the created nonce account */\n fromPubkey: PublicKey;\n /** Public key of the created nonce account */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the created nonce account */\n authorizedPubkey: PublicKey;\n /** Amount of lamports to transfer to the created nonce account */\n lamports: number;\n};\n\n/**\n * Create nonce account with seed system transaction params\n */\nexport type CreateNonceAccountWithSeedParams = {\n /** The account that will transfer lamports to the created nonce account */\n fromPubkey: PublicKey;\n /** Public key of the created nonce account */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the created nonce account */\n authorizedPubkey: PublicKey;\n /** Amount of lamports to transfer to the created nonce account */\n lamports: number;\n /** Base public key to use to derive the address of the nonce account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the nonce account */\n seed: string;\n};\n\n/**\n * Initialize nonce account system instruction params\n */\nexport type InitializeNonceParams = {\n /** Nonce account which will be initialized */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the initialized nonce account */\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Advance nonce account system instruction params\n */\nexport type AdvanceNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the nonce authority */\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Withdraw nonce account system transaction params\n */\nexport type WithdrawNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the nonce authority */\n authorizedPubkey: PublicKey;\n /** Public key of the account which will receive the withdrawn nonce account balance */\n toPubkey: PublicKey;\n /** Amount of lamports to withdraw from the nonce account */\n lamports: number;\n};\n\n/**\n * Authorize nonce account system transaction params\n */\nexport type AuthorizeNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the current nonce authority */\n authorizedPubkey: PublicKey;\n /** Public key to set as the new nonce authority */\n newAuthorizedPubkey: PublicKey;\n};\n\n/**\n * Allocate account system transaction params\n */\nexport type AllocateParams = {\n /** Account to allocate */\n accountPubkey: PublicKey;\n /** Amount of space in bytes to allocate */\n space: number;\n};\n\n/**\n * Allocate account with seed system transaction params\n */\nexport type AllocateWithSeedParams = {\n /** Account to allocate */\n accountPubkey: PublicKey;\n /** Base public key to use to derive the address of the allocated account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the allocated account */\n seed: string;\n /** Amount of space in bytes to allocate */\n space: number;\n /** Public key of the program to assign as the owner of the allocated account */\n programId: PublicKey;\n};\n\n/**\n * Assign account with seed system transaction params\n */\nexport type AssignWithSeedParams = {\n /** Public key of the account which will be assigned a new owner */\n accountPubkey: PublicKey;\n /** Base public key to use to derive the address of the assigned account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the assigned account */\n seed: string;\n /** Public key of the program to assign as the owner */\n programId: PublicKey;\n};\n\n/**\n * Transfer with seed system transaction params\n */\nexport type TransferWithSeedParams = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Base public key to use to derive the funding account address */\n basePubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: number | bigint;\n /** Seed to use to derive the funding account address */\n seed: string;\n /** Program id to use to derive the funding account address */\n programId: PublicKey;\n};\n\n/** Decoded transfer system transaction instruction */\nexport type DecodedTransferInstruction = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: bigint;\n};\n\n/** Decoded transferWithSeed system transaction instruction */\nexport type DecodedTransferWithSeedInstruction = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Base public key to use to derive the funding account address */\n basePubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: bigint;\n /** Seed to use to derive the funding account address */\n seed: string;\n /** Program id to use to derive the funding account address */\n programId: PublicKey;\n};\n\n/**\n * System Instruction class\n */\nexport class SystemInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a system instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): SystemInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: SystemInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(SYSTEM_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as SystemInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a SystemInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode a create account system instruction and retrieve the instruction params.\n */\n static decodeCreateAccount(\n instruction: TransactionInstruction,\n ): CreateAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {lamports, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Create,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n newAccountPubkey: instruction.keys[1].pubkey,\n lamports,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a transfer system instruction and retrieve the instruction params.\n */\n static decodeTransfer(\n instruction: TransactionInstruction,\n ): DecodedTransferInstruction {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {lamports} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Transfer,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a transfer with seed system instruction and retrieve the instruction params.\n */\n static decodeTransferWithSeed(\n instruction: TransactionInstruction,\n ): DecodedTransferWithSeedInstruction {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {lamports, seed, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n basePubkey: instruction.keys[1].pubkey,\n toPubkey: instruction.keys[2].pubkey,\n lamports,\n seed,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an allocate system instruction and retrieve the instruction params.\n */\n static decodeAllocate(instruction: TransactionInstruction): AllocateParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {space} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Allocate,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n space,\n };\n }\n\n /**\n * Decode an allocate with seed system instruction and retrieve the instruction params.\n */\n static decodeAllocateWithSeed(\n instruction: TransactionInstruction,\n ): AllocateWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {base, seed, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an assign system instruction and retrieve the instruction params.\n */\n static decodeAssign(instruction: TransactionInstruction): AssignParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Assign,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an assign with seed system instruction and retrieve the instruction params.\n */\n static decodeAssignWithSeed(\n instruction: TransactionInstruction,\n ): AssignWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {base, seed, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a create account with seed system instruction and retrieve the instruction params.\n */\n static decodeCreateWithSeed(\n instruction: TransactionInstruction,\n ): CreateAccountWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {base, seed, lamports, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n newAccountPubkey: instruction.keys[1].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n lamports,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a nonce initialize system instruction and retrieve the instruction params.\n */\n static decodeNonceInitialize(\n instruction: TransactionInstruction,\n ): InitializeNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {authorized} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: new PublicKey(authorized),\n };\n }\n\n /**\n * Decode a nonce advance system instruction and retrieve the instruction params.\n */\n static decodeNonceAdvance(\n instruction: TransactionInstruction,\n ): AdvanceNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n };\n }\n\n /**\n * Decode a nonce withdraw system instruction and retrieve the instruction params.\n */\n static decodeNonceWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 5);\n\n const {lamports} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a nonce authorize system instruction and retrieve the instruction params.\n */\n static decodeNonceAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {authorized} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[1].pubkey,\n newAuthorizedPubkey: new PublicKey(authorized),\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(SystemProgram.programId)) {\n throw new Error('invalid instruction; programId is not SystemProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid SystemInstructionType's\n */\nexport type SystemInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof SystemInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'AdvanceNonceAccount'\n | 'Allocate'\n | 'AllocateWithSeed'\n | 'Assign'\n | 'AssignWithSeed'\n | 'AuthorizeNonceAccount'\n | 'Create'\n | 'CreateWithSeed'\n | 'InitializeNonceAccount'\n | 'Transfer'\n | 'TransferWithSeed'\n | 'WithdrawNonceAccount'\n | 'UpgradeNonceAccount';\n\ntype SystemInstructionInputData = {\n AdvanceNonceAccount: IInstructionInputData;\n Allocate: IInstructionInputData & {\n space: number;\n };\n AllocateWithSeed: IInstructionInputData & {\n base: Uint8Array;\n programId: Uint8Array;\n seed: string;\n space: number;\n };\n Assign: IInstructionInputData & {\n programId: Uint8Array;\n };\n AssignWithSeed: IInstructionInputData & {\n base: Uint8Array;\n seed: string;\n programId: Uint8Array;\n };\n AuthorizeNonceAccount: IInstructionInputData & {\n authorized: Uint8Array;\n };\n Create: IInstructionInputData & {\n lamports: number;\n programId: Uint8Array;\n space: number;\n };\n CreateWithSeed: IInstructionInputData & {\n base: Uint8Array;\n lamports: number;\n programId: Uint8Array;\n seed: string;\n space: number;\n };\n InitializeNonceAccount: IInstructionInputData & {\n authorized: Uint8Array;\n };\n Transfer: IInstructionInputData & {\n lamports: bigint;\n };\n TransferWithSeed: IInstructionInputData & {\n lamports: bigint;\n programId: Uint8Array;\n seed: string;\n };\n WithdrawNonceAccount: IInstructionInputData & {\n lamports: number;\n };\n UpgradeNonceAccount: IInstructionInputData;\n};\n\n/**\n * An enumeration of valid system InstructionType's\n * @internal\n */\nexport const SYSTEM_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in SystemInstructionType]: InstructionType<\n SystemInstructionInputData[Instruction]\n >;\n}>({\n Create: {\n index: 0,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ]),\n },\n Assign: {\n index: 1,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.publicKey('programId'),\n ]),\n },\n Transfer: {\n index: 2,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n u64('lamports'),\n ]),\n },\n CreateWithSeed: {\n index: 3,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n BufferLayout.ns64('lamports'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ]),\n },\n AdvanceNonceAccount: {\n index: 4,\n layout: BufferLayout.struct<\n SystemInstructionInputData['AdvanceNonceAccount']\n >([BufferLayout.u32('instruction')]),\n },\n WithdrawNonceAccount: {\n index: 5,\n layout: BufferLayout.struct<\n SystemInstructionInputData['WithdrawNonceAccount']\n >([BufferLayout.u32('instruction'), BufferLayout.ns64('lamports')]),\n },\n InitializeNonceAccount: {\n index: 6,\n layout: BufferLayout.struct<\n SystemInstructionInputData['InitializeNonceAccount']\n >([BufferLayout.u32('instruction'), Layout.publicKey('authorized')]),\n },\n AuthorizeNonceAccount: {\n index: 7,\n layout: BufferLayout.struct<\n SystemInstructionInputData['AuthorizeNonceAccount']\n >([BufferLayout.u32('instruction'), Layout.publicKey('authorized')]),\n },\n Allocate: {\n index: 8,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('space'),\n ]),\n },\n AllocateWithSeed: {\n index: 9,\n layout: BufferLayout.struct(\n [\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ],\n ),\n },\n AssignWithSeed: {\n index: 10,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n Layout.publicKey('programId'),\n ]),\n },\n TransferWithSeed: {\n index: 11,\n layout: BufferLayout.struct(\n [\n BufferLayout.u32('instruction'),\n u64('lamports'),\n Layout.rustString('seed'),\n Layout.publicKey('programId'),\n ],\n ),\n },\n UpgradeNonceAccount: {\n index: 12,\n layout: BufferLayout.struct<\n SystemInstructionInputData['UpgradeNonceAccount']\n >([BufferLayout.u32('instruction')]),\n },\n});\n\n/**\n * Factory class for transactions to interact with the System program\n */\nexport class SystemProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the System program\n */\n static programId: PublicKey = new PublicKey(\n '11111111111111111111111111111111',\n );\n\n /**\n * Generate a transaction instruction that creates a new account\n */\n static createAccount(params: CreateAccountParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Create;\n const data = encodeData(type, {\n lamports: params.lamports,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.newAccountPubkey, isSigner: true, isWritable: true},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that transfers lamports from one account to another\n */\n static transfer(\n params: TransferParams | TransferWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed;\n data = encodeData(type, {\n lamports: BigInt(params.lamports),\n seed: params.seed,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.fromPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Transfer;\n data = encodeData(type, {lamports: BigInt(params.lamports)});\n keys = [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n ];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that assigns an account to a program\n */\n static assign(\n params: AssignParams | AssignWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed;\n data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.accountPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Assign;\n data = encodeData(type, {\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [{pubkey: params.accountPubkey, isSigner: true, isWritable: true}];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that creates a new account at\n * an address generated with `from`, a seed, and programId\n */\n static createAccountWithSeed(\n params: CreateAccountWithSeedParams,\n ): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed;\n const data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n lamports: params.lamports,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n let keys = [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.newAccountPubkey, isSigner: false, isWritable: true},\n ];\n if (params.basePubkey != params.fromPubkey) {\n keys.push({pubkey: params.basePubkey, isSigner: true, isWritable: false});\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction that creates a new Nonce account\n */\n static createNonceAccount(\n params: CreateNonceAccountParams | CreateNonceAccountWithSeedParams,\n ): Transaction {\n const transaction = new Transaction();\n if ('basePubkey' in params && 'seed' in params) {\n transaction.add(\n SystemProgram.createAccountWithSeed({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.noncePubkey,\n basePubkey: params.basePubkey,\n seed: params.seed,\n lamports: params.lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: this.programId,\n }),\n );\n } else {\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.noncePubkey,\n lamports: params.lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: this.programId,\n }),\n );\n }\n\n const initParams = {\n noncePubkey: params.noncePubkey,\n authorizedPubkey: params.authorizedPubkey,\n };\n\n transaction.add(this.nonceInitialize(initParams));\n return transaction;\n }\n\n /**\n * Generate an instruction to initialize a Nonce account\n */\n static nonceInitialize(\n params: InitializeNonceParams,\n ): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount;\n const data = encodeData(type, {\n authorized: toBuffer(params.authorizedPubkey.toBuffer()),\n });\n const instructionData = {\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate an instruction to advance the nonce in a Nonce account\n */\n static nonceAdvance(params: AdvanceNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount;\n const data = encodeData(type);\n const instructionData = {\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a transaction instruction that withdraws lamports from a Nonce account\n */\n static nonceWithdraw(params: WithdrawNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount;\n const data = encodeData(type, {lamports: params.lamports});\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that authorizes a new PublicKey as the authority\n * on a Nonce account.\n */\n static nonceAuthorize(params: AuthorizeNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount;\n const data = encodeData(type, {\n authorized: toBuffer(params.newAuthorizedPubkey.toBuffer()),\n });\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that allocates space in an account without funding\n */\n static allocate(\n params: AllocateParams | AllocateWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed;\n data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.accountPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Allocate;\n data = encodeData(type, {\n space: params.space,\n });\n keys = [{pubkey: params.accountPubkey, isSigner: true, isWritable: true}];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {PublicKey} from './publickey';\nimport {Transaction} from './transaction';\nimport {SYSVAR_RENT_PUBKEY} from './sysvar';\nimport {sendAndConfirmTransaction} from './util/send-and-confirm-transaction';\nimport {sleep} from './util/sleep';\nimport type {Connection} from './connection';\nimport type {Signer} from './keypair';\nimport {SystemProgram} from './system-program';\nimport {IInstructionInputData} from './instruction';\nimport {PACKET_DATA_SIZE} from './transaction-constants';\n\n// Keep program chunks under PACKET_DATA_SIZE, leaving enough room for the\n// rest of the Transaction fields\n//\n// TODO: replace 300 with a proper constant for the size of the other\n// Transaction fields\nconst CHUNK_SIZE = PACKET_DATA_SIZE - 300;\n\n/**\n * Program loader interface\n */\nexport class Loader {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Amount of program data placed in each load Transaction\n */\n static chunkSize: number = CHUNK_SIZE;\n\n /**\n * Minimum number of signatures required to load a program not including\n * retries\n *\n * Can be used to calculate transaction fees\n */\n static getMinNumSignatures(dataLength: number): number {\n return (\n 2 * // Every transaction requires two signatures (payer + program)\n (Math.ceil(dataLength / Loader.chunkSize) +\n 1 + // Add one for Create transaction\n 1) // Add one for Finalize transaction\n );\n }\n\n /**\n * Loads a generic program\n *\n * @param connection The connection to use\n * @param payer System account that pays to load the program\n * @param program Account to load the program into\n * @param programId Public key that identifies the loader\n * @param data Program octets\n * @return true if program was loaded successfully, false if program was already loaded\n */\n static async load(\n connection: Connection,\n payer: Signer,\n program: Signer,\n programId: PublicKey,\n data: Buffer | Uint8Array | Array,\n ): Promise {\n {\n const balanceNeeded = await connection.getMinimumBalanceForRentExemption(\n data.length,\n );\n\n // Fetch program account info to check if it has already been created\n const programInfo = await connection.getAccountInfo(\n program.publicKey,\n 'confirmed',\n );\n\n let transaction: Transaction | null = null;\n if (programInfo !== null) {\n if (programInfo.executable) {\n console.error('Program load failed, account is already executable');\n return false;\n }\n\n if (programInfo.data.length !== data.length) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.allocate({\n accountPubkey: program.publicKey,\n space: data.length,\n }),\n );\n }\n\n if (!programInfo.owner.equals(programId)) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.assign({\n accountPubkey: program.publicKey,\n programId,\n }),\n );\n }\n\n if (programInfo.lamports < balanceNeeded) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.transfer({\n fromPubkey: payer.publicKey,\n toPubkey: program.publicKey,\n lamports: balanceNeeded - programInfo.lamports,\n }),\n );\n }\n } else {\n transaction = new Transaction().add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: program.publicKey,\n lamports: balanceNeeded > 0 ? balanceNeeded : 1,\n space: data.length,\n programId,\n }),\n );\n }\n\n // If the account is already created correctly, skip this step\n // and proceed directly to loading instructions\n if (transaction !== null) {\n await sendAndConfirmTransaction(\n connection,\n transaction,\n [payer, program],\n {\n commitment: 'confirmed',\n },\n );\n }\n }\n\n const dataLayout = BufferLayout.struct<\n Readonly<{\n bytes: number[];\n bytesLength: number;\n bytesLengthPadding: number;\n instruction: number;\n offset: number;\n }>\n >([\n BufferLayout.u32('instruction'),\n BufferLayout.u32('offset'),\n BufferLayout.u32('bytesLength'),\n BufferLayout.u32('bytesLengthPadding'),\n BufferLayout.seq(\n BufferLayout.u8('byte'),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'bytes',\n ),\n ]);\n\n const chunkSize = Loader.chunkSize;\n let offset = 0;\n let array = data;\n let transactions = [];\n while (array.length > 0) {\n const bytes = array.slice(0, chunkSize);\n const data = Buffer.alloc(chunkSize + 16);\n dataLayout.encode(\n {\n instruction: 0, // Load instruction\n offset,\n bytes: bytes as number[],\n bytesLength: 0,\n bytesLengthPadding: 0,\n },\n data,\n );\n\n const transaction = new Transaction().add({\n keys: [{pubkey: program.publicKey, isSigner: true, isWritable: true}],\n programId,\n data,\n });\n transactions.push(\n sendAndConfirmTransaction(connection, transaction, [payer, program], {\n commitment: 'confirmed',\n }),\n );\n\n // Delay between sends in an attempt to reduce rate limit errors\n if (connection._rpcEndpoint.includes('solana.com')) {\n const REQUESTS_PER_SECOND = 4;\n await sleep(1000 / REQUESTS_PER_SECOND);\n }\n\n offset += chunkSize;\n array = array.slice(chunkSize);\n }\n await Promise.all(transactions);\n\n // Finalize the account loaded with program data for execution\n {\n const dataLayout = BufferLayout.struct([\n BufferLayout.u32('instruction'),\n ]);\n\n const data = Buffer.alloc(dataLayout.span);\n dataLayout.encode(\n {\n instruction: 1, // Finalize instruction\n },\n data,\n );\n\n const transaction = new Transaction().add({\n keys: [\n {pubkey: program.publicKey, isSigner: true, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId,\n data,\n });\n await sendAndConfirmTransaction(\n connection,\n transaction,\n [payer, program],\n {\n commitment: 'confirmed',\n },\n );\n }\n\n // success\n return true;\n }\n}\n","import type {Buffer} from 'buffer';\n\nimport {PublicKey} from './publickey';\nimport {Loader} from './loader';\nimport type {Connection} from './connection';\nimport type {Signer} from './keypair';\n\nexport const BPF_LOADER_PROGRAM_ID = new PublicKey(\n 'BPFLoader2111111111111111111111111111111111',\n);\n\n/**\n * Factory class for transactions to interact with a program loader\n */\nexport class BpfLoader {\n /**\n * Minimum number of signatures required to load a program not including\n * retries\n *\n * Can be used to calculate transaction fees\n */\n static getMinNumSignatures(dataLength: number): number {\n return Loader.getMinNumSignatures(dataLength);\n }\n\n /**\n * Load a BPF program\n *\n * @param connection The connection to use\n * @param payer Account that will pay program loading fees\n * @param program Account to load the program into\n * @param elf The entire ELF containing the BPF program\n * @param loaderProgramId The program id of the BPF loader to use\n * @return true if program was loaded successfully, false if program was already loaded\n */\n static load(\n connection: Connection,\n payer: Signer,\n program: Signer,\n elf: Buffer | Uint8Array | Array,\n loaderProgramId: PublicKey,\n ): Promise {\n return Loader.load(connection, payer, program, loaderProgramId, elf);\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from './instruction';\nimport {PublicKey} from './publickey';\nimport {TransactionInstruction} from './transaction';\nimport {u64} from './util/bigint';\n\n/**\n * Compute Budget Instruction class\n */\nexport class ComputeBudgetInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a compute budget instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): ComputeBudgetInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u8('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: ComputeBudgetInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS,\n )) {\n if (layout.index == typeIndex) {\n type = ixType as ComputeBudgetInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error(\n 'Instruction type incorrect; not a ComputeBudgetInstruction',\n );\n }\n\n return type;\n }\n\n /**\n * Decode request units compute budget instruction and retrieve the instruction params.\n */\n static decodeRequestUnits(\n instruction: TransactionInstruction,\n ): RequestUnitsParams {\n this.checkProgramId(instruction.programId);\n const {units, additionalFee} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits,\n instruction.data,\n );\n return {units, additionalFee};\n }\n\n /**\n * Decode request heap frame compute budget instruction and retrieve the instruction params.\n */\n static decodeRequestHeapFrame(\n instruction: TransactionInstruction,\n ): RequestHeapFrameParams {\n this.checkProgramId(instruction.programId);\n const {bytes} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame,\n instruction.data,\n );\n return {bytes};\n }\n\n /**\n * Decode set compute unit limit compute budget instruction and retrieve the instruction params.\n */\n static decodeSetComputeUnitLimit(\n instruction: TransactionInstruction,\n ): SetComputeUnitLimitParams {\n this.checkProgramId(instruction.programId);\n const {units} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit,\n instruction.data,\n );\n return {units};\n }\n\n /**\n * Decode set compute unit price compute budget instruction and retrieve the instruction params.\n */\n static decodeSetComputeUnitPrice(\n instruction: TransactionInstruction,\n ): SetComputeUnitPriceParams {\n this.checkProgramId(instruction.programId);\n const {microLamports} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice,\n instruction.data,\n );\n return {microLamports};\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(ComputeBudgetProgram.programId)) {\n throw new Error(\n 'invalid instruction; programId is not ComputeBudgetProgram',\n );\n }\n }\n}\n\n/**\n * An enumeration of valid ComputeBudgetInstructionType's\n */\nexport type ComputeBudgetInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof ComputeBudgetInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'RequestUnits'\n | 'RequestHeapFrame'\n | 'SetComputeUnitLimit'\n | 'SetComputeUnitPrice';\n\ntype ComputeBudgetInstructionInputData = {\n RequestUnits: IInstructionInputData & Readonly;\n RequestHeapFrame: IInstructionInputData & Readonly;\n SetComputeUnitLimit: IInstructionInputData &\n Readonly;\n SetComputeUnitPrice: IInstructionInputData &\n Readonly;\n};\n\n/**\n * Request units instruction params\n */\nexport interface RequestUnitsParams {\n /** Units to request for transaction-wide compute */\n units: number;\n /** Prioritization fee lamports */\n additionalFee: number;\n}\n\n/**\n * Request heap frame instruction params\n */\nexport type RequestHeapFrameParams = {\n /** Requested transaction-wide program heap size in bytes. Must be multiple of 1024. Applies to each program, including CPIs. */\n bytes: number;\n};\n\n/**\n * Set compute unit limit instruction params\n */\nexport interface SetComputeUnitLimitParams {\n /** Transaction-wide compute unit limit */\n units: number;\n}\n\n/**\n * Set compute unit price instruction params\n */\nexport interface SetComputeUnitPriceParams {\n /** Transaction compute unit price used for prioritization fees */\n microLamports: number | bigint;\n}\n\n/**\n * An enumeration of valid ComputeBudget InstructionType's\n * @internal\n */\nexport const COMPUTE_BUDGET_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in ComputeBudgetInstructionType]: InstructionType<\n ComputeBudgetInstructionInputData[Instruction]\n >;\n}>({\n RequestUnits: {\n index: 0,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['RequestUnits']\n >([\n BufferLayout.u8('instruction'),\n BufferLayout.u32('units'),\n BufferLayout.u32('additionalFee'),\n ]),\n },\n RequestHeapFrame: {\n index: 1,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['RequestHeapFrame']\n >([BufferLayout.u8('instruction'), BufferLayout.u32('bytes')]),\n },\n SetComputeUnitLimit: {\n index: 2,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['SetComputeUnitLimit']\n >([BufferLayout.u8('instruction'), BufferLayout.u32('units')]),\n },\n SetComputeUnitPrice: {\n index: 3,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['SetComputeUnitPrice']\n >([BufferLayout.u8('instruction'), u64('microLamports')]),\n },\n});\n\n/**\n * Factory class for transaction instructions to interact with the Compute Budget program\n */\nexport class ComputeBudgetProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Compute Budget program\n */\n static programId: PublicKey = new PublicKey(\n 'ComputeBudget111111111111111111111111111111',\n );\n\n static requestUnits(params: RequestUnitsParams): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static requestHeapFrame(\n params: RequestHeapFrameParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static setComputeUnitLimit(\n params: SetComputeUnitLimitParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static setComputeUnitPrice(\n params: SetComputeUnitPriceParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice;\n const data = encodeData(type, {\n microLamports: BigInt(params.microLamports),\n });\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n}\n","var objToString = Object.prototype.toString;\nvar objKeys = Object.keys || function(obj) {\n\t\tvar keys = [];\n\t\tfor (var name in obj) {\n\t\t\tkeys.push(name);\n\t\t}\n\t\treturn keys;\n\t};\n\nfunction stringify(val, isArrayProp) {\n\tvar i, max, str, keys, key, propVal, toStr;\n\tif (val === true) {\n\t\treturn \"true\";\n\t}\n\tif (val === false) {\n\t\treturn \"false\";\n\t}\n\tswitch (typeof val) {\n\t\tcase \"object\":\n\t\t\tif (val === null) {\n\t\t\t\treturn null;\n\t\t\t} else if (val.toJSON && typeof val.toJSON === \"function\") {\n\t\t\t\treturn stringify(val.toJSON(), isArrayProp);\n\t\t\t} else {\n\t\t\t\ttoStr = objToString.call(val);\n\t\t\t\tif (toStr === \"[object Array]\") {\n\t\t\t\t\tstr = '[';\n\t\t\t\t\tmax = val.length - 1;\n\t\t\t\t\tfor(i = 0; i < max; i++) {\n\t\t\t\t\t\tstr += stringify(val[i], true) + ',';\n\t\t\t\t\t}\n\t\t\t\t\tif (max > -1) {\n\t\t\t\t\t\tstr += stringify(val[i], true);\n\t\t\t\t\t}\n\t\t\t\t\treturn str + ']';\n\t\t\t\t} else if (toStr === \"[object Object]\") {\n\t\t\t\t\t// only object is left\n\t\t\t\t\tkeys = objKeys(val).sort();\n\t\t\t\t\tmax = keys.length;\n\t\t\t\t\tstr = \"\";\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile (i < max) {\n\t\t\t\t\t\tkey = keys[i];\n\t\t\t\t\t\tpropVal = stringify(val[key], false);\n\t\t\t\t\t\tif (propVal !== undefined) {\n\t\t\t\t\t\t\tif (str) {\n\t\t\t\t\t\t\t\tstr += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstr += JSON.stringify(key) + ':' + propVal;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\treturn '{' + str + '}';\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"function\":\n\t\tcase \"undefined\":\n\t\t\treturn isArrayProp ? null : undefined;\n\t\tcase \"string\":\n\t\t\treturn JSON.stringify(val);\n\t\tdefault:\n\t\t\treturn isFinite(val) ? val : null;\n\t}\n}\n\nmodule.exports = function(val) {\n\tvar returnVal = stringify(val, false);\n\tif (returnVal !== undefined) {\n\t\treturn ''+ returnVal;\n\t}\n};\n","const MINIMUM_SLOT_PER_EPOCH = 32;\n\n// Returns the number of trailing zeros in the binary representation of self.\nfunction trailingZeros(n: number) {\n let trailingZeros = 0;\n while (n > 1) {\n n /= 2;\n trailingZeros++;\n }\n return trailingZeros;\n}\n\n// Returns the smallest power of two greater than or equal to n\nfunction nextPowerOfTwo(n: number) {\n if (n === 0) return 1;\n n--;\n n |= n >> 1;\n n |= n >> 2;\n n |= n >> 4;\n n |= n >> 8;\n n |= n >> 16;\n n |= n >> 32;\n return n + 1;\n}\n\n/**\n * Epoch schedule\n * (see https://docs.solana.com/terminology#epoch)\n * Can be retrieved with the {@link connection.getEpochSchedule} method\n */\nexport class EpochSchedule {\n /** The maximum number of slots in each epoch */\n public slotsPerEpoch: number;\n /** The number of slots before beginning of an epoch to calculate a leader schedule for that epoch */\n public leaderScheduleSlotOffset: number;\n /** Indicates whether epochs start short and grow */\n public warmup: boolean;\n /** The first epoch with `slotsPerEpoch` slots */\n public firstNormalEpoch: number;\n /** The first slot of `firstNormalEpoch` */\n public firstNormalSlot: number;\n\n constructor(\n slotsPerEpoch: number,\n leaderScheduleSlotOffset: number,\n warmup: boolean,\n firstNormalEpoch: number,\n firstNormalSlot: number,\n ) {\n this.slotsPerEpoch = slotsPerEpoch;\n this.leaderScheduleSlotOffset = leaderScheduleSlotOffset;\n this.warmup = warmup;\n this.firstNormalEpoch = firstNormalEpoch;\n this.firstNormalSlot = firstNormalSlot;\n }\n\n getEpoch(slot: number): number {\n return this.getEpochAndSlotIndex(slot)[0];\n }\n\n getEpochAndSlotIndex(slot: number): [number, number] {\n if (slot < this.firstNormalSlot) {\n const epoch =\n trailingZeros(nextPowerOfTwo(slot + MINIMUM_SLOT_PER_EPOCH + 1)) -\n trailingZeros(MINIMUM_SLOT_PER_EPOCH) -\n 1;\n\n const epochLen = this.getSlotsInEpoch(epoch);\n const slotIndex = slot - (epochLen - MINIMUM_SLOT_PER_EPOCH);\n return [epoch, slotIndex];\n } else {\n const normalSlotIndex = slot - this.firstNormalSlot;\n const normalEpochIndex = Math.floor(normalSlotIndex / this.slotsPerEpoch);\n const epoch = this.firstNormalEpoch + normalEpochIndex;\n const slotIndex = normalSlotIndex % this.slotsPerEpoch;\n return [epoch, slotIndex];\n }\n }\n\n getFirstSlotInEpoch(epoch: number): number {\n if (epoch <= this.firstNormalEpoch) {\n return (Math.pow(2, epoch) - 1) * MINIMUM_SLOT_PER_EPOCH;\n } else {\n return (\n (epoch - this.firstNormalEpoch) * this.slotsPerEpoch +\n this.firstNormalSlot\n );\n }\n }\n\n getLastSlotInEpoch(epoch: number): number {\n return this.getFirstSlotInEpoch(epoch) + this.getSlotsInEpoch(epoch) - 1;\n }\n\n getSlotsInEpoch(epoch: number) {\n if (epoch < this.firstNormalEpoch) {\n return Math.pow(2, epoch + trailingZeros(MINIMUM_SLOT_PER_EPOCH));\n } else {\n return this.slotsPerEpoch;\n }\n }\n}\n","export class SendTransactionError extends Error {\n logs: string[] | undefined;\n\n constructor(message: string, logs?: string[]) {\n super(message);\n\n this.logs = logs;\n }\n}\n","export const Headers = globalThis.Headers;\nexport const Request = globalThis.Request;\nexport const Response = globalThis.Response;\nexport default globalThis.fetch;\n","export class TransactionExpiredBlockheightExceededError extends Error {\n signature: string;\n\n constructor(signature: string) {\n super(`Signature ${signature} has expired: block height exceeded.`);\n this.signature = signature;\n }\n}\n\nObject.defineProperty(\n TransactionExpiredBlockheightExceededError.prototype,\n 'name',\n {\n value: 'TransactionExpiredBlockheightExceededError',\n },\n);\n\nexport class TransactionExpiredTimeoutError extends Error {\n signature: string;\n\n constructor(signature: string, timeoutSeconds: number) {\n super(\n `Transaction was not confirmed in ${timeoutSeconds.toFixed(\n 2,\n )} seconds. It is ` +\n 'unknown if it succeeded or failed. Check signature ' +\n `${signature} using the Solana Explorer or CLI tools.`,\n );\n this.signature = signature;\n }\n}\n\nObject.defineProperty(TransactionExpiredTimeoutError.prototype, 'name', {\n value: 'TransactionExpiredTimeoutError',\n});\n","import bs58 from 'bs58';\nimport {Buffer} from 'buffer';\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\nimport {\n type as pick,\n number,\n string,\n array,\n boolean,\n literal,\n record,\n union,\n optional,\n nullable,\n coerce,\n instance,\n create,\n tuple,\n unknown,\n any,\n} from 'superstruct';\nimport type {Struct} from 'superstruct';\nimport {Client as RpcWebSocketClient} from 'rpc-websockets';\nimport RpcClient from 'jayson/lib/client/browser';\n\nimport {AgentManager} from './agent-manager';\nimport {EpochSchedule} from './epoch-schedule';\nimport {SendTransactionError} from './errors';\nimport fetchImpl, {Response} from './fetch-impl';\nimport {NonceAccount} from './nonce-account';\nimport {PublicKey} from './publickey';\nimport {Signer} from './keypair';\nimport {MS_PER_SLOT} from './timing';\nimport {Transaction, TransactionStatus} from './transaction';\nimport {Message} from './message';\nimport assert from './util/assert';\nimport {sleep} from './util/sleep';\nimport {toBuffer} from './util/to-buffer';\nimport {\n TransactionExpiredBlockheightExceededError,\n TransactionExpiredTimeoutError,\n} from './util/tx-expiry-custom-errors';\nimport {makeWebsocketUrl} from './util/url';\nimport type {Blockhash} from './blockhash';\nimport type {FeeCalculator} from './fee-calculator';\nimport type {TransactionSignature} from './transaction';\nimport type {CompiledInstruction} from './message';\n\nconst PublicKeyFromString = coerce(\n instance(PublicKey),\n string(),\n value => new PublicKey(value),\n);\n\nconst RawAccountDataResult = tuple([string(), literal('base64')]);\n\nconst BufferFromRawAccountData = coerce(\n instance(Buffer),\n RawAccountDataResult,\n value => Buffer.from(value[0], 'base64'),\n);\n\n/**\n * Attempt to use a recent blockhash for up to 30 seconds\n * @internal\n */\nexport const BLOCKHASH_CACHE_TIMEOUT_MS = 30 * 1000;\n\n/**\n * HACK.\n * Copied from rpc-websockets/dist/lib/client.\n * Otherwise, `yarn build` fails with:\n * https://gist.github.com/steveluscher/c057eca81d479ef705cdb53162f9971d\n */\ninterface IWSRequestParams {\n [x: string]: any;\n [x: number]: any;\n}\n\ntype ClientSubscriptionId = number;\n/** @internal */ type ServerSubscriptionId = number;\n/** @internal */ type SubscriptionConfigHash = string;\n/** @internal */ type SubscriptionDisposeFn = () => Promise;\n/**\n * @internal\n * Every subscription contains the args used to open the subscription with\n * the server, and a list of callers interested in notifications.\n */\ntype BaseSubscription = Readonly<{\n args: IWSRequestParams;\n callbacks: Set['callback']>;\n}>;\n/**\n * @internal\n * A subscription may be in various states of connectedness. Only when it is\n * fully connected will it have a server subscription id associated with it.\n * This id can be returned to the server to unsubscribe the client entirely.\n */\ntype StatefulSubscription = Readonly<\n // New subscriptions that have not yet been\n // sent to the server start in this state.\n | {\n state: 'pending';\n }\n // These subscriptions have been sent to the server\n // and are waiting for the server to acknowledge them.\n | {\n state: 'subscribing';\n }\n // These subscriptions have been acknowledged by the\n // server and have been assigned server subscription ids.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'subscribed';\n }\n // These subscriptions are intended to be torn down and\n // are waiting on an acknowledgement from the server.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'unsubscribing';\n }\n // The request to tear down these subscriptions has been\n // acknowledged by the server. The `serverSubscriptionId`\n // is the id of the now-dead subscription.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'unsubscribed';\n }\n>;\n/**\n * A type that encapsulates a subscription's RPC method\n * names and notification (callback) signature.\n */\ntype SubscriptionConfig = Readonly<\n | {\n callback: AccountChangeCallback;\n method: 'accountSubscribe';\n unsubscribeMethod: 'accountUnsubscribe';\n }\n | {\n callback: LogsCallback;\n method: 'logsSubscribe';\n unsubscribeMethod: 'logsUnsubscribe';\n }\n | {\n callback: ProgramAccountChangeCallback;\n method: 'programSubscribe';\n unsubscribeMethod: 'programUnsubscribe';\n }\n | {\n callback: RootChangeCallback;\n method: 'rootSubscribe';\n unsubscribeMethod: 'rootUnsubscribe';\n }\n | {\n callback: SignatureSubscriptionCallback;\n method: 'signatureSubscribe';\n unsubscribeMethod: 'signatureUnsubscribe';\n }\n | {\n callback: SlotChangeCallback;\n method: 'slotSubscribe';\n unsubscribeMethod: 'slotUnsubscribe';\n }\n | {\n callback: SlotUpdateCallback;\n method: 'slotsUpdatesSubscribe';\n unsubscribeMethod: 'slotsUpdatesUnsubscribe';\n }\n>;\n/**\n * @internal\n * Utility type that keeps tagged unions intact while omitting properties.\n */\ntype DistributiveOmit = T extends unknown\n ? Omit\n : never;\n/**\n * @internal\n * This type represents a single subscribable 'topic.' It's made up of:\n *\n * - The args used to open the subscription with the server,\n * - The state of the subscription, in terms of its connectedness, and\n * - The set of callbacks to call when the server publishes notifications\n *\n * This record gets indexed by `SubscriptionConfigHash` and is used to\n * set up subscriptions, fan out notifications, and track subscription state.\n */\ntype Subscription = BaseSubscription &\n StatefulSubscription &\n DistributiveOmit;\n\ntype RpcRequest = (methodName: string, args: Array) => any;\n\ntype RpcBatchRequest = (requests: RpcParams[]) => any;\n\n/**\n * @internal\n */\nexport type RpcParams = {\n methodName: string;\n args: Array;\n};\n\nexport type TokenAccountsFilter =\n | {\n mint: PublicKey;\n }\n | {\n programId: PublicKey;\n };\n\n/**\n * Extra contextual information for RPC responses\n */\nexport type Context = {\n slot: number;\n};\n\n/**\n * Options for sending transactions\n */\nexport type SendOptions = {\n /** disable transaction verification step */\n skipPreflight?: boolean;\n /** preflight commitment level */\n preflightCommitment?: Commitment;\n /** Maximum number of times for the RPC node to retry sending the transaction to the leader. */\n maxRetries?: number;\n};\n\n/**\n * Options for confirming transactions\n */\nexport type ConfirmOptions = {\n /** disable transaction verification step */\n skipPreflight?: boolean;\n /** desired commitment level */\n commitment?: Commitment;\n /** preflight commitment level */\n preflightCommitment?: Commitment;\n /** Maximum number of times for the RPC node to retry sending the transaction to the leader. */\n maxRetries?: number;\n};\n\n/**\n * Options for getConfirmedSignaturesForAddress2\n */\nexport type ConfirmedSignaturesForAddress2Options = {\n /**\n * Start searching backwards from this transaction signature.\n * @remark If not provided the search starts from the highest max confirmed block.\n */\n before?: TransactionSignature;\n /** Search until this transaction signature is reached, if found before `limit`. */\n until?: TransactionSignature;\n /** Maximum transaction signatures to return (between 1 and 1,000, default: 1,000). */\n limit?: number;\n};\n\n/**\n * Options for getSignaturesForAddress\n */\nexport type SignaturesForAddressOptions = {\n /**\n * Start searching backwards from this transaction signature.\n * @remark If not provided the search starts from the highest max confirmed block.\n */\n before?: TransactionSignature;\n /** Search until this transaction signature is reached, if found before `limit`. */\n until?: TransactionSignature;\n /** Maximum transaction signatures to return (between 1 and 1,000, default: 1,000). */\n limit?: number;\n};\n\n/**\n * RPC Response with extra contextual information\n */\nexport type RpcResponseAndContext = {\n /** response context */\n context: Context;\n /** response value */\n value: T;\n};\n\nexport type BlockhashWithExpiryBlockHeight = Readonly<{\n blockhash: Blockhash;\n lastValidBlockHeight: number;\n}>;\n\n/**\n * A strategy for confirming transactions that uses the last valid\n * block height for a given blockhash to check for transaction expiration.\n */\nexport type BlockheightBasedTransactionConfirmationStrategy = {\n signature: TransactionSignature;\n} & BlockhashWithExpiryBlockHeight;\n\n/**\n * @internal\n */\nfunction createRpcResult(result: Struct) {\n return union([\n pick({\n jsonrpc: literal('2.0'),\n id: string(),\n result,\n }),\n pick({\n jsonrpc: literal('2.0'),\n id: string(),\n error: pick({\n code: unknown(),\n message: string(),\n data: optional(any()),\n }),\n }),\n ]);\n}\n\nconst UnknownRpcResult = createRpcResult(unknown());\n\n/**\n * @internal\n */\nfunction jsonRpcResult(schema: Struct) {\n return coerce(createRpcResult(schema), UnknownRpcResult, value => {\n if ('error' in value) {\n return value;\n } else {\n return {\n ...value,\n result: create(value.result, schema),\n };\n }\n });\n}\n\n/**\n * @internal\n */\nfunction jsonRpcResultAndContext(value: Struct) {\n return jsonRpcResult(\n pick({\n context: pick({\n slot: number(),\n }),\n value,\n }),\n );\n}\n\n/**\n * @internal\n */\nfunction notificationResultAndContext(value: Struct) {\n return pick({\n context: pick({\n slot: number(),\n }),\n value,\n });\n}\n\n/**\n * The level of commitment desired when querying state\n *
\n *   'processed': Query the most recent block which has reached 1 confirmation by the connected node\n *   'confirmed': Query the most recent block which has reached 1 confirmation by the cluster\n *   'finalized': Query the most recent block which has been finalized by the cluster\n * 
\n */\nexport type Commitment =\n | 'processed'\n | 'confirmed'\n | 'finalized'\n | 'recent' // Deprecated as of v1.5.5\n | 'single' // Deprecated as of v1.5.5\n | 'singleGossip' // Deprecated as of v1.5.5\n | 'root' // Deprecated as of v1.5.5\n | 'max'; // Deprecated as of v1.5.5\n\n/**\n * A subset of Commitment levels, which are at least optimistically confirmed\n *
\n *   'confirmed': Query the most recent block which has reached 1 confirmation by the cluster\n *   'finalized': Query the most recent block which has been finalized by the cluster\n * 
\n */\nexport type Finality = 'confirmed' | 'finalized';\n\n/**\n * Filter for largest accounts query\n *
\n *   'circulating':    Return the largest accounts that are part of the circulating supply\n *   'nonCirculating': Return the largest accounts that are not part of the circulating supply\n * 
\n */\nexport type LargestAccountsFilter = 'circulating' | 'nonCirculating';\n\n/**\n * Configuration object for changing `getLargestAccounts` query behavior\n */\nexport type GetLargestAccountsConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** Filter largest accounts by whether they are part of the circulating supply */\n filter?: LargestAccountsFilter;\n};\n\n/**\n * Configuration object for changing `getSupply` request behavior\n */\nexport type GetSupplyConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** Exclude non circulating accounts list from response */\n excludeNonCirculatingAccountsList?: boolean;\n};\n\n/**\n * Configuration object for changing query behavior\n */\nexport type SignatureStatusConfig = {\n /** enable searching status history, not needed for recent transactions */\n searchTransactionHistory: boolean;\n};\n\n/**\n * Information describing a cluster node\n */\nexport type ContactInfo = {\n /** Identity public key of the node */\n pubkey: string;\n /** Gossip network address for the node */\n gossip: string | null;\n /** TPU network address for the node (null if not available) */\n tpu: string | null;\n /** JSON RPC network address for the node (null if not available) */\n rpc: string | null;\n /** Software version of the node (null if not available) */\n version: string | null;\n};\n\n/**\n * Information describing a vote account\n */\nexport type VoteAccountInfo = {\n /** Public key of the vote account */\n votePubkey: string;\n /** Identity public key of the node voting with this account */\n nodePubkey: string;\n /** The stake, in lamports, delegated to this vote account and activated */\n activatedStake: number;\n /** Whether the vote account is staked for this epoch */\n epochVoteAccount: boolean;\n /** Recent epoch voting credit history for this voter */\n epochCredits: Array<[number, number, number]>;\n /** A percentage (0-100) of rewards payout owed to the voter */\n commission: number;\n /** Most recent slot voted on by this vote account */\n lastVote: number;\n};\n\n/**\n * A collection of cluster vote accounts\n */\nexport type VoteAccountStatus = {\n /** Active vote accounts */\n current: Array;\n /** Inactive vote accounts */\n delinquent: Array;\n};\n\n/**\n * Network Inflation\n * (see https://docs.solana.com/implemented-proposals/ed_overview)\n */\nexport type InflationGovernor = {\n foundation: number;\n foundationTerm: number;\n initial: number;\n taper: number;\n terminal: number;\n};\n\nconst GetInflationGovernorResult = pick({\n foundation: number(),\n foundationTerm: number(),\n initial: number(),\n taper: number(),\n terminal: number(),\n});\n\n/**\n * The inflation reward for an epoch\n */\nexport type InflationReward = {\n /** epoch for which the reward occurs */\n epoch: number;\n /** the slot in which the rewards are effective */\n effectiveSlot: number;\n /** reward amount in lamports */\n amount: number;\n /** post balance of the account in lamports */\n postBalance: number;\n};\n\n/**\n * Expected JSON RPC response for the \"getInflationReward\" message\n */\nconst GetInflationRewardResult = jsonRpcResult(\n array(\n nullable(\n pick({\n epoch: number(),\n effectiveSlot: number(),\n amount: number(),\n postBalance: number(),\n }),\n ),\n ),\n);\n\n/**\n * Information about the current epoch\n */\nexport type EpochInfo = {\n epoch: number;\n slotIndex: number;\n slotsInEpoch: number;\n absoluteSlot: number;\n blockHeight?: number;\n transactionCount?: number;\n};\n\nconst GetEpochInfoResult = pick({\n epoch: number(),\n slotIndex: number(),\n slotsInEpoch: number(),\n absoluteSlot: number(),\n blockHeight: optional(number()),\n transactionCount: optional(number()),\n});\n\nconst GetEpochScheduleResult = pick({\n slotsPerEpoch: number(),\n leaderScheduleSlotOffset: number(),\n warmup: boolean(),\n firstNormalEpoch: number(),\n firstNormalSlot: number(),\n});\n\n/**\n * Leader schedule\n * (see https://docs.solana.com/terminology#leader-schedule)\n */\nexport type LeaderSchedule = {\n [address: string]: number[];\n};\n\nconst GetLeaderScheduleResult = record(string(), array(number()));\n\n/**\n * Transaction error or null\n */\nconst TransactionErrorResult = nullable(union([pick({}), string()]));\n\n/**\n * Signature status for a transaction\n */\nconst SignatureStatusResult = pick({\n err: TransactionErrorResult,\n});\n\n/**\n * Transaction signature received notification\n */\nconst SignatureReceivedResult = literal('receivedSignature');\n\n/**\n * Version info for a node\n */\nexport type Version = {\n /** Version of solana-core */\n 'solana-core': string;\n 'feature-set'?: number;\n};\n\nconst VersionResult = pick({\n 'solana-core': string(),\n 'feature-set': optional(number()),\n});\n\nexport type SimulatedTransactionAccountInfo = {\n /** `true` if this account's data contains a loaded program */\n executable: boolean;\n /** Identifier of the program that owns the account */\n owner: string;\n /** Number of lamports assigned to the account */\n lamports: number;\n /** Optional data assigned to the account */\n data: string[];\n /** Optional rent epoch info for account */\n rentEpoch?: number;\n};\n\nexport type SimulatedTransactionResponse = {\n err: TransactionError | string | null;\n logs: Array | null;\n accounts?: (SimulatedTransactionAccountInfo | null)[] | null;\n unitsConsumed?: number;\n};\n\nconst SimulatedTransactionResponseStruct = jsonRpcResultAndContext(\n pick({\n err: nullable(union([pick({}), string()])),\n logs: nullable(array(string())),\n accounts: optional(\n nullable(\n array(\n nullable(\n pick({\n executable: boolean(),\n owner: string(),\n lamports: number(),\n data: array(string()),\n rentEpoch: optional(number()),\n }),\n ),\n ),\n ),\n ),\n unitsConsumed: optional(number()),\n }),\n);\n\nexport type ParsedInnerInstruction = {\n index: number;\n instructions: (ParsedInstruction | PartiallyDecodedInstruction)[];\n};\n\nexport type TokenBalance = {\n accountIndex: number;\n mint: string;\n owner?: string;\n uiTokenAmount: TokenAmount;\n};\n\n/**\n * Metadata for a parsed confirmed transaction on the ledger\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link ParsedTransactionMeta} instead.\n */\nexport type ParsedConfirmedTransactionMeta = ParsedTransactionMeta;\n\n/**\n * Metadata for a parsed transaction on the ledger\n */\nexport type ParsedTransactionMeta = {\n /** The fee charged for processing the transaction */\n fee: number;\n /** An array of cross program invoked parsed instructions */\n innerInstructions?: ParsedInnerInstruction[] | null;\n /** The balances of the transaction accounts before processing */\n preBalances: Array;\n /** The balances of the transaction accounts after processing */\n postBalances: Array;\n /** An array of program log messages emitted during a transaction */\n logMessages?: Array | null;\n /** The token balances of the transaction accounts before processing */\n preTokenBalances?: Array | null;\n /** The token balances of the transaction accounts after processing */\n postTokenBalances?: Array | null;\n /** The error result of transaction processing */\n err: TransactionError | null;\n};\n\nexport type CompiledInnerInstruction = {\n index: number;\n instructions: CompiledInstruction[];\n};\n\n/**\n * Metadata for a confirmed transaction on the ledger\n */\nexport type ConfirmedTransactionMeta = {\n /** The fee charged for processing the transaction */\n fee: number;\n /** An array of cross program invoked instructions */\n innerInstructions?: CompiledInnerInstruction[] | null;\n /** The balances of the transaction accounts before processing */\n preBalances: Array;\n /** The balances of the transaction accounts after processing */\n postBalances: Array;\n /** An array of program log messages emitted during a transaction */\n logMessages?: Array | null;\n /** The token balances of the transaction accounts before processing */\n preTokenBalances?: Array | null;\n /** The token balances of the transaction accounts after processing */\n postTokenBalances?: Array | null;\n /** The error result of transaction processing */\n err: TransactionError | null;\n};\n\n/**\n * A processed transaction from the RPC API\n */\nexport type TransactionResponse = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: Message;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * A confirmed transaction on the ledger\n */\nexport type ConfirmedTransaction = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The details of the transaction */\n transaction: Transaction;\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * A partially decoded transaction instruction\n */\nexport type PartiallyDecodedInstruction = {\n /** Program id called by this instruction */\n programId: PublicKey;\n /** Public keys of accounts passed to this instruction */\n accounts: Array;\n /** Raw base-58 instruction data */\n data: string;\n};\n\n/**\n * A parsed transaction message account\n */\nexport type ParsedMessageAccount = {\n /** Public key of the account */\n pubkey: PublicKey;\n /** Indicates if the account signed the transaction */\n signer: boolean;\n /** Indicates if the account is writable for this transaction */\n writable: boolean;\n};\n\n/**\n * A parsed transaction instruction\n */\nexport type ParsedInstruction = {\n /** Name of the program for this instruction */\n program: string;\n /** ID of the program for this instruction */\n programId: PublicKey;\n /** Parsed instruction info */\n parsed: any;\n};\n\n/**\n * A parsed transaction message\n */\nexport type ParsedMessage = {\n /** Accounts used in the instructions */\n accountKeys: ParsedMessageAccount[];\n /** The atomically executed instructions for the transaction */\n instructions: (ParsedInstruction | PartiallyDecodedInstruction)[];\n /** Recent blockhash */\n recentBlockhash: string;\n};\n\n/**\n * A parsed transaction\n */\nexport type ParsedTransaction = {\n /** Signatures for the transaction */\n signatures: Array;\n /** Message of the transaction */\n message: ParsedMessage;\n};\n\n/**\n * A parsed and confirmed transaction on the ledger\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link ParsedTransactionWithMeta} instead.\n */\nexport type ParsedConfirmedTransaction = ParsedTransactionWithMeta;\n\n/**\n * A parsed transaction on the ledger with meta\n */\nexport type ParsedTransactionWithMeta = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The details of the transaction */\n transaction: ParsedTransaction;\n /** Metadata produced from the transaction */\n meta: ParsedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * A processed block fetched from the RPC API\n */\nexport type BlockResponse = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions with status meta and original message */\n transactions: Array<{\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: Message;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n /** Public key of reward recipient */\n pubkey: string;\n /** Reward value in lamports */\n lamports: number;\n /** Account balance after reward is applied */\n postBalance: number | null;\n /** Type of reward received */\n rewardType: string | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A ConfirmedBlock on the ledger\n */\nexport type ConfirmedBlock = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions and status metas */\n transactions: Array<{\n transaction: Transaction;\n meta: ConfirmedTransactionMeta | null;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n pubkey: string;\n lamports: number;\n postBalance: number | null;\n rewardType: string | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A Block on the ledger with signatures only\n */\nexport type BlockSignatures = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of signatures */\n signatures: Array;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * recent block production information\n */\nexport type BlockProduction = Readonly<{\n /** a dictionary of validator identities, as base-58 encoded strings. Value is a two element array containing the number of leader slots and the number of blocks produced */\n byIdentity: Readonly>>;\n /** Block production slot range */\n range: Readonly<{\n /** first slot of the block production information (inclusive) */\n firstSlot: number;\n /** last slot of block production information (inclusive) */\n lastSlot: number;\n }>;\n}>;\n\nexport type GetBlockProductionConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Slot range to return block production for. If parameter not provided, defaults to current epoch. */\n range?: {\n /** first slot to return block production information for (inclusive) */\n firstSlot: number;\n /** last slot to return block production information for (inclusive). If parameter not provided, defaults to the highest slot */\n lastSlot?: number;\n };\n /** Only return results for this validator identity (base-58 encoded) */\n identity?: string;\n};\n\n/**\n * Expected JSON RPC response for the \"getBlockProduction\" message\n */\nconst BlockProductionResponseStruct = jsonRpcResultAndContext(\n pick({\n byIdentity: record(string(), array(number())),\n range: pick({\n firstSlot: number(),\n lastSlot: number(),\n }),\n }),\n);\n\n/**\n * A performance sample\n */\nexport type PerfSample = {\n /** Slot number of sample */\n slot: number;\n /** Number of transactions in a sample window */\n numTransactions: number;\n /** Number of slots in a sample window */\n numSlots: number;\n /** Sample window in seconds */\n samplePeriodSecs: number;\n};\n\nfunction createRpcClient(\n url: string,\n useHttps: boolean,\n httpHeaders?: HttpHeaders,\n customFetch?: FetchFn,\n fetchMiddleware?: FetchMiddleware,\n disableRetryOnRateLimit?: boolean,\n): RpcClient {\n const fetch = customFetch ? customFetch : fetchImpl;\n let agentManager: AgentManager | undefined;\n if (!process.env.BROWSER) {\n agentManager = new AgentManager(useHttps);\n }\n\n let fetchWithMiddleware: FetchFn | undefined;\n\n if (fetchMiddleware) {\n fetchWithMiddleware = async (info, init) => {\n const modifiedFetchArgs = await new Promise>(\n (resolve, reject) => {\n try {\n fetchMiddleware(info, init, (modifiedInfo, modifiedInit) =>\n resolve([modifiedInfo, modifiedInit]),\n );\n } catch (error) {\n reject(error);\n }\n },\n );\n return await fetch(...modifiedFetchArgs);\n };\n }\n\n const clientBrowser = new RpcClient(async (request, callback) => {\n const agent = agentManager ? agentManager.requestStart() : undefined;\n const options = {\n method: 'POST',\n body: request,\n agent,\n headers: Object.assign(\n {\n 'Content-Type': 'application/json',\n },\n httpHeaders || {},\n ),\n };\n\n try {\n let too_many_requests_retries = 5;\n let res: Response;\n let waitTime = 500;\n for (;;) {\n if (fetchWithMiddleware) {\n res = await fetchWithMiddleware(url, options);\n } else {\n res = await fetch(url, options);\n }\n\n if (res.status !== 429 /* Too many requests */) {\n break;\n }\n if (disableRetryOnRateLimit === true) {\n break;\n }\n too_many_requests_retries -= 1;\n if (too_many_requests_retries === 0) {\n break;\n }\n console.log(\n `Server responded with ${res.status} ${res.statusText}. Retrying after ${waitTime}ms delay...`,\n );\n await sleep(waitTime);\n waitTime *= 2;\n }\n\n const text = await res.text();\n if (res.ok) {\n callback(null, text);\n } else {\n callback(new Error(`${res.status} ${res.statusText}: ${text}`));\n }\n } catch (err) {\n if (err instanceof Error) callback(err);\n } finally {\n agentManager && agentManager.requestEnd();\n }\n }, {});\n\n return clientBrowser;\n}\n\nfunction createRpcRequest(client: RpcClient): RpcRequest {\n return (method, args) => {\n return new Promise((resolve, reject) => {\n client.request(method, args, (err: any, response: any) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(response);\n });\n });\n };\n}\n\nfunction createRpcBatchRequest(client: RpcClient): RpcBatchRequest {\n return (requests: RpcParams[]) => {\n return new Promise((resolve, reject) => {\n // Do nothing if requests is empty\n if (requests.length === 0) resolve([]);\n\n const batch = requests.map((params: RpcParams) => {\n return client.request(params.methodName, params.args);\n });\n\n client.request(batch, (err: any, response: any) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(response);\n });\n });\n };\n}\n\n/**\n * Expected JSON RPC response for the \"getInflationGovernor\" message\n */\nconst GetInflationGovernorRpcResult = jsonRpcResult(GetInflationGovernorResult);\n\n/**\n * Expected JSON RPC response for the \"getEpochInfo\" message\n */\nconst GetEpochInfoRpcResult = jsonRpcResult(GetEpochInfoResult);\n\n/**\n * Expected JSON RPC response for the \"getEpochSchedule\" message\n */\nconst GetEpochScheduleRpcResult = jsonRpcResult(GetEpochScheduleResult);\n\n/**\n * Expected JSON RPC response for the \"getLeaderSchedule\" message\n */\nconst GetLeaderScheduleRpcResult = jsonRpcResult(GetLeaderScheduleResult);\n\n/**\n * Expected JSON RPC response for the \"minimumLedgerSlot\" and \"getFirstAvailableBlock\" messages\n */\nconst SlotRpcResult = jsonRpcResult(number());\n\n/**\n * Supply\n */\nexport type Supply = {\n /** Total supply in lamports */\n total: number;\n /** Circulating supply in lamports */\n circulating: number;\n /** Non-circulating supply in lamports */\n nonCirculating: number;\n /** List of non-circulating account addresses */\n nonCirculatingAccounts: Array;\n};\n\n/**\n * Expected JSON RPC response for the \"getSupply\" message\n */\nconst GetSupplyRpcResult = jsonRpcResultAndContext(\n pick({\n total: number(),\n circulating: number(),\n nonCirculating: number(),\n nonCirculatingAccounts: array(PublicKeyFromString),\n }),\n);\n\n/**\n * Token amount object which returns a token amount in different formats\n * for various client use cases.\n */\nexport type TokenAmount = {\n /** Raw amount of tokens as string ignoring decimals */\n amount: string;\n /** Number of decimals configured for token's mint */\n decimals: number;\n /** Token amount as float, accounts for decimals */\n uiAmount: number | null;\n /** Token amount as string, accounts for decimals */\n uiAmountString?: string;\n};\n\n/**\n * Expected JSON RPC structure for token amounts\n */\nconst TokenAmountResult = pick({\n amount: string(),\n uiAmount: nullable(number()),\n decimals: number(),\n uiAmountString: optional(string()),\n});\n\n/**\n * Token address and balance.\n */\nexport type TokenAccountBalancePair = {\n /** Address of the token account */\n address: PublicKey;\n /** Raw amount of tokens as string ignoring decimals */\n amount: string;\n /** Number of decimals configured for token's mint */\n decimals: number;\n /** Token amount as float, accounts for decimals */\n uiAmount: number | null;\n /** Token amount as string, accounts for decimals */\n uiAmountString?: string;\n};\n\n/**\n * Expected JSON RPC response for the \"getTokenLargestAccounts\" message\n */\nconst GetTokenLargestAccountsResult = jsonRpcResultAndContext(\n array(\n pick({\n address: PublicKeyFromString,\n amount: string(),\n uiAmount: nullable(number()),\n decimals: number(),\n uiAmountString: optional(string()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getTokenAccountsByOwner\" message\n */\nconst GetTokenAccountsByOwner = jsonRpcResultAndContext(\n array(\n pick({\n pubkey: PublicKeyFromString,\n account: pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: BufferFromRawAccountData,\n rentEpoch: number(),\n }),\n }),\n ),\n);\n\nconst ParsedAccountDataResult = pick({\n program: string(),\n parsed: unknown(),\n space: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"getTokenAccountsByOwner\" message with parsed data\n */\nconst GetParsedTokenAccountsByOwner = jsonRpcResultAndContext(\n array(\n pick({\n pubkey: PublicKeyFromString,\n account: pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: ParsedAccountDataResult,\n rentEpoch: number(),\n }),\n }),\n ),\n);\n\n/**\n * Pair of an account address and its balance\n */\nexport type AccountBalancePair = {\n address: PublicKey;\n lamports: number;\n};\n\n/**\n * Expected JSON RPC response for the \"getLargestAccounts\" message\n */\nconst GetLargestAccountsRpcResult = jsonRpcResultAndContext(\n array(\n pick({\n lamports: number(),\n address: PublicKeyFromString,\n }),\n ),\n);\n\n/**\n * @internal\n */\nconst AccountInfoResult = pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: BufferFromRawAccountData,\n rentEpoch: number(),\n});\n\n/**\n * @internal\n */\nconst KeyedAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: AccountInfoResult,\n});\n\nconst ParsedOrRawAccountData = coerce(\n union([instance(Buffer), ParsedAccountDataResult]),\n union([RawAccountDataResult, ParsedAccountDataResult]),\n value => {\n if (Array.isArray(value)) {\n return create(value, BufferFromRawAccountData);\n } else {\n return value;\n }\n },\n);\n\n/**\n * @internal\n */\nconst ParsedAccountInfoResult = pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: ParsedOrRawAccountData,\n rentEpoch: number(),\n});\n\nconst KeyedParsedAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: ParsedAccountInfoResult,\n});\n\n/**\n * @internal\n */\nconst StakeActivationResult = pick({\n state: union([\n literal('active'),\n literal('inactive'),\n literal('activating'),\n literal('deactivating'),\n ]),\n active: number(),\n inactive: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"getConfirmedSignaturesForAddress2\" message\n */\n\nconst GetConfirmedSignaturesForAddress2RpcResult = jsonRpcResult(\n array(\n pick({\n signature: string(),\n slot: number(),\n err: TransactionErrorResult,\n memo: nullable(string()),\n blockTime: optional(nullable(number())),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getSignaturesForAddress\" message\n */\nconst GetSignaturesForAddressRpcResult = jsonRpcResult(\n array(\n pick({\n signature: string(),\n slot: number(),\n err: TransactionErrorResult,\n memo: nullable(string()),\n blockTime: optional(nullable(number())),\n }),\n ),\n);\n\n/***\n * Expected JSON RPC response for the \"accountNotification\" message\n */\nconst AccountNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(AccountInfoResult),\n});\n\n/**\n * @internal\n */\nconst ProgramAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: AccountInfoResult,\n});\n\n/***\n * Expected JSON RPC response for the \"programNotification\" message\n */\nconst ProgramAccountNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(ProgramAccountInfoResult),\n});\n\n/**\n * @internal\n */\nconst SlotInfoResult = pick({\n parent: number(),\n slot: number(),\n root: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"slotNotification\" message\n */\nconst SlotNotificationResult = pick({\n subscription: number(),\n result: SlotInfoResult,\n});\n\n/**\n * Slot updates which can be used for tracking the live progress of a cluster.\n * - `\"firstShredReceived\"`: connected node received the first shred of a block.\n * Indicates that a new block that is being produced.\n * - `\"completed\"`: connected node has received all shreds of a block. Indicates\n * a block was recently produced.\n * - `\"optimisticConfirmation\"`: block was optimistically confirmed by the\n * cluster. It is not guaranteed that an optimistic confirmation notification\n * will be sent for every finalized blocks.\n * - `\"root\"`: the connected node rooted this block.\n * - `\"createdBank\"`: the connected node has started validating this block.\n * - `\"frozen\"`: the connected node has validated this block.\n * - `\"dead\"`: the connected node failed to validate this block.\n */\nexport type SlotUpdate =\n | {\n type: 'firstShredReceived';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'completed';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'createdBank';\n slot: number;\n timestamp: number;\n parent: number;\n }\n | {\n type: 'frozen';\n slot: number;\n timestamp: number;\n stats: {\n numTransactionEntries: number;\n numSuccessfulTransactions: number;\n numFailedTransactions: number;\n maxTransactionsPerEntry: number;\n };\n }\n | {\n type: 'dead';\n slot: number;\n timestamp: number;\n err: string;\n }\n | {\n type: 'optimisticConfirmation';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'root';\n slot: number;\n timestamp: number;\n };\n\n/**\n * @internal\n */\nconst SlotUpdateResult = union([\n pick({\n type: union([\n literal('firstShredReceived'),\n literal('completed'),\n literal('optimisticConfirmation'),\n literal('root'),\n ]),\n slot: number(),\n timestamp: number(),\n }),\n pick({\n type: literal('createdBank'),\n parent: number(),\n slot: number(),\n timestamp: number(),\n }),\n pick({\n type: literal('frozen'),\n slot: number(),\n timestamp: number(),\n stats: pick({\n numTransactionEntries: number(),\n numSuccessfulTransactions: number(),\n numFailedTransactions: number(),\n maxTransactionsPerEntry: number(),\n }),\n }),\n pick({\n type: literal('dead'),\n slot: number(),\n timestamp: number(),\n err: string(),\n }),\n]);\n\n/**\n * Expected JSON RPC response for the \"slotsUpdatesNotification\" message\n */\nconst SlotUpdateNotificationResult = pick({\n subscription: number(),\n result: SlotUpdateResult,\n});\n\n/**\n * Expected JSON RPC response for the \"signatureNotification\" message\n */\nconst SignatureNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(\n union([SignatureStatusResult, SignatureReceivedResult]),\n ),\n});\n\n/**\n * Expected JSON RPC response for the \"rootNotification\" message\n */\nconst RootNotificationResult = pick({\n subscription: number(),\n result: number(),\n});\n\nconst ContactInfoResult = pick({\n pubkey: string(),\n gossip: nullable(string()),\n tpu: nullable(string()),\n rpc: nullable(string()),\n version: nullable(string()),\n});\n\nconst VoteAccountInfoResult = pick({\n votePubkey: string(),\n nodePubkey: string(),\n activatedStake: number(),\n epochVoteAccount: boolean(),\n epochCredits: array(tuple([number(), number(), number()])),\n commission: number(),\n lastVote: number(),\n rootSlot: nullable(number()),\n});\n\n/**\n * Expected JSON RPC response for the \"getVoteAccounts\" message\n */\nconst GetVoteAccounts = jsonRpcResult(\n pick({\n current: array(VoteAccountInfoResult),\n delinquent: array(VoteAccountInfoResult),\n }),\n);\n\nconst ConfirmationStatus = union([\n literal('processed'),\n literal('confirmed'),\n literal('finalized'),\n]);\n\nconst SignatureStatusResponse = pick({\n slot: number(),\n confirmations: nullable(number()),\n err: TransactionErrorResult,\n confirmationStatus: optional(ConfirmationStatus),\n});\n\n/**\n * Expected JSON RPC response for the \"getSignatureStatuses\" message\n */\nconst GetSignatureStatusesRpcResult = jsonRpcResultAndContext(\n array(nullable(SignatureStatusResponse)),\n);\n\n/**\n * Expected JSON RPC response for the \"getMinimumBalanceForRentExemption\" message\n */\nconst GetMinimumBalanceForRentExemptionRpcResult = jsonRpcResult(number());\n\nconst ConfirmedTransactionResult = pick({\n signatures: array(string()),\n message: pick({\n accountKeys: array(string()),\n header: pick({\n numRequiredSignatures: number(),\n numReadonlySignedAccounts: number(),\n numReadonlyUnsignedAccounts: number(),\n }),\n instructions: array(\n pick({\n accounts: array(number()),\n data: string(),\n programIdIndex: number(),\n }),\n ),\n recentBlockhash: string(),\n }),\n});\n\nconst ParsedInstructionResult = pick({\n parsed: unknown(),\n program: string(),\n programId: PublicKeyFromString,\n});\n\nconst RawInstructionResult = pick({\n accounts: array(PublicKeyFromString),\n data: string(),\n programId: PublicKeyFromString,\n});\n\nconst InstructionResult = union([\n RawInstructionResult,\n ParsedInstructionResult,\n]);\n\nconst UnknownInstructionResult = union([\n pick({\n parsed: unknown(),\n program: string(),\n programId: string(),\n }),\n pick({\n accounts: array(string()),\n data: string(),\n programId: string(),\n }),\n]);\n\nconst ParsedOrRawInstruction = coerce(\n InstructionResult,\n UnknownInstructionResult,\n value => {\n if ('accounts' in value) {\n return create(value, RawInstructionResult);\n } else {\n return create(value, ParsedInstructionResult);\n }\n },\n);\n\n/**\n * @internal\n */\nconst ParsedConfirmedTransactionResult = pick({\n signatures: array(string()),\n message: pick({\n accountKeys: array(\n pick({\n pubkey: PublicKeyFromString,\n signer: boolean(),\n writable: boolean(),\n }),\n ),\n instructions: array(ParsedOrRawInstruction),\n recentBlockhash: string(),\n }),\n});\n\nconst TokenBalanceResult = pick({\n accountIndex: number(),\n mint: string(),\n owner: optional(string()),\n uiTokenAmount: TokenAmountResult,\n});\n\n/**\n * @internal\n */\nconst ConfirmedTransactionMetaResult = pick({\n err: TransactionErrorResult,\n fee: number(),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(\n pick({\n accounts: array(number()),\n data: string(),\n programIdIndex: number(),\n }),\n ),\n }),\n ),\n ),\n ),\n preBalances: array(number()),\n postBalances: array(number()),\n logMessages: optional(nullable(array(string()))),\n preTokenBalances: optional(nullable(array(TokenBalanceResult))),\n postTokenBalances: optional(nullable(array(TokenBalanceResult))),\n});\n\n/**\n * @internal\n */\nconst ParsedConfirmedTransactionMetaResult = pick({\n err: TransactionErrorResult,\n fee: number(),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(ParsedOrRawInstruction),\n }),\n ),\n ),\n ),\n preBalances: array(number()),\n postBalances: array(number()),\n logMessages: optional(nullable(array(string()))),\n preTokenBalances: optional(nullable(array(TokenBalanceResult))),\n postTokenBalances: optional(nullable(array(TokenBalanceResult))),\n});\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message\n */\nconst GetBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n }),\n ),\n rewards: optional(\n array(\n pick({\n pubkey: string(),\n lamports: number(),\n postBalance: nullable(number()),\n rewardType: nullable(string()),\n }),\n ),\n ),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getConfirmedBlock\" message\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link GetBlockRpcResult} instead.\n */\nconst GetConfirmedBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n }),\n ),\n rewards: optional(\n array(\n pick({\n pubkey: string(),\n lamports: number(),\n postBalance: nullable(number()),\n rewardType: nullable(string()),\n }),\n ),\n ),\n blockTime: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message\n */\nconst GetBlockSignaturesRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n signatures: array(string()),\n blockTime: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getTransaction\" message\n */\nconst GetTransactionRpcResult = jsonRpcResult(\n nullable(\n pick({\n slot: number(),\n meta: ConfirmedTransactionMetaResult,\n blockTime: optional(nullable(number())),\n transaction: ConfirmedTransactionResult,\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getTransaction\" message\n */\nconst GetParsedTransactionRpcResult = jsonRpcResult(\n nullable(\n pick({\n slot: number(),\n transaction: ParsedConfirmedTransactionResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n blockTime: optional(nullable(number())),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getRecentBlockhash\" message\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link GetLatestBlockhashRpcResult} instead.\n */\nconst GetRecentBlockhashAndContextRpcResult = jsonRpcResultAndContext(\n pick({\n blockhash: string(),\n feeCalculator: pick({\n lamportsPerSignature: number(),\n }),\n }),\n);\n\n/**\n * Expected JSON RPC response for the \"getLatestBlockhash\" message\n */\nconst GetLatestBlockhashRpcResult = jsonRpcResultAndContext(\n pick({\n blockhash: string(),\n lastValidBlockHeight: number(),\n }),\n);\n\nconst PerfSampleResult = pick({\n slot: number(),\n numTransactions: number(),\n numSlots: number(),\n samplePeriodSecs: number(),\n});\n\n/*\n * Expected JSON RPC response for \"getRecentPerformanceSamples\" message\n */\nconst GetRecentPerformanceSamplesRpcResult = jsonRpcResult(\n array(PerfSampleResult),\n);\n\n/**\n * Expected JSON RPC response for the \"getFeeCalculatorForBlockhash\" message\n */\nconst GetFeeCalculatorRpcResult = jsonRpcResultAndContext(\n nullable(\n pick({\n feeCalculator: pick({\n lamportsPerSignature: number(),\n }),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"requestAirdrop\" message\n */\nconst RequestAirdropRpcResult = jsonRpcResult(string());\n\n/**\n * Expected JSON RPC response for the \"sendTransaction\" message\n */\nconst SendTransactionRpcResult = jsonRpcResult(string());\n\n/**\n * Information about the latest slot being processed by a node\n */\nexport type SlotInfo = {\n /** Currently processing slot */\n slot: number;\n /** Parent of the current slot */\n parent: number;\n /** The root block of the current slot's fork */\n root: number;\n};\n\n/**\n * Parsed account data\n */\nexport type ParsedAccountData = {\n /** Name of the program that owns this account */\n program: string;\n /** Parsed account data */\n parsed: any;\n /** Space used by account data */\n space: number;\n};\n\n/**\n * Stake Activation data\n */\nexport type StakeActivationData = {\n /** the stake account's activation state */\n state: 'active' | 'inactive' | 'activating' | 'deactivating';\n /** stake active during the epoch */\n active: number;\n /** stake inactive during the epoch */\n inactive: number;\n};\n\n/**\n * Data slice argument for getProgramAccounts\n */\nexport type DataSlice = {\n /** offset of data slice */\n offset: number;\n /** length of data slice */\n length: number;\n};\n\n/**\n * Memory comparison filter for getProgramAccounts\n */\nexport type MemcmpFilter = {\n memcmp: {\n /** offset into program account data to start comparison */\n offset: number;\n /** data to match, as base-58 encoded string and limited to less than 129 bytes */\n bytes: string;\n };\n};\n\n/**\n * Data size comparison filter for getProgramAccounts\n */\nexport type DataSizeFilter = {\n /** Size of data for program account data length comparison */\n dataSize: number;\n};\n\n/**\n * A filter object for getProgramAccounts\n */\nexport type GetProgramAccountsFilter = MemcmpFilter | DataSizeFilter;\n\n/**\n * Configuration object for getProgramAccounts requests\n */\nexport type GetProgramAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional encoding for account data (default base64)\n * To use \"jsonParsed\" encoding, please refer to `getParsedProgramAccounts` in connection.ts\n * */\n encoding?: 'base64';\n /** Optional data slice to limit the returned account data */\n dataSlice?: DataSlice;\n /** Optional array of filters to apply to accounts */\n filters?: GetProgramAccountsFilter[];\n};\n\n/**\n * Configuration object for getParsedProgramAccounts\n */\nexport type GetParsedProgramAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional array of filters to apply to accounts */\n filters?: GetProgramAccountsFilter[];\n};\n\n/**\n * Configuration object for getMultipleAccounts\n */\nexport type GetMultipleAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional encoding for account data (default base64) */\n encoding?: 'base64' | 'jsonParsed';\n};\n\n/**\n * Information describing an account\n */\nexport type AccountInfo = {\n /** `true` if this account's data contains a loaded program */\n executable: boolean;\n /** Identifier of the program that owns the account */\n owner: PublicKey;\n /** Number of lamports assigned to the account */\n lamports: number;\n /** Optional data assigned to the account */\n data: T;\n /** Optional rent epoch info for account */\n rentEpoch?: number;\n};\n\n/**\n * Account information identified by pubkey\n */\nexport type KeyedAccountInfo = {\n accountId: PublicKey;\n accountInfo: AccountInfo;\n};\n\n/**\n * Callback function for account change notifications\n */\nexport type AccountChangeCallback = (\n accountInfo: AccountInfo,\n context: Context,\n) => void;\n\n/**\n * Callback function for program account change notifications\n */\nexport type ProgramAccountChangeCallback = (\n keyedAccountInfo: KeyedAccountInfo,\n context: Context,\n) => void;\n\n/**\n * Callback function for slot change notifications\n */\nexport type SlotChangeCallback = (slotInfo: SlotInfo) => void;\n\n/**\n * Callback function for slot update notifications\n */\nexport type SlotUpdateCallback = (slotUpdate: SlotUpdate) => void;\n\n/**\n * Callback function for signature status notifications\n */\nexport type SignatureResultCallback = (\n signatureResult: SignatureResult,\n context: Context,\n) => void;\n\n/**\n * Signature status notification with transaction result\n */\nexport type SignatureStatusNotification = {\n type: 'status';\n result: SignatureResult;\n};\n\n/**\n * Signature received notification\n */\nexport type SignatureReceivedNotification = {\n type: 'received';\n};\n\n/**\n * Callback function for signature notifications\n */\nexport type SignatureSubscriptionCallback = (\n notification: SignatureStatusNotification | SignatureReceivedNotification,\n context: Context,\n) => void;\n\n/**\n * Signature subscription options\n */\nexport type SignatureSubscriptionOptions = {\n commitment?: Commitment;\n enableReceivedNotification?: boolean;\n};\n\n/**\n * Callback function for root change notifications\n */\nexport type RootChangeCallback = (root: number) => void;\n\n/**\n * @internal\n */\nconst LogsResult = pick({\n err: TransactionErrorResult,\n logs: array(string()),\n signature: string(),\n});\n\n/**\n * Logs result.\n */\nexport type Logs = {\n err: TransactionError | null;\n logs: string[];\n signature: string;\n};\n\n/**\n * Expected JSON RPC response for the \"logsNotification\" message.\n */\nconst LogsNotificationResult = pick({\n result: notificationResultAndContext(LogsResult),\n subscription: number(),\n});\n\n/**\n * Filter for log subscriptions.\n */\nexport type LogsFilter = PublicKey | 'all' | 'allWithVotes';\n\n/**\n * Callback function for log notifications.\n */\nexport type LogsCallback = (logs: Logs, ctx: Context) => void;\n\n/**\n * Signature result\n */\nexport type SignatureResult = {\n err: TransactionError | null;\n};\n\n/**\n * Transaction error\n */\nexport type TransactionError = {} | string;\n\n/**\n * Transaction confirmation status\n *
\n *   'processed': Transaction landed in a block which has reached 1 confirmation by the connected node\n *   'confirmed': Transaction landed in a block which has reached 1 confirmation by the cluster\n *   'finalized': Transaction landed in a block which has been finalized by the cluster\n * 
\n */\nexport type TransactionConfirmationStatus =\n | 'processed'\n | 'confirmed'\n | 'finalized';\n\n/**\n * Signature status\n */\nexport type SignatureStatus = {\n /** when the transaction was processed */\n slot: number;\n /** the number of blocks that have been confirmed and voted on in the fork containing `slot` */\n confirmations: number | null;\n /** transaction error, if any */\n err: TransactionError | null;\n /** cluster confirmation status, if data available. Possible responses: `processed`, `confirmed`, `finalized` */\n confirmationStatus?: TransactionConfirmationStatus;\n};\n\n/**\n * A confirmed signature with its status\n */\nexport type ConfirmedSignatureInfo = {\n /** the transaction signature */\n signature: string;\n /** when the transaction was processed */\n slot: number;\n /** error, if any */\n err: TransactionError | null;\n /** memo associated with the transaction, if any */\n memo: string | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * An object defining headers to be passed to the RPC server\n */\nexport type HttpHeaders = {[header: string]: string};\n\n/**\n * The type of the JavaScript `fetch()` API\n */\nexport type FetchFn = typeof fetchImpl;\n\n/**\n * A callback used to augment the outgoing HTTP request\n */\nexport type FetchMiddleware = (\n info: Parameters[0],\n init: Parameters[1],\n fetch: (...a: Parameters) => void,\n) => void;\n\n/**\n * Configuration for instantiating a Connection\n */\nexport type ConnectionConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional endpoint URL to the fullnode JSON RPC PubSub WebSocket Endpoint */\n wsEndpoint?: string;\n /** Optional HTTP headers object */\n httpHeaders?: HttpHeaders;\n /** Optional custom fetch function */\n fetch?: FetchFn;\n /** Optional fetch middleware callback */\n fetchMiddleware?: FetchMiddleware;\n /** Optional Disable retrying calls when server responds with HTTP 429 (Too Many Requests) */\n disableRetryOnRateLimit?: boolean;\n /** time to allow for the server to initially process a transaction (in milliseconds) */\n confirmTransactionInitialTimeout?: number;\n};\n\n/**\n * A connection to a fullnode JSON RPC endpoint\n */\nexport class Connection {\n /** @internal */ _commitment?: Commitment;\n /** @internal */ _confirmTransactionInitialTimeout?: number;\n /** @internal */ _rpcEndpoint: string;\n /** @internal */ _rpcWsEndpoint: string;\n /** @internal */ _rpcClient: RpcClient;\n /** @internal */ _rpcRequest: RpcRequest;\n /** @internal */ _rpcBatchRequest: RpcBatchRequest;\n /** @internal */ _rpcWebSocket: RpcWebSocketClient;\n /** @internal */ _rpcWebSocketConnected: boolean = false;\n /** @internal */ _rpcWebSocketHeartbeat: ReturnType<\n typeof setInterval\n > | null = null;\n /** @internal */ _rpcWebSocketIdleTimeout: ReturnType<\n typeof setTimeout\n > | null = null;\n /** @internal\n * A number that we increment every time an active connection closes.\n * Used to determine whether the same socket connection that was open\n * when an async operation started is the same one that's active when\n * its continuation fires.\n *\n */ private _rpcWebSocketGeneration: number = 0;\n\n /** @internal */ _disableBlockhashCaching: boolean = false;\n /** @internal */ _pollingBlockhash: boolean = false;\n /** @internal */ _blockhashInfo: {\n latestBlockhash: BlockhashWithExpiryBlockHeight | null;\n lastFetch: number;\n simulatedSignatures: Array;\n transactionSignatures: Array;\n } = {\n latestBlockhash: null,\n lastFetch: 0,\n transactionSignatures: [],\n simulatedSignatures: [],\n };\n\n /** @internal */ private _nextClientSubscriptionId: ClientSubscriptionId = 0;\n /** @internal */ private _subscriptionDisposeFunctionsByClientSubscriptionId: {\n [clientSubscriptionId: ClientSubscriptionId]:\n | SubscriptionDisposeFn\n | undefined;\n } = {};\n /** @internal */ private _subscriptionCallbacksByServerSubscriptionId: {\n [serverSubscriptionId: ServerSubscriptionId]:\n | Set\n | undefined;\n } = {};\n /** @internal */ private _subscriptionsByHash: {\n [hash: SubscriptionConfigHash]: Subscription | undefined;\n } = {};\n /**\n * Special case.\n * After a signature is processed, RPCs automatically dispose of the\n * subscription on the server side. We need to track which of these\n * subscriptions have been disposed in such a way, so that we know\n * whether the client is dealing with a not-yet-processed signature\n * (in which case we must tear down the server subscription) or an\n * already-processed signature (in which case the client can simply\n * clear out the subscription locally without telling the server).\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n /** @internal */ private _subscriptionsAutoDisposedByRpc: Set =\n new Set();\n\n /**\n * Establish a JSON RPC connection\n *\n * @param endpoint URL to the fullnode JSON RPC endpoint\n * @param commitmentOrConfig optional default commitment level or optional ConnectionConfig configuration object\n */\n constructor(\n endpoint: string,\n commitmentOrConfig?: Commitment | ConnectionConfig,\n ) {\n let url = new URL(endpoint);\n const useHttps = url.protocol === 'https:';\n\n let wsEndpoint;\n let httpHeaders;\n let fetch;\n let fetchMiddleware;\n let disableRetryOnRateLimit;\n if (commitmentOrConfig && typeof commitmentOrConfig === 'string') {\n this._commitment = commitmentOrConfig;\n } else if (commitmentOrConfig) {\n this._commitment = commitmentOrConfig.commitment;\n this._confirmTransactionInitialTimeout =\n commitmentOrConfig.confirmTransactionInitialTimeout;\n wsEndpoint = commitmentOrConfig.wsEndpoint;\n httpHeaders = commitmentOrConfig.httpHeaders;\n fetch = commitmentOrConfig.fetch;\n fetchMiddleware = commitmentOrConfig.fetchMiddleware;\n disableRetryOnRateLimit = commitmentOrConfig.disableRetryOnRateLimit;\n }\n\n this._rpcEndpoint = endpoint;\n this._rpcWsEndpoint = wsEndpoint || makeWebsocketUrl(endpoint);\n\n this._rpcClient = createRpcClient(\n url.toString(),\n useHttps,\n httpHeaders,\n fetch,\n fetchMiddleware,\n disableRetryOnRateLimit,\n );\n this._rpcRequest = createRpcRequest(this._rpcClient);\n this._rpcBatchRequest = createRpcBatchRequest(this._rpcClient);\n\n this._rpcWebSocket = new RpcWebSocketClient(this._rpcWsEndpoint, {\n autoconnect: false,\n max_reconnects: Infinity,\n });\n this._rpcWebSocket.on('open', this._wsOnOpen.bind(this));\n this._rpcWebSocket.on('error', this._wsOnError.bind(this));\n this._rpcWebSocket.on('close', this._wsOnClose.bind(this));\n this._rpcWebSocket.on(\n 'accountNotification',\n this._wsOnAccountNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'programNotification',\n this._wsOnProgramAccountNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'slotNotification',\n this._wsOnSlotNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'slotsUpdatesNotification',\n this._wsOnSlotUpdatesNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'signatureNotification',\n this._wsOnSignatureNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'rootNotification',\n this._wsOnRootNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'logsNotification',\n this._wsOnLogsNotification.bind(this),\n );\n }\n\n /**\n * The default commitment used for requests\n */\n get commitment(): Commitment | undefined {\n return this._commitment;\n }\n\n /**\n * The RPC endpoint\n */\n get rpcEndpoint(): string {\n return this._rpcEndpoint;\n }\n\n /**\n * Fetch the balance for the specified public key, return with context\n */\n async getBalanceAndContext(\n publicKey: PublicKey,\n commitment?: Commitment,\n ): Promise> {\n const args = this._buildArgs([publicKey.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getBalance', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(number()));\n if ('error' in res) {\n throw new Error(\n 'failed to get balance for ' +\n publicKey.toBase58() +\n ': ' +\n res.error.message,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the balance for the specified public key\n */\n async getBalance(\n publicKey: PublicKey,\n commitment?: Commitment,\n ): Promise {\n return await this.getBalanceAndContext(publicKey, commitment)\n .then(x => x.value)\n .catch(e => {\n throw new Error(\n 'failed to get balance of account ' + publicKey.toBase58() + ': ' + e,\n );\n });\n }\n\n /**\n * Fetch the estimated production time of a block\n */\n async getBlockTime(slot: number): Promise {\n const unsafeRes = await this._rpcRequest('getBlockTime', [slot]);\n const res = create(unsafeRes, jsonRpcResult(nullable(number())));\n if ('error' in res) {\n throw new Error(\n 'failed to get block time for slot ' + slot + ': ' + res.error.message,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the lowest slot that the node has information about in its ledger.\n * This value may increase over time if the node is configured to purge older ledger data\n */\n async getMinimumLedgerSlot(): Promise {\n const unsafeRes = await this._rpcRequest('minimumLedgerSlot', []);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new Error(\n 'failed to get minimum ledger slot: ' + res.error.message,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the slot of the lowest confirmed block that has not been purged from the ledger\n */\n async getFirstAvailableBlock(): Promise {\n const unsafeRes = await this._rpcRequest('getFirstAvailableBlock', []);\n const res = create(unsafeRes, SlotRpcResult);\n if ('error' in res) {\n throw new Error(\n 'failed to get first available block: ' + res.error.message,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch information about the current supply\n */\n async getSupply(\n config?: GetSupplyConfig | Commitment,\n ): Promise> {\n let configArg: GetSupplyConfig = {};\n if (typeof config === 'string') {\n configArg = {commitment: config};\n } else if (config) {\n configArg = {\n ...config,\n commitment: (config && config.commitment) || this.commitment,\n };\n } else {\n configArg = {\n commitment: this.commitment,\n };\n }\n\n const unsafeRes = await this._rpcRequest('getSupply', [configArg]);\n const res = create(unsafeRes, GetSupplyRpcResult);\n if ('error' in res) {\n throw new Error('failed to get supply: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch the current supply of a token mint\n */\n async getTokenSupply(\n tokenMintAddress: PublicKey,\n commitment?: Commitment,\n ): Promise> {\n const args = this._buildArgs([tokenMintAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenSupply', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(TokenAmountResult));\n if ('error' in res) {\n throw new Error('failed to get token supply: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch the current balance of a token account\n */\n async getTokenAccountBalance(\n tokenAddress: PublicKey,\n commitment?: Commitment,\n ): Promise> {\n const args = this._buildArgs([tokenAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenAccountBalance', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(TokenAmountResult));\n if ('error' in res) {\n throw new Error(\n 'failed to get token account balance: ' + res.error.message,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the token accounts owned by the specified account\n *\n * @return {Promise}>>>}\n */\n async getTokenAccountsByOwner(\n ownerAddress: PublicKey,\n filter: TokenAccountsFilter,\n commitment?: Commitment,\n ): Promise<\n RpcResponseAndContext<\n Array<{pubkey: PublicKey; account: AccountInfo}>\n >\n > {\n let _args: any[] = [ownerAddress.toBase58()];\n if ('mint' in filter) {\n _args.push({mint: filter.mint.toBase58()});\n } else {\n _args.push({programId: filter.programId.toBase58()});\n }\n\n const args = this._buildArgs(_args, commitment, 'base64');\n const unsafeRes = await this._rpcRequest('getTokenAccountsByOwner', args);\n const res = create(unsafeRes, GetTokenAccountsByOwner);\n if ('error' in res) {\n throw new Error(\n 'failed to get token accounts owned by account ' +\n ownerAddress.toBase58() +\n ': ' +\n res.error.message,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed token accounts owned by the specified account\n *\n * @return {Promise}>>>}\n */\n async getParsedTokenAccountsByOwner(\n ownerAddress: PublicKey,\n filter: TokenAccountsFilter,\n commitment?: Commitment,\n ): Promise<\n RpcResponseAndContext<\n Array<{pubkey: PublicKey; account: AccountInfo}>\n >\n > {\n let _args: any[] = [ownerAddress.toBase58()];\n if ('mint' in filter) {\n _args.push({mint: filter.mint.toBase58()});\n } else {\n _args.push({programId: filter.programId.toBase58()});\n }\n\n const args = this._buildArgs(_args, commitment, 'jsonParsed');\n const unsafeRes = await this._rpcRequest('getTokenAccountsByOwner', args);\n const res = create(unsafeRes, GetParsedTokenAccountsByOwner);\n if ('error' in res) {\n throw new Error(\n 'failed to get token accounts owned by account ' +\n ownerAddress.toBase58() +\n ': ' +\n res.error.message,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the 20 largest accounts with their current balances\n */\n async getLargestAccounts(\n config?: GetLargestAccountsConfig,\n ): Promise>> {\n const arg = {\n ...config,\n commitment: (config && config.commitment) || this.commitment,\n };\n const args = arg.filter || arg.commitment ? [arg] : [];\n const unsafeRes = await this._rpcRequest('getLargestAccounts', args);\n const res = create(unsafeRes, GetLargestAccountsRpcResult);\n if ('error' in res) {\n throw new Error('failed to get largest accounts: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch the 20 largest token accounts with their current balances\n * for a given mint.\n */\n async getTokenLargestAccounts(\n mintAddress: PublicKey,\n commitment?: Commitment,\n ): Promise>> {\n const args = this._buildArgs([mintAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenLargestAccounts', args);\n const res = create(unsafeRes, GetTokenLargestAccountsResult);\n if ('error' in res) {\n throw new Error(\n 'failed to get token largest accounts: ' + res.error.message,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for the specified public key, return with context\n */\n async getAccountInfoAndContext(\n publicKey: PublicKey,\n commitment?: Commitment,\n ): Promise | null>> {\n const args = this._buildArgs([publicKey.toBase58()], commitment, 'base64');\n const unsafeRes = await this._rpcRequest('getAccountInfo', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(nullable(AccountInfoResult)),\n );\n if ('error' in res) {\n throw new Error(\n 'failed to get info about account ' +\n publicKey.toBase58() +\n ': ' +\n res.error.message,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed account info for the specified public key\n */\n async getParsedAccountInfo(\n publicKey: PublicKey,\n commitment?: Commitment,\n ): Promise<\n RpcResponseAndContext | null>\n > {\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n 'jsonParsed',\n );\n const unsafeRes = await this._rpcRequest('getAccountInfo', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(nullable(ParsedAccountInfoResult)),\n );\n if ('error' in res) {\n throw new Error(\n 'failed to get info about account ' +\n publicKey.toBase58() +\n ': ' +\n res.error.message,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for the specified public key\n */\n async getAccountInfo(\n publicKey: PublicKey,\n commitment?: Commitment,\n ): Promise | null> {\n try {\n const res = await this.getAccountInfoAndContext(publicKey, commitment);\n return res.value;\n } catch (e) {\n throw new Error(\n 'failed to get info about account ' + publicKey.toBase58() + ': ' + e,\n );\n }\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys, return with context\n */\n async getMultipleAccountsInfoAndContext(\n publicKeys: PublicKey[],\n commitment?: Commitment,\n ): Promise | null)[]>> {\n const keys = publicKeys.map(key => key.toBase58());\n const args = this._buildArgs([keys], commitment, 'base64');\n const unsafeRes = await this._rpcRequest('getMultipleAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(array(nullable(AccountInfoResult))),\n );\n if ('error' in res) {\n throw new Error(\n 'failed to get info for accounts ' + keys + ': ' + res.error.message,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys\n */\n async getMultipleAccountsInfo(\n publicKeys: PublicKey[],\n commitment?: Commitment,\n ): Promise<(AccountInfo | null)[]> {\n const res = await this.getMultipleAccountsInfoAndContext(\n publicKeys,\n commitment,\n );\n return res.value;\n }\n\n /**\n * Returns epoch activation information for a stake account that has been delegated\n */\n async getStakeActivation(\n publicKey: PublicKey,\n commitment?: Commitment,\n epoch?: number,\n ): Promise {\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n undefined,\n epoch !== undefined ? {epoch} : undefined,\n );\n\n const unsafeRes = await this._rpcRequest('getStakeActivation', args);\n const res = create(unsafeRes, jsonRpcResult(StakeActivationResult));\n if ('error' in res) {\n throw new Error(\n `failed to get Stake Activation ${publicKey.toBase58()}: ${\n res.error.message\n }`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the accounts owned by the specified program id\n *\n * @return {Promise}>>}\n */\n async getProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetProgramAccountsConfig | Commitment,\n ): Promise}>> {\n const extra: Pick = {};\n\n let commitment;\n let encoding;\n if (configOrCommitment) {\n if (typeof configOrCommitment === 'string') {\n commitment = configOrCommitment;\n } else {\n commitment = configOrCommitment.commitment;\n encoding = configOrCommitment.encoding;\n\n if (configOrCommitment.dataSlice) {\n extra.dataSlice = configOrCommitment.dataSlice;\n }\n if (configOrCommitment.filters) {\n extra.filters = configOrCommitment.filters;\n }\n }\n }\n\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment,\n encoding || 'base64',\n extra,\n );\n const unsafeRes = await this._rpcRequest('getProgramAccounts', args);\n const res = create(unsafeRes, jsonRpcResult(array(KeyedAccountInfoResult)));\n if ('error' in res) {\n throw new Error(\n 'failed to get accounts owned by program ' +\n programId.toBase58() +\n ': ' +\n res.error.message,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch and parse all the accounts owned by the specified program id\n *\n * @return {Promise}>>}\n */\n async getParsedProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetParsedProgramAccountsConfig | Commitment,\n ): Promise<\n Array<{\n pubkey: PublicKey;\n account: AccountInfo;\n }>\n > {\n const extra: Pick = {};\n\n let commitment;\n if (configOrCommitment) {\n if (typeof configOrCommitment === 'string') {\n commitment = configOrCommitment;\n } else {\n commitment = configOrCommitment.commitment;\n\n if (configOrCommitment.filters) {\n extra.filters = configOrCommitment.filters;\n }\n }\n }\n\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment,\n 'jsonParsed',\n extra,\n );\n const unsafeRes = await this._rpcRequest('getProgramAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResult(array(KeyedParsedAccountInfoResult)),\n );\n if ('error' in res) {\n throw new Error(\n 'failed to get accounts owned by program ' +\n programId.toBase58() +\n ': ' +\n res.error.message,\n );\n }\n return res.result;\n }\n\n confirmTransaction(\n strategy: BlockheightBasedTransactionConfirmationStrategy,\n commitment?: Commitment,\n ): Promise>;\n\n /** @deprecated Instead, call `confirmTransaction` using a `TransactionConfirmationConfig` */\n // eslint-disable-next-line no-dupe-class-members\n confirmTransaction(\n strategy: TransactionSignature,\n commitment?: Commitment,\n ): Promise>;\n\n // eslint-disable-next-line no-dupe-class-members\n async confirmTransaction(\n strategy:\n | BlockheightBasedTransactionConfirmationStrategy\n | TransactionSignature,\n commitment?: Commitment,\n ): Promise> {\n let rawSignature: string;\n\n if (typeof strategy == 'string') {\n rawSignature = strategy;\n } else {\n const config =\n strategy as BlockheightBasedTransactionConfirmationStrategy;\n rawSignature = config.signature;\n }\n\n let decodedSignature;\n\n try {\n decodedSignature = bs58.decode(rawSignature);\n } catch (err) {\n throw new Error('signature must be base58 encoded: ' + rawSignature);\n }\n\n assert(decodedSignature.length === 64, 'signature has invalid length');\n\n const subscriptionCommitment = commitment || this.commitment;\n let timeoutId;\n let subscriptionId;\n let done = false;\n\n const confirmationPromise = new Promise<{\n __type: TransactionStatus.PROCESSED;\n response: RpcResponseAndContext;\n }>((resolve, reject) => {\n try {\n subscriptionId = this.onSignature(\n rawSignature,\n (result: SignatureResult, context: Context) => {\n subscriptionId = undefined;\n const response = {\n context,\n value: result,\n };\n done = true;\n resolve({__type: TransactionStatus.PROCESSED, response});\n },\n subscriptionCommitment,\n );\n } catch (err) {\n reject(err);\n }\n });\n\n const checkBlockHeight = async () => {\n try {\n const blockHeight = await this.getBlockHeight(commitment);\n return blockHeight;\n } catch (_e) {\n return -1;\n }\n };\n\n const expiryPromise = new Promise<\n | {__type: TransactionStatus.BLOCKHEIGHT_EXCEEDED}\n | {__type: TransactionStatus.TIMED_OUT; timeoutMs: number}\n >(resolve => {\n if (typeof strategy === 'string') {\n let timeoutMs = this._confirmTransactionInitialTimeout || 60 * 1000;\n switch (subscriptionCommitment) {\n case 'processed':\n case 'recent':\n case 'single':\n case 'confirmed':\n case 'singleGossip': {\n timeoutMs = this._confirmTransactionInitialTimeout || 30 * 1000;\n break;\n }\n // exhaust enums to ensure full coverage\n case 'finalized':\n case 'max':\n case 'root':\n }\n\n timeoutId = setTimeout(\n () => resolve({__type: TransactionStatus.TIMED_OUT, timeoutMs}),\n timeoutMs,\n );\n } else {\n let config =\n strategy as BlockheightBasedTransactionConfirmationStrategy;\n (async () => {\n let currentBlockHeight = await checkBlockHeight();\n if (done) return;\n while (currentBlockHeight <= config.lastValidBlockHeight) {\n await sleep(1000);\n if (done) return;\n currentBlockHeight = await checkBlockHeight();\n if (done) return;\n }\n resolve({__type: TransactionStatus.BLOCKHEIGHT_EXCEEDED});\n })();\n }\n });\n\n let result: RpcResponseAndContext;\n try {\n const outcome = await Promise.race([confirmationPromise, expiryPromise]);\n switch (outcome.__type) {\n case TransactionStatus.BLOCKHEIGHT_EXCEEDED:\n throw new TransactionExpiredBlockheightExceededError(rawSignature);\n case TransactionStatus.PROCESSED:\n result = outcome.response;\n break;\n case TransactionStatus.TIMED_OUT:\n throw new TransactionExpiredTimeoutError(\n rawSignature,\n outcome.timeoutMs / 1000,\n );\n }\n } finally {\n clearTimeout(timeoutId);\n if (subscriptionId) {\n this.removeSignatureListener(subscriptionId);\n }\n }\n return result;\n }\n\n /**\n * Return the list of nodes that are currently participating in the cluster\n */\n async getClusterNodes(): Promise> {\n const unsafeRes = await this._rpcRequest('getClusterNodes', []);\n const res = create(unsafeRes, jsonRpcResult(array(ContactInfoResult)));\n if ('error' in res) {\n throw new Error('failed to get cluster nodes: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Return the list of nodes that are currently participating in the cluster\n */\n async getVoteAccounts(commitment?: Commitment): Promise {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getVoteAccounts', args);\n const res = create(unsafeRes, GetVoteAccounts);\n if ('error' in res) {\n throw new Error('failed to get vote accounts: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch the current slot that the node is processing\n */\n async getSlot(commitment?: Commitment): Promise {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getSlot', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new Error('failed to get slot: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch the current slot leader of the cluster\n */\n async getSlotLeader(commitment?: Commitment): Promise {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getSlotLeader', args);\n const res = create(unsafeRes, jsonRpcResult(string()));\n if ('error' in res) {\n throw new Error('failed to get slot leader: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch `limit` number of slot leaders starting from `startSlot`\n *\n * @param startSlot fetch slot leaders starting from this slot\n * @param limit number of slot leaders to return\n */\n async getSlotLeaders(\n startSlot: number,\n limit: number,\n ): Promise> {\n const args = [startSlot, limit];\n const unsafeRes = await this._rpcRequest('getSlotLeaders', args);\n const res = create(unsafeRes, jsonRpcResult(array(PublicKeyFromString)));\n if ('error' in res) {\n throw new Error('failed to get slot leaders: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch the current status of a signature\n */\n async getSignatureStatus(\n signature: TransactionSignature,\n config?: SignatureStatusConfig,\n ): Promise> {\n const {context, value: values} = await this.getSignatureStatuses(\n [signature],\n config,\n );\n assert(values.length === 1);\n const value = values[0];\n return {context, value};\n }\n\n /**\n * Fetch the current statuses of a batch of signatures\n */\n async getSignatureStatuses(\n signatures: Array,\n config?: SignatureStatusConfig,\n ): Promise>> {\n const params: any[] = [signatures];\n if (config) {\n params.push(config);\n }\n const unsafeRes = await this._rpcRequest('getSignatureStatuses', params);\n const res = create(unsafeRes, GetSignatureStatusesRpcResult);\n if ('error' in res) {\n throw new Error('failed to get signature status: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch the current transaction count of the cluster\n */\n async getTransactionCount(commitment?: Commitment): Promise {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getTransactionCount', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new Error('failed to get transaction count: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch the current total currency supply of the cluster in lamports\n *\n * @deprecated Deprecated since v1.2.8. Please use {@link getSupply} instead.\n */\n async getTotalSupply(commitment?: Commitment): Promise {\n const result = await this.getSupply({\n commitment,\n excludeNonCirculatingAccountsList: true,\n });\n return result.value.total;\n }\n\n /**\n * Fetch the cluster InflationGovernor parameters\n */\n async getInflationGovernor(\n commitment?: Commitment,\n ): Promise {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getInflationGovernor', args);\n const res = create(unsafeRes, GetInflationGovernorRpcResult);\n if ('error' in res) {\n throw new Error('failed to get inflation: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch the inflation reward for a list of addresses for an epoch\n */\n async getInflationReward(\n addresses: PublicKey[],\n epoch?: number,\n commitment?: Commitment,\n ): Promise<(InflationReward | null)[]> {\n const args = this._buildArgs(\n [addresses.map(pubkey => pubkey.toBase58())],\n commitment,\n undefined,\n {\n epoch,\n },\n );\n const unsafeRes = await this._rpcRequest('getInflationReward', args);\n const res = create(unsafeRes, GetInflationRewardResult);\n if ('error' in res) {\n throw new Error('failed to get inflation reward: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch the Epoch Info parameters\n */\n async getEpochInfo(commitment?: Commitment): Promise {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getEpochInfo', args);\n const res = create(unsafeRes, GetEpochInfoRpcResult);\n if ('error' in res) {\n throw new Error('failed to get epoch info: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch the Epoch Schedule parameters\n */\n async getEpochSchedule(): Promise {\n const unsafeRes = await this._rpcRequest('getEpochSchedule', []);\n const res = create(unsafeRes, GetEpochScheduleRpcResult);\n if ('error' in res) {\n throw new Error('failed to get epoch schedule: ' + res.error.message);\n }\n const epochSchedule = res.result;\n return new EpochSchedule(\n epochSchedule.slotsPerEpoch,\n epochSchedule.leaderScheduleSlotOffset,\n epochSchedule.warmup,\n epochSchedule.firstNormalEpoch,\n epochSchedule.firstNormalSlot,\n );\n }\n\n /**\n * Fetch the leader schedule for the current epoch\n * @return {Promise>}\n */\n async getLeaderSchedule(): Promise {\n const unsafeRes = await this._rpcRequest('getLeaderSchedule', []);\n const res = create(unsafeRes, GetLeaderScheduleRpcResult);\n if ('error' in res) {\n throw new Error('failed to get leader schedule: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch the minimum balance needed to exempt an account of `dataLength`\n * size from rent\n */\n async getMinimumBalanceForRentExemption(\n dataLength: number,\n commitment?: Commitment,\n ): Promise {\n const args = this._buildArgs([dataLength], commitment);\n const unsafeRes = await this._rpcRequest(\n 'getMinimumBalanceForRentExemption',\n args,\n );\n const res = create(unsafeRes, GetMinimumBalanceForRentExemptionRpcResult);\n if ('error' in res) {\n console.warn('Unable to fetch minimum balance for rent exemption');\n return 0;\n }\n return res.result;\n }\n\n /**\n * Fetch a recent blockhash from the cluster, return with context\n * @return {Promise>}\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getLatestBlockhash} instead.\n */\n async getRecentBlockhashAndContext(\n commitment?: Commitment,\n ): Promise<\n RpcResponseAndContext<{blockhash: Blockhash; feeCalculator: FeeCalculator}>\n > {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getRecentBlockhash', args);\n const res = create(unsafeRes, GetRecentBlockhashAndContextRpcResult);\n if ('error' in res) {\n throw new Error('failed to get recent blockhash: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch recent performance samples\n * @return {Promise>}\n */\n async getRecentPerformanceSamples(\n limit?: number,\n ): Promise> {\n const args = this._buildArgs(limit ? [limit] : []);\n const unsafeRes = await this._rpcRequest(\n 'getRecentPerformanceSamples',\n args,\n );\n const res = create(unsafeRes, GetRecentPerformanceSamplesRpcResult);\n if ('error' in res) {\n throw new Error(\n 'failed to get recent performance samples: ' + res.error.message,\n );\n }\n\n return res.result;\n }\n\n /**\n * Fetch the fee calculator for a recent blockhash from the cluster, return with context\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getFeeForMessage} instead.\n */\n async getFeeCalculatorForBlockhash(\n blockhash: Blockhash,\n commitment?: Commitment,\n ): Promise> {\n const args = this._buildArgs([blockhash], commitment);\n const unsafeRes = await this._rpcRequest(\n 'getFeeCalculatorForBlockhash',\n args,\n );\n\n const res = create(unsafeRes, GetFeeCalculatorRpcResult);\n if ('error' in res) {\n throw new Error('failed to get fee calculator: ' + res.error.message);\n }\n const {context, value} = res.result;\n return {\n context,\n value: value !== null ? value.feeCalculator : null,\n };\n }\n\n /**\n * Fetch the fee for a message from the cluster, return with context\n */\n async getFeeForMessage(\n message: Message,\n commitment?: Commitment,\n ): Promise> {\n const wireMessage = message.serialize().toString('base64');\n const args = this._buildArgs([wireMessage], commitment);\n const unsafeRes = await this._rpcRequest('getFeeForMessage', args);\n\n const res = create(unsafeRes, jsonRpcResultAndContext(nullable(number())));\n if ('error' in res) {\n throw new Error('failed to get slot: ' + res.error.message);\n }\n if (res.result === null) {\n throw new Error('invalid blockhash');\n }\n return res.result as unknown as RpcResponseAndContext;\n }\n\n /**\n * Fetch a recent blockhash from the cluster\n * @return {Promise<{blockhash: Blockhash, feeCalculator: FeeCalculator}>}\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getLatestBlockhash} instead.\n */\n async getRecentBlockhash(\n commitment?: Commitment,\n ): Promise<{blockhash: Blockhash; feeCalculator: FeeCalculator}> {\n try {\n const res = await this.getRecentBlockhashAndContext(commitment);\n return res.value;\n } catch (e) {\n throw new Error('failed to get recent blockhash: ' + e);\n }\n }\n\n /**\n * Fetch the latest blockhash from the cluster\n * @return {Promise}\n */\n async getLatestBlockhash(\n commitment?: Commitment,\n ): Promise {\n try {\n const res = await this.getLatestBlockhashAndContext(commitment);\n return res.value;\n } catch (e) {\n throw new Error('failed to get recent blockhash: ' + e);\n }\n }\n\n /**\n * Fetch the latest blockhash from the cluster\n * @return {Promise}\n */\n async getLatestBlockhashAndContext(\n commitment?: Commitment,\n ): Promise> {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getLatestBlockhash', args);\n const res = create(unsafeRes, GetLatestBlockhashRpcResult);\n if ('error' in res) {\n throw new Error('failed to get latest blockhash: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch the node version\n */\n async getVersion(): Promise {\n const unsafeRes = await this._rpcRequest('getVersion', []);\n const res = create(unsafeRes, jsonRpcResult(VersionResult));\n if ('error' in res) {\n throw new Error('failed to get version: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch the genesis hash\n */\n async getGenesisHash(): Promise {\n const unsafeRes = await this._rpcRequest('getGenesisHash', []);\n const res = create(unsafeRes, jsonRpcResult(string()));\n if ('error' in res) {\n throw new Error('failed to get genesis hash: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch a processed block from the cluster.\n */\n async getBlock(\n slot: number,\n opts?: {commitment?: Finality},\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n opts && opts.commitment,\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n const res = create(unsafeRes, GetBlockRpcResult);\n\n if ('error' in res) {\n throw new Error('failed to get confirmed block: ' + res.error.message);\n }\n\n const result = res.result;\n if (!result) return result;\n\n return {\n ...result,\n transactions: result.transactions.map(({transaction, meta}) => {\n const message = new Message(transaction.message);\n return {\n meta,\n transaction: {\n ...transaction,\n message,\n },\n };\n }),\n };\n }\n\n /*\n * Returns the current block height of the node\n */\n async getBlockHeight(commitment?: Commitment): Promise {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getBlockHeight', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new Error(\n 'failed to get block height information: ' + res.error.message,\n );\n }\n\n return res.result;\n }\n\n /*\n * Returns recent block production information from the current or previous epoch\n */\n async getBlockProduction(\n configOrCommitment?: GetBlockProductionConfig | Commitment,\n ): Promise> {\n let extra: Omit | undefined;\n let commitment: Commitment | undefined;\n\n if (typeof configOrCommitment === 'string') {\n commitment = configOrCommitment;\n } else if (configOrCommitment) {\n const {commitment: c, ...rest} = configOrCommitment;\n commitment = c;\n extra = rest;\n }\n\n const args = this._buildArgs([], commitment, 'base64', extra);\n const unsafeRes = await this._rpcRequest('getBlockProduction', args);\n const res = create(unsafeRes, BlockProductionResponseStruct);\n if ('error' in res) {\n throw new Error(\n 'failed to get block production information: ' + res.error.message,\n );\n }\n\n return res.result;\n }\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n */\n async getTransaction(\n signature: string,\n opts?: {commitment?: Finality},\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n opts && opts.commitment,\n );\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new Error('failed to get transaction: ' + res.error.message);\n }\n\n const result = res.result;\n if (!result) return result;\n\n return {\n ...result,\n transaction: {\n ...result.transaction,\n message: new Message(result.transaction.message),\n },\n };\n }\n\n /**\n * Fetch parsed transaction details for a confirmed or finalized transaction\n */\n async getParsedTransaction(\n signature: TransactionSignature,\n commitment?: Finality,\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment,\n 'jsonParsed',\n );\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new Error('failed to get transaction: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch parsed transaction details for a batch of confirmed transactions\n */\n async getParsedTransactions(\n signatures: TransactionSignature[],\n commitment?: Finality,\n ): Promise<(ParsedConfirmedTransaction | null)[]> {\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment,\n 'jsonParsed',\n );\n return {\n methodName: 'getTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new Error('failed to get transactions: ' + res.error.message);\n }\n return res.result;\n });\n\n return res;\n }\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link TransactionResponse}.\n */\n async getTransactions(\n signatures: TransactionSignature[],\n commitment?: Finality,\n ): Promise<(TransactionResponse | null)[]> {\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed([signature], commitment);\n return {\n methodName: 'getTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new Error('failed to get transactions: ' + res.error.message);\n }\n const result = res.result;\n if (!result) return result;\n\n return {\n ...result,\n transaction: {\n ...result.transaction,\n message: new Message(result.transaction.message),\n },\n };\n });\n\n return res;\n }\n\n /**\n * Fetch a list of Transactions and transaction statuses from the cluster\n * for a confirmed block.\n *\n * @deprecated Deprecated since v1.13.0. Please use {@link getBlock} instead.\n */\n async getConfirmedBlock(\n slot: number,\n commitment?: Finality,\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed([slot], commitment);\n const unsafeRes = await this._rpcRequest('getConfirmedBlock', args);\n const res = create(unsafeRes, GetConfirmedBlockRpcResult);\n\n if ('error' in res) {\n throw new Error('failed to get confirmed block: ' + res.error.message);\n }\n\n const result = res.result;\n if (!result) {\n throw new Error('Confirmed block ' + slot + ' not found');\n }\n\n const block = {\n ...result,\n transactions: result.transactions.map(({transaction, meta}) => {\n const message = new Message(transaction.message);\n return {\n meta,\n transaction: {\n ...transaction,\n message,\n },\n };\n }),\n };\n\n return {\n ...block,\n transactions: block.transactions.map(({transaction, meta}) => {\n return {\n meta,\n transaction: Transaction.populate(\n transaction.message,\n transaction.signatures,\n ),\n };\n }),\n };\n }\n\n /**\n * Fetch confirmed blocks between two slots\n */\n async getBlocks(\n startSlot: number,\n endSlot?: number,\n commitment?: Finality,\n ): Promise> {\n const args = this._buildArgsAtLeastConfirmed(\n endSlot !== undefined ? [startSlot, endSlot] : [startSlot],\n commitment,\n );\n const unsafeRes = await this._rpcRequest('getBlocks', args);\n const res = create(unsafeRes, jsonRpcResult(array(number())));\n if ('error' in res) {\n throw new Error('failed to get blocks: ' + res.error.message);\n }\n return res.result;\n }\n\n /**\n * Fetch a list of Signatures from the cluster for a block, excluding rewards\n */\n async getBlockSignatures(\n slot: number,\n commitment?: Finality,\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment,\n undefined,\n {\n transactionDetails: 'signatures',\n rewards: false,\n },\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n const res = create(unsafeRes, GetBlockSignaturesRpcResult);\n if ('error' in res) {\n throw new Error('failed to get block: ' + res.error.message);\n }\n const result = res.result;\n if (!result) {\n throw new Error('Block ' + slot + ' not found');\n }\n return result;\n }\n\n /**\n * Fetch a list of Signatures from the cluster for a confirmed block, excluding rewards\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getBlockSignatures} instead.\n */\n async getConfirmedBlockSignatures(\n slot: number,\n commitment?: Finality,\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment,\n undefined,\n {\n transactionDetails: 'signatures',\n rewards: false,\n },\n );\n const unsafeRes = await this._rpcRequest('getConfirmedBlock', args);\n const res = create(unsafeRes, GetBlockSignaturesRpcResult);\n if ('error' in res) {\n throw new Error('failed to get confirmed block: ' + res.error.message);\n }\n const result = res.result;\n if (!result) {\n throw new Error('Confirmed block ' + slot + ' not found');\n }\n return result;\n }\n\n /**\n * Fetch a transaction details for a confirmed transaction\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getTransaction} instead.\n */\n async getConfirmedTransaction(\n signature: TransactionSignature,\n commitment?: Finality,\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed([signature], commitment);\n const unsafeRes = await this._rpcRequest('getConfirmedTransaction', args);\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new Error('failed to get transaction: ' + res.error.message);\n }\n\n const result = res.result;\n if (!result) return result;\n\n const message = new Message(result.transaction.message);\n const signatures = result.transaction.signatures;\n return {\n ...result,\n transaction: Transaction.populate(message, signatures),\n };\n }\n\n /**\n * Fetch parsed transaction details for a confirmed transaction\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getParsedTransaction} instead.\n */\n async getParsedConfirmedTransaction(\n signature: TransactionSignature,\n commitment?: Finality,\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment,\n 'jsonParsed',\n );\n const unsafeRes = await this._rpcRequest('getConfirmedTransaction', args);\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new Error(\n 'failed to get confirmed transaction: ' + res.error.message,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed transaction details for a batch of confirmed transactions\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getParsedTransactions} instead.\n */\n async getParsedConfirmedTransactions(\n signatures: TransactionSignature[],\n commitment?: Finality,\n ): Promise<(ParsedConfirmedTransaction | null)[]> {\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment,\n 'jsonParsed',\n );\n return {\n methodName: 'getConfirmedTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new Error(\n 'failed to get confirmed transactions: ' + res.error.message,\n );\n }\n return res.result;\n });\n\n return res;\n }\n\n /**\n * Fetch a list of all the confirmed signatures for transactions involving an address\n * within a specified slot range. Max range allowed is 10,000 slots.\n *\n * @deprecated Deprecated since v1.3. Please use {@link getConfirmedSignaturesForAddress2} instead.\n *\n * @param address queried address\n * @param startSlot start slot, inclusive\n * @param endSlot end slot, inclusive\n */\n async getConfirmedSignaturesForAddress(\n address: PublicKey,\n startSlot: number,\n endSlot: number,\n ): Promise> {\n let options: any = {};\n\n let firstAvailableBlock = await this.getFirstAvailableBlock();\n while (!('until' in options)) {\n startSlot--;\n if (startSlot <= 0 || startSlot < firstAvailableBlock) {\n break;\n }\n\n try {\n const block = await this.getConfirmedBlockSignatures(\n startSlot,\n 'finalized',\n );\n if (block.signatures.length > 0) {\n options.until =\n block.signatures[block.signatures.length - 1].toString();\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes('skipped')) {\n continue;\n } else {\n throw err;\n }\n }\n }\n\n let highestConfirmedRoot = await this.getSlot('finalized');\n while (!('before' in options)) {\n endSlot++;\n if (endSlot > highestConfirmedRoot) {\n break;\n }\n\n try {\n const block = await this.getConfirmedBlockSignatures(endSlot);\n if (block.signatures.length > 0) {\n options.before =\n block.signatures[block.signatures.length - 1].toString();\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes('skipped')) {\n continue;\n } else {\n throw err;\n }\n }\n }\n\n const confirmedSignatureInfo = await this.getConfirmedSignaturesForAddress2(\n address,\n options,\n );\n return confirmedSignatureInfo.map(info => info.signature);\n }\n\n /**\n * Returns confirmed signatures for transactions involving an\n * address backwards in time from the provided signature or most recent confirmed block\n *\n *\n * @param address queried address\n * @param options\n */\n async getConfirmedSignaturesForAddress2(\n address: PublicKey,\n options?: ConfirmedSignaturesForAddress2Options,\n commitment?: Finality,\n ): Promise> {\n const args = this._buildArgsAtLeastConfirmed(\n [address.toBase58()],\n commitment,\n undefined,\n options,\n );\n const unsafeRes = await this._rpcRequest(\n 'getConfirmedSignaturesForAddress2',\n args,\n );\n const res = create(unsafeRes, GetConfirmedSignaturesForAddress2RpcResult);\n if ('error' in res) {\n throw new Error(\n 'failed to get confirmed signatures for address: ' + res.error.message,\n );\n }\n return res.result;\n }\n\n /**\n * Returns confirmed signatures for transactions involving an\n * address backwards in time from the provided signature or most recent confirmed block\n *\n *\n * @param address queried address\n * @param options\n */\n async getSignaturesForAddress(\n address: PublicKey,\n options?: SignaturesForAddressOptions,\n commitment?: Finality,\n ): Promise> {\n const args = this._buildArgsAtLeastConfirmed(\n [address.toBase58()],\n commitment,\n undefined,\n options,\n );\n const unsafeRes = await this._rpcRequest('getSignaturesForAddress', args);\n const res = create(unsafeRes, GetSignaturesForAddressRpcResult);\n if ('error' in res) {\n throw new Error(\n 'failed to get signatures for address: ' + res.error.message,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the contents of a Nonce account from the cluster, return with context\n */\n async getNonceAndContext(\n nonceAccount: PublicKey,\n commitment?: Commitment,\n ): Promise> {\n const {context, value: accountInfo} = await this.getAccountInfoAndContext(\n nonceAccount,\n commitment,\n );\n\n let value = null;\n if (accountInfo !== null) {\n value = NonceAccount.fromAccountData(accountInfo.data);\n }\n\n return {\n context,\n value,\n };\n }\n\n /**\n * Fetch the contents of a Nonce account from the cluster\n */\n async getNonce(\n nonceAccount: PublicKey,\n commitment?: Commitment,\n ): Promise {\n return await this.getNonceAndContext(nonceAccount, commitment)\n .then(x => x.value)\n .catch(e => {\n throw new Error(\n 'failed to get nonce for account ' +\n nonceAccount.toBase58() +\n ': ' +\n e,\n );\n });\n }\n\n /**\n * Request an allocation of lamports to the specified address\n *\n * ```typescript\n * import { Connection, PublicKey, LAMPORTS_PER_SOL } from \"@solana/web3.js\";\n *\n * (async () => {\n * const connection = new Connection(\"https://api.testnet.solana.com\", \"confirmed\");\n * const myAddress = new PublicKey(\"2nr1bHFT86W9tGnyvmYW4vcHKsQB3sVQfnddasz4kExM\");\n * const signature = await connection.requestAirdrop(myAddress, LAMPORTS_PER_SOL);\n * await connection.confirmTransaction(signature);\n * })();\n * ```\n */\n async requestAirdrop(\n to: PublicKey,\n lamports: number,\n ): Promise {\n const unsafeRes = await this._rpcRequest('requestAirdrop', [\n to.toBase58(),\n lamports,\n ]);\n const res = create(unsafeRes, RequestAirdropRpcResult);\n if ('error' in res) {\n throw new Error(\n 'airdrop to ' + to.toBase58() + ' failed: ' + res.error.message,\n );\n }\n return res.result;\n }\n\n /**\n * @internal\n */\n async _blockhashWithExpiryBlockHeight(\n disableCache: boolean,\n ): Promise {\n if (!disableCache) {\n // Wait for polling to finish\n while (this._pollingBlockhash) {\n await sleep(100);\n }\n const timeSinceFetch = Date.now() - this._blockhashInfo.lastFetch;\n const expired = timeSinceFetch >= BLOCKHASH_CACHE_TIMEOUT_MS;\n if (this._blockhashInfo.latestBlockhash !== null && !expired) {\n return this._blockhashInfo.latestBlockhash;\n }\n }\n\n return await this._pollNewBlockhash();\n }\n\n /**\n * @internal\n */\n async _pollNewBlockhash(): Promise {\n this._pollingBlockhash = true;\n try {\n const startTime = Date.now();\n const cachedLatestBlockhash = this._blockhashInfo.latestBlockhash;\n const cachedBlockhash = cachedLatestBlockhash\n ? cachedLatestBlockhash.blockhash\n : null;\n for (let i = 0; i < 50; i++) {\n const latestBlockhash = await this.getLatestBlockhash('finalized');\n\n if (cachedBlockhash !== latestBlockhash.blockhash) {\n this._blockhashInfo = {\n latestBlockhash,\n lastFetch: Date.now(),\n transactionSignatures: [],\n simulatedSignatures: [],\n };\n return latestBlockhash;\n }\n\n // Sleep for approximately half a slot\n await sleep(MS_PER_SLOT / 2);\n }\n\n throw new Error(\n `Unable to obtain a new blockhash after ${Date.now() - startTime}ms`,\n );\n } finally {\n this._pollingBlockhash = false;\n }\n }\n\n /**\n * Simulate a transaction\n */\n async simulateTransaction(\n transactionOrMessage: Transaction | Message,\n signers?: Array,\n includeAccounts?: boolean | Array,\n ): Promise> {\n let transaction;\n if (transactionOrMessage instanceof Transaction) {\n let originalTx: Transaction = transactionOrMessage;\n transaction = new Transaction();\n transaction.feePayer = originalTx.feePayer;\n transaction.instructions = transactionOrMessage.instructions;\n transaction.nonceInfo = originalTx.nonceInfo;\n transaction.signatures = originalTx.signatures;\n } else {\n transaction = Transaction.populate(transactionOrMessage);\n // HACK: this function relies on mutating the populated transaction\n transaction._message = transaction._json = undefined;\n }\n\n if (transaction.nonceInfo && signers) {\n transaction.sign(...signers);\n } else {\n let disableCache = this._disableBlockhashCaching;\n for (;;) {\n const latestBlockhash = await this._blockhashWithExpiryBlockHeight(\n disableCache,\n );\n transaction.lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n transaction.recentBlockhash = latestBlockhash.blockhash;\n\n if (!signers) break;\n\n transaction.sign(...signers);\n if (!transaction.signature) {\n throw new Error('!signature'); // should never happen\n }\n\n const signature = transaction.signature.toString('base64');\n if (\n !this._blockhashInfo.simulatedSignatures.includes(signature) &&\n !this._blockhashInfo.transactionSignatures.includes(signature)\n ) {\n // The signature of this transaction has not been seen before with the\n // current recentBlockhash, all done. Let's break\n this._blockhashInfo.simulatedSignatures.push(signature);\n break;\n } else {\n // This transaction would be treated as duplicate (its derived signature\n // matched to one of already recorded signatures).\n // So, we must fetch a new blockhash for a different signature by disabling\n // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS).\n disableCache = true;\n }\n }\n }\n\n const message = transaction._compile();\n const signData = message.serialize();\n const wireTransaction = transaction._serialize(signData);\n const encodedTransaction = wireTransaction.toString('base64');\n const config: any = {\n encoding: 'base64',\n commitment: this.commitment,\n };\n\n if (includeAccounts) {\n const addresses = (\n Array.isArray(includeAccounts)\n ? includeAccounts\n : message.nonProgramIds()\n ).map(key => key.toBase58());\n\n config['accounts'] = {\n encoding: 'base64',\n addresses,\n };\n }\n\n if (signers) {\n config.sigVerify = true;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('simulateTransaction', args);\n const res = create(unsafeRes, SimulatedTransactionResponseStruct);\n if ('error' in res) {\n let logs;\n if ('data' in res.error) {\n logs = res.error.data.logs;\n if (logs && Array.isArray(logs)) {\n const traceIndent = '\\n ';\n const logTrace = traceIndent + logs.join(traceIndent);\n console.error(res.error.message, logTrace);\n }\n }\n throw new SendTransactionError(\n 'failed to simulate transaction: ' + res.error.message,\n logs,\n );\n }\n return res.result;\n }\n\n /**\n * Sign and send a transaction\n */\n async sendTransaction(\n transaction: Transaction,\n signers: Array,\n options?: SendOptions,\n ): Promise {\n if (transaction.nonceInfo) {\n transaction.sign(...signers);\n } else {\n let disableCache = this._disableBlockhashCaching;\n for (;;) {\n const latestBlockhash = await this._blockhashWithExpiryBlockHeight(\n disableCache,\n );\n transaction.lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n transaction.recentBlockhash = latestBlockhash.blockhash;\n transaction.sign(...signers);\n if (!transaction.signature) {\n throw new Error('!signature'); // should never happen\n }\n\n const signature = transaction.signature.toString('base64');\n if (!this._blockhashInfo.transactionSignatures.includes(signature)) {\n // The signature of this transaction has not been seen before with the\n // current recentBlockhash, all done. Let's break\n this._blockhashInfo.transactionSignatures.push(signature);\n break;\n } else {\n // This transaction would be treated as duplicate (its derived signature\n // matched to one of already recorded signatures).\n // So, we must fetch a new blockhash for a different signature by disabling\n // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS).\n disableCache = true;\n }\n }\n }\n\n const wireTransaction = transaction.serialize();\n return await this.sendRawTransaction(wireTransaction, options);\n }\n\n /**\n * Send a transaction that has already been signed and serialized into the\n * wire format\n */\n async sendRawTransaction(\n rawTransaction: Buffer | Uint8Array | Array,\n options?: SendOptions,\n ): Promise {\n const encodedTransaction = toBuffer(rawTransaction).toString('base64');\n const result = await this.sendEncodedTransaction(\n encodedTransaction,\n options,\n );\n return result;\n }\n\n /**\n * Send a transaction that has already been signed, serialized into the\n * wire format, and encoded as a base64 string\n */\n async sendEncodedTransaction(\n encodedTransaction: string,\n options?: SendOptions,\n ): Promise {\n const config: any = {encoding: 'base64'};\n const skipPreflight = options && options.skipPreflight;\n const preflightCommitment =\n (options && options.preflightCommitment) || this.commitment;\n\n if (options && options.maxRetries) {\n config.maxRetries = options.maxRetries;\n }\n if (skipPreflight) {\n config.skipPreflight = skipPreflight;\n }\n if (preflightCommitment) {\n config.preflightCommitment = preflightCommitment;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('sendTransaction', args);\n const res = create(unsafeRes, SendTransactionRpcResult);\n if ('error' in res) {\n let logs;\n if ('data' in res.error) {\n logs = res.error.data.logs;\n }\n throw new SendTransactionError(\n 'failed to send transaction: ' + res.error.message,\n logs,\n );\n }\n return res.result;\n }\n\n /**\n * @internal\n */\n _wsOnOpen() {\n this._rpcWebSocketConnected = true;\n this._rpcWebSocketHeartbeat = setInterval(() => {\n // Ping server every 5s to prevent idle timeouts\n this._rpcWebSocket.notify('ping').catch(() => {});\n }, 5000);\n this._updateSubscriptions();\n }\n\n /**\n * @internal\n */\n _wsOnError(err: Error) {\n this._rpcWebSocketConnected = false;\n console.error('ws error:', err.message);\n }\n\n /**\n * @internal\n */\n _wsOnClose(code: number) {\n this._rpcWebSocketConnected = false;\n this._rpcWebSocketGeneration++;\n if (this._rpcWebSocketHeartbeat) {\n clearInterval(this._rpcWebSocketHeartbeat);\n this._rpcWebSocketHeartbeat = null;\n }\n\n if (code === 1000) {\n // explicit close, check if any subscriptions have been made since close\n this._updateSubscriptions();\n return;\n }\n\n // implicit close, prepare subscriptions for auto-reconnect\n this._subscriptionCallbacksByServerSubscriptionId = {};\n Object.entries(\n this._subscriptionsByHash as Record,\n ).forEach(([hash, subscription]) => {\n this._subscriptionsByHash[hash] = {\n ...subscription,\n state: 'pending',\n };\n });\n }\n\n /**\n * @internal\n */\n async _updateSubscriptions() {\n if (Object.keys(this._subscriptionsByHash).length === 0) {\n if (this._rpcWebSocketConnected) {\n this._rpcWebSocketConnected = false;\n this._rpcWebSocketIdleTimeout = setTimeout(() => {\n this._rpcWebSocketIdleTimeout = null;\n try {\n this._rpcWebSocket.close();\n } catch (err) {\n // swallow error if socket has already been closed.\n if (err instanceof Error) {\n console.log(\n `Error when closing socket connection: ${err.message}`,\n );\n }\n }\n }, 500);\n }\n return;\n }\n\n if (this._rpcWebSocketIdleTimeout !== null) {\n clearTimeout(this._rpcWebSocketIdleTimeout);\n this._rpcWebSocketIdleTimeout = null;\n this._rpcWebSocketConnected = true;\n }\n\n if (!this._rpcWebSocketConnected) {\n this._rpcWebSocket.connect();\n return;\n }\n\n const activeWebSocketGeneration = this._rpcWebSocketGeneration;\n const isCurrentConnectionStillActive = () => {\n return activeWebSocketGeneration === this._rpcWebSocketGeneration;\n };\n\n await Promise.all(\n // Don't be tempted to change this to `Object.entries`. We call\n // `_updateSubscriptions` recursively when processing the state,\n // so it's important that we look up the *current* version of\n // each subscription, every time we process a hash.\n Object.keys(this._subscriptionsByHash).map(async hash => {\n const subscription = this._subscriptionsByHash[hash];\n if (subscription === undefined) {\n // This entry has since been deleted. Skip.\n return;\n }\n switch (subscription.state) {\n case 'pending':\n case 'unsubscribed':\n if (subscription.callbacks.size === 0) {\n /**\n * You can end up here when:\n *\n * - a subscription has recently unsubscribed\n * without having new callbacks added to it\n * while the unsubscribe was in flight, or\n * - when a pending subscription has its\n * listeners removed before a request was\n * sent to the server.\n *\n * Being that nobody is interested in this\n * subscription any longer, delete it.\n */\n delete this._subscriptionsByHash[hash];\n if (subscription.state === 'unsubscribed') {\n delete this._subscriptionCallbacksByServerSubscriptionId[\n subscription.serverSubscriptionId\n ];\n }\n await this._updateSubscriptions();\n return;\n }\n await (async () => {\n const {args, method} = subscription;\n try {\n this._subscriptionsByHash[hash] = {\n ...subscription,\n state: 'subscribing',\n };\n const serverSubscriptionId: ServerSubscriptionId =\n (await this._rpcWebSocket.call(method, args)) as number;\n this._subscriptionsByHash[hash] = {\n ...subscription,\n serverSubscriptionId,\n state: 'subscribed',\n };\n this._subscriptionCallbacksByServerSubscriptionId[\n serverSubscriptionId\n ] = subscription.callbacks;\n await this._updateSubscriptions();\n } catch (e) {\n if (e instanceof Error) {\n console.error(\n `${method} error for argument`,\n args,\n e.message,\n );\n }\n if (!isCurrentConnectionStillActive()) {\n return;\n }\n // TODO: Maybe add an 'errored' state or a retry limit?\n this._subscriptionsByHash[hash] = {\n ...subscription,\n state: 'pending',\n };\n await this._updateSubscriptions();\n }\n })();\n break;\n case 'subscribed':\n if (subscription.callbacks.size === 0) {\n // By the time we successfully set up a subscription\n // with the server, the client stopped caring about it.\n // Tear it down now.\n await (async () => {\n const {serverSubscriptionId, unsubscribeMethod} = subscription;\n if (\n this._subscriptionsAutoDisposedByRpc.has(serverSubscriptionId)\n ) {\n /**\n * Special case.\n * If we're dealing with a subscription that has been auto-\n * disposed by the RPC, then we can skip the RPC call to\n * tear down the subscription here.\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n this._subscriptionsAutoDisposedByRpc.delete(\n serverSubscriptionId,\n );\n } else {\n this._subscriptionsByHash[hash] = {\n ...subscription,\n state: 'unsubscribing',\n };\n try {\n await this._rpcWebSocket.call(unsubscribeMethod, [\n serverSubscriptionId,\n ]);\n } catch (e) {\n if (e instanceof Error) {\n console.error(`${unsubscribeMethod} error:`, e.message);\n }\n if (!isCurrentConnectionStillActive()) {\n return;\n }\n // TODO: Maybe add an 'errored' state or a retry limit?\n this._subscriptionsByHash[hash] = {\n ...subscription,\n state: 'subscribed',\n };\n await this._updateSubscriptions();\n return;\n }\n }\n this._subscriptionsByHash[hash] = {\n ...subscription,\n state: 'unsubscribed',\n };\n await this._updateSubscriptions();\n })();\n }\n break;\n case 'subscribing':\n case 'unsubscribing':\n break;\n }\n }),\n );\n }\n\n /**\n * @internal\n */\n private _handleServerNotification<\n TCallback extends SubscriptionConfig['callback'],\n >(\n serverSubscriptionId: ServerSubscriptionId,\n callbackArgs: Parameters,\n ): void {\n const callbacks =\n this._subscriptionCallbacksByServerSubscriptionId[serverSubscriptionId];\n if (callbacks === undefined) {\n return;\n }\n callbacks.forEach(cb => {\n try {\n cb(\n // I failed to find a way to convince TypeScript that `cb` is of type\n // `TCallback` which is certainly compatible with `Parameters`.\n // See https://github.com/microsoft/TypeScript/issues/47615\n // @ts-ignore\n ...callbackArgs,\n );\n } catch (e) {\n console.error(e);\n }\n });\n }\n\n /**\n * @internal\n */\n _wsOnAccountNotification(notification: object) {\n const {result, subscription} = create(\n notification,\n AccountNotificationResult,\n );\n this._handleServerNotification(subscription, [\n result.value,\n result.context,\n ]);\n }\n\n /**\n * @internal\n */\n private _makeSubscription(\n subscriptionConfig: SubscriptionConfig,\n /**\n * When preparing `args` for a call to `_makeSubscription`, be sure\n * to carefully apply a default `commitment` property, if necessary.\n *\n * - If the user supplied a `commitment` use that.\n * - Otherwise, if the `Connection::commitment` is set, use that.\n * - Otherwise, set it to the RPC server default: `finalized`.\n *\n * This is extremely important to ensure that these two fundamentally\n * identical subscriptions produce the same identifying hash:\n *\n * - A subscription made without specifying a commitment.\n * - A subscription made where the commitment specified is the same\n * as the default applied to the subscription above.\n *\n * Example; these two subscriptions must produce the same hash:\n *\n * - An `accountSubscribe` subscription for `'PUBKEY'`\n * - An `accountSubscribe` subscription for `'PUBKEY'` with commitment\n * `'finalized'`.\n *\n * See the 'making a subscription with defaulted params omitted' test\n * in `connection-subscriptions.ts` for more.\n */\n args: IWSRequestParams,\n ): ClientSubscriptionId {\n const clientSubscriptionId = this._nextClientSubscriptionId++;\n const hash = fastStableStringify(\n [subscriptionConfig.method, args],\n true /* isArrayProp */,\n );\n const existingSubscription = this._subscriptionsByHash[hash];\n if (existingSubscription === undefined) {\n this._subscriptionsByHash[hash] = {\n ...subscriptionConfig,\n args,\n callbacks: new Set([subscriptionConfig.callback]),\n state: 'pending',\n };\n } else {\n existingSubscription.callbacks.add(subscriptionConfig.callback);\n }\n this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ] = async () => {\n delete this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ];\n const subscription = this._subscriptionsByHash[hash];\n assert(\n subscription !== undefined,\n `Could not find a \\`Subscription\\` when tearing down client subscription #${clientSubscriptionId}`,\n );\n subscription.callbacks.delete(subscriptionConfig.callback);\n await this._updateSubscriptions();\n };\n this._updateSubscriptions();\n return clientSubscriptionId;\n }\n\n /**\n * Register a callback to be invoked whenever the specified account changes\n *\n * @param publicKey Public key of the account to monitor\n * @param callback Function to invoke whenever the account is changed\n * @param commitment Specify the commitment level account changes must reach before notification\n * @return subscription id\n */\n onAccountChange(\n publicKey: PublicKey,\n callback: AccountChangeCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n 'base64',\n );\n return this._makeSubscription(\n {\n callback,\n method: 'accountSubscribe',\n unsubscribeMethod: 'accountUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister an account notification callback\n *\n * @param id client subscription id to deregister\n */\n async removeAccountChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'account change',\n );\n }\n\n /**\n * @internal\n */\n _wsOnProgramAccountNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n ProgramAccountNotificationResult,\n );\n this._handleServerNotification(subscription, [\n {\n accountId: result.value.pubkey,\n accountInfo: result.value.account,\n },\n result.context,\n ]);\n }\n\n /**\n * Register a callback to be invoked whenever accounts owned by the\n * specified program change\n *\n * @param programId Public key of the program to monitor\n * @param callback Function to invoke whenever the account is changed\n * @param commitment Specify the commitment level account changes must reach before notification\n * @param filters The program account filters to pass into the RPC method\n * @return subscription id\n */\n onProgramAccountChange(\n programId: PublicKey,\n callback: ProgramAccountChangeCallback,\n commitment?: Commitment,\n filters?: GetProgramAccountsFilter[],\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n 'base64' /* encoding */,\n filters ? {filters: filters} : undefined /* extra */,\n );\n return this._makeSubscription(\n {\n callback,\n method: 'programSubscribe',\n unsubscribeMethod: 'programUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister an account notification callback\n *\n * @param id client subscription id to deregister\n */\n async removeProgramAccountChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'program account change',\n );\n }\n\n /**\n * Registers a callback to be invoked whenever logs are emitted.\n */\n onLogs(\n filter: LogsFilter,\n callback: LogsCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [typeof filter === 'object' ? {mentions: [filter.toString()]} : filter],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n );\n return this._makeSubscription(\n {\n callback,\n method: 'logsSubscribe',\n unsubscribeMethod: 'logsUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister a logs callback.\n *\n * @param id client subscription id to deregister.\n */\n async removeOnLogsListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(clientSubscriptionId, 'logs');\n }\n\n /**\n * @internal\n */\n _wsOnLogsNotification(notification: Object) {\n const {result, subscription} = create(notification, LogsNotificationResult);\n this._handleServerNotification(subscription, [\n result.value,\n result.context,\n ]);\n }\n\n /**\n * @internal\n */\n _wsOnSlotNotification(notification: Object) {\n const {result, subscription} = create(notification, SlotNotificationResult);\n this._handleServerNotification(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon slot changes\n *\n * @param callback Function to invoke whenever the slot changes\n * @return subscription id\n */\n onSlotChange(callback: SlotChangeCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'slotSubscribe',\n unsubscribeMethod: 'slotUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a slot notification callback\n *\n * @param id client subscription id to deregister\n */\n async removeSlotChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'slot change',\n );\n }\n\n /**\n * @internal\n */\n _wsOnSlotUpdatesNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n SlotUpdateNotificationResult,\n );\n this._handleServerNotification(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon slot updates. {@link SlotUpdate}'s\n * may be useful to track live progress of a cluster.\n *\n * @param callback Function to invoke whenever the slot updates\n * @return subscription id\n */\n onSlotUpdate(callback: SlotUpdateCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'slotsUpdatesSubscribe',\n unsubscribeMethod: 'slotsUpdatesUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a slot update notification callback\n *\n * @param id client subscription id to deregister\n */\n async removeSlotUpdateListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'slot update',\n );\n }\n\n /**\n * @internal\n */\n\n private async _unsubscribeClientSubscription(\n clientSubscriptionId: ClientSubscriptionId,\n subscriptionName: string,\n ) {\n const dispose =\n this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ];\n if (dispose) {\n await dispose();\n } else {\n console.warn(\n 'Ignored unsubscribe request because an active subscription with id ' +\n `\\`${clientSubscriptionId}\\` for '${subscriptionName}' events ` +\n 'could not be found.',\n );\n }\n }\n\n _buildArgs(\n args: Array,\n override?: Commitment,\n encoding?: 'jsonParsed' | 'base64',\n extra?: any,\n ): Array {\n const commitment = override || this._commitment;\n if (commitment || encoding || extra) {\n let options: any = {};\n if (encoding) {\n options.encoding = encoding;\n }\n if (commitment) {\n options.commitment = commitment;\n }\n if (extra) {\n options = Object.assign(options, extra);\n }\n args.push(options);\n }\n return args;\n }\n\n /**\n * @internal\n */\n _buildArgsAtLeastConfirmed(\n args: Array,\n override?: Finality,\n encoding?: 'jsonParsed' | 'base64',\n extra?: any,\n ): Array {\n const commitment = override || this._commitment;\n if (commitment && !['confirmed', 'finalized'].includes(commitment)) {\n throw new Error(\n 'Using Connection with default commitment: `' +\n this._commitment +\n '`, but method requires at least `confirmed`',\n );\n }\n return this._buildArgs(args, override, encoding, extra);\n }\n\n /**\n * @internal\n */\n _wsOnSignatureNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n SignatureNotificationResult,\n );\n if (result.value !== 'receivedSignature') {\n /**\n * Special case.\n * After a signature is processed, RPCs automatically dispose of the\n * subscription on the server side. We need to track which of these\n * subscriptions have been disposed in such a way, so that we know\n * whether the client is dealing with a not-yet-processed signature\n * (in which case we must tear down the server subscription) or an\n * already-processed signature (in which case the client can simply\n * clear out the subscription locally without telling the server).\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n this._subscriptionsAutoDisposedByRpc.add(subscription);\n }\n this._handleServerNotification(\n subscription,\n result.value === 'receivedSignature'\n ? [{type: 'received'}, result.context]\n : [{type: 'status', result: result.value}, result.context],\n );\n }\n\n /**\n * Register a callback to be invoked upon signature updates\n *\n * @param signature Transaction signature string in base 58\n * @param callback Function to invoke on signature notifications\n * @param commitment Specify the commitment level signature must reach before notification\n * @return subscription id\n */\n onSignature(\n signature: TransactionSignature,\n callback: SignatureResultCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [signature],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n );\n const clientSubscriptionId = this._makeSubscription(\n {\n callback: (notification, context) => {\n if (notification.type === 'status') {\n callback(notification.result, context);\n // Signatures subscriptions are auto-removed by the RPC service\n // so no need to explicitly send an unsubscribe message.\n try {\n this.removeSignatureListener(clientSubscriptionId);\n // eslint-disable-next-line no-empty\n } catch (_err) {\n // Already removed.\n }\n }\n },\n method: 'signatureSubscribe',\n unsubscribeMethod: 'signatureUnsubscribe',\n },\n args,\n );\n return clientSubscriptionId;\n }\n\n /**\n * Register a callback to be invoked when a transaction is\n * received and/or processed.\n *\n * @param signature Transaction signature string in base 58\n * @param callback Function to invoke on signature notifications\n * @param options Enable received notifications and set the commitment\n * level that signature must reach before notification\n * @return subscription id\n */\n onSignatureWithOptions(\n signature: TransactionSignature,\n callback: SignatureSubscriptionCallback,\n options?: SignatureSubscriptionOptions,\n ): ClientSubscriptionId {\n const {commitment, ...extra} = {\n ...options,\n commitment:\n (options && options.commitment) || this._commitment || 'finalized', // Apply connection/server default.\n };\n const args = this._buildArgs(\n [signature],\n commitment,\n undefined /* encoding */,\n extra,\n );\n const clientSubscriptionId = this._makeSubscription(\n {\n callback: (notification, context) => {\n callback(notification, context);\n // Signatures subscriptions are auto-removed by the RPC service\n // so no need to explicitly send an unsubscribe message.\n try {\n this.removeSignatureListener(clientSubscriptionId);\n // eslint-disable-next-line no-empty\n } catch (_err) {\n // Already removed.\n }\n },\n method: 'signatureSubscribe',\n unsubscribeMethod: 'signatureUnsubscribe',\n },\n args,\n );\n return clientSubscriptionId;\n }\n\n /**\n * Deregister a signature notification callback\n *\n * @param id client subscription id to deregister\n */\n async removeSignatureListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'signature result',\n );\n }\n\n /**\n * @internal\n */\n _wsOnRootNotification(notification: Object) {\n const {result, subscription} = create(notification, RootNotificationResult);\n this._handleServerNotification(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon root changes\n *\n * @param callback Function to invoke whenever the root changes\n * @return subscription id\n */\n onRootChange(callback: RootChangeCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'rootSubscribe',\n unsubscribeMethod: 'rootUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a root notification callback\n *\n * @param id client subscription id to deregister\n */\n async removeRootChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'root change',\n );\n }\n}\n","export function makeWebsocketUrl(endpoint: string) {\n let url = new URL(endpoint);\n const useHttps = url.protocol === 'https:';\n\n url.protocol = useHttps ? 'wss:' : 'ws:';\n url.host = '';\n\n // Only shift the port by +1 as a convention for ws(s) only if given endpoint\n // is explictly specifying the endpoint port (HTTP-based RPC), assuming\n // we're directly trying to connect to solana-validator's ws listening port.\n // When the endpoint omits the port, we're connecting to the protocol\n // default ports: http(80) or https(443) and it's assumed we're behind a reverse\n // proxy which manages WebSocket upgrade and backend port redirection.\n if (url.port !== '') {\n url.port = String(Number(url.port) + 1);\n }\n return url.toString();\n}\n","import nacl from 'tweetnacl';\n\nimport {PublicKey} from './publickey';\n\n/**\n * Keypair signer interface\n */\nexport interface Signer {\n publicKey: PublicKey;\n secretKey: Uint8Array;\n}\n\n/**\n * Ed25519 Keypair\n */\nexport interface Ed25519Keypair {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n}\n\n/**\n * An account keypair used for signing transactions.\n */\nexport class Keypair {\n private _keypair: Ed25519Keypair;\n\n /**\n * Create a new keypair instance.\n * Generate random keypair if no {@link Ed25519Keypair} is provided.\n *\n * @param keypair ed25519 keypair\n */\n constructor(keypair?: Ed25519Keypair) {\n if (keypair) {\n this._keypair = keypair;\n } else {\n this._keypair = nacl.sign.keyPair();\n }\n }\n\n /**\n * Generate a new random keypair\n */\n static generate(): Keypair {\n return new Keypair(nacl.sign.keyPair());\n }\n\n /**\n * Create a keypair from a raw secret key byte array.\n *\n * This method should only be used to recreate a keypair from a previously\n * generated secret key. Generating keypairs from a random seed should be done\n * with the {@link Keypair.fromSeed} method.\n *\n * @throws error if the provided secret key is invalid and validation is not skipped.\n *\n * @param secretKey secret key byte array\n * @param options: skip secret key validation\n */\n static fromSecretKey(\n secretKey: Uint8Array,\n options?: {skipValidation?: boolean},\n ): Keypair {\n const keypair = nacl.sign.keyPair.fromSecretKey(secretKey);\n if (!options || !options.skipValidation) {\n const encoder = new TextEncoder();\n const signData = encoder.encode('@solana/web3.js-validation-v1');\n const signature = nacl.sign.detached(signData, keypair.secretKey);\n if (!nacl.sign.detached.verify(signData, signature, keypair.publicKey)) {\n throw new Error('provided secretKey is invalid');\n }\n }\n return new Keypair(keypair);\n }\n\n /**\n * Generate a keypair from a 32 byte seed.\n *\n * @param seed seed byte array\n */\n static fromSeed(seed: Uint8Array): Keypair {\n return new Keypair(nacl.sign.keyPair.fromSeed(seed));\n }\n\n /**\n * The public key for this keypair\n */\n get publicKey(): PublicKey {\n return new PublicKey(this._keypair.publicKey);\n }\n\n /**\n * The raw secret key for this keypair\n */\n get secretKey(): Uint8Array {\n return this._keypair.secretKey;\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\nimport nacl from 'tweetnacl';\n\nimport {Keypair} from './keypair';\nimport {PublicKey} from './publickey';\nimport {TransactionInstruction} from './transaction';\nimport assert from './util/assert';\n\nconst PRIVATE_KEY_BYTES = 64;\nconst PUBLIC_KEY_BYTES = 32;\nconst SIGNATURE_BYTES = 64;\n\n/**\n * Params for creating an ed25519 instruction using a public key\n */\nexport type CreateEd25519InstructionWithPublicKeyParams = {\n publicKey: Uint8Array;\n message: Uint8Array;\n signature: Uint8Array;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an ed25519 instruction using a private key\n */\nexport type CreateEd25519InstructionWithPrivateKeyParams = {\n privateKey: Uint8Array;\n message: Uint8Array;\n instructionIndex?: number;\n};\n\nconst ED25519_INSTRUCTION_LAYOUT = BufferLayout.struct<\n Readonly<{\n messageDataOffset: number;\n messageDataSize: number;\n messageInstructionIndex: number;\n numSignatures: number;\n padding: number;\n publicKeyInstructionIndex: number;\n publicKeyOffset: number;\n signatureInstructionIndex: number;\n signatureOffset: number;\n }>\n>([\n BufferLayout.u8('numSignatures'),\n BufferLayout.u8('padding'),\n BufferLayout.u16('signatureOffset'),\n BufferLayout.u16('signatureInstructionIndex'),\n BufferLayout.u16('publicKeyOffset'),\n BufferLayout.u16('publicKeyInstructionIndex'),\n BufferLayout.u16('messageDataOffset'),\n BufferLayout.u16('messageDataSize'),\n BufferLayout.u16('messageInstructionIndex'),\n]);\n\nexport class Ed25519Program {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the ed25519 program\n */\n static programId: PublicKey = new PublicKey(\n 'Ed25519SigVerify111111111111111111111111111',\n );\n\n /**\n * Create an ed25519 instruction with a public key and signature. The\n * public key must be a buffer that is 32 bytes long, and the signature\n * must be a buffer of 64 bytes.\n */\n static createInstructionWithPublicKey(\n params: CreateEd25519InstructionWithPublicKeyParams,\n ): TransactionInstruction {\n const {publicKey, message, signature, instructionIndex} = params;\n\n assert(\n publicKey.length === PUBLIC_KEY_BYTES,\n `Public Key must be ${PUBLIC_KEY_BYTES} bytes but received ${publicKey.length} bytes`,\n );\n\n assert(\n signature.length === SIGNATURE_BYTES,\n `Signature must be ${SIGNATURE_BYTES} bytes but received ${signature.length} bytes`,\n );\n\n const publicKeyOffset = ED25519_INSTRUCTION_LAYOUT.span;\n const signatureOffset = publicKeyOffset + publicKey.length;\n const messageDataOffset = signatureOffset + signature.length;\n const numSignatures = 1;\n\n const instructionData = Buffer.alloc(messageDataOffset + message.length);\n\n const index =\n instructionIndex == null\n ? 0xffff // An index of `u16::MAX` makes it default to the current instruction.\n : instructionIndex;\n\n ED25519_INSTRUCTION_LAYOUT.encode(\n {\n numSignatures,\n padding: 0,\n signatureOffset,\n signatureInstructionIndex: index,\n publicKeyOffset,\n publicKeyInstructionIndex: index,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: index,\n },\n instructionData,\n );\n\n instructionData.fill(publicKey, publicKeyOffset);\n instructionData.fill(signature, signatureOffset);\n instructionData.fill(message, messageDataOffset);\n\n return new TransactionInstruction({\n keys: [],\n programId: Ed25519Program.programId,\n data: instructionData,\n });\n }\n\n /**\n * Create an ed25519 instruction with a private key. The private key\n * must be a buffer that is 64 bytes long.\n */\n static createInstructionWithPrivateKey(\n params: CreateEd25519InstructionWithPrivateKeyParams,\n ): TransactionInstruction {\n const {privateKey, message, instructionIndex} = params;\n\n assert(\n privateKey.length === PRIVATE_KEY_BYTES,\n `Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${privateKey.length} bytes`,\n );\n\n try {\n const keypair = Keypair.fromSecretKey(privateKey);\n const publicKey = keypair.publicKey.toBytes();\n const signature = nacl.sign.detached(message, keypair.secretKey);\n\n return this.createInstructionWithPublicKey({\n publicKey,\n message,\n signature,\n instructionIndex,\n });\n } catch (error) {\n throw new Error(`Error creating instruction; ${error}`);\n }\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from './instruction';\nimport * as Layout from './layout';\nimport {PublicKey} from './publickey';\nimport {SystemProgram} from './system-program';\nimport {\n SYSVAR_CLOCK_PUBKEY,\n SYSVAR_RENT_PUBKEY,\n SYSVAR_STAKE_HISTORY_PUBKEY,\n} from './sysvar';\nimport {Transaction, TransactionInstruction} from './transaction';\nimport {toBuffer} from './util/to-buffer';\n\n/**\n * Address of the stake config account which configures the rate\n * of stake warmup and cooldown as well as the slashing penalty.\n */\nexport const STAKE_CONFIG_ID = new PublicKey(\n 'StakeConfig11111111111111111111111111111111',\n);\n\n/**\n * Stake account authority info\n */\nexport class Authorized {\n /** stake authority */\n staker: PublicKey;\n /** withdraw authority */\n withdrawer: PublicKey;\n\n /**\n * Create a new Authorized object\n * @param staker the stake authority\n * @param withdrawer the withdraw authority\n */\n constructor(staker: PublicKey, withdrawer: PublicKey) {\n this.staker = staker;\n this.withdrawer = withdrawer;\n }\n}\n\ntype AuthorizedRaw = Readonly<{\n staker: Uint8Array;\n withdrawer: Uint8Array;\n}>;\n\n/**\n * Stake account lockup info\n */\nexport class Lockup {\n /** Unix timestamp of lockup expiration */\n unixTimestamp: number;\n /** Epoch of lockup expiration */\n epoch: number;\n /** Lockup custodian authority */\n custodian: PublicKey;\n\n /**\n * Create a new Lockup object\n */\n constructor(unixTimestamp: number, epoch: number, custodian: PublicKey) {\n this.unixTimestamp = unixTimestamp;\n this.epoch = epoch;\n this.custodian = custodian;\n }\n\n /**\n * Default, inactive Lockup value\n */\n static default: Lockup = new Lockup(0, 0, PublicKey.default);\n}\n\ntype LockupRaw = Readonly<{\n custodian: Uint8Array;\n epoch: number;\n unixTimestamp: number;\n}>;\n\n/**\n * Create stake account transaction params\n */\nexport type CreateStakeAccountParams = {\n /** Address of the account which will fund creation */\n fromPubkey: PublicKey;\n /** Address of the new stake account */\n stakePubkey: PublicKey;\n /** Authorities of the new stake account */\n authorized: Authorized;\n /** Lockup of the new stake account */\n lockup?: Lockup;\n /** Funding amount */\n lamports: number;\n};\n\n/**\n * Create stake account with seed transaction params\n */\nexport type CreateStakeAccountWithSeedParams = {\n fromPubkey: PublicKey;\n stakePubkey: PublicKey;\n basePubkey: PublicKey;\n seed: string;\n authorized: Authorized;\n lockup?: Lockup;\n lamports: number;\n};\n\n/**\n * Initialize stake instruction params\n */\nexport type InitializeStakeParams = {\n stakePubkey: PublicKey;\n authorized: Authorized;\n lockup?: Lockup;\n};\n\n/**\n * Delegate stake instruction params\n */\nexport type DelegateStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n votePubkey: PublicKey;\n};\n\n/**\n * Authorize stake instruction params\n */\nexport type AuthorizeStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n newAuthorizedPubkey: PublicKey;\n stakeAuthorizationType: StakeAuthorizationType;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Authorize stake instruction params using a derived key\n */\nexport type AuthorizeWithSeedStakeParams = {\n stakePubkey: PublicKey;\n authorityBase: PublicKey;\n authoritySeed: string;\n authorityOwner: PublicKey;\n newAuthorizedPubkey: PublicKey;\n stakeAuthorizationType: StakeAuthorizationType;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Split stake instruction params\n */\nexport type SplitStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n splitStakePubkey: PublicKey;\n lamports: number;\n};\n\n/**\n * Split with seed transaction params\n */\nexport type SplitStakeWithSeedParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n splitStakePubkey: PublicKey;\n basePubkey: PublicKey;\n seed: string;\n lamports: number;\n};\n\n/**\n * Withdraw stake instruction params\n */\nexport type WithdrawStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n toPubkey: PublicKey;\n lamports: number;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Deactivate stake instruction params\n */\nexport type DeactivateStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Merge stake instruction params\n */\nexport type MergeStakeParams = {\n stakePubkey: PublicKey;\n sourceStakePubKey: PublicKey;\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Stake Instruction class\n */\nexport class StakeInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a stake instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): StakeInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: StakeInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(STAKE_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as StakeInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a StakeInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode a initialize stake instruction and retrieve the instruction params.\n */\n static decodeInitialize(\n instruction: TransactionInstruction,\n ): InitializeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {authorized, lockup} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Initialize,\n instruction.data,\n );\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n authorized: new Authorized(\n new PublicKey(authorized.staker),\n new PublicKey(authorized.withdrawer),\n ),\n lockup: new Lockup(\n lockup.unixTimestamp,\n lockup.epoch,\n new PublicKey(lockup.custodian),\n ),\n };\n }\n\n /**\n * Decode a delegate stake instruction and retrieve the instruction params.\n */\n static decodeDelegate(\n instruction: TransactionInstruction,\n ): DelegateStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 6);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Delegate, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n votePubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[5].pubkey,\n };\n }\n\n /**\n * Decode an authorize stake instruction and retrieve the instruction params.\n */\n static decodeAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {newAuthorized, stakeAuthorizationType} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Authorize,\n instruction.data,\n );\n\n const o: AuthorizeStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n stakeAuthorizationType: {\n index: stakeAuthorizationType,\n },\n };\n if (instruction.keys.length > 3) {\n o.custodianPubkey = instruction.keys[3].pubkey;\n }\n return o;\n }\n\n /**\n * Decode an authorize-with-seed stake instruction and retrieve the instruction params.\n */\n static decodeAuthorizeWithSeed(\n instruction: TransactionInstruction,\n ): AuthorizeWithSeedStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {\n newAuthorized,\n stakeAuthorizationType,\n authoritySeed,\n authorityOwner,\n } = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,\n instruction.data,\n );\n\n const o: AuthorizeWithSeedStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n authorityBase: instruction.keys[1].pubkey,\n authoritySeed: authoritySeed,\n authorityOwner: new PublicKey(authorityOwner),\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n stakeAuthorizationType: {\n index: stakeAuthorizationType,\n },\n };\n if (instruction.keys.length > 3) {\n o.custodianPubkey = instruction.keys[3].pubkey;\n }\n return o;\n }\n\n /**\n * Decode a split stake instruction and retrieve the instruction params.\n */\n static decodeSplit(instruction: TransactionInstruction): SplitStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {lamports} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Split,\n instruction.data,\n );\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n splitStakePubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a merge stake instruction and retrieve the instruction params.\n */\n static decodeMerge(instruction: TransactionInstruction): MergeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Merge, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n sourceStakePubKey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n };\n }\n\n /**\n * Decode a withdraw stake instruction and retrieve the instruction params.\n */\n static decodeWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 5);\n const {lamports} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Withdraw,\n instruction.data,\n );\n\n const o: WithdrawStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n lamports,\n };\n if (instruction.keys.length > 5) {\n o.custodianPubkey = instruction.keys[5].pubkey;\n }\n return o;\n }\n\n /**\n * Decode a deactivate stake instruction and retrieve the instruction params.\n */\n static decodeDeactivate(\n instruction: TransactionInstruction,\n ): DeactivateStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Deactivate, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(StakeProgram.programId)) {\n throw new Error('invalid instruction; programId is not StakeProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid StakeInstructionType's\n */\nexport type StakeInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof StakeInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'Authorize'\n | 'AuthorizeWithSeed'\n | 'Deactivate'\n | 'Delegate'\n | 'Initialize'\n | 'Merge'\n | 'Split'\n | 'Withdraw';\n\ntype StakeInstructionInputData = {\n Authorize: IInstructionInputData &\n Readonly<{\n newAuthorized: Uint8Array;\n stakeAuthorizationType: number;\n }>;\n AuthorizeWithSeed: IInstructionInputData &\n Readonly<{\n authorityOwner: Uint8Array;\n authoritySeed: string;\n instruction: number;\n newAuthorized: Uint8Array;\n stakeAuthorizationType: number;\n }>;\n Deactivate: IInstructionInputData;\n Delegate: IInstructionInputData;\n Initialize: IInstructionInputData &\n Readonly<{\n authorized: AuthorizedRaw;\n lockup: LockupRaw;\n }>;\n Merge: IInstructionInputData;\n Split: IInstructionInputData &\n Readonly<{\n lamports: number;\n }>;\n Withdraw: IInstructionInputData &\n Readonly<{\n lamports: number;\n }>;\n};\n\n/**\n * An enumeration of valid stake InstructionType's\n * @internal\n */\nexport const STAKE_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in StakeInstructionType]: InstructionType<\n StakeInstructionInputData[Instruction]\n >;\n}>({\n Initialize: {\n index: 0,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.authorized(),\n Layout.lockup(),\n ]),\n },\n Authorize: {\n index: 1,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('stakeAuthorizationType'),\n ]),\n },\n Delegate: {\n index: 2,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n ]),\n },\n Split: {\n index: 3,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n Withdraw: {\n index: 4,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n Deactivate: {\n index: 5,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n ]),\n },\n Merge: {\n index: 7,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n ]),\n },\n AuthorizeWithSeed: {\n index: 8,\n layout: BufferLayout.struct(\n [\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('stakeAuthorizationType'),\n Layout.rustString('authoritySeed'),\n Layout.publicKey('authorityOwner'),\n ],\n ),\n },\n});\n\n/**\n * Stake authorization type\n */\nexport type StakeAuthorizationType = {\n /** The Stake Authorization index (from solana-stake-program) */\n index: number;\n};\n\n/**\n * An enumeration of valid StakeAuthorizationLayout's\n */\nexport const StakeAuthorizationLayout = Object.freeze({\n Staker: {\n index: 0,\n },\n Withdrawer: {\n index: 1,\n },\n});\n\n/**\n * Factory class for transactions to interact with the Stake program\n */\nexport class StakeProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Stake program\n */\n static programId: PublicKey = new PublicKey(\n 'Stake11111111111111111111111111111111111111',\n );\n\n /**\n * Max space of a Stake account\n *\n * This is generated from the solana-stake-program StakeState struct as\n * `StakeState::size_of()`:\n * https://docs.rs/solana-stake-program/latest/solana_stake_program/stake_state/enum.StakeState.html\n */\n static space: number = 200;\n\n /**\n * Generate an Initialize instruction to add to a Stake Create transaction\n */\n static initialize(params: InitializeStakeParams): TransactionInstruction {\n const {stakePubkey, authorized, lockup: maybeLockup} = params;\n const lockup: Lockup = maybeLockup || Lockup.default;\n const type = STAKE_INSTRUCTION_LAYOUTS.Initialize;\n const data = encodeData(type, {\n authorized: {\n staker: toBuffer(authorized.staker.toBuffer()),\n withdrawer: toBuffer(authorized.withdrawer.toBuffer()),\n },\n lockup: {\n unixTimestamp: lockup.unixTimestamp,\n epoch: lockup.epoch,\n custodian: toBuffer(lockup.custodian.toBuffer()),\n },\n });\n const instructionData = {\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a Transaction that creates a new Stake account at\n * an address generated with `from`, a seed, and the Stake programId\n */\n static createAccountWithSeed(\n params: CreateStakeAccountWithSeedParams,\n ): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccountWithSeed({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.stakePubkey,\n basePubkey: params.basePubkey,\n seed: params.seed,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n const {stakePubkey, authorized, lockup} = params;\n return transaction.add(this.initialize({stakePubkey, authorized, lockup}));\n }\n\n /**\n * Generate a Transaction that creates a new Stake account\n */\n static createAccount(params: CreateStakeAccountParams): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.stakePubkey,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n const {stakePubkey, authorized, lockup} = params;\n return transaction.add(this.initialize({stakePubkey, authorized, lockup}));\n }\n\n /**\n * Generate a Transaction that delegates Stake tokens to a validator\n * Vote PublicKey. This transaction can also be used to redelegate Stake\n * to a new validator Vote PublicKey.\n */\n static delegate(params: DelegateStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey, votePubkey} = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.Delegate;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: votePubkey, isSigner: false, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: STAKE_CONFIG_ID, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that authorizes a new PublicKey as Staker\n * or Withdrawer on the Stake account.\n */\n static authorize(params: AuthorizeStakeParams): Transaction {\n const {\n stakePubkey,\n authorizedPubkey,\n newAuthorizedPubkey,\n stakeAuthorizationType,\n custodianPubkey,\n } = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.Authorize;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n stakeAuthorizationType: stakeAuthorizationType.index,\n });\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: true},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({pubkey: custodianPubkey, isSigner: false, isWritable: false});\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that authorizes a new PublicKey as Staker\n * or Withdrawer on the Stake account.\n */\n static authorizeWithSeed(params: AuthorizeWithSeedStakeParams): Transaction {\n const {\n stakePubkey,\n authorityBase,\n authoritySeed,\n authorityOwner,\n newAuthorizedPubkey,\n stakeAuthorizationType,\n custodianPubkey,\n } = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n stakeAuthorizationType: stakeAuthorizationType.index,\n authoritySeed: authoritySeed,\n authorityOwner: toBuffer(authorityOwner.toBuffer()),\n });\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: authorityBase, isSigner: true, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({pubkey: custodianPubkey, isSigner: false, isWritable: false});\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * @internal\n */\n static splitInstruction(params: SplitStakeParams): TransactionInstruction {\n const {stakePubkey, authorizedPubkey, splitStakePubkey, lamports} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Split;\n const data = encodeData(type, {lamports});\n return new TransactionInstruction({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: splitStakePubkey, isSigner: false, isWritable: true},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that splits Stake tokens into another stake account\n */\n static split(params: SplitStakeParams): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.authorizedPubkey,\n newAccountPubkey: params.splitStakePubkey,\n lamports: 0,\n space: this.space,\n programId: this.programId,\n }),\n );\n return transaction.add(this.splitInstruction(params));\n }\n\n /**\n * Generate a Transaction that splits Stake tokens into another account\n * derived from a base public key and seed\n */\n static splitWithSeed(params: SplitStakeWithSeedParams): Transaction {\n const {\n stakePubkey,\n authorizedPubkey,\n splitStakePubkey,\n basePubkey,\n seed,\n lamports,\n } = params;\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.allocate({\n accountPubkey: splitStakePubkey,\n basePubkey,\n seed,\n space: this.space,\n programId: this.programId,\n }),\n );\n return transaction.add(\n this.splitInstruction({\n stakePubkey,\n authorizedPubkey,\n splitStakePubkey,\n lamports,\n }),\n );\n }\n\n /**\n * Generate a Transaction that merges Stake accounts.\n */\n static merge(params: MergeStakeParams): Transaction {\n const {stakePubkey, sourceStakePubKey, authorizedPubkey} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Merge;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: sourceStakePubKey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that withdraws deactivated Stake tokens.\n */\n static withdraw(params: WithdrawStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey, toPubkey, lamports, custodianPubkey} =\n params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Withdraw;\n const data = encodeData(type, {lamports});\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: toPubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({pubkey: custodianPubkey, isSigner: false, isWritable: false});\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that deactivates Stake tokens.\n */\n static deactivate(params: DeactivateStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Deactivate;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\nimport secp256k1 from 'secp256k1';\nimport sha3 from 'js-sha3';\n\nimport {PublicKey} from './publickey';\nimport {TransactionInstruction} from './transaction';\nimport assert from './util/assert';\nimport {toBuffer} from './util/to-buffer';\n\nconst {publicKeyCreate, ecdsaSign} = secp256k1;\n\nconst PRIVATE_KEY_BYTES = 32;\nconst ETHEREUM_ADDRESS_BYTES = 20;\nconst PUBLIC_KEY_BYTES = 64;\nconst SIGNATURE_OFFSETS_SERIALIZED_SIZE = 11;\n\n/**\n * Params for creating an secp256k1 instruction using a public key\n */\nexport type CreateSecp256k1InstructionWithPublicKeyParams = {\n publicKey: Buffer | Uint8Array | Array;\n message: Buffer | Uint8Array | Array;\n signature: Buffer | Uint8Array | Array;\n recoveryId: number;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an secp256k1 instruction using an Ethereum address\n */\nexport type CreateSecp256k1InstructionWithEthAddressParams = {\n ethAddress: Buffer | Uint8Array | Array | string;\n message: Buffer | Uint8Array | Array;\n signature: Buffer | Uint8Array | Array;\n recoveryId: number;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an secp256k1 instruction using a private key\n */\nexport type CreateSecp256k1InstructionWithPrivateKeyParams = {\n privateKey: Buffer | Uint8Array | Array;\n message: Buffer | Uint8Array | Array;\n instructionIndex?: number;\n};\n\nconst SECP256K1_INSTRUCTION_LAYOUT = BufferLayout.struct<\n Readonly<{\n ethAddress: Uint8Array;\n ethAddressInstructionIndex: number;\n ethAddressOffset: number;\n messageDataOffset: number;\n messageDataSize: number;\n messageInstructionIndex: number;\n numSignatures: number;\n recoveryId: number;\n signature: Uint8Array;\n signatureInstructionIndex: number;\n signatureOffset: number;\n }>\n>([\n BufferLayout.u8('numSignatures'),\n BufferLayout.u16('signatureOffset'),\n BufferLayout.u8('signatureInstructionIndex'),\n BufferLayout.u16('ethAddressOffset'),\n BufferLayout.u8('ethAddressInstructionIndex'),\n BufferLayout.u16('messageDataOffset'),\n BufferLayout.u16('messageDataSize'),\n BufferLayout.u8('messageInstructionIndex'),\n BufferLayout.blob(20, 'ethAddress'),\n BufferLayout.blob(64, 'signature'),\n BufferLayout.u8('recoveryId'),\n]);\n\nexport class Secp256k1Program {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the secp256k1 program\n */\n static programId: PublicKey = new PublicKey(\n 'KeccakSecp256k11111111111111111111111111111',\n );\n\n /**\n * Construct an Ethereum address from a secp256k1 public key buffer.\n * @param {Buffer} publicKey a 64 byte secp256k1 public key buffer\n */\n static publicKeyToEthAddress(\n publicKey: Buffer | Uint8Array | Array,\n ): Buffer {\n assert(\n publicKey.length === PUBLIC_KEY_BYTES,\n `Public key must be ${PUBLIC_KEY_BYTES} bytes but received ${publicKey.length} bytes`,\n );\n\n try {\n return Buffer.from(\n sha3.keccak_256.update(toBuffer(publicKey)).digest(),\n ).slice(-ETHEREUM_ADDRESS_BYTES);\n } catch (error) {\n throw new Error(`Error constructing Ethereum address: ${error}`);\n }\n }\n\n /**\n * Create an secp256k1 instruction with a public key. The public key\n * must be a buffer that is 64 bytes long.\n */\n static createInstructionWithPublicKey(\n params: CreateSecp256k1InstructionWithPublicKeyParams,\n ): TransactionInstruction {\n const {publicKey, message, signature, recoveryId, instructionIndex} =\n params;\n return Secp256k1Program.createInstructionWithEthAddress({\n ethAddress: Secp256k1Program.publicKeyToEthAddress(publicKey),\n message,\n signature,\n recoveryId,\n instructionIndex,\n });\n }\n\n /**\n * Create an secp256k1 instruction with an Ethereum address. The address\n * must be a hex string or a buffer that is 20 bytes long.\n */\n static createInstructionWithEthAddress(\n params: CreateSecp256k1InstructionWithEthAddressParams,\n ): TransactionInstruction {\n const {\n ethAddress: rawAddress,\n message,\n signature,\n recoveryId,\n instructionIndex = 0,\n } = params;\n\n let ethAddress;\n if (typeof rawAddress === 'string') {\n if (rawAddress.startsWith('0x')) {\n ethAddress = Buffer.from(rawAddress.substr(2), 'hex');\n } else {\n ethAddress = Buffer.from(rawAddress, 'hex');\n }\n } else {\n ethAddress = rawAddress;\n }\n\n assert(\n ethAddress.length === ETHEREUM_ADDRESS_BYTES,\n `Address must be ${ETHEREUM_ADDRESS_BYTES} bytes but received ${ethAddress.length} bytes`,\n );\n\n const dataStart = 1 + SIGNATURE_OFFSETS_SERIALIZED_SIZE;\n const ethAddressOffset = dataStart;\n const signatureOffset = dataStart + ethAddress.length;\n const messageDataOffset = signatureOffset + signature.length + 1;\n const numSignatures = 1;\n\n const instructionData = Buffer.alloc(\n SECP256K1_INSTRUCTION_LAYOUT.span + message.length,\n );\n\n SECP256K1_INSTRUCTION_LAYOUT.encode(\n {\n numSignatures,\n signatureOffset,\n signatureInstructionIndex: instructionIndex,\n ethAddressOffset,\n ethAddressInstructionIndex: instructionIndex,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: instructionIndex,\n signature: toBuffer(signature),\n ethAddress: toBuffer(ethAddress),\n recoveryId,\n },\n instructionData,\n );\n\n instructionData.fill(toBuffer(message), SECP256K1_INSTRUCTION_LAYOUT.span);\n\n return new TransactionInstruction({\n keys: [],\n programId: Secp256k1Program.programId,\n data: instructionData,\n });\n }\n\n /**\n * Create an secp256k1 instruction with a private key. The private key\n * must be a buffer that is 32 bytes long.\n */\n static createInstructionWithPrivateKey(\n params: CreateSecp256k1InstructionWithPrivateKeyParams,\n ): TransactionInstruction {\n const {privateKey: pkey, message, instructionIndex} = params;\n\n assert(\n pkey.length === PRIVATE_KEY_BYTES,\n `Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${pkey.length} bytes`,\n );\n\n try {\n const privateKey = toBuffer(pkey);\n const publicKey = publicKeyCreate(privateKey, false).slice(1); // throw away leading byte\n const messageHash = Buffer.from(\n sha3.keccak_256.update(toBuffer(message)).digest(),\n );\n const {signature, recid: recoveryId} = ecdsaSign(messageHash, privateKey);\n\n return this.createInstructionWithPublicKey({\n publicKey,\n message,\n signature,\n recoveryId,\n instructionIndex,\n });\n } catch (error) {\n throw new Error(`Error creating instruction; ${error}`);\n }\n }\n}\n","import {Buffer} from 'buffer';\nimport {\n assert as assertType,\n optional,\n string,\n type as pick,\n} from 'superstruct';\n\nimport * as Layout from './layout';\nimport * as shortvec from './util/shortvec-encoding';\nimport {PublicKey} from './publickey';\n\nexport const VALIDATOR_INFO_KEY = new PublicKey(\n 'Va1idator1nfo111111111111111111111111111111',\n);\n\n/**\n * @internal\n */\ntype ConfigKey = {\n publicKey: PublicKey;\n isSigner: boolean;\n};\n\n/**\n * Info used to identity validators.\n */\nexport type Info = {\n /** validator name */\n name: string;\n /** optional, validator website */\n website?: string;\n /** optional, extra information the validator chose to share */\n details?: string;\n /** optional, used to identify validators on keybase.io */\n keybaseUsername?: string;\n};\n\nconst InfoString = pick({\n name: string(),\n website: optional(string()),\n details: optional(string()),\n keybaseUsername: optional(string()),\n});\n\n/**\n * ValidatorInfo class\n */\nexport class ValidatorInfo {\n /**\n * validator public key\n */\n key: PublicKey;\n /**\n * validator information\n */\n info: Info;\n\n /**\n * Construct a valid ValidatorInfo\n *\n * @param key validator public key\n * @param info validator information\n */\n constructor(key: PublicKey, info: Info) {\n this.key = key;\n this.info = info;\n }\n\n /**\n * Deserialize ValidatorInfo from the config account data. Exactly two config\n * keys are required in the data.\n *\n * @param buffer config account data\n * @return null if info was not found\n */\n static fromConfigData(\n buffer: Buffer | Uint8Array | Array,\n ): ValidatorInfo | null {\n const PUBKEY_LENGTH = 32;\n\n let byteArray = [...buffer];\n const configKeyCount = shortvec.decodeLength(byteArray);\n if (configKeyCount !== 2) return null;\n\n const configKeys: Array = [];\n for (let i = 0; i < 2; i++) {\n const publicKey = new PublicKey(byteArray.slice(0, PUBKEY_LENGTH));\n byteArray = byteArray.slice(PUBKEY_LENGTH);\n const isSigner = byteArray.slice(0, 1)[0] === 1;\n byteArray = byteArray.slice(1);\n configKeys.push({publicKey, isSigner});\n }\n\n if (configKeys[0].publicKey.equals(VALIDATOR_INFO_KEY)) {\n if (configKeys[1].isSigner) {\n const rawInfo: any = Layout.rustString().decode(Buffer.from(byteArray));\n const info = JSON.parse(rawInfo as string);\n assertType(info, InfoString);\n return new ValidatorInfo(configKeys[1].publicKey, info);\n }\n }\n\n return null;\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\nimport type {Buffer} from 'buffer';\n\nimport * as Layout from './layout';\nimport {PublicKey} from './publickey';\nimport {toBuffer} from './util/to-buffer';\n\nexport const VOTE_PROGRAM_ID = new PublicKey(\n 'Vote111111111111111111111111111111111111111',\n);\n\nexport type Lockout = {\n slot: number;\n confirmationCount: number;\n};\n\n/**\n * History of how many credits earned by the end of each epoch\n */\nexport type EpochCredits = Readonly<{\n epoch: number;\n credits: number;\n prevCredits: number;\n}>;\n\nexport type AuthorizedVoter = Readonly<{\n epoch: number;\n authorizedVoter: PublicKey;\n}>;\n\ntype AuthorizedVoterRaw = Readonly<{\n authorizedVoter: Uint8Array;\n epoch: number;\n}>;\n\ntype PriorVoters = Readonly<{\n buf: PriorVoterRaw[];\n idx: number;\n isEmpty: number;\n}>;\n\nexport type PriorVoter = Readonly<{\n authorizedPubkey: PublicKey;\n epochOfLastAuthorizedSwitch: number;\n targetEpoch: number;\n}>;\n\ntype PriorVoterRaw = Readonly<{\n authorizedPubkey: Uint8Array;\n epochOfLastAuthorizedSwitch: number;\n targetEpoch: number;\n}>;\n\nexport type BlockTimestamp = Readonly<{\n slot: number;\n timestamp: number;\n}>;\n\ntype VoteAccountData = Readonly<{\n authorizedVoters: AuthorizedVoterRaw[];\n authorizedWithdrawer: Uint8Array;\n commission: number;\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n nodePubkey: Uint8Array;\n priorVoters: PriorVoters;\n rootSlot: number;\n rootSlotValid: number;\n votes: Lockout[];\n}>;\n\n/**\n * See https://github.com/solana-labs/solana/blob/8a12ed029cfa38d4a45400916c2463fb82bbec8c/programs/vote_api/src/vote_state.rs#L68-L88\n *\n * @internal\n */\nconst VoteAccountLayout = BufferLayout.struct([\n Layout.publicKey('nodePubkey'),\n Layout.publicKey('authorizedWithdrawer'),\n BufferLayout.u8('commission'),\n BufferLayout.nu64(), // votes.length\n BufferLayout.seq(\n BufferLayout.struct([\n BufferLayout.nu64('slot'),\n BufferLayout.u32('confirmationCount'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'votes',\n ),\n BufferLayout.u8('rootSlotValid'),\n BufferLayout.nu64('rootSlot'),\n BufferLayout.nu64(), // authorizedVoters.length\n BufferLayout.seq(\n BufferLayout.struct([\n BufferLayout.nu64('epoch'),\n Layout.publicKey('authorizedVoter'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'authorizedVoters',\n ),\n BufferLayout.struct(\n [\n BufferLayout.seq(\n BufferLayout.struct([\n Layout.publicKey('authorizedPubkey'),\n BufferLayout.nu64('epochOfLastAuthorizedSwitch'),\n BufferLayout.nu64('targetEpoch'),\n ]),\n 32,\n 'buf',\n ),\n BufferLayout.nu64('idx'),\n BufferLayout.u8('isEmpty'),\n ],\n 'priorVoters',\n ),\n BufferLayout.nu64(), // epochCredits.length\n BufferLayout.seq(\n BufferLayout.struct([\n BufferLayout.nu64('epoch'),\n BufferLayout.nu64('credits'),\n BufferLayout.nu64('prevCredits'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'epochCredits',\n ),\n BufferLayout.struct(\n [BufferLayout.nu64('slot'), BufferLayout.nu64('timestamp')],\n 'lastTimestamp',\n ),\n]);\n\ntype VoteAccountArgs = {\n nodePubkey: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number;\n rootSlot: number | null;\n votes: Lockout[];\n authorizedVoters: AuthorizedVoter[];\n priorVoters: PriorVoter[];\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n};\n\n/**\n * VoteAccount class\n */\nexport class VoteAccount {\n nodePubkey: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number;\n rootSlot: number | null;\n votes: Lockout[];\n authorizedVoters: AuthorizedVoter[];\n priorVoters: PriorVoter[];\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n\n /**\n * @internal\n */\n constructor(args: VoteAccountArgs) {\n this.nodePubkey = args.nodePubkey;\n this.authorizedWithdrawer = args.authorizedWithdrawer;\n this.commission = args.commission;\n this.rootSlot = args.rootSlot;\n this.votes = args.votes;\n this.authorizedVoters = args.authorizedVoters;\n this.priorVoters = args.priorVoters;\n this.epochCredits = args.epochCredits;\n this.lastTimestamp = args.lastTimestamp;\n }\n\n /**\n * Deserialize VoteAccount from the account data.\n *\n * @param buffer account data\n * @return VoteAccount\n */\n static fromAccountData(\n buffer: Buffer | Uint8Array | Array,\n ): VoteAccount {\n const versionOffset = 4;\n const va = VoteAccountLayout.decode(toBuffer(buffer), versionOffset);\n\n let rootSlot: number | null = va.rootSlot;\n if (!va.rootSlotValid) {\n rootSlot = null;\n }\n\n return new VoteAccount({\n nodePubkey: new PublicKey(va.nodePubkey),\n authorizedWithdrawer: new PublicKey(va.authorizedWithdrawer),\n commission: va.commission,\n votes: va.votes,\n rootSlot,\n authorizedVoters: va.authorizedVoters.map(parseAuthorizedVoter),\n priorVoters: getPriorVoters(va.priorVoters),\n epochCredits: va.epochCredits,\n lastTimestamp: va.lastTimestamp,\n });\n }\n}\n\nfunction parseAuthorizedVoter({\n authorizedVoter,\n epoch,\n}: AuthorizedVoterRaw): AuthorizedVoter {\n return {\n epoch,\n authorizedVoter: new PublicKey(authorizedVoter),\n };\n}\n\nfunction parsePriorVoters({\n authorizedPubkey,\n epochOfLastAuthorizedSwitch,\n targetEpoch,\n}: PriorVoterRaw): PriorVoter {\n return {\n authorizedPubkey: new PublicKey(authorizedPubkey),\n epochOfLastAuthorizedSwitch,\n targetEpoch,\n };\n}\n\nfunction getPriorVoters({buf, idx, isEmpty}: PriorVoters): PriorVoter[] {\n if (isEmpty) {\n return [];\n }\n\n return [\n ...buf.slice(idx + 1).map(parsePriorVoters),\n ...buf.slice(0, idx).map(parsePriorVoters),\n ];\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from './instruction';\nimport * as Layout from './layout';\nimport {PublicKey} from './publickey';\nimport {SystemProgram} from './system-program';\nimport {SYSVAR_CLOCK_PUBKEY, SYSVAR_RENT_PUBKEY} from './sysvar';\nimport {Transaction, TransactionInstruction} from './transaction';\nimport {toBuffer} from './util/to-buffer';\n\n/**\n * Vote account info\n */\nexport class VoteInit {\n nodePubkey: PublicKey;\n authorizedVoter: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number; /** [0, 100] */\n\n constructor(\n nodePubkey: PublicKey,\n authorizedVoter: PublicKey,\n authorizedWithdrawer: PublicKey,\n commission: number,\n ) {\n this.nodePubkey = nodePubkey;\n this.authorizedVoter = authorizedVoter;\n this.authorizedWithdrawer = authorizedWithdrawer;\n this.commission = commission;\n }\n}\n\n/**\n * Create vote account transaction params\n */\nexport type CreateVoteAccountParams = {\n fromPubkey: PublicKey;\n votePubkey: PublicKey;\n voteInit: VoteInit;\n lamports: number;\n};\n\n/**\n * InitializeAccount instruction params\n */\nexport type InitializeAccountParams = {\n votePubkey: PublicKey;\n nodePubkey: PublicKey;\n voteInit: VoteInit;\n};\n\n/**\n * Authorize instruction params\n */\nexport type AuthorizeVoteParams = {\n votePubkey: PublicKey;\n /** Current vote or withdraw authority, depending on `voteAuthorizationType` */\n authorizedPubkey: PublicKey;\n newAuthorizedPubkey: PublicKey;\n voteAuthorizationType: VoteAuthorizationType;\n};\n\n/**\n * Withdraw from vote account transaction params\n */\nexport type WithdrawFromVoteAccountParams = {\n votePubkey: PublicKey;\n authorizedWithdrawerPubkey: PublicKey;\n lamports: number;\n toPubkey: PublicKey;\n};\n\n/**\n * Vote Instruction class\n */\nexport class VoteInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a vote instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): VoteInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: VoteInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(VOTE_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as VoteInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a VoteInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode an initialize vote instruction and retrieve the instruction params.\n */\n static decodeInitializeAccount(\n instruction: TransactionInstruction,\n ): InitializeAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 4);\n\n const {voteInit} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.InitializeAccount,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n nodePubkey: instruction.keys[3].pubkey,\n voteInit: new VoteInit(\n new PublicKey(voteInit.nodePubkey),\n new PublicKey(voteInit.authorizedVoter),\n new PublicKey(voteInit.authorizedWithdrawer),\n voteInit.commission,\n ),\n };\n }\n\n /**\n * Decode an authorize instruction and retrieve the instruction params.\n */\n static decodeAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeVoteParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {newAuthorized, voteAuthorizationType} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.Authorize,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n voteAuthorizationType: {\n index: voteAuthorizationType,\n },\n };\n }\n\n /**\n * Decode a withdraw instruction and retrieve the instruction params.\n */\n static decodeWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawFromVoteAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {lamports} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.Withdraw,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n authorizedWithdrawerPubkey: instruction.keys[2].pubkey,\n lamports,\n toPubkey: instruction.keys[1].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(VoteProgram.programId)) {\n throw new Error('invalid instruction; programId is not VoteProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid VoteInstructionType's\n */\nexport type VoteInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof VoteInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n 'Authorize' | 'InitializeAccount' | 'Withdraw';\n\ntype VoteInstructionInputData = {\n Authorize: IInstructionInputData & {\n newAuthorized: Uint8Array;\n voteAuthorizationType: number;\n };\n InitializeAccount: IInstructionInputData & {\n voteInit: Readonly<{\n authorizedVoter: Uint8Array;\n authorizedWithdrawer: Uint8Array;\n commission: number;\n nodePubkey: Uint8Array;\n }>;\n };\n Withdraw: IInstructionInputData & {\n lamports: number;\n };\n};\n\nconst VOTE_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in VoteInstructionType]: InstructionType<\n VoteInstructionInputData[Instruction]\n >;\n}>({\n InitializeAccount: {\n index: 0,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.voteInit(),\n ]),\n },\n Authorize: {\n index: 1,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('voteAuthorizationType'),\n ]),\n },\n Withdraw: {\n index: 3,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n});\n\n/**\n * VoteAuthorize type\n */\nexport type VoteAuthorizationType = {\n /** The VoteAuthorize index (from solana-vote-program) */\n index: number;\n};\n\n/**\n * An enumeration of valid VoteAuthorization layouts.\n */\nexport const VoteAuthorizationLayout = Object.freeze({\n Voter: {\n index: 0,\n },\n Withdrawer: {\n index: 1,\n },\n});\n\n/**\n * Factory class for transactions to interact with the Vote program\n */\nexport class VoteProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Vote program\n */\n static programId: PublicKey = new PublicKey(\n 'Vote111111111111111111111111111111111111111',\n );\n\n /**\n * Max space of a Vote account\n *\n * This is generated from the solana-vote-program VoteState struct as\n * `VoteState::size_of()`:\n * https://docs.rs/solana-vote-program/1.9.5/solana_vote_program/vote_state/struct.VoteState.html#method.size_of\n */\n static space: number = 3731;\n\n /**\n * Generate an Initialize instruction.\n */\n static initializeAccount(\n params: InitializeAccountParams,\n ): TransactionInstruction {\n const {votePubkey, nodePubkey, voteInit} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.InitializeAccount;\n const data = encodeData(type, {\n voteInit: {\n nodePubkey: toBuffer(voteInit.nodePubkey.toBuffer()),\n authorizedVoter: toBuffer(voteInit.authorizedVoter.toBuffer()),\n authorizedWithdrawer: toBuffer(\n voteInit.authorizedWithdrawer.toBuffer(),\n ),\n commission: voteInit.commission,\n },\n });\n const instructionData = {\n keys: [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: nodePubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a transaction that creates a new Vote account.\n */\n static createAccount(params: CreateVoteAccountParams): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.votePubkey,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n return transaction.add(\n this.initializeAccount({\n votePubkey: params.votePubkey,\n nodePubkey: params.voteInit.nodePubkey,\n voteInit: params.voteInit,\n }),\n );\n }\n\n /**\n * Generate a transaction that authorizes a new Voter or Withdrawer on the Vote account.\n */\n static authorize(params: AuthorizeVoteParams): Transaction {\n const {\n votePubkey,\n authorizedPubkey,\n newAuthorizedPubkey,\n voteAuthorizationType,\n } = params;\n\n const type = VOTE_INSTRUCTION_LAYOUTS.Authorize;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n voteAuthorizationType: voteAuthorizationType.index,\n });\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction to withdraw from a Vote account.\n */\n static withdraw(params: WithdrawFromVoteAccountParams): Transaction {\n const {votePubkey, authorizedWithdrawerPubkey, lamports, toPubkey} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.Withdraw;\n const data = encodeData(type, {lamports});\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: toPubkey, isSigner: false, isWritable: true},\n {pubkey: authorizedWithdrawerPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n}\n","const endpoint = {\n http: {\n devnet: 'http://api.devnet.solana.com',\n testnet: 'http://api.testnet.solana.com',\n 'mainnet-beta': 'http://api.mainnet-beta.solana.com/',\n },\n https: {\n devnet: 'https://api.devnet.solana.com',\n testnet: 'https://api.testnet.solana.com',\n 'mainnet-beta': 'https://api.mainnet-beta.solana.com/',\n },\n};\n\nexport type Cluster = 'devnet' | 'testnet' | 'mainnet-beta';\n\n/**\n * Retrieves the RPC API URL for the specified cluster\n */\nexport function clusterApiUrl(cluster?: Cluster, tls?: boolean): string {\n const key = tls === false ? 'http' : 'https';\n\n if (!cluster) {\n return endpoint[key]['devnet'];\n }\n\n const url = endpoint[key][cluster];\n if (!url) {\n throw new Error(`Unknown ${key} cluster: ${cluster}`);\n }\n return url;\n}\n","export * from './account';\nexport * from './blockhash';\nexport * from './bpf-loader-deprecated';\nexport * from './bpf-loader';\nexport * from './compute-budget';\nexport * from './connection';\nexport * from './epoch-schedule';\nexport * from './ed25519-program';\nexport * from './fee-calculator';\nexport * from './keypair';\nexport * from './loader';\nexport * from './message';\nexport * from './nonce-account';\nexport * from './publickey';\nexport * from './stake-program';\nexport * from './system-program';\nexport * from './secp256k1-program';\nexport * from './transaction';\nexport * from './transaction-constants';\nexport * from './validator-info';\nexport * from './vote-account';\nexport * from './vote-program';\nexport * from './sysvar';\nexport * from './errors';\nexport * from './util/borsh-schema';\nexport * from './util/send-and-confirm-transaction';\nexport * from './util/send-and-confirm-raw-transaction';\nexport * from './util/tx-expiry-custom-errors';\nexport * from './util/cluster';\n\n/**\n * There are 1-billion lamports in one SOL\n */\nexport const LAMPORTS_PER_SOL = 1000000000;\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","\"use strict\";\n\nvar EC = require(\"elliptic\").ec;\n\nvar ec = new EC(\"secp256k1\");\nvar browserCrypto = global.crypto || global.msCrypto || {};\nvar subtle = browserCrypto.subtle || browserCrypto.webkitSubtle;\n\nvar nodeCrypto = require('crypto');\n\nconst EC_GROUP_ORDER = Buffer.from('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 'hex');\nconst ZERO32 = Buffer.alloc(32, 0);\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(message || \"Assertion failed\");\n }\n}\n\nfunction isScalar (x) {\n return Buffer.isBuffer(x) && x.length === 32;\n}\n\nfunction isValidPrivateKey(privateKey) {\n if (!isScalar(privateKey))\n {\n return false;\n }\n return privateKey.compare(ZERO32) > 0 && // > 0\n privateKey.compare(EC_GROUP_ORDER) < 0; // < G\n}\n\n// Compare two buffers in constant time to prevent timing attacks.\nfunction equalConstTime(b1, b2) {\n if (b1.length !== b2.length) {\n return false;\n }\n var res = 0;\n for (var i = 0; i < b1.length; i++) {\n res |= b1[i] ^ b2[i]; // jshint ignore:line\n }\n return res === 0;\n}\n\n/* This must check if we're in the browser or\nnot, since the functions are different and does\nnot convert using browserify */\nfunction randomBytes(size) {\n var arr = new Uint8Array(size);\n if (typeof browserCrypto.getRandomValues === 'undefined') {\n return Buffer.from(nodeCrypto.randomBytes(size));\n } else {\n browserCrypto.getRandomValues(arr);\n }\n return Buffer.from(arr);\n}\n\nfunction sha512(msg) {\n return new Promise(function(resolve) {\n var hash = nodeCrypto.createHash('sha512');\n var result = hash.update(msg).digest();\n resolve(new Uint8Array(result));\n });\n}\n\nfunction getAes(op) {\n return function(iv, key, data) {\n return new Promise(function(resolve) {\n if (subtle) {\n var importAlgorithm = {name: \"AES-CBC\"};\n var keyp = subtle.importKey(\"raw\", key, importAlgorithm, false, [op]);\n return keyp.then(function(cryptoKey) {\n var encAlgorithm = {name: \"AES-CBC\", iv: iv};\n return subtle[op](encAlgorithm, cryptoKey, data);\n }).then(function(result) {\n resolve(Buffer.from(new Uint8Array(result)));\n });\n } else {\n if (op === 'encrypt') {\n var cipher = nodeCrypto.createCipheriv('aes-256-cbc', key, iv);\n let firstChunk = cipher.update(data);\n let secondChunk = cipher.final();\n resolve(Buffer.concat([firstChunk, secondChunk]));\n }\n else if (op === 'decrypt') {\n var decipher = nodeCrypto.createDecipheriv('aes-256-cbc', key, iv);\n let firstChunk = decipher.update(data);\n let secondChunk = decipher.final();\n resolve(Buffer.concat([firstChunk, secondChunk]));\n }\n }\n });\n };\n}\n\nvar aesCbcEncrypt = getAes(\"encrypt\");\nvar aesCbcDecrypt = getAes(\"decrypt\");\n\nfunction hmacSha256Sign(key, msg) {\n return new Promise(function(resolve) {\n var hmac = nodeCrypto.createHmac('sha256', Buffer.from(key));\n hmac.update(msg);\n var result = hmac.digest();\n resolve(result);\n });\n}\n\nfunction hmacSha256Verify(key, msg, sig) {\n return new Promise(function(resolve) {\n var hmac = nodeCrypto.createHmac('sha256', Buffer.from(key));\n hmac.update(msg);\n var expectedSig = hmac.digest();\n resolve(equalConstTime(expectedSig, sig));\n });\n}\n\n/**\n * Generate a new valid private key. Will use the window.crypto or window.msCrypto as source\n * depending on your browser.\n * @return {Buffer} A 32-byte private key.\n * @function\n */\nexports.generatePrivate = function () {\n var privateKey = randomBytes(32);\n while (!isValidPrivateKey(privateKey)) {\n privateKey = randomBytes(32);\n }\n return privateKey;\n};\n\nvar getPublic = exports.getPublic = function(privateKey) {\n // This function has sync API so we throw an error immediately.\n assert(privateKey.length === 32, \"Bad private key\");\n assert(isValidPrivateKey(privateKey), \"Bad private key\");\n // XXX(Kagami): `elliptic.utils.encode` returns array for every\n // encoding except `hex`.\n return Buffer.from(ec.keyFromPrivate(privateKey).getPublic(\"arr\"));\n};\n\n/**\n * Get compressed version of public key.\n */\nvar getPublicCompressed = exports.getPublicCompressed = function(privateKey) { // jshint ignore:line\n assert(privateKey.length === 32, \"Bad private key\");\n assert(isValidPrivateKey(privateKey), \"Bad private key\");\n // See https://github.com/wanderer/secp256k1-node/issues/46\n let compressed = true;\n return Buffer.from(ec.keyFromPrivate(privateKey).getPublic(compressed, \"arr\"));\n};\n\n// NOTE(Kagami): We don't use promise shim in Browser implementation\n// because it's supported natively in new browsers (see\n// ) and we can use only new browsers\n// because of the WebCryptoAPI (see\n// ).\nexports.sign = function(privateKey, msg) {\n return new Promise(function(resolve) {\n assert(privateKey.length === 32, \"Bad private key\");\n assert(isValidPrivateKey(privateKey), \"Bad private key\");\n assert(msg.length > 0, \"Message should not be empty\");\n assert(msg.length <= 32, \"Message is too long\");\n resolve(Buffer.from(ec.sign(msg, privateKey, {canonical: true}).toDER()));\n });\n};\n\nexports.verify = function(publicKey, msg, sig) {\n return new Promise(function(resolve, reject) {\n assert(publicKey.length === 65 || publicKey.length === 33, \"Bad public key\");\n if (publicKey.length === 65)\n {\n assert(publicKey[0] === 4, \"Bad public key\");\n }\n if (publicKey.length === 33)\n {\n assert(publicKey[0] === 2 || publicKey[0] === 3, \"Bad public key\");\n }\n assert(msg.length > 0, \"Message should not be empty\");\n assert(msg.length <= 32, \"Message is too long\");\n if (ec.verify(msg, sig, publicKey)) {\n resolve(null);\n } else {\n reject(new Error(\"Bad signature\"));\n }\n });\n};\n\nvar derive = exports.derive = function(privateKeyA, publicKeyB) {\n return new Promise(function(resolve) {\n assert(Buffer.isBuffer(privateKeyA), \"Bad private key\");\n assert(Buffer.isBuffer(publicKeyB), \"Bad public key\");\n assert(privateKeyA.length === 32, \"Bad private key\");\n assert(isValidPrivateKey(privateKeyA), \"Bad private key\");\n assert(publicKeyB.length === 65 || publicKeyB.length === 33, \"Bad public key\");\n if (publicKeyB.length === 65)\n {\n assert(publicKeyB[0] === 4, \"Bad public key\");\n }\n if (publicKeyB.length === 33)\n {\n assert(publicKeyB[0] === 2 || publicKeyB[0] === 3, \"Bad public key\");\n }\n var keyA = ec.keyFromPrivate(privateKeyA);\n var keyB = ec.keyFromPublic(publicKeyB);\n var Px = keyA.derive(keyB.getPublic()); // BN instance\n resolve(Buffer.from(Px.toArray()));\n });\n};\n\nexports.encrypt = function(publicKeyTo, msg, opts) {\n opts = opts || {};\n // Tmp variables to save context from flat promises;\n var iv, ephemPublicKey, ciphertext, macKey;\n return new Promise(function(resolve) {\n var ephemPrivateKey = opts.ephemPrivateKey || randomBytes(32);\n // There is a very unlikely possibility that it is not a valid key\n while(!isValidPrivateKey(ephemPrivateKey))\n {\n ephemPrivateKey = opts.ephemPrivateKey || randomBytes(32);\n }\n ephemPublicKey = getPublic(ephemPrivateKey);\n resolve(derive(ephemPrivateKey, publicKeyTo));\n }).then(function(Px) {\n return sha512(Px);\n }).then(function(hash) {\n iv = opts.iv || randomBytes(16);\n var encryptionKey = hash.slice(0, 32);\n macKey = hash.slice(32);\n return aesCbcEncrypt(iv, encryptionKey, msg);\n }).then(function(data) {\n ciphertext = data;\n var dataToMac = Buffer.concat([iv, ephemPublicKey, ciphertext]);\n return hmacSha256Sign(macKey, dataToMac);\n }).then(function(mac) {\n return {\n iv: iv,\n ephemPublicKey: ephemPublicKey,\n ciphertext: ciphertext,\n mac: mac,\n };\n });\n};\n\nexports.decrypt = function(privateKey, opts) {\n // Tmp variable to save context from flat promises;\n var encryptionKey;\n return derive(privateKey, opts.ephemPublicKey).then(function(Px) {\n return sha512(Px);\n }).then(function(hash) {\n encryptionKey = hash.slice(0, 32);\n var macKey = hash.slice(32);\n var dataToMac = Buffer.concat([\n opts.iv,\n opts.ephemPublicKey,\n opts.ciphertext\n ]);\n return hmacSha256Verify(macKey, dataToMac, opts.mac);\n }).then(function(macGood) {\n assert(macGood, \"Bad MAC\");\n return aesCbcDecrypt(opts.iv, encryptionKey, opts.ciphertext);\n }).then(function(msg) {\n return Buffer.from(new Uint8Array(msg));\n });\n};\n\n","/* eslint-disable @typescript-eslint/no-throw-literal */\nimport merge from \"lodash.merge\";\nimport logLevel, { levels, LogLevelDesc } from \"loglevel\";\n\nconst log = logLevel.getLogger(\"http-helpers\");\nlog.setLevel(levels.INFO);\nexport interface CustomOptions {\n [key: string]: unknown;\n useAPIKey?: boolean;\n isUrlEncodedData?: boolean;\n timeout?: number;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface Data {}\n\nlet apiKey = \"torus-default\";\nlet embedHost = \"\";\n\n// #region API Keys\nexport const gatewayAuthHeader = \"x-api-key\";\nexport const gatewayEmbedHostHeader = \"x-embed-host\";\n\nexport function setEmbedHost(embedHost_: string): void {\n embedHost = embedHost_;\n}\n\nexport function clearEmbedHost(): void {\n embedHost = \"\";\n}\n\nexport function getEmbedHost(): string {\n return embedHost;\n}\n\nexport function setAPIKey(apiKey_: string): void {\n apiKey = apiKey_;\n}\n\nexport function clearAPIKey(): void {\n apiKey = \"torus-default\";\n}\n\nexport function getAPIKey(): string {\n return apiKey;\n}\n\n// #endregion\n\nexport function setLogLevel(level: LogLevelDesc) {\n log.setLevel(level);\n}\n\nfunction getApiKeyHeaders(): Record {\n const headers = {};\n if (apiKey) headers[gatewayAuthHeader] = apiKey;\n if (embedHost) headers[gatewayEmbedHostHeader] = embedHost;\n return headers;\n}\n\nfunction debugLogResponse(response: Response) {\n log.info(`Response: ${response.status} ${response.statusText}`);\n log.info(`Url: ${response.url}`);\n}\n\nexport const promiseTimeout = (ms: number, promise: Promise): Promise => {\n const timeout = new Promise((resolve, reject) => {\n const id = setTimeout(() => {\n clearTimeout(id);\n reject(new Error(`Timed out in ${ms}ms`));\n }, ms);\n });\n return Promise.race([promise, timeout]);\n};\n\nexport const get = async (url: string, options_: RequestInit = {}, customOptions: CustomOptions = {}) => {\n const defaultOptions = {\n mode: \"cors\" as RequestMode,\n headers: {},\n };\n if (customOptions.useAPIKey) {\n defaultOptions.headers = { ...defaultOptions.headers, ...getApiKeyHeaders() };\n }\n const options = merge(defaultOptions, options_, { method: \"GET\" });\n const response = await fetch(url, options);\n if (response.ok) {\n return response.json() as Promise;\n }\n debugLogResponse(response);\n throw response;\n};\n\nexport const post = (url: string, data: Data = {}, options_: RequestInit = {}, customOptions: CustomOptions = {}) => {\n const defaultOptions = {\n mode: \"cors\" as RequestMode,\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n };\n if (customOptions.useAPIKey) {\n defaultOptions.headers = { ...defaultOptions.headers, ...getApiKeyHeaders() };\n }\n const options = merge(defaultOptions, options_, { method: \"POST\" });\n\n // deep merge changes the structure of form data and url encoded data ,\n // so we should not deepmerge body data\n if (customOptions.isUrlEncodedData) {\n // for multipart request browser/client will add multipart content type\n // along with multipart boundary , so for multipart request send\n // content-type: undefined or send with multipart boundary if already known\n options.body = data as string;\n // If url encoded data, this must not be the content type\n if (options.headers[\"Content-Type\"] === \"application/json; charset=utf-8\") delete options.headers[\"Content-Type\"];\n } else {\n options.body = JSON.stringify(data);\n }\n\n return promiseTimeout(\n (customOptions.timeout as number) || 60000,\n fetch(url, options).then((response) => {\n if (response.ok) {\n return response.json() as Promise;\n }\n debugLogResponse(response);\n throw response;\n })\n );\n};\n\nexport const patch = async (url: string, data: Data = {}, options_: RequestInit = {}, customOptions: CustomOptions = {}) => {\n const defaultOptions = {\n mode: \"cors\" as RequestMode,\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n };\n // for multipart request browser/client will add multipart content type\n // along with multipart boundary , so for multipart request send\n // content-type: undefined or send with multipart boundary if already known\n if (customOptions.useAPIKey) {\n defaultOptions.headers = { ...defaultOptions.headers, ...getApiKeyHeaders() };\n }\n const options = merge(defaultOptions, options_, { method: \"PATCH\" });\n // deep merge changes the structure of form data and url encoded data ,\n // so we should not deepmerge body data\n if (customOptions.isUrlEncodedData) {\n // for multipart request browser/client will add multipart content type\n // along with multipart boundary , so for multipart request send\n // content-type: undefined or send with multipart boundary if already known\n options.body = data as string;\n // If url encoded data, this must not be the content type\n if (options.headers[\"Content-Type\"] === \"application/json; charset=utf-8\") delete options.headers[\"Content-Type\"];\n } else {\n options.body = JSON.stringify(data);\n }\n const response = await fetch(url, options);\n if (response.ok) {\n return response.json() as Promise;\n }\n debugLogResponse(response);\n throw response;\n};\n\nexport const remove = async (url: string, data: Data = {}, options_: RequestInit = {}, customOptions: CustomOptions = {}) => {\n const defaultOptions = {\n mode: \"cors\" as RequestMode,\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n };\n // for multipart request browser/client will add multipart content type\n // along with multipart boundary , so for multipart request send\n // content-type: undefined or send with multipart boundary if already known\n if (customOptions.useAPIKey) {\n defaultOptions.headers = { ...defaultOptions.headers, ...getApiKeyHeaders() };\n }\n const options = merge(defaultOptions, options_, { method: \"DELETE\" });\n if (customOptions.isUrlEncodedData) {\n // for multipart request browser/client will add multipart content type\n // along with multipart boundary , so for multipart request send\n // content-type: undefined or send with multipart boundary if already known\n options.body = data as string;\n // If url encoded data, this must not be the content type\n if (options.headers[\"Content-Type\"] === \"application/json; charset=utf-8\") delete options.headers[\"Content-Type\"];\n } else {\n options.body = JSON.stringify(data);\n }\n const response = await fetch(url, options);\n if (response.ok) {\n return response.json() as Promise;\n }\n debugLogResponse(response);\n throw response;\n};\n\nexport const generateJsonRPCObject = (method: string, parameters: unknown) => ({\n jsonrpc: \"2.0\",\n method,\n id: 10,\n params: parameters,\n});\n\nexport const promiseRace = (url: string, options: RequestInit, timeout = 60000) =>\n Promise.race([\n get(url, options),\n new Promise((resolve, reject) => {\n setTimeout(() => {\n reject(new Error(\"timed out\"));\n }, timeout);\n }),\n ]);\n","import { HashParams } from \"./hashParams\";\n\nexport class URLWithHashParams extends URL {\n hashParams: HashParams = new URLSearchParams();\n\n toString(): string {\n this.hash = this.hashParams.toString();\n return super.toString.call(this);\n }\n}\n","import base64urlLib from \"base64url\";\nimport keccakLib from \"keccak\";\n\nexport const base64url = base64urlLib;\n\nexport function safebtoa(str: string): string {\n return base64url.encode(str);\n}\n\nexport function safeatob(str: string): string {\n // Going backwards: from bytestream, to percent-encoding, to original string.\n return base64url.decode(str);\n}\n\nexport const keccak = keccakLib;\n\nexport type BufferEncoding = \"ascii\" | \"utf8\" | \"utf-8\" | \"utf16le\" | \"ucs2\" | \"ucs-2\" | \"base64\" | \"latin1\" | \"binary\" | \"hex\";\n\nexport function base64toJSON(b64str: string): Record {\n return JSON.parse(base64url.decode(b64str));\n}\n\nexport function jsonToBase64(json: Record): string {\n return base64url.encode(JSON.stringify(json));\n}\n\nexport function keccak256(str: string): string {\n let input: string | Buffer = str;\n if (typeof str === \"string\" && str.slice(0, 2) === \"0x\" && str.length === 66) {\n input = Buffer.from(str.slice(2), \"hex\");\n }\n const data = `0x${keccak(\"keccak256\").update(input).digest(\"hex\").padStart(64, \"0\")}`;\n return data;\n}\n\nexport interface BaseLoginOptions {\n /**\n * If you need to send custom parameters to the Authorization Server,\n * make sure to use the original parameter name.\n */\n [key: string]: unknown;\n /**\n * - `'page'`: displays the UI with a full page view\n * - `'popup'`: displays the UI with a popup window\n * - `'touch'`: displays the UI in a way that leverages a touch interface\n * - `'wap'`: displays the UI with a \"feature phone\" type interface\n */\n display?: \"page\" | \"popup\" | \"touch\" | \"wap\" | string;\n /**\n * - `'none'`: do not prompt user for login or consent on re-authentication\n * - `'login'`: prompt user for re-authentication\n * - `'consent'`: prompt user for consent before processing request\n * - `'select_account'`: prompt user to select an account\n */\n prompt?: \"none\" | \"login\" | \"consent\" | \"select_account\" | string;\n /**\n * Maximum allowable elapsed time (in seconds) since authentication.\n * If the last time the user authenticated is greater than this value,\n * the user must be re-authenticated.\n */\n max_age?: string | number;\n /**\n * The space-separated list of language tags, ordered by preference.\n * For example: `'fr-CA fr en'`.\n */\n ui_locales?: string;\n /**\n * Previously issued ID Token.\n */\n id_token_hint?: string;\n /**\n * The user's email address or other identifier. When your app knows\n * which user is trying to authenticate, you can provide this parameter\n * to pre-fill the email box or select the right session for sign-in.\n *\n * This currently only affects the classic Lock experience.\n */\n login_hint?: string;\n acr_values?: string;\n /**\n * The default scope to be used on authentication requests.\n * The defaultScope defined in the Auth0Client is included\n * along with this scope\n */\n scope?: string;\n /**\n * The default audience to be used for requesting API access.\n */\n audience?: string;\n /**\n * The name of the connection configured for your application.\n * If null, it will redirect to the Auth0 Login Page and show\n * the Login Widget.\n */\n connection?: string;\n}\n\nexport interface ExtraLoginOptions extends BaseLoginOptions {\n /**\n * Your Auth0 account domain such as `'example.auth0.com'`,\n * `'example.eu.auth0.com'` or , `'example.mycompany.com'`\n * (when using [custom domains](https://auth0.com/docs/custom-domains))\n */\n domain?: string;\n /**\n * The Client ID found on your Application settings page\n */\n client_id?: string;\n /**\n * The default URL where Auth0 will redirect your browser to with\n * the authentication result. It must be whitelisted in\n * the \"Allowed Callback URLs\" field in your Auth0 Application's\n * settings. If not provided here, it should be provided in the other\n * methods that provide authentication.\n */\n redirect_uri?: string;\n /**\n * The value in seconds used to account for clock skew in JWT expirations.\n * Typically, this value is no more than a minute or two at maximum.\n * Defaults to 60s.\n */\n leeway?: number;\n /**\n * The field in jwt token which maps to verifier id\n */\n verifierIdField?: string;\n /**\n * Whether the verifier id field is case sensitive\n * @defaultValue true\n */\n isVerifierIdCaseSensitive?: boolean;\n}\n","import { Duplex } from \"readable-stream\";\n\nfunction noop(): void {\n return undefined;\n}\n\nconst SYN = \"SYN\";\nconst ACK = \"ACK\";\nconst BRK = \"BRK\";\n\nexport default class BasePostMessageStream extends Duplex {\n _init: boolean;\n\n _haveSyn: boolean;\n\n _name: string;\n\n _target: string;\n\n _targetWindow: Window;\n\n _targetOrigin: string;\n\n _onMessage: any;\n\n _synIntervalId: number;\n\n constructor({\n name,\n target,\n targetWindow = window,\n targetOrigin = \"*\",\n }: {\n name: string;\n target: string;\n targetWindow?: Window;\n targetOrigin?: string;\n }) {\n super({\n objectMode: true,\n });\n if (!name || !target) {\n throw new Error(\"Invalid input.\");\n }\n this._init = false;\n this._haveSyn = false;\n this._name = name;\n this._target = target; // target origin\n this._targetWindow = targetWindow;\n this._targetOrigin = targetOrigin;\n this._onMessage = this.onMessage.bind(this);\n this._synIntervalId = null;\n\n window.addEventListener(\"message\", this._onMessage, false);\n this._handShake();\n }\n\n _break(): void {\n this.cork();\n this._write(BRK, null, noop);\n this._haveSyn = false;\n this._init = false;\n }\n\n _handShake(): void {\n this._write(SYN, null, noop);\n this.cork();\n }\n\n _onData(data: unknown): void {\n if (!this._init) {\n // listen for handshake\n if (data === SYN) {\n this._haveSyn = true;\n this._write(ACK, null, noop);\n } else if (data === ACK) {\n this._init = true;\n if (!this._haveSyn) {\n this._write(ACK, null, noop);\n }\n this.uncork();\n }\n } else if (data === BRK) {\n this._break();\n } else {\n // forward message\n try {\n this.push(data);\n } catch (err) {\n this.emit(\"error\", err);\n }\n }\n }\n\n _postMessage(data: unknown): void {\n const originConstraint = this._targetOrigin;\n this._targetWindow.postMessage(\n {\n target: this._target,\n data,\n },\n originConstraint\n );\n }\n\n onMessage(event: MessageEvent): void {\n const message = event.data;\n\n // validate message\n if (\n (this._targetOrigin !== \"*\" && event.origin !== this._targetOrigin) ||\n event.source !== this._targetWindow ||\n typeof message !== \"object\" ||\n message.target !== this._name ||\n !message.data\n ) {\n return;\n }\n\n this._onData(message.data);\n }\n\n _read(): void {\n return undefined;\n }\n\n _write(data: unknown, _, cb: () => void): void {\n this._postMessage(data);\n cb();\n }\n\n _destroy(): void {\n window.removeEventListener(\"message\", this._onMessage, false);\n }\n}\n","import { EventEmitter } from \"events\";\n\ntype Handler = (...args: any[]) => void;\ninterface EventMap {\n [k: string]: Handler | Handler[] | undefined;\n}\n\nfunction safeApply(handler: (this: T, ...handlerArgs: A) => void, context: T, args: A): void {\n try {\n Reflect.apply(handler, context, args);\n } catch (err) {\n // Throw error after timeout so as not to interrupt the stack\n setTimeout(() => {\n throw err;\n });\n }\n}\n\nfunction arrayClone(arr: T[]): T[] {\n const n = arr.length;\n const copy = new Array(n);\n for (let i = 0; i < n; i += 1) {\n copy[i] = arr[i];\n }\n return copy;\n}\n\nexport default class SafeEventEmitter extends EventEmitter {\n emit(type: string, ...args: any[]): boolean {\n let doError = type === \"error\";\n\n const events: EventMap = (this as any)._events;\n if (events !== undefined) {\n doError = doError && events.error === undefined;\n } else if (!doError) {\n return false;\n }\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n let er;\n if (args.length > 0) {\n [er] = args;\n }\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n const err = new Error(`Unhandled error.${er ? ` (${er.message})` : \"\"}`);\n (err as any).context = er;\n throw err; // Unhandled 'error' event\n }\n\n const handler = events[type];\n\n if (handler === undefined) {\n return false;\n }\n\n if (typeof handler === \"function\") {\n safeApply(handler, this, args);\n } else {\n const len = handler.length;\n const listeners = arrayClone(handler);\n for (let i = 0; i < len; i += 1) {\n safeApply(listeners[i], this, args);\n }\n }\n\n return true;\n }\n}\n","import stringify from \"fast-safe-stringify\";\n\nexport default class SerializableError extends Error {\n public code: number;\n\n public data: T;\n\n constructor({ code, message, data }: { code: number; message: string; data?: T }) {\n if (!Number.isInteger(code)) {\n throw new Error(\"code must be an integer\");\n }\n if (!message || typeof message !== \"string\") {\n throw new Error(\"message must be string\");\n }\n\n super(message);\n this.code = code;\n if (data !== undefined) {\n this.data = data;\n }\n }\n\n toString(): string {\n return stringify({\n code: this.code,\n message: this.message,\n data: this.data,\n stack: this.stack,\n });\n }\n}\n","import { randomId } from \"@toruslabs/openlogin-utils\";\nimport { Duplex } from \"readable-stream\";\n\nimport SafeEventEmitter from \"./safeEventEmitter\";\nimport SerializableError from \"./serializableError\";\n\nexport type Json = boolean | number | string | null | { [property: string]: Json } | Json[];\n\nexport type JRPCVersion = \"2.0\";\nexport type JRPCId = number | string | void;\n\nexport type ConsoleLike = Pick;\nexport interface JRPCBase {\n jsonrpc?: JRPCVersion;\n id?: JRPCId;\n}\n\nexport interface JRPCResponse extends JRPCBase {\n result?: T;\n error?: any;\n}\n\nexport const getRpcPromiseCallback =\n (resolve: (value?: any) => void, reject: (error?: Error) => void, unwrapResult = true) =>\n (error: Error, response: JRPCResponse): void => {\n if (error || response.error) {\n reject(error || response.error);\n } else if (!unwrapResult || Array.isArray(response)) {\n resolve(response);\n } else {\n resolve(response.result);\n }\n };\n\nexport interface JRPCRequest extends JRPCBase {\n method: string;\n params?: T;\n}\n\nexport type JRPCEngineNextCallback = (cb?: (done: (error?: Error) => void) => void) => void;\nexport type JRPCEngineEndCallback = (error?: Error) => void;\nexport type JRPCEngineReturnHandler = (done: (error?: Error) => void) => void;\n\ninterface IdMapValue {\n req: JRPCRequest;\n res: JRPCResponse;\n next: JRPCEngineNextCallback;\n end: JRPCEngineEndCallback;\n}\n\ninterface IdMap {\n [requestId: string]: IdMapValue;\n}\n\nexport type JRPCMiddleware = (req: JRPCRequest, res: JRPCResponse, next: JRPCEngineNextCallback, end: JRPCEngineEndCallback) => void;\n\nexport function createErrorMiddleware(log: ConsoleLike): JRPCMiddleware {\n return (req, res, next, end) => {\n try {\n // json-rpc-engine will terminate the request when it notices this error\n if (typeof req.method !== \"string\" || !req.method) {\n res.error = new SerializableError({ code: -32603, message: \"invalid method\" });\n end();\n return;\n }\n next((done) => {\n const { error } = res;\n if (!error) {\n return done();\n }\n log.error(`OpenLogin - RPC Error: ${error.message}`, error);\n return done();\n });\n } catch (error) {\n log.error(`OpenLogin - RPC Error thrown: ${error.message}`, error);\n res.error = new SerializableError({ code: -32603, message: error.message });\n end();\n }\n };\n}\n\nexport function createStreamMiddleware(): { events: SafeEventEmitter; middleware: JRPCMiddleware; stream: Duplex } {\n const idMap: IdMap = {};\n\n function readNoop() {\n return false;\n }\n\n const events = new SafeEventEmitter();\n\n function processResponse(res: JRPCResponse) {\n const context = idMap[res.id as unknown as string];\n if (!context) {\n throw new Error(`StreamMiddleware - Unknown response id \"${res.id}\"`);\n }\n\n delete idMap[res.id as unknown as string];\n // copy whole res onto original res\n Object.assign(context.res, res);\n // run callback on empty stack,\n // prevent internal stream-handler from catching errors\n setTimeout(context.end);\n }\n\n function processNotification(res: JRPCRequest) {\n events.emit(\"notification\", res);\n }\n\n function processMessage(res: JRPCResponse, _encoding: unknown, cb: (error?: Error | null) => void) {\n let err;\n try {\n const isNotification = !res.id;\n if (isNotification) {\n processNotification(res as unknown as JRPCRequest);\n } else {\n processResponse(res);\n }\n } catch (_err) {\n err = _err;\n }\n // continue processing stream\n cb(err);\n }\n\n const stream = new Duplex({\n objectMode: true,\n read: readNoop,\n write: processMessage,\n });\n\n const middleware: JRPCMiddleware = (req, res, next, end) => {\n // write req to stream\n stream.push(req);\n // register request on id map\n idMap[req.id as unknown as string] = { req, res, next, end };\n };\n\n return { events, middleware, stream };\n}\n\ntype ScaffoldMiddlewareHandler = JRPCMiddleware | Json;\n\nexport function createScaffoldMiddleware(handlers: {\n [methodName: string]: ScaffoldMiddlewareHandler;\n}): JRPCMiddleware {\n return (req, res, next, end) => {\n const handler = handlers[req.method];\n // if no handler, return\n if (handler === undefined) {\n return next();\n }\n // if handler is fn, call as middleware\n if (typeof handler === \"function\") {\n return handler(req, res, next, end);\n }\n // if handler is some other value, use as result\n res.result = handler;\n return end();\n };\n}\n\nexport function createIdRemapMiddleware(): JRPCMiddleware {\n return (req, res, next, _end) => {\n const originalId = req.id;\n const newId = randomId();\n req.id = newId;\n res.id = newId;\n next((done) => {\n req.id = originalId;\n res.id = originalId;\n done();\n });\n };\n}\n\nexport function createLoggerMiddleware(logger: ConsoleLike): JRPCMiddleware {\n return (req, res, next, _) => {\n logger.debug(\"REQ\", req, \"RES\", res);\n next();\n };\n}\n\nexport type AsyncJRPCEngineNextCallback = () => Promise;\n\ntype Maybe = Partial | null | undefined;\n\nexport interface JRPCSuccess extends JRPCBase {\n result: Maybe;\n}\n\nexport interface JRPCError {\n code: number;\n message: string;\n data?: unknown;\n stack?: string;\n}\n\nexport interface PendingJRPCResponse extends JRPCBase {\n result?: T;\n error?: Error | JRPCError;\n}\n\nexport interface JRPCFailure extends JRPCBase {\n error: JRPCError;\n}\n\nexport type AsyncJRPCMiddleware = (req: JRPCRequest, res: PendingJRPCResponse, next: AsyncJRPCEngineNextCallback) => Promise;\n\ntype ReturnHandlerCallback = (error: null | Error) => void;\n\nexport function createAsyncMiddleware(asyncMiddleware: AsyncJRPCMiddleware): JRPCMiddleware {\n return async (req, res, next, end) => {\n // nextPromise is the key to the implementation\n // it is resolved by the return handler passed to the\n // \"next\" function\n let resolveNextPromise: () => void;\n const nextPromise = new Promise((resolve) => {\n resolveNextPromise = resolve;\n });\n\n let returnHandlerCallback: unknown = null;\n let nextWasCalled = false;\n\n // This will be called by the consumer's async middleware.\n const asyncNext = async () => {\n nextWasCalled = true;\n\n // We pass a return handler to next(). When it is called by the engine,\n // the consumer's async middleware will resume executing.\n\n next((runReturnHandlersCallback) => {\n // This callback comes from JRPCEngine._runReturnHandlers\n returnHandlerCallback = runReturnHandlersCallback;\n resolveNextPromise();\n });\n await nextPromise;\n };\n\n try {\n await asyncMiddleware(req, res, asyncNext);\n\n if (nextWasCalled) {\n await nextPromise; // we must wait until the return handler is called\n (returnHandlerCallback as ReturnHandlerCallback)(null);\n } else {\n end(null);\n }\n } catch (error) {\n if (returnHandlerCallback) {\n (returnHandlerCallback as ReturnHandlerCallback)(error);\n } else {\n end(error);\n }\n }\n };\n}\n","import randombytes from \"randombytes\";\n\nexport const randomId = (): string => randombytes(32).toString(\"hex\");\n","import { serializeError } from \"eth-rpc-errors\";\nimport { Duplex } from \"readable-stream\";\n\nimport { JRPCEngineEndCallback, JRPCEngineNextCallback, JRPCEngineReturnHandler, JRPCMiddleware, JRPCRequest, JRPCResponse } from \"./jrpc\";\nimport SafeEventEmitter from \"./safeEventEmitter\";\nimport SerializableError from \"./serializableError\";\n\n/**\n * A JSON-RPC request and response processor.\n * Give it a stack of middleware, pass it requests, and get back responses.\n */\nexport class JRPCEngine extends SafeEventEmitter {\n private _middleware: JRPCMiddleware[];\n\n constructor() {\n super();\n this._middleware = [];\n }\n\n /**\n * Serially executes the given stack of middleware.\n *\n * @returns An array of any error encountered during middleware execution,\n * a boolean indicating whether the request was completed, and an array of\n * middleware-defined return handlers.\n */\n private static async _runAllMiddleware(\n req: JRPCRequest,\n res: JRPCResponse,\n middlewareStack: JRPCMiddleware[]\n ): Promise<\n [\n unknown, // error\n boolean, // isComplete\n JRPCEngineReturnHandler[]\n ]\n > {\n const returnHandlers: JRPCEngineReturnHandler[] = [];\n let error = null;\n let isComplete = false;\n\n // Go down stack of middleware, call and collect optional returnHandlers\n for (const middleware of middlewareStack) {\n [error, isComplete] = await JRPCEngine._runMiddleware(req, res, middleware, returnHandlers);\n if (isComplete) {\n break;\n }\n }\n return [error, isComplete, returnHandlers.reverse()];\n }\n\n /**\n * Runs an individual middleware.\n *\n * @returns An array of any error encountered during middleware exection,\n * and a boolean indicating whether the request should end.\n */\n private static _runMiddleware(\n req: JRPCRequest,\n res: JRPCResponse,\n middleware: JRPCMiddleware,\n returnHandlers: JRPCEngineReturnHandler[]\n ): Promise<[unknown, boolean]> {\n return new Promise((resolve) => {\n const end: JRPCEngineEndCallback = (err?: unknown) => {\n const error = err || res.error;\n if (error) {\n res.error = serializeError(error);\n }\n // True indicates that the request should end\n resolve([error, true]);\n };\n\n const next: JRPCEngineNextCallback = (returnHandler?: JRPCEngineReturnHandler) => {\n if (res.error) {\n end(res.error);\n } else {\n if (returnHandler) {\n if (typeof returnHandler !== \"function\") {\n end(new SerializableError({ code: -32603, message: \"JRPCEngine: 'next' return handlers must be functions\" }));\n }\n returnHandlers.push(returnHandler);\n }\n\n // False indicates that the request should not end\n resolve([null, false]);\n }\n };\n\n try {\n middleware(req, res, next, end);\n } catch (error) {\n end(error);\n }\n });\n }\n\n /**\n * Serially executes array of return handlers. The request and response are\n * assumed to be in their scope.\n */\n private static async _runReturnHandlers(handlers: JRPCEngineReturnHandler[]): Promise {\n for (const handler of handlers) {\n await new Promise((resolve, reject) => {\n handler((err) => (err ? reject(err) : resolve()));\n });\n }\n }\n\n /**\n * Throws an error if the response has neither a result nor an error, or if\n * the \"isComplete\" flag is falsy.\n */\n private static _checkForCompletion(req: JRPCRequest, res: JRPCResponse, isComplete: boolean): void {\n if (!(\"result\" in res) && !(\"error\" in res)) {\n throw new SerializableError({ code: -32603, message: \"Response has no error or result for request\" });\n }\n if (!isComplete) {\n throw new SerializableError({ code: -32603, message: \"Nothing ended request\" });\n }\n }\n\n /**\n * Add a middleware function to the engine's middleware stack.\n *\n * @param middleware - The middleware function to add.\n */\n push(middleware: JRPCMiddleware): void {\n this._middleware.push(middleware as JRPCMiddleware);\n }\n\n /**\n * Handle a JSON-RPC request, and return a response.\n *\n * @param request - The request to handle.\n * @param callback - An error-first callback that will receive the response.\n */\n handle(request: JRPCRequest, callback: (error: unknown, response: JRPCResponse) => void): void;\n\n /**\n * Handle an array of JSON-RPC requests, and return an array of responses.\n *\n * @param request - The requests to handle.\n * @param callback - An error-first callback that will receive the array of\n * responses.\n */\n handle(requests: JRPCRequest[], callback: (error: unknown, responses: JRPCResponse[]) => void): void;\n\n /**\n * Handle a JSON-RPC request, and return a response.\n *\n * @param request - The request to handle.\n * @returns A promise that resolves with the response, or rejects with an\n * error.\n */\n handle(request: JRPCRequest): Promise>;\n\n /**\n * Handle an array of JSON-RPC requests, and return an array of responses.\n *\n * @param request - The requests to handle.\n * @returns A promise that resolves with the array of responses, or rejects\n * with an error.\n */\n handle(requests: JRPCRequest[]): Promise[]>;\n\n handle(req: unknown, cb?: any) {\n if (cb && typeof cb !== \"function\") {\n throw new Error('\"callback\" must be a function if provided.');\n }\n\n if (Array.isArray(req)) {\n if (cb) {\n return this._handleBatch(req, cb);\n }\n return this._handleBatch(req);\n }\n\n if (cb) {\n return this._handle(req as JRPCRequest, cb);\n }\n return this._promiseHandle(req as JRPCRequest);\n }\n\n /**\n * Returns this engine as a middleware function that can be pushed to other\n * engines.\n *\n * @returns This engine as a middleware function.\n */\n asMiddleware(): JRPCMiddleware {\n return async (req, res, next, end) => {\n try {\n const [middlewareError, isComplete, returnHandlers] = await JRPCEngine._runAllMiddleware(req, res, this._middleware);\n\n if (isComplete) {\n await JRPCEngine._runReturnHandlers(returnHandlers);\n return end(middlewareError as Error);\n }\n\n return next(async (handlerCallback) => {\n try {\n await JRPCEngine._runReturnHandlers(returnHandlers);\n } catch (error) {\n return handlerCallback(error);\n }\n return handlerCallback();\n });\n } catch (error) {\n return end(error);\n }\n };\n }\n\n /**\n * Like _handle, but for batch requests.\n */\n private _handleBatch(reqs: JRPCRequest[]): Promise[]>;\n\n /**\n * Like _handle, but for batch requests.\n */\n private _handleBatch(reqs: JRPCRequest[], cb: (error: unknown, responses?: JRPCResponse[]) => void): Promise;\n\n private async _handleBatch(\n reqs: JRPCRequest[],\n cb?: (error: unknown, responses?: JRPCResponse[]) => void\n ): Promise[] | void> {\n // The order here is important\n try {\n // 2. Wait for all requests to finish, or throw on some kind of fatal\n // error\n const responses = await Promise.all(\n // 1. Begin executing each request in the order received\n reqs.map(this._promiseHandle.bind(this))\n );\n\n // 3. Return batch response\n if (cb) {\n return cb(null, responses);\n }\n return responses;\n } catch (error) {\n if (cb) {\n return cb(error);\n }\n\n throw error;\n }\n }\n\n /**\n * A promise-wrapped _handle.\n */\n private _promiseHandle(req: JRPCRequest): Promise> {\n return new Promise((resolve) => {\n this._handle(req, (_err, res) => {\n // There will always be a response, and it will always have any error\n // that is caught and propagated.\n resolve(res);\n });\n });\n }\n\n /**\n * Ensures that the request object is valid, processes it, and passes any\n * error and the response object to the given callback.\n *\n * Does not reject.\n */\n private async _handle(callerReq: JRPCRequest, cb: (error: unknown, response: JRPCResponse) => void): Promise {\n if (!callerReq || Array.isArray(callerReq) || typeof callerReq !== \"object\") {\n const error = new SerializableError({ code: -32603, message: \"request must be plain object\" });\n return cb(error, { id: undefined, jsonrpc: \"2.0\", error });\n }\n\n if (typeof callerReq.method !== \"string\") {\n const error = new SerializableError({ code: -32603, message: \"method must be string\" });\n return cb(error, { id: callerReq.id, jsonrpc: \"2.0\", error });\n }\n\n const req: JRPCRequest = { ...callerReq };\n const res: JRPCResponse = {\n id: req.id,\n jsonrpc: req.jsonrpc,\n };\n let error: Error = null;\n\n try {\n await this._processRequest(req, res);\n } catch (_error) {\n // A request handler error, a re-thrown middleware error, or something\n // unexpected.\n error = _error;\n }\n\n if (error) {\n // Ensure no result is present on an errored response\n delete res.result;\n if (!res.error) {\n res.error = serializeError(error);\n }\n }\n\n return cb(error, res as JRPCResponse);\n }\n\n /**\n * For the given request and response, runs all middleware and their return\n * handlers, if any, and ensures that internal request processing semantics\n * are satisfied.\n */\n private async _processRequest(req: JRPCRequest, res: JRPCResponse): Promise {\n const [error, isComplete, returnHandlers] = await JRPCEngine._runAllMiddleware(req, res, this._middleware);\n\n // Throw if \"end\" was not called, or if the response has neither a result\n // nor an error.\n JRPCEngine._checkForCompletion(req, res, isComplete);\n\n // The return handlers should run even if an error was encountered during\n // middleware processing.\n await JRPCEngine._runReturnHandlers(returnHandlers);\n\n // Now we re-throw the middleware processing error, if any, to catch it\n // further up the call chain.\n if (error) {\n throw error;\n }\n }\n}\n\nexport function mergeMiddleware(middlewareStack: JRPCMiddleware[]): JRPCMiddleware {\n const engine = new JRPCEngine();\n middlewareStack.forEach((middleware) => engine.push(middleware));\n return engine.asMiddleware();\n}\n\nexport interface EngineStreamOptions {\n engine: JRPCEngine;\n}\n\nexport function createEngineStream(opts: EngineStreamOptions): Duplex {\n if (!opts || !opts.engine) {\n throw new Error(\"Missing engine parameter!\");\n }\n\n const { engine } = opts;\n // eslint-disable-next-line prefer-const\n let stream: Duplex;\n\n function read() {\n return undefined;\n }\n\n function write(req: JRPCRequest, _encoding: unknown, cb: (error?: Error | null) => void) {\n engine.handle(req, (_err, res) => {\n stream.push(res);\n });\n cb();\n }\n\n stream = new Duplex({ objectMode: true, read, write });\n\n // forward notifications\n if (engine.on) {\n engine.on(\"notification\", (message) => {\n stream.push(message);\n });\n }\n return stream;\n}\n","import { BufferEncoding } from \"@toruslabs/openlogin-utils\";\nimport { Duplex } from \"readable-stream\";\n\nexport default class Substream extends Duplex {\n private readonly _parent: any;\n\n private readonly _name: string;\n\n constructor({ parent, name }: { parent: any; name: string }) {\n super({ objectMode: true });\n this._parent = parent;\n this._name = name;\n }\n\n /**\n * Explicitly sets read operations to a no-op.\n */\n _read(): void {\n return undefined;\n }\n\n /**\n * Called when data should be written to this writable stream.\n *\n * @param chunk - Arbitrary object to write\n * @param encoding - Encoding to use when writing payload\n * @param callback - Called when writing is complete or an error occurs\n */\n _write(chunk: unknown, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void {\n this._parent.push({\n name: this._name,\n data: chunk,\n });\n callback();\n }\n}\n","import { BufferEncoding } from \"@toruslabs/openlogin-utils\";\nimport eos from \"end-of-stream\";\nimport once from \"once\";\nimport pump from \"pump\";\nimport { Duplex } from \"readable-stream\";\nimport type { Readable, Writable } from \"stream\";\n\nimport Substream from \"./substream\";\n\nexport const IGNORE_SUBSTREAM = Symbol(\"IGNORE_SUBSTREAM\");\n\nexport type Stream = Readable | Writable;\n\ninterface Chunk {\n name: string;\n data: unknown;\n}\n\nexport class ObjectMultiplex extends Duplex {\n public _substreams: Record;\n\n getStream: (name: string) => Substream | symbol;\n\n constructor(opts: Record = {}) {\n super({\n ...opts,\n objectMode: true,\n });\n this._substreams = {};\n }\n\n createStream(name: string): Substream {\n // validate name\n if (!name) {\n throw new Error(\"ObjectMultiplex - name must not be empty\");\n }\n\n if (this._substreams[name]) {\n throw new Error(`ObjectMultiplex - Substream for name \"${name}\" already exists`);\n }\n\n // create substream\n const substream = new Substream({ parent: this, name });\n this._substreams[name] = substream;\n\n // listen for parent stream to end\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n anyStreamEnd(this, (_error?: Error | null) => substream.destroy(_error || undefined));\n\n return substream;\n }\n\n // ignore streams (dont display orphaned data warning)\n ignoreStream(name: string): void {\n // validate name\n if (!name) {\n throw new Error(\"ObjectMultiplex - name must not be empty\");\n }\n if (this._substreams[name]) {\n throw new Error(`ObjectMultiplex - Substream for name \"${name}\" already exists`);\n }\n // set\n this._substreams[name] = IGNORE_SUBSTREAM;\n }\n\n _read(): void {\n return undefined;\n }\n\n _write(chunk: Chunk, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void {\n const { name, data } = chunk;\n\n if (!name) {\n window.console.warn(`ObjectMultiplex - malformed chunk without name \"${chunk}\"`);\n return callback();\n }\n\n // get corresponding substream\n const substream = this._substreams[name];\n if (!substream) {\n window.console.warn(`ObjectMultiplex - orphaned data for stream \"${name}\"`);\n return callback();\n }\n\n // push data into substream\n if (substream !== IGNORE_SUBSTREAM) {\n substream.push(data);\n }\n\n return callback();\n }\n}\n\n// util\nfunction anyStreamEnd(stream: ObjectMultiplex, _cb: (error?: Error | null) => void) {\n const cb = once(_cb);\n eos(stream as unknown as Stream, { readable: false }, cb);\n eos(stream as unknown as Stream, { writable: false }, cb);\n}\n\nexport function setupMultiplex(stream: Duplex): ObjectMultiplex {\n const mux = new ObjectMultiplex();\n mux.getStream = function streamHelper(name: string) {\n if (this._substreams[name]) {\n return this._substreams[name];\n }\n return this.createStream(name);\n };\n\n pump(stream as unknown as Stream, mux as unknown as Stream, stream as unknown as Stream, (err) => {\n if (err) window.console.error(err);\n });\n return mux;\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = Line;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _excluded = [\"from\", \"to\", \"fill\", \"className\", \"innerRef\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction Line(_ref) {\n var _ref$from = _ref.from,\n from = _ref$from === void 0 ? {\n x: 0,\n y: 0\n } : _ref$from,\n _ref$to = _ref.to,\n to = _ref$to === void 0 ? {\n x: 1,\n y: 1\n } : _ref$to,\n _ref$fill = _ref.fill,\n fill = _ref$fill === void 0 ? 'transparent' : _ref$fill,\n className = _ref.className,\n innerRef = _ref.innerRef,\n restProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var isRectilinear = from.x === to.x || from.y === to.y;\n return /*#__PURE__*/_react.default.createElement(\"line\", _extends({\n ref: innerRef,\n className: (0, _classnames.default)('visx-line', className),\n x1: from.x,\n y1: from.y,\n x2: to.x,\n y2: to.y,\n fill: fill,\n shapeRendering: isRectilinear ? 'crispEdges' : 'auto'\n }, restProps));\n}","var __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FBAV\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n var versionParts = match[1] && match[1].split(/[._]/).slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArrays(versionParts, createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length));\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n",null,null,null,null,null,null,null,null,"// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","export const WALLETCONNECT_LOGO_SVG_URL = `data:image/svg+xml,%3Csvg height='185' viewBox='0 0 300 185' width='300' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m61.4385429 36.2562612c48.9112241-47.8881663 128.2119871-47.8881663 177.1232091 0l5.886545 5.7634174c2.445561 2.3944081 2.445561 6.2765112 0 8.6709204l-20.136695 19.715503c-1.222781 1.1972051-3.2053 1.1972051-4.428081 0l-8.100584-7.9311479c-34.121692-33.4079817-89.443886-33.4079817-123.5655788 0l-8.6750562 8.4936051c-1.2227816 1.1972041-3.205301 1.1972041-4.4280806 0l-20.1366949-19.7155031c-2.4455612-2.3944092-2.4455612-6.2765122 0-8.6709204zm218.7677961 40.7737449 17.921697 17.546897c2.445549 2.3943969 2.445563 6.2764769.000031 8.6708899l-80.810171 79.121134c-2.445544 2.394426-6.410582 2.394453-8.85616.000062-.00001-.00001-.000022-.000022-.000032-.000032l-57.354143-56.154572c-.61139-.598602-1.60265-.598602-2.21404 0-.000004.000004-.000007.000008-.000011.000011l-57.3529212 56.154531c-2.4455368 2.394432-6.4105755 2.394472-8.8561612.000087-.0000143-.000014-.0000296-.000028-.0000449-.000044l-80.81241943-79.122185c-2.44556021-2.394408-2.44556021-6.2765115 0-8.6709197l17.92172963-17.5468673c2.4455602-2.3944082 6.4105989-2.3944082 8.8561602 0l57.3549775 56.155357c.6113908.598602 1.602649.598602 2.2140398 0 .0000092-.000009.0000174-.000017.0000265-.000024l57.3521031-56.155333c2.445505-2.3944633 6.410544-2.3945531 8.856161-.0002.000034.0000336.000068.0000673.000101.000101l57.354902 56.155432c.61139.598601 1.60265.598601 2.21404 0l57.353975-56.1543249c2.445561-2.3944092 6.410599-2.3944092 8.85616 0z' fill='%233b99fc'/%3E%3C/svg%3E`;","export const WALLETCONNECT_HEADER_TEXT = \"WalletConnect\";\n\nexport const ANIMATION_DURATION = 300;\nexport const DEFAULT_BUTTON_COLOR = \"rgb(64, 153, 255)\";\n\nexport const WALLETCONNECT_WRAPPER_ID = \"walletconnect-wrapper\";\nexport const WALLETCONNECT_STYLE_ID = \"walletconnect-style-sheet\";\nexport const WALLETCONNECT_MODAL_ID = \"walletconnect-qrcode-modal\";\nexport const WALLETCONNECT_CLOSE_BUTTON_ID = \"walletconnect-qrcode-close\";\nexport const WALLETCONNECT_CTA_TEXT_ID = \"walletconnect-qrcode-text\";\nexport const WALLETCONNECT_CONNECT_BUTTON_ID = \"walletconnect-connect-button\";\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\n\nimport { WALLETCONNECT_LOGO_SVG_URL } from \"../assets/logo\";\nimport { WALLETCONNECT_HEADER_TEXT, WALLETCONNECT_CLOSE_BUTTON_ID } from \"../constants\";\n\ninterface HeaderProps {\n onClose: any;\n}\n\nfunction Header(props: HeaderProps) {\n return (\n
\n \n

{WALLETCONNECT_HEADER_TEXT}

\n
\n
\n
\n
\n
\n
\n
\n );\n}\n\nexport default Header;\n","import * as React from \"react\";\n\nimport { WALLETCONNECT_CONNECT_BUTTON_ID } from \"../constants\";\n\ninterface ConnectButtonProps {\n name: string;\n color: string;\n href: string;\n onClick: (event: React.MouseEvent) => void;\n}\n\nfunction ConnectButton(props: ConnectButtonProps) {\n return (\n \n {props.name}\n
\n );\n}\n\nexport default ConnectButton;\n","import * as React from \"react\";\nimport { CARET_SVG_URL } from \"../assets/caret\";\n\ninterface WalletButtonProps {\n color: string;\n name: string;\n logo: string;\n href: string;\n onClick: (event: React.MouseEvent) => void;\n}\n\nfunction WalletButton(props: WalletButtonProps) {\n const { color, href, name, logo, onClick } = props;\n return (\n \n

{name}

\n
\n
\n \n \n \n );\n}\n\nexport default WalletButton;\n","export const CARET_SVG_URL = `data:image/svg+xml,%3Csvg fill='none' height='18' viewBox='0 0 8 18' width='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath clip-rule='evenodd' d='m.586301.213898c-.435947.33907-.5144813.967342-.175411 1.403292l4.87831 6.27212c.28087.36111.28087.86677 0 1.22788l-4.878311 6.27211c-.33907.436-.260536 1.0642.175412 1.4033.435949.3391 1.064219.2605 1.403289-.1754l4.87832-6.2721c.84259-1.08336.84259-2.60034 0-3.68367l-4.87832-6.27212c-.33907-.4359474-.96734-.514482-1.403289-.175412z' fill='%233c4252' fill-rule='evenodd'/%3E%3C/svg%3E`;","import * as React from \"react\";\n\ninterface WalletIconProps {\n color: string;\n logo: string;\n href: string;\n name: string;\n onClick: (event: React.MouseEvent) => void;\n}\n\nfunction WalletIcon(props: WalletIconProps) {\n const { color, href, name, logo, onClick } = props;\n const fontSize = window.innerWidth < 768 ? `${name.length > 8 ? 2.5 : 2.7}vw` : \"inherit\";\n return (\n \n \n
\n {name}\n
\n \n );\n}\n\nexport default WalletIcon;\n","import * as React from \"react\";\nimport { IMobileRegistryEntry, IQRCodeModalOptions } from \"@walletconnect/types\";\nimport { isAndroid, formatIOSMobile, saveMobileLinkInfo } from \"@walletconnect/browser-utils\";\n\nimport { DEFAULT_BUTTON_COLOR, WALLETCONNECT_CTA_TEXT_ID } from \"../constants\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport ConnectButton from \"./ConnectButton\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport WalletButton from \"./WalletButton\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport WalletIcon from \"./WalletIcon\";\nimport { TextMap } from \"../types\";\n\ninterface LinkDisplayProps {\n mobile: boolean;\n text: TextMap;\n uri: string;\n qrcodeModalOptions?: IQRCodeModalOptions;\n links: IMobileRegistryEntry[];\n errorMessage: string;\n}\n\nconst GRID_MIN_COUNT = 5;\nconst LINKS_PER_PAGE = 12;\n\nfunction LinkDisplay(props: LinkDisplayProps) {\n const android = isAndroid();\n const [input, setInput] = React.useState(\"\");\n const [filter, setFilter] = React.useState(\"\");\n const [page, setPage] = React.useState(1);\n const links = filter\n ? props.links.filter(link => link.name.toLowerCase().includes(filter.toLowerCase()))\n : props.links;\n const errorMessage = props.errorMessage;\n const grid = filter || links.length > GRID_MIN_COUNT;\n const pages = Math.ceil(links.length / LINKS_PER_PAGE);\n const range = [(page - 1) * LINKS_PER_PAGE + 1, page * LINKS_PER_PAGE];\n const pageLinks = links.length\n ? links.filter((_, index) => index + 1 >= range[0] && index + 1 <= range[1])\n : [];\n const hasPaging = !!(!android && pages > 1);\n let filterTimeout: any = undefined;\n function handleInput(e) {\n setInput(e.target.value);\n clearTimeout(filterTimeout);\n if (e.target.value) {\n filterTimeout = setTimeout(() => {\n setFilter(e.target.value);\n setPage(1);\n }, 1000);\n } else {\n setInput(\"\");\n setFilter(\"\");\n setPage(1);\n }\n }\n\n return (\n
\n

\n {android ? props.text.connect_mobile_wallet : props.text.choose_preferred_wallet}\n

\n {!android && (\n \n )}\n \n {!android ? (\n pageLinks.length ? (\n pageLinks.map((entry: IMobileRegistryEntry) => {\n const { color, name, shortName, logo } = entry;\n const href = formatIOSMobile(props.uri, entry);\n const handleClickIOS = React.useCallback(() => {\n saveMobileLinkInfo({\n name,\n href,\n });\n }, [pageLinks]);\n return !grid ? (\n \n ) : (\n \n );\n })\n ) : (\n <>\n

\n {errorMessage.length\n ? props.errorMessage\n : !!props.links.length && !links.length\n ? props.text.no_wallets_found\n : props.text.loading}\n

\n \n )\n ) : (\n {\n saveMobileLinkInfo({\n name: \"Unknown\",\n href: props.uri,\n });\n }, [])}\n />\n )}\n
\n {hasPaging && (\n
\n {Array(pages)\n .fill(0)\n .map((_, index) => {\n const pageNumber = index + 1;\n const selected = page === pageNumber;\n return (\n setPage(pageNumber)}\n >\n {pageNumber}\n \n );\n })}\n
\n )}\n \n );\n}\n\nexport default LinkDisplay;\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\n\ninterface NotificationProps {\n message: string;\n}\n\nfunction Notification(props: NotificationProps) {\n const show = !!props.message.trim();\n return (\n
\n {props.message}\n
\n );\n}\n\nexport default Notification;\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\nimport QRCode from \"qrcode\";\nimport copy from \"copy-to-clipboard\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport Notification from \"./Notification\";\n\nimport { WALLETCONNECT_CTA_TEXT_ID } from \"../constants\";\nimport { TextMap } from \"../types\";\n\nasync function formatQRCodeImage(data: string) {\n let result = \"\";\n const dataString = await QRCode.toString(data, { margin: 0, type: \"svg\" });\n if (typeof dataString === \"string\") {\n result = dataString.replace(\" {\n (async () => {\n setSvg(await formatQRCodeImage(props.uri));\n })();\n }, []);\n\n const copyToClipboard = () => {\n const success = copy(props.uri);\n if (success) {\n setNotification(props.text.copied_to_clipboard);\n setInterval(() => setNotification(\"\"), 1200);\n } else {\n setNotification(\"Error\");\n setInterval(() => setNotification(\"\"), 1200);\n }\n };\n\n return (\n
\n

\n {props.text.scan_qrcode_with_wallet}\n

\n
\n \n \n
\n );\n}\n\nexport default QRCodeDisplay;\n","import * as React from \"react\";\nimport {\n IMobileRegistryEntry,\n IQRCodeModalOptions,\n IAppRegistry,\n IMobileLinkInfo,\n} from \"@walletconnect/types\";\nimport {\n isMobile,\n isAndroid,\n formatIOSMobile,\n saveMobileLinkInfo,\n getMobileLinkRegistry,\n getWalletRegistryUrl,\n formatMobileRegistry,\n} from \"@walletconnect/browser-utils\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport Header from \"./Header\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport LinkDisplay from \"./LinkDisplay\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport QRCodeDisplay from \"./QRCodeDisplay\";\n\nimport { WALLETCONNECT_MODAL_ID } from \"../constants\";\nimport { TextMap } from \"../types\";\n\ninterface ModalProps {\n text: TextMap;\n uri: string;\n onClose: any;\n qrcodeModalOptions?: IQRCodeModalOptions;\n}\n\nfunction Modal(props: ModalProps) {\n const android = isAndroid();\n const mobile = isMobile();\n\n const whitelist = mobile\n ? props.qrcodeModalOptions && props.qrcodeModalOptions.mobileLinks\n ? props.qrcodeModalOptions.mobileLinks\n : undefined\n : props.qrcodeModalOptions && props.qrcodeModalOptions.desktopLinks\n ? props.qrcodeModalOptions.desktopLinks\n : undefined;\n const [loading, setLoading] = React.useState(false);\n const [fetched, setFetched] = React.useState(false);\n const [displayQRCode, setDisplayQRCode] = React.useState(!mobile);\n const displayProps = {\n mobile,\n text: props.text,\n uri: props.uri,\n qrcodeModalOptions: props.qrcodeModalOptions,\n };\n\n const [singleLinkHref, setSingleLinkHref] = React.useState(\"\");\n const [hasSingleLink, setHasSingleLink] = React.useState(false);\n const [links, setLinks] = React.useState([]);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n\n const getLinksIfNeeded = () => {\n if (fetched || loading || (whitelist && !whitelist.length) || links.length > 0) {\n return;\n }\n\n React.useEffect(() => {\n const initLinks = async () => {\n if (android) return;\n setLoading(true);\n try {\n const url =\n props.qrcodeModalOptions && props.qrcodeModalOptions.registryUrl\n ? props.qrcodeModalOptions.registryUrl\n : getWalletRegistryUrl();\n const registryResponse = await fetch(url)\n const registry = (await registryResponse.json()).listings as IAppRegistry;\n const platform = mobile ? \"mobile\" : \"desktop\";\n const _links = getMobileLinkRegistry(formatMobileRegistry(registry, platform), whitelist);\n setLoading(false);\n setFetched(true);\n setErrorMessage(!_links.length ? props.text.no_supported_wallets : \"\");\n setLinks(_links);\n const hasSingleLink = _links.length === 1;\n if (hasSingleLink) {\n setSingleLinkHref(formatIOSMobile(props.uri, _links[0]));\n setDisplayQRCode(true);\n }\n setHasSingleLink(hasSingleLink);\n } catch (e) {\n setLoading(false);\n setFetched(true);\n setErrorMessage(props.text.something_went_wrong);\n console.error(e); // eslint-disable-line no-console\n }\n };\n initLinks();\n });\n };\n\n getLinksIfNeeded();\n\n const rightSelected = mobile ? displayQRCode : !displayQRCode;\n return (\n
\n
\n
\n {hasSingleLink && displayQRCode ? (\n
\n saveMobileLinkInfo({ name: links[0].name, href: singleLinkHref })}\n href={singleLinkHref}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {props.text.connect_with + \" \" + (hasSingleLink ? links[0].name : \"\") + \" ›\"}\n \n
\n ) : android || loading || (!loading && links.length) ? (\n \n \n ) : null}\n\n
\n {displayQRCode || (!android && !loading && !links.length) ? (\n \n ) : (\n \n )}\n
\n
\n
\n );\n}\n\nexport default Modal;\n","import { TextMap } from \"../types\";\n\nconst de: TextMap = {\n choose_preferred_wallet: \"Wähle bevorzugte Wallet\",\n connect_mobile_wallet: \"Verbinde mit Mobile Wallet\",\n scan_qrcode_with_wallet: \"Scanne den QR-code mit einer WalletConnect kompatiblen Wallet\",\n connect: \"Verbinden\",\n qrcode: \"QR-Code\",\n mobile: \"Mobile\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"In die Zwischenablage kopieren\",\n copied_to_clipboard: \"In die Zwischenablage kopiert!\",\n connect_with: \"Verbinden mit Hilfe von\",\n loading: \"Laden...\",\n something_went_wrong: \"Etwas ist schief gelaufen\",\n no_supported_wallets: \"Es gibt noch keine unterstützten Wallet\",\n no_wallets_found: \"keine Wallet gefunden\",\n};\n\nexport default de;\n","import { TextMap } from \"../types\";\n\nimport de from \"./de\";\nimport en from \"./en\";\nimport es from \"./es\";\nimport fr from \"./fr\";\nimport ko from \"./ko\";\nimport pt from \"./pt\";\nimport zh from \"./zh\";\nimport fa from \"./fa\";\n\nconst languages: { [lang: string]: TextMap } = { de, en, es, fr, ko, pt, zh, fa };\n\nexport default languages;\n","import { TextMap } from \"../types\";\n\nconst en: TextMap = {\n choose_preferred_wallet: \"Choose your preferred wallet\",\n connect_mobile_wallet: \"Connect to Mobile Wallet\",\n scan_qrcode_with_wallet: \"Scan QR code with a WalletConnect-compatible wallet\",\n connect: \"Connect\",\n qrcode: \"QR Code\",\n mobile: \"Mobile\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copy to clipboard\",\n copied_to_clipboard: \"Copied to clipboard!\",\n connect_with: \"Connect with\",\n loading: \"Loading...\",\n something_went_wrong: \"Something went wrong\",\n no_supported_wallets: \"There are no supported wallets yet\",\n no_wallets_found: \"No wallets found\",\n};\n\nexport default en;\n","import { TextMap } from \"../types\";\n\nconst es: TextMap = {\n choose_preferred_wallet: \"Elige tu billetera preferida\",\n connect_mobile_wallet: \"Conectar a billetera móvil\",\n scan_qrcode_with_wallet: \"Escanea el código QR con una billetera compatible con WalletConnect\",\n connect: \"Conectar\",\n qrcode: \"Código QR\",\n mobile: \"Móvil\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copiar\",\n copied_to_clipboard: \"Copiado!\",\n connect_with: \"Conectar mediante\",\n loading: \"Cargando...\",\n something_went_wrong: \"Algo salió mal\",\n no_supported_wallets: \"Todavía no hay billeteras compatibles\",\n no_wallets_found: \"No se encontraron billeteras\",\n};\n\nexport default es;\n","import { TextMap } from \"../types\";\n\nconst fr: TextMap = {\n choose_preferred_wallet: \"Choisissez votre portefeuille préféré\",\n connect_mobile_wallet: \"Se connecter au portefeuille mobile\",\n scan_qrcode_with_wallet: \"Scannez le QR code avec un portefeuille compatible WalletConnect\",\n connect: \"Se connecter\",\n qrcode: \"QR Code\",\n mobile: \"Mobile\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copier\",\n copied_to_clipboard: \"Copié!\",\n connect_with: \"Connectez-vous à l'aide de\",\n loading: \"Chargement...\",\n something_went_wrong: \"Quelque chose a mal tourné\",\n no_supported_wallets: \"Il n'y a pas encore de portefeuilles pris en charge\",\n no_wallets_found: \"Aucun portefeuille trouvé\",\n};\n\nexport default fr;\n","import { TextMap } from \"../types\";\n\nconst ko: TextMap = {\n choose_preferred_wallet: \"원하는 지갑을 선택하세요\",\n connect_mobile_wallet: \"모바일 지갑과 연결\",\n scan_qrcode_with_wallet: \"WalletConnect 지원 지갑에서 QR코드를 스캔하세요\",\n connect: \"연결\",\n qrcode: \"QR 코드\",\n mobile: \"모바일\",\n desktop: \"데스크탑\",\n copy_to_clipboard: \"클립보드에 복사\",\n copied_to_clipboard: \"클립보드에 복사되었습니다!\",\n connect_with: \"와 연결하다\",\n loading: \"로드 중...\",\n something_went_wrong: \"문제가 발생했습니다.\",\n no_supported_wallets: \"아직 지원되는 지갑이 없습니다\",\n no_wallets_found: \"지갑을 찾을 수 없습니다\",\n};\n\nexport default ko;\n","import { TextMap } from \"../types\";\n\nconst pt: TextMap = {\n choose_preferred_wallet: \"Escolha sua carteira preferida\",\n connect_mobile_wallet: \"Conectar-se à carteira móvel\",\n scan_qrcode_with_wallet: \"Ler o código QR com uma carteira compatível com WalletConnect\",\n connect: \"Conectar\",\n qrcode: \"Código QR\",\n mobile: \"Móvel\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copiar\",\n copied_to_clipboard: \"Copiado!\",\n connect_with: \"Ligar por meio de\",\n loading: \"Carregamento...\",\n something_went_wrong: \"Algo correu mal\",\n no_supported_wallets: \"Ainda não há carteiras suportadas\",\n no_wallets_found: \"Nenhuma carteira encontrada\",\n};\n\nexport default pt;\n","import { TextMap } from \"../types\";\n\nconst zh: TextMap = {\n choose_preferred_wallet: \"选择你的钱包\",\n connect_mobile_wallet: \"连接至移动端钱包\",\n scan_qrcode_with_wallet: \"使用兼容 WalletConnect 的钱包扫描二维码\",\n connect: \"连接\",\n qrcode: \"二维码\",\n mobile: \"移动\",\n desktop: \"桌面\",\n copy_to_clipboard: \"复制到剪贴板\",\n copied_to_clipboard: \"复制到剪贴板成功!\",\n connect_with: \"通过以下方式连接\",\n loading: \"正在加载...\",\n something_went_wrong: \"出了问题\",\n no_supported_wallets: \"目前还没有支持的钱包\",\n no_wallets_found: \"没有找到钱包\",\n};\n\nexport default zh;\n","import { TextMap } from \"../types\";\n\nconst fa: TextMap = {\n choose_preferred_wallet: \"کیف پول مورد نظر خود را انتخاب کنید\",\n connect_mobile_wallet: \"به کیف پول موبایل وصل شوید\",\n scan_qrcode_with_wallet: \"کد QR را با یک کیف پول سازگار با WalletConnect اسکن کنید\",\n connect: \"اتصال\",\n qrcode: \"کد QR\",\n mobile: \"سیار\",\n desktop: \"دسکتاپ\",\n copy_to_clipboard: \"کپی به کلیپ بورد\",\n copied_to_clipboard: \"در کلیپ بورد کپی شد!\",\n connect_with: \"ارتباط با\",\n loading: \"...بارگذاری\",\n something_went_wrong: \"مشکلی پیش آمد\",\n no_supported_wallets: \"هنوز هیچ کیف پول پشتیبانی شده ای وجود ندارد\",\n no_wallets_found: \"هیچ کیف پولی پیدا نشد\",\n};\n\nexport default fa;\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\n// @ts-ignore\nimport * as ReactDOM from \"react-dom\";\nimport { getDocumentOrThrow, getNavigatorOrThrow } from \"@walletconnect/browser-utils\";\n\nimport { WALLETCONNECT_STYLE_SHEET } from \"./assets/style\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport Modal from \"./components/Modal\";\nimport Languages from \"./languages\";\nimport {\n ANIMATION_DURATION,\n WALLETCONNECT_WRAPPER_ID,\n WALLETCONNECT_MODAL_ID,\n WALLETCONNECT_STYLE_ID,\n} from \"./constants\";\nimport { IQRCodeModalOptions } from \"@walletconnect/types\";\nimport { TextMap } from \"./types\";\n\nfunction injectStyleSheet() {\n const doc = getDocumentOrThrow();\n const prev = doc.getElementById(WALLETCONNECT_STYLE_ID);\n if (prev) {\n doc.head.removeChild(prev);\n }\n const style = doc.createElement(\"style\");\n style.setAttribute(\"id\", WALLETCONNECT_STYLE_ID);\n style.innerText = WALLETCONNECT_STYLE_SHEET;\n doc.head.appendChild(style);\n}\n\nfunction renderWrapper(): HTMLDivElement {\n const doc = getDocumentOrThrow();\n const wrapper = doc.createElement(\"div\");\n wrapper.setAttribute(\"id\", WALLETCONNECT_WRAPPER_ID);\n doc.body.appendChild(wrapper);\n return wrapper;\n}\n\nfunction triggerCloseAnimation(): void {\n const doc = getDocumentOrThrow();\n const modal = doc.getElementById(WALLETCONNECT_MODAL_ID);\n if (modal) {\n modal.className = modal.className.replace(\"fadeIn\", \"fadeOut\");\n setTimeout(() => {\n const wrapper = doc.getElementById(WALLETCONNECT_WRAPPER_ID);\n if (wrapper) {\n doc.body.removeChild(wrapper);\n }\n }, ANIMATION_DURATION);\n }\n}\n\nfunction getWrappedCallback(cb: any): any {\n return () => {\n triggerCloseAnimation();\n if (cb) {\n cb();\n }\n };\n}\n\nfunction getText(): TextMap {\n const lang = getNavigatorOrThrow().language.split(\"-\")[0] || \"en\";\n return Languages[lang] || Languages[\"en\"];\n}\n\nexport function open(uri: string, cb: any, qrcodeModalOptions?: IQRCodeModalOptions) {\n injectStyleSheet();\n const wrapper = renderWrapper();\n ReactDOM.render(\n ,\n wrapper,\n );\n}\n\nexport function close() {\n triggerCloseAnimation();\n}\n","export const WALLETCONNECT_STYLE_SHEET = `:root {\n --animation-duration: 300ms;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n.animated {\n animation-duration: var(--animation-duration);\n animation-fill-mode: both;\n}\n\n.fadeIn {\n animation-name: fadeIn;\n}\n\n.fadeOut {\n animation-name: fadeOut;\n}\n\n#walletconnect-wrapper {\n -webkit-user-select: none;\n align-items: center;\n display: flex;\n height: 100%;\n justify-content: center;\n left: 0;\n pointer-events: none;\n position: fixed;\n top: 0;\n user-select: none;\n width: 100%;\n z-index: 99999999999999;\n}\n\n.walletconnect-modal__headerLogo {\n height: 21px;\n}\n\n.walletconnect-modal__header p {\n color: #ffffff;\n font-size: 20px;\n font-weight: 600;\n margin: 0;\n align-items: flex-start;\n display: flex;\n flex: 1;\n margin-left: 5px;\n}\n\n.walletconnect-modal__close__wrapper {\n position: absolute;\n top: 0px;\n right: 0px;\n z-index: 10000;\n background: white;\n border-radius: 26px;\n padding: 6px;\n box-sizing: border-box;\n width: 26px;\n height: 26px;\n cursor: pointer;\n}\n\n.walletconnect-modal__close__icon {\n position: relative;\n top: 7px;\n right: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: rotate(45deg);\n}\n\n.walletconnect-modal__close__line1 {\n position: absolute;\n width: 100%;\n border: 1px solid rgb(48, 52, 59);\n}\n\n.walletconnect-modal__close__line2 {\n position: absolute;\n width: 100%;\n border: 1px solid rgb(48, 52, 59);\n transform: rotate(90deg);\n}\n\n.walletconnect-qrcode__base {\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n background: rgba(37, 41, 46, 0.95);\n height: 100%;\n left: 0;\n pointer-events: auto;\n position: fixed;\n top: 0;\n transition: 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n width: 100%;\n will-change: opacity;\n padding: 40px;\n box-sizing: border-box;\n}\n\n.walletconnect-qrcode__text {\n color: rgba(60, 66, 82, 0.6);\n font-size: 16px;\n font-weight: 600;\n letter-spacing: 0;\n line-height: 1.1875em;\n margin: 10px 0 20px 0;\n text-align: center;\n width: 100%;\n}\n\n@media only screen and (max-width: 768px) {\n .walletconnect-qrcode__text {\n font-size: 4vw;\n }\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-qrcode__text {\n font-size: 14px;\n }\n}\n\n.walletconnect-qrcode__image {\n width: calc(100% - 30px);\n box-sizing: border-box;\n cursor: none;\n margin: 0 auto;\n}\n\n.walletconnect-qrcode__notification {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n font-size: 16px;\n padding: 16px 20px;\n border-radius: 16px;\n text-align: center;\n transition: all 0.1s ease-in-out;\n background: white;\n color: black;\n margin-bottom: -60px;\n opacity: 0;\n}\n\n.walletconnect-qrcode__notification.notification__show {\n opacity: 1;\n}\n\n@media only screen and (max-width: 768px) {\n .walletconnect-modal__header {\n height: 130px;\n }\n .walletconnect-modal__base {\n overflow: auto;\n }\n}\n\n@media only screen and (min-device-width: 415px) and (max-width: 768px) {\n #content {\n max-width: 768px;\n box-sizing: border-box;\n }\n}\n\n@media only screen and (min-width: 375px) and (max-width: 415px) {\n #content {\n max-width: 414px;\n box-sizing: border-box;\n }\n}\n\n@media only screen and (min-width: 320px) and (max-width: 375px) {\n #content {\n max-width: 375px;\n box-sizing: border-box;\n }\n}\n\n@media only screen and (max-width: 320px) {\n #content {\n max-width: 320px;\n box-sizing: border-box;\n }\n}\n\n.walletconnect-modal__base {\n -webkit-font-smoothing: antialiased;\n background: #ffffff;\n border-radius: 24px;\n box-shadow: 0 10px 50px 5px rgba(0, 0, 0, 0.4);\n font-family: ui-rounded, \"SF Pro Rounded\", \"SF Pro Text\", medium-content-sans-serif-font,\n -apple-system, BlinkMacSystemFont, ui-sans-serif, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell,\n \"Open Sans\", \"Helvetica Neue\", sans-serif;\n margin-top: 41px;\n padding: 24px 24px 22px;\n pointer-events: auto;\n position: relative;\n text-align: center;\n transition: 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n will-change: transform;\n overflow: visible;\n transform: translateY(-50%);\n top: 50%;\n max-width: 500px;\n margin: auto;\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-modal__base {\n padding: 24px 12px;\n }\n}\n\n.walletconnect-modal__base .hidden {\n transform: translateY(150%);\n transition: 0.125s cubic-bezier(0.4, 0, 1, 1);\n}\n\n.walletconnect-modal__header {\n align-items: center;\n display: flex;\n height: 26px;\n left: 0;\n justify-content: space-between;\n position: absolute;\n top: -42px;\n width: 100%;\n}\n\n.walletconnect-modal__base .wc-logo {\n align-items: center;\n display: flex;\n height: 26px;\n margin-top: 15px;\n padding-bottom: 15px;\n pointer-events: auto;\n}\n\n.walletconnect-modal__base .wc-logo div {\n background-color: #3399ff;\n height: 21px;\n margin-right: 5px;\n mask-image: url(\"images/wc-logo.svg\") center no-repeat;\n width: 32px;\n}\n\n.walletconnect-modal__base .wc-logo p {\n color: #ffffff;\n font-size: 20px;\n font-weight: 600;\n margin: 0;\n}\n\n.walletconnect-modal__base h2 {\n color: rgba(60, 66, 82, 0.6);\n font-size: 16px;\n font-weight: 600;\n letter-spacing: 0;\n line-height: 1.1875em;\n margin: 0 0 19px 0;\n text-align: center;\n width: 100%;\n}\n\n.walletconnect-modal__base__row {\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n align-items: center;\n border-radius: 20px;\n cursor: pointer;\n display: flex;\n height: 56px;\n justify-content: space-between;\n padding: 0 15px;\n position: relative;\n margin: 0px 0px 8px;\n text-align: left;\n transition: 0.15s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n will-change: transform;\n text-decoration: none;\n}\n\n.walletconnect-modal__base__row:hover {\n background: rgba(60, 66, 82, 0.06);\n}\n\n.walletconnect-modal__base__row:active {\n background: rgba(60, 66, 82, 0.06);\n transform: scale(0.975);\n transition: 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n}\n\n.walletconnect-modal__base__row__h3 {\n color: #25292e;\n font-size: 20px;\n font-weight: 700;\n margin: 0;\n padding-bottom: 3px;\n}\n\n.walletconnect-modal__base__row__right {\n align-items: center;\n display: flex;\n justify-content: center;\n}\n\n.walletconnect-modal__base__row__right__app-icon {\n border-radius: 8px;\n height: 34px;\n margin: 0 11px 2px 0;\n width: 34px;\n background-size: 100%;\n box-shadow: 0 4px 12px 0 rgba(37, 41, 46, 0.25);\n}\n\n.walletconnect-modal__base__row__right__caret {\n height: 18px;\n opacity: 0.3;\n transition: 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n width: 8px;\n will-change: opacity;\n}\n\n.walletconnect-modal__base__row:hover .caret,\n.walletconnect-modal__base__row:active .caret {\n opacity: 0.6;\n}\n\n.walletconnect-modal__mobile__toggle {\n width: 80%;\n display: flex;\n margin: 0 auto;\n position: relative;\n overflow: hidden;\n border-radius: 8px;\n margin-bottom: 18px;\n background: #d4d5d9;\n}\n\n.walletconnect-modal__single_wallet {\n display: flex;\n justify-content: center;\n margin-top: 7px;\n margin-bottom: 18px;\n}\n\n.walletconnect-modal__single_wallet a {\n cursor: pointer;\n color: rgb(64, 153, 255);\n font-size: 21px;\n font-weight: 800;\n text-decoration: none !important;\n margin: 0 auto;\n}\n\n.walletconnect-modal__mobile__toggle_selector {\n width: calc(50% - 8px);\n background: white;\n position: absolute;\n border-radius: 5px;\n height: calc(100% - 8px);\n top: 4px;\n transition: all 0.2s ease-in-out;\n transform: translate3d(4px, 0, 0);\n}\n\n.walletconnect-modal__mobile__toggle.right__selected .walletconnect-modal__mobile__toggle_selector {\n transform: translate3d(calc(100% + 12px), 0, 0);\n}\n\n.walletconnect-modal__mobile__toggle a {\n font-size: 12px;\n width: 50%;\n text-align: center;\n padding: 8px;\n margin: 0;\n font-weight: 600;\n z-index: 1;\n}\n\n.walletconnect-modal__footer {\n display: flex;\n justify-content: center;\n margin-top: 20px;\n}\n\n@media only screen and (max-width: 768px) {\n .walletconnect-modal__footer {\n margin-top: 5vw;\n }\n}\n\n.walletconnect-modal__footer a {\n cursor: pointer;\n color: #898d97;\n font-size: 15px;\n margin: 0 auto;\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-modal__footer a {\n font-size: 14px;\n }\n}\n\n.walletconnect-connect__buttons__wrapper {\n max-height: 44vh;\n}\n\n.walletconnect-connect__buttons__wrapper__android {\n margin: 50% 0;\n}\n\n.walletconnect-connect__buttons__wrapper__wrap {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n margin: 10px 0;\n}\n\n@media only screen and (min-width: 768px) {\n .walletconnect-connect__buttons__wrapper__wrap {\n margin-top: 40px;\n }\n}\n\n.walletconnect-connect__button {\n background-color: rgb(64, 153, 255);\n padding: 12px;\n border-radius: 8px;\n text-decoration: none;\n color: rgb(255, 255, 255);\n font-weight: 500;\n}\n\n.walletconnect-connect__button__icon_anchor {\n cursor: pointer;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n margin: 8px;\n width: 42px;\n justify-self: center;\n flex-direction: column;\n text-decoration: none !important;\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-connect__button__icon_anchor {\n margin: 4px;\n }\n}\n\n.walletconnect-connect__button__icon {\n border-radius: 10px;\n height: 42px;\n margin: 0;\n width: 42px;\n background-size: cover !important;\n box-shadow: 0 4px 12px 0 rgba(37, 41, 46, 0.25);\n}\n\n.walletconnect-connect__button__text {\n color: #424952;\n font-size: 2.7vw;\n text-decoration: none !important;\n padding: 0;\n margin-top: 1.8vw;\n font-weight: 600;\n}\n\n@media only screen and (min-width: 768px) {\n .walletconnect-connect__button__text {\n font-size: 16px;\n margin-top: 12px;\n }\n}\n\n.walletconnect-search__input {\n border: none;\n background: #d4d5d9;\n border-style: none;\n padding: 8px 16px;\n outline: none;\n font-style: normal;\n font-stretch: normal;\n font-size: 16px;\n font-style: normal;\n font-stretch: normal;\n line-height: normal;\n letter-spacing: normal;\n text-align: left;\n border-radius: 8px;\n width: calc(100% - 16px);\n margin: 0;\n margin-bottom: 8px;\n}\n`;","import { IQRCodeModalOptions } from \"@walletconnect/types\";\n\nimport * as nodeLib from \"./node\";\nimport * as browserLib from \"./browser\";\n\nconst isNode = () =>\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\";\n\nfunction open(uri: string, cb: any, qrcodeModalOptions?: IQRCodeModalOptions) {\n // eslint-disable-next-line no-console\n console.log(uri);\n if (isNode()) {\n nodeLib.open(uri);\n } else {\n browserLib.open(uri, cb, qrcodeModalOptions);\n }\n}\n\nfunction close() {\n if (isNode()) {\n nodeLib.close();\n } else {\n browserLib.close();\n }\n}\n\nexport default { open, close };\n","import QRCode from \"qrcode\";\n\nexport function open(uri: string) {\n // eslint-disable-next-line no-console\n QRCode.toString(uri, { type: \"terminal\" }).then(console.log);\n}\n\nexport function close() {\n // empty\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\tupdate = update(s, this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = oldVNode;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tnull,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\nlet rerenderCount = 0;\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: EMPTY_ARR.slice.call(parentDom.childNodes),\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tconst ctx = {};\n\n\tconst context = {\n\t\t_id: '__cC' + i++,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, context) {\n\t\t\treturn props.children(context);\n\t\t},\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tconst subs = [];\n\t\t\t\tthis.getChildContext = () => {\n\t\t\t\t\tctx[context._id] = this;\n\t\t\t\t\treturn ctx;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = _props => {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc.context = _props.value;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\told && old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\tcontext.Consumer.contextType = context;\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\tcontext.Provider._contextRef = context;\n\n\treturn context;\n}\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\ti;\n\tfor (i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(\n\t\ttype,\n\t\tnormalizedProps,\n\t\tprops && props.key,\n\t\tprops && props.ref,\n\t\tnull\n\t);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original\n\t};\n\n\tif (original == null) vnode._original = vnode;\n\tif (options.vnode) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn {};\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, newDom, sibDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\ti = 0;\n\tnewParentVNode._children = toChildArray(\n\t\tnewParentVNode._children,\n\t\tchildVNode => {\n\t\t\tif (childVNode != null) {\n\t\t\t\tchildVNode._parent = newParentVNode;\n\t\t\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t\t\t// Check if we find a corresponding element in oldChildren.\n\t\t\t\t// If found, delete the array item by setting to `undefined`.\n\t\t\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t\t\t// (holes).\n\t\t\t\toldVNode = oldChildren[i];\n\n\t\t\t\tif (\n\t\t\t\t\toldVNode === null ||\n\t\t\t\t\t(oldVNode &&\n\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t\t\t) {\n\t\t\t\t\toldChildren[i] = undefined;\n\t\t\t\t} else {\n\t\t\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t\t\t// We always match by type (in either case).\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\toldVNode &&\n\t\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toldVNode = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\t\t\tnewDom = diff(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\tglobalContext,\n\t\t\t\t\tisSvg,\n\t\t\t\t\texcessDomChildren,\n\t\t\t\t\tcommitQueue,\n\t\t\t\t\toldDom,\n\t\t\t\t\tisHydrating\n\t\t\t\t);\n\n\t\t\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\t\t\tif (!refs) refs = [];\n\t\t\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t\t\t}\n\n\t\t\t\t// Only proceed if the vnode has not been unmounted by `diff()` above.\n\t\t\t\tif (newDom != null) {\n\t\t\t\t\tif (firstChildDom == null) {\n\t\t\t\t\t\tfirstChildDom = newDom;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet nextDom;\n\t\t\t\t\tif (childVNode._nextDom !== undefined) {\n\t\t\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\t\t\tnextDom = childVNode._nextDom;\n\n\t\t\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t\t\t// can clean up the property\n\t\t\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\texcessDomChildren == oldVNode ||\n\t\t\t\t\t\tnewDom != oldDom ||\n\t\t\t\t\t\tnewDom.parentNode == null\n\t\t\t\t\t) {\n\t\t\t\t\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t\t\t\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t\t\t\t\t// The values only have the same type when `null`.\n\n\t\t\t\t\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\t\t\t\t\tparentDom.appendChild(newDom);\n\t\t\t\t\t\t\tnextDom = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// `j import('../internal').VNode} [callback]\n * A function to invoke for each child before it is added to the flattened list.\n * @param {Array} [flattened] An flat array of children to modify\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, callback, flattened) {\n\tif (flattened == null) flattened = [];\n\n\tif (children == null || typeof children == 'boolean') {\n\t\tif (callback) flattened.push(callback(null));\n\t} else if (Array.isArray(children)) {\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\ttoChildArray(children[i], callback, flattened);\n\t\t}\n\t} else if (!callback) {\n\t\tflattened.push(children);\n\t} else if (typeof children == 'string' || typeof children == 'number') {\n\t\tflattened.push(callback(createVNode(null, children, null, null, children)));\n\t} else if (children._dom != null || children._component != null) {\n\t\tflattened.push(\n\t\t\tcallback(\n\t\t\t\tcreateVNode(\n\t\t\t\t\tchildren.type,\n\t\t\t\t\tchildren.props,\n\t\t\t\t\tchildren.key,\n\t\t\t\t\tnull,\n\t\t\t\t\tchildren._original\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t} else {\n\t\tflattened.push(callback(children));\n\t}\n\n\treturn flattened;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t} else if (\n\t\ttypeof value == 'number' &&\n\t\tIS_NON_DIMENSIONAL.test(key) === false\n\t) {\n\t\tstyle[key] = value + 'px';\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else {\n\t\tstyle[key] = value;\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet s, useCapture, nameLower;\n\n\tif (isSvg) {\n\t\tif (name === 'className') {\n\t\t\tname = 'class';\n\t\t}\n\t} else if (name === 'class') {\n\t\tname = 'className';\n\t}\n\n\tif (name === 'style') {\n\t\ts = dom.style;\n\n\t\tif (typeof value == 'string') {\n\t\t\ts.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\ts.cssText = '';\n\t\t\t\toldValue = null;\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (let i in oldValue) {\n\t\t\t\t\tif (!(value && i in value)) {\n\t\t\t\t\t\tsetStyle(s, i, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (let i in value) {\n\t\t\t\t\tif (!oldValue || value[i] !== oldValue[i]) {\n\t\t\t\t\t\tsetStyle(s, i, value[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tnameLower = name.toLowerCase();\n\t\tname = (nameLower in dom ? nameLower : name).slice(2);\n\n\t\tif (value) {\n\t\t\tif (!oldValue) dom.addEventListener(name, eventProxy, useCapture);\n\t\t\t(dom._listeners || (dom._listeners = {}))[name] = value;\n\t\t} else {\n\t\t\tdom.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t} else if (\n\t\tname !== 'list' &&\n\t\tname !== 'tagName' &&\n\t\t// HTMLButtonElement.form and HTMLInputElement.form are read-only but can be set using\n\t\t// setAttribute\n\t\tname !== 'form' &&\n\t\tname !== 'type' &&\n\t\tname !== 'size' &&\n\t\t!isSvg &&\n\t\tname in dom\n\t) {\n\t\tdom[name] = value == null ? '' : value;\n\t} else if (typeof value != 'function' && name !== 'dangerouslySetInnerHTML') {\n\t\tif (name !== (name = name.replace(/^xlink:?/, ''))) {\n\t\t\tif (value == null || value === false) {\n\t\t\t\tdom.removeAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase()\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdom.setAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase(),\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (\n\t\t\tvalue == null ||\n\t\t\t(value === false &&\n\t\t\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t\t\t// The value `false` is different from the attribute not\n\t\t\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t\t\t// that other VDOM frameworks also always stringify `false`.\n\t\t\t\t!/^ar/.test(name))\n\t\t) {\n\t\t\tdom.removeAttribute(name);\n\t\t} else {\n\t\t\tdom.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { Component } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, removeNode } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t(newVNode._original === oldVNode._original && !c._processingException)\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (tmp = 0; tmp < newVNode._children.length; tmp++) {\n\t\t\t\t\t\tif (newVNode._children[tmp]) {\n\t\t\t\t\t\t\tnewVNode._children[tmp]._parent = newVNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tnewVNode._children = isTopLevelFragment\n\t\t\t\t? tmp.props.children\n\t\t\t\t: Array.isArray(tmp)\n\t\t\t\t? tmp\n\t\t\t\t: [tmp];\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\tif (oldProps !== newProps && dom.data != newProps) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\tif (oldProps === EMPTY_OBJ) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (!newHtml || !oldHtml || newHtml.__html != oldHtml.__html) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\tnewVNode._children = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\ti !== dom.value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { assign } from './util';\nimport { EMPTY_ARR } from './constants';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props) {\n\tprops = assign(assign({}, vnode.props), props);\n\tif (arguments.length > 2) props.children = EMPTY_ARR.slice.call(arguments, 2);\n\tlet normalizedProps = {};\n\tfor (const i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tprops.key || vnode.key,\n\t\tprops.ref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, hasCaught;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\tcomponent.constructor &&\n\t\t\t\t\tcomponent.constructor.getDerivedStateFromError != null\n\t\t\t\t) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.setState(\n\t\t\t\t\t\tcomponent.constructor.getDerivedStateFromError(error)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t}\n\n\t\t\t\tif (hasCaught)\n\t\t\t\t\treturn enqueueRender((component._pendingError = component));\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array} */\nlet afterPaintEffects = [];\n\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tif (currentComponent.__hooks) {\n\t\tcurrentComponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\tcurrentComponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\tcurrentComponent.__hooks._pendingEffects = [];\n\t}\n};\n\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (!c) return;\n\n\tconst hooks = c.__hooks;\n\tif (hooks) {\n\t\tif (hooks._pendingEffects.length) {\n\t\t\tafterPaint(afterPaintEffects.push(c));\n\t\t}\n\t}\n};\n\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (!c) return;\n\n\tconst hooks = c.__hooks;\n\tif (hooks) {\n\t\ttry {\n\t\t\thooks._list.forEach(hook => hook._cleanup && hook._cleanup());\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {import('./internal').HookState}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({});\n\t}\n\treturn hooks._list[index];\n}\n\n/**\n * @param {import('./index').StateUpdater} initialState\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @param {import('./index').Reducer} reducer\n * @param {import('./index').StateUpdater} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ any, (state: any) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\tif (!hookState._component) {\n\t\thookState._component = currentComponent;\n\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst nextValue = reducer(hookState._value[0], action);\n\t\t\t\tif (hookState._value[0] !== nextValue) {\n\t\t\t\t\thookState._value[0] = nextValue;\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\n\treturn hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._args = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._args = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {any[]} args\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') ref(createHandle());\n\t\t\telse if (ref) ref.current = createHandle();\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @param {() => any} factory\n * @param {any[]} args\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._args = args;\n\t\tstate._factory = factory;\n\t\treturn (state._value = factory());\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {any[]} args\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\n\t}\n}\n\nexport function useErrorBoundary(cb) {\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = err => {\n\t\t\tif (state._value) state._value(err);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tafterPaintEffects.some(component => {\n\t\tif (component._parentDom) {\n\t\t\ttry {\n\t\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\t} catch (e) {\n\t\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\t\toptions._catchError(e, component._vnode);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t});\n\tafterPaintEffects = [];\n}\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tcancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (typeof window != 'undefined') {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeCleanup(hook) {\n\tif (hook._cleanup) hook._cleanup();\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeEffect(hook) {\n\tconst result = hook._value();\n\tif (typeof result == 'function') hook._cleanup = result;\n}\n\n/**\n * @param {any[]} oldArgs\n * @param {any[]} newArgs\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn !oldArgs || newArgs.some((arg, index) => arg !== oldArgs[index]);\n}\n\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Check if two objects have a different shape\n * @param {object} a\n * @param {object} b\n * @returns {boolean}\n */\nexport function shallowDiffers(a, b) {\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\n\treturn false;\n}\n","import { Component } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Component class with a predefined `shouldComponentUpdate` implementation\n */\nexport class PureComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\t// Some third-party libraries check if this property is present\n\t\tthis.isPureReactComponent = true;\n\t}\n\n\tshouldComponentUpdate(props, state) {\n\t\treturn (\n\t\t\tshallowDiffers(this.props, props) || shallowDiffers(this.state, state)\n\t\t);\n\t}\n}\n","import { createElement } from 'preact';\nimport { shallowDiffers, assign } from './util';\n\n/**\n * Memoize a component, so that it only updates when the props actually have\n * changed. This was previously known as `React.pure`.\n * @param {import('./internal').FunctionalComponent} c functional component\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\n * @returns {import('./internal').FunctionalComponent}\n */\nexport function memo(c, comparer) {\n\tfunction shouldUpdate(nextProps) {\n\t\tlet ref = this.props.ref;\n\t\tlet updateRef = ref == nextProps.ref;\n\t\tif (!updateRef && ref) {\n\t\t\tref.call ? ref(null) : (ref.current = null);\n\t\t}\n\n\t\tif (!comparer) {\n\t\t\treturn shallowDiffers(this.props, nextProps);\n\t\t}\n\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\n\t}\n\n\tfunction Memoed(props) {\n\t\tthis.shouldComponentUpdate = shouldUpdate;\n\t\treturn createElement(c, assign({}, props));\n\t}\n\tMemoed.prototype.isReactComponent = true;\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\n\tMemoed._forwarded = true;\n\treturn Memoed;\n}\n","import { options } from 'preact';\nimport { assign } from './util';\n\nlet oldDiffHook = options._diff;\noptions._diff = vnode => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiffHook) oldDiffHook(vnode);\n};\n\n/**\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\n * wrap components. Using `forwardRef` there is an easy way to get a reference\n * of the wrapped component instead of one of the wrapper itself.\n * @param {import('./index').ForwardFn} fn\n * @returns {import('./internal').FunctionalComponent}\n */\nexport function forwardRef(fn) {\n\tfunction Forwarded(props) {\n\t\tlet clone = assign({}, props);\n\t\tdelete clone.ref;\n\t\treturn fn(clone, props.ref);\n\t}\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\n\treturn Forwarded;\n}\n","import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (!children) return null;\n\treturn toChildArray(children).reduce(\n\t\t(acc, value, index) => acc.concat(fn(value, index)),\n\t\t[]\n\t);\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tchildren = toChildArray(children);\n\t\tif (children.length !== 1) {\n\t\t\tthrow new Error('Children.only() expects only one child.');\n\t\t}\n\t\treturn children[0];\n\t},\n\ttoArray: toChildArray\n};\n","import { Component, createElement, options } from 'preact';\nimport { assign } from './util';\n\nconst oldCatchError = options._catchError;\noptions._catchError = function(error, newVNode, oldVNode) {\n\tif (error.then) {\n\t\t/** @type {import('./internal').Component} */\n\t\tlet component;\n\t\tlet vnode = newVNode;\n\n\t\tfor (; (vnode = vnode._parent); ) {\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\n\t\t\t\treturn component._childDidSuspend(error, newVNode._component);\n\t\t\t}\n\t\t}\n\t}\n\toldCatchError(error, newVNode, oldVNode);\n};\n\nfunction detachedClone(vnode) {\n\tif (vnode) {\n\t\tvnode = assign({}, vnode);\n\t\tvnode._component = null;\n\t\tvnode._children = vnode._children && vnode._children.map(detachedClone);\n\t}\n\treturn vnode;\n}\n\n// having custom inheritance instead of a class here saves a lot of bytes\nexport function Suspense() {\n\t// we do not call super here to golf some bytes...\n\tthis._pendingSuspensionCount = 0;\n\tthis._suspenders = null;\n\tthis._detachOnNextRender = null;\n}\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspense.prototype = new Component();\n\n/**\n * @param {Promise} promise The thrown promise\n * @param {Component} suspendingComponent The suspending component\n */\nSuspense.prototype._childDidSuspend = function(promise, suspendingComponent) {\n\t/** @type {import('./internal').SuspenseComponent} */\n\tconst c = this;\n\n\tif (c._suspenders == null) {\n\t\tc._suspenders = [];\n\t}\n\tc._suspenders.push(suspendingComponent);\n\n\tconst resolve = suspended(c._vnode);\n\n\tlet resolved = false;\n\tconst onResolved = () => {\n\t\tif (resolved) return;\n\n\t\tresolved = true;\n\n\t\tif (resolve) {\n\t\t\tresolve(onSuspensionComplete);\n\t\t} else {\n\t\t\tonSuspensionComplete();\n\t\t}\n\t};\n\n\tsuspendingComponent._suspendedComponentWillUnmount =\n\t\tsuspendingComponent.componentWillUnmount;\n\tsuspendingComponent.componentWillUnmount = () => {\n\t\tonResolved();\n\n\t\tif (suspendingComponent._suspendedComponentWillUnmount) {\n\t\t\tsuspendingComponent._suspendedComponentWillUnmount();\n\t\t}\n\t};\n\n\tconst onSuspensionComplete = () => {\n\t\tif (!--c._pendingSuspensionCount) {\n\t\t\tc._vnode._children[0] = c.state._suspended;\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\n\n\t\t\tlet suspended;\n\t\t\twhile ((suspended = c._suspenders.pop())) {\n\t\t\t\tsuspended.forceUpdate();\n\t\t\t}\n\t\t}\n\t};\n\n\tif (!c._pendingSuspensionCount++) {\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\n\t}\n\tpromise.then(onResolved, onResolved);\n};\n\nSuspense.prototype.render = function(props, state) {\n\tif (this._detachOnNextRender) {\n\t\tthis._vnode._children[0] = detachedClone(this._detachOnNextRender);\n\t\tthis._detachOnNextRender = null;\n\t}\n\n\treturn [\n\t\tcreateElement(Component, null, state._suspended ? null : props.children),\n\t\tstate._suspended && props.fallback\n\t];\n};\n\n/**\n * Checks and calls the parent component's _suspended method, passing in the\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\n * that one of its children/descendants suspended.\n *\n * The parent MAY return a callback. The callback will get called when the\n * suspension resolves, notifying the parent of the fact.\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\n * This is a way for the parent to delay unsuspending.\n *\n * If the parent does not return a callback then the resolved vnode\n * gets unsuspended immediately when it resolves.\n *\n * @param {import('../src/internal').VNode} vnode\n * @returns {((unsuspend: () => void) => void)?}\n */\nexport function suspended(vnode) {\n\tlet component = vnode._parent._component;\n\treturn component && component._suspended && component._suspended(vnode);\n}\n\nexport function lazy(loader) {\n\tlet prom;\n\tlet component;\n\tlet error;\n\n\tfunction Lazy(props) {\n\t\tif (!prom) {\n\t\t\tprom = loader();\n\t\t\tprom.then(\n\t\t\t\texports => {\n\t\t\t\t\tcomponent = exports.default || exports;\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tthrow prom;\n\t\t}\n\n\t\treturn createElement(component, props);\n\t}\n\n\tLazy.displayName = 'Lazy';\n\tLazy._forwarded = true;\n\treturn Lazy;\n}\n","import { Component, toChildArray } from 'preact';\nimport { suspended } from './suspense.js';\n\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\nconst SUSPENDED_COUNT = 0;\nconst RESOLVED_COUNT = 1;\nconst NEXT_NODE = 2;\n\n// Having custom inheritance instead of a class here saves a lot of bytes.\nexport function SuspenseList() {\n\tthis._next = null;\n\tthis._map = null;\n}\n\n// Mark one of child's earlier suspensions as resolved.\n// Some pending callbacks may become callable due to this\n// (e.g. the last suspended descendant gets resolved when\n// revealOrder === 'together'). Process those callbacks as well.\nconst resolve = (list, child, node) => {\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\n\t\t// The number a child (or any of its descendants) has been suspended\n\t\t// matches the number of times it's been resolved. Therefore we\n\t\t// mark the child as completely resolved by deleting it from ._map.\n\t\t// This is used to figure out when *all* children have been completely\n\t\t// resolved when revealOrder is 'together'.\n\t\tlist._map.delete(child);\n\t}\n\n\t// If revealOrder is falsy then we can do an early exit, as the\n\t// callbacks won't get queued in the node anyway.\n\t// If revealOrder is 'together' then also do an early exit\n\t// if all suspended descendants have not yet been resolved.\n\tif (\n\t\t!list.props.revealOrder ||\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\n\t) {\n\t\treturn;\n\t}\n\n\t// Walk the currently suspended children in order, calling their\n\t// stored callbacks on the way. Stop if we encounter a child that\n\t// has not been completely resolved yet.\n\tnode = list._next;\n\twhile (node) {\n\t\twhile (node.length > 3) {\n\t\t\tnode.pop()();\n\t\t}\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\n\t\t\tbreak;\n\t\t}\n\t\tlist._next = node = node[NEXT_NODE];\n\t}\n};\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspenseList.prototype = new Component();\n\nSuspenseList.prototype._suspended = function(child) {\n\tconst list = this;\n\tconst delegated = suspended(list._vnode);\n\n\tlet node = list._map.get(child);\n\tnode[SUSPENDED_COUNT]++;\n\n\treturn unsuspend => {\n\t\tconst wrappedUnsuspend = () => {\n\t\t\tif (!list.props.revealOrder) {\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\n\t\t\t\tunsuspend();\n\t\t\t} else {\n\t\t\t\tnode.push(unsuspend);\n\t\t\t\tresolve(list, child, node);\n\t\t\t}\n\t\t};\n\t\tif (delegated) {\n\t\t\tdelegated(wrappedUnsuspend);\n\t\t} else {\n\t\t\twrappedUnsuspend();\n\t\t}\n\t};\n};\n\nSuspenseList.prototype.render = function(props) {\n\tthis._next = null;\n\tthis._map = new Map();\n\n\tconst children = toChildArray(props.children);\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\n\t\t// then flip the child list around so that the last child will be\n\t\t// the first in the linked list.\n\t\tchildren.reverse();\n\t}\n\t// Build the linked list. Iterate through the children in reverse order\n\t// so that `_next` points to the first linked list node to be resolved.\n\tfor (let i = children.length; i--; ) {\n\t\t// Create a new linked list node as an array of form:\n\t\t// \t[suspended_count, resolved_count, next_node]\n\t\t// where suspended_count and resolved_count are numeric counters for\n\t\t// keeping track how many times a node has been suspended and resolved.\n\t\t//\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\n\t\t// processing callbacks until componentDidMount has been called. In a sense\n\t\t// node is suspended at least until componentDidMount gets called!\n\t\t//\n\t\t// Pending callbacks are added to the end of the node:\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\n\t}\n\treturn props.children;\n};\n\nSuspenseList.prototype.componentDidUpdate = SuspenseList.prototype.componentDidMount = function() {\n\t// Iterate through all children after mounting for two reasons:\n\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\n\t// each node[RELEASED_COUNT] by 1, therefore balancing the counters.\n\t// The nodes can now be completely consumed from the linked list.\n\t// 2. Handle nodes that might have gotten resolved between render and\n\t// componentDidMount.\n\tconst list = this;\n\tlist._map.forEach((node, child) => {\n\t\tresolve(list, child, node);\n\t});\n};\n","import { createElement, hydrate, render, _unmount } from 'preact';\n\nclass ContextProvider {\n\tgetChildContext() {\n\t\treturn this.props.context;\n\t}\n\trender(props) {\n\t\treturn props.children;\n\t}\n}\n\n/**\n * Portal component\n * @param {object | null | undefined} props\n */\nfunction Portal(props) {\n\tlet _this = this;\n\tlet container = props.container;\n\tlet wrap = createElement(\n\t\tContextProvider,\n\t\t{ context: _this.context },\n\t\tprops.vnode\n\t);\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif (_this._container && _this._container !== container) {\n\t\tif (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t_unmount(_this._wrap);\n\t\t_this._hasMounted = false;\n\t}\n\n\t// When props.vnode is undefined/false/null we are dealing with some kind of\n\t// conditional vnode. This should not trigger a render.\n\tif (props.vnode) {\n\t\tif (!_this._hasMounted) {\n\t\t\t// Create a placeholder that we can use to insert into.\n\t\t\t_this._temp = document.createTextNode('');\n\t\t\t// Hydrate existing nodes to keep the dom intact, when rendering\n\t\t\t// wrap into the container.\n\t\t\thydrate('', container);\n\t\t\t// Append to the container (this matches React's behavior)\n\t\t\tcontainer.appendChild(_this._temp);\n\t\t\t// At this point we have mounted and should set our container.\n\t\t\t_this._hasMounted = true;\n\t\t\t_this._container = container;\n\t\t\t// Render our wrapping element into temp.\n\t\t\trender(wrap, container, _this._temp);\n\t\t\t_this._children = _this._temp._children;\n\t\t} else {\n\t\t\t// When we have mounted and the vnode is present it means the\n\t\t\t// props have changed or a parent is triggering a rerender.\n\t\t\t// This implies we only need to call render. But we need to keep\n\t\t\t// the old tree around, otherwise will treat the vnodes as new and\n\t\t\t// will wrongly call `componentDidMount` on them\n\t\t\tcontainer._children = _this._children;\n\t\t\trender(wrap, container);\n\t\t\t_this._children = container._children;\n\t\t}\n\t}\n\t// When we come from a conditional render, on a mounted\n\t// portal we should clear the DOM.\n\telse if (_this._hasMounted) {\n\t\tif (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t_unmount(_this._wrap);\n\t}\n\t// Set the wrapping element for future unmounting.\n\t_this._wrap = wrap;\n\n\t_this.componentWillUnmount = () => {\n\t\tif (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t_unmount(_this._wrap);\n\t};\n\n\treturn null;\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal(vnode, container) {\n\treturn createElement(Portal, { vnode, container });\n}\n","import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\nimport { applyEventNormalization } from './events';\n\nconst CAMEL_PROPS = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\twhile (parent.firstChild) {\n\t\t\tparent.removeChild(parent.firstChild);\n\t\t}\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\te.persist = () => {};\n\tlet stoppedPropagating = false,\n\t\tdefaultPrevented = false;\n\n\tconst origStopPropagation = e.stopPropagation;\n\te.stopPropagation = () => {\n\t\torigStopPropagation.call(e);\n\t\tstoppedPropagating = true;\n\t};\n\n\tconst origPreventDefault = e.preventDefault;\n\te.preventDefault = () => {\n\t\torigPreventDefault.call(e);\n\t\tdefaultPrevented = true;\n\t};\n\n\te.isPropagationStopped = () => stoppedPropagating;\n\te.isDefaultPrevented = () => defaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\n// Patch in `UNSAFE_*` lifecycle hooks\nfunction setSafeDescriptor(proto, key) {\n\tif (proto['UNSAFE_' + key] && !proto[key]) {\n\t\tObject.defineProperty(proto, key, {\n\t\t\tconfigurable: false,\n\t\t\tget() {\n\t\t\t\treturn this['UNSAFE_' + key];\n\t\t\t},\n\t\t\t// This `set` is only used if a user sets a lifecycle like cWU\n\t\t\t// after setting a lifecycle like UNSAFE_cWU. I doubt anyone\n\t\t\t// actually does this in practice so not testing it\n\t\t\t/* istanbul ignore next */\n\t\t\tset(v) {\n\t\t\t\tthis['UNSAFE_' + key] = v;\n\t\t\t}\n\t\t});\n\t}\n}\n\nlet classNameDescriptor = {\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tlet type = vnode.type;\n\tlet props = vnode.props;\n\n\tif (type) {\n\t\t// Alias `class` prop to `className` if available\n\t\tif (props.class != props.className) {\n\t\t\tclassNameDescriptor.enumerable = 'className' in props;\n\t\t\tif (props.className != null) props.class = props.className;\n\t\t\tObject.defineProperty(props, 'className', classNameDescriptor);\n\t\t}\n\n\t\t// Apply DOM VNode compat\n\t\tif (typeof type != 'function') {\n\t\t\t// Apply defaultValue to value\n\t\t\tif (props.defaultValue && props.value !== undefined) {\n\t\t\t\tif (!props.value && props.value !== 0) {\n\t\t\t\t\tprops.value = props.defaultValue;\n\t\t\t\t}\n\t\t\t\tdelete props.defaultValue;\n\t\t\t}\n\n\t\t\t// Add support for array select values: value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && i !== oldProps.value))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(r[i], parentVNode, typeof vnode.type != 'function');\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) removeNode(vnode._dom);\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode === 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = (\n\t\t(!isHydrating && replaceNode) ||\n\t\tparentDom\n\t)._children = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.firstChild\n\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t? oldVNode._dom\n\t\t\t: parentDom.firstChild,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n","import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n","/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {import('./internal').Component} */\nlet previousComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array} */\nlet afterPaintEffects = [];\n\nlet oldBeforeDiff = options._diff;\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\noptions._diff = vnode => {\n\tcurrentComponent = null;\n\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n};\n\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tconst hooks = currentComponent.__hooks;\n\tif (hooks) {\n\t\tif (previousComponent === currentComponent) {\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentComponent._renderCallbacks = [];\n\t\t\thooks._list.forEach(hookItem => {\n\t\t\t\thookItem._pendingValue = hookItem._pendingArgs = undefined;\n\t\t\t});\n\t\t} else {\n\t\t\thooks._list.forEach(hookItem => {\n\t\t\t\tif (hookItem._pendingArgs) {\n\t\t\t\t\thookItem._args = hookItem._pendingArgs;\n\t\t\t\t}\n\t\t\t\tif (hookItem._pendingValue) {\n\t\t\t\t\thookItem._value = hookItem._pendingValue;\n\t\t\t\t}\n\t\t\t\thookItem._pendingValue = hookItem._pendingArgs = undefined;\n\t\t\t});\n\t\t\thooks._pendingEffects.forEach(invokeCleanup);\n\t\t\thooks._pendingEffects.forEach(invokeEffect);\n\t\t\thooks._pendingEffects = [];\n\t\t}\n\t}\n\tpreviousComponent = currentComponent;\n};\n\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks && c.__hooks._pendingEffects.length) {\n\t\tafterPaint(afterPaintEffects.push(c));\n\t}\n\tcurrentComponent = null;\n\tpreviousComponent = null;\n};\n\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tif (component.__hooks) {\n\t\t\t\tcomponent.__hooks._list.forEach(hookItem => {\n\t\t\t\t\tif (hookItem._pendingArgs) {\n\t\t\t\t\t\thookItem._args = hookItem._pendingArgs;\n\t\t\t\t\t}\n\t\t\t\t\tif (hookItem._pendingValue) {\n\t\t\t\t\t\thookItem._value = hookItem._pendingValue;\n\t\t\t\t\t}\n\t\t\t\t\thookItem._pendingValue = hookItem._pendingArgs = undefined;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tlet hasErrored;\n\t\tc.__hooks._list.forEach(s => {\n\t\t\ttry {\n\t\t\t\tinvokeCleanup(s);\n\t\t\t} catch (e) {\n\t\t\t\thasErrored = e;\n\t\t\t}\n\t\t});\n\t\tif (hasErrored) options._catchError(hasErrored, c._vnode);\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {any}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({});\n\t}\n\treturn hooks._list[index];\n}\n\n/**\n * @param {import('./index').StateUpdater} [initialState]\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @param {import('./index').Reducer} reducer\n * @param {import('./index').StateUpdater} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ any, (state: any) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\thookState._reducer = reducer;\n\tif (!hookState._component) {\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst nextValue = hookState._reducer(hookState._value[0], action);\n\t\t\t\tif (hookState._value[0] !== nextValue) {\n\t\t\t\t\thookState._value = [nextValue, hookState._value[1]];\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\thookState._component = currentComponent;\n\t}\n\n\treturn hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {any[]} args\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') {\n\t\t\t\tref(createHandle());\n\t\t\t\treturn () => ref(null);\n\t\t\t} else if (ref) {\n\t\t\t\tref.current = createHandle();\n\t\t\t\treturn () => (ref.current = null);\n\t\t\t}\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @param {() => any} factory\n * @param {any[]} args\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._pendingValue = factory();\n\t\tstate._pendingArgs = args;\n\t\tstate._factory = factory;\n\t\treturn state._pendingValue;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {any[]} args\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\t/** @type {import('./internal').ContextHookState} */\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\n\t}\n}\n\n/**\n * @param {(error: any) => void} cb\n */\nexport function useErrorBoundary(cb) {\n\t/** @type {import('./internal').ErrorBoundaryHookState} */\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = err => {\n\t\t\tif (state._value) state._value(err);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tlet component;\n\twhile ((component = afterPaintEffects.shift())) {\n\t\tif (!component._parentDom) continue;\n\t\ttry {\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t} catch (e) {\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t}\n}\n\nlet HAS_RAF = typeof requestAnimationFrame == 'function';\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tif (HAS_RAF) cancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (HAS_RAF) {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeCleanup(hook) {\n\t// A hook cleanup can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\tlet cleanup = hook._cleanup;\n\tif (typeof cleanup == 'function') {\n\t\thook._cleanup = undefined;\n\t\tcleanup();\n\t}\n\tcurrentComponent = comp;\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeEffect(hook) {\n\t// A hook call can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\thook._cleanup = hook._value();\n\tcurrentComponent = comp;\n}\n\n/**\n * @param {any[]} oldArgs\n * @param {any[]} newArgs\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn (\n\t\t!oldArgs ||\n\t\toldArgs.length !== newArgs.length ||\n\t\tnewArgs.some((arg, index) => arg !== oldArgs[index])\n\t);\n}\n\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","var once = require('once')\nvar eos = require('end-of-stream')\nvar fs = require('fs') // we only need fs to get the ReadStream and WriteStream prototypes\n\nvar noop = function () {}\nvar ancient = /^v?\\.0/.test(process.version)\n\nvar isFn = function (fn) {\n return typeof fn === 'function'\n}\n\nvar isFS = function (stream) {\n if (!ancient) return false // newer node version do not need to care about fs is a special way\n if (!fs) return false // browser\n return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close)\n}\n\nvar isRequest = function (stream) {\n return stream.setHeader && isFn(stream.abort)\n}\n\nvar destroyer = function (stream, reading, writing, callback) {\n callback = once(callback)\n\n var closed = false\n stream.on('close', function () {\n closed = true\n })\n\n eos(stream, {readable: reading, writable: writing}, function (err) {\n if (err) return callback(err)\n closed = true\n callback()\n })\n\n var destroyed = false\n return function (err) {\n if (closed) return\n if (destroyed) return\n destroyed = true\n\n if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks\n if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want\n\n if (isFn(stream.destroy)) return stream.destroy()\n\n callback(err || new Error('stream was destroyed'))\n }\n}\n\nvar call = function (fn) {\n fn()\n}\n\nvar pipe = function (from, to) {\n return from.pipe(to)\n}\n\nvar pump = function () {\n var streams = Array.prototype.slice.call(arguments)\n var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop\n\n if (Array.isArray(streams[0])) streams = streams[0]\n if (streams.length < 2) throw new Error('pump requires two streams per minimum')\n\n var error\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1\n var writing = i > 0\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err\n if (err) destroys.forEach(call)\n if (reading) return\n destroys.forEach(call)\n callback(error)\n })\n })\n\n return streams.reduce(pipe)\n}\n\nmodule.exports = pump\n","\nconst canPromise = require('./can-promise')\n\nconst QRCode = require('./core/qrcode')\nconst CanvasRenderer = require('./renderer/canvas')\nconst SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n const args = [].slice.call(arguments, 1)\n const argsNum = args.length\n const isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n const data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n const data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nconst getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n const posCount = Math.floor(version / 7) + 2\n const size = getSymbolSize(version)\n const intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n const positions = [size - 7] // Last coord is always (size - 7)\n\n for (let i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * let pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const coords = []\n const pos = exports.getRowColCoords(version)\n const posLength = pos.length\n\n for (let i = 0; i < posLength; i++) {\n for (let j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","const Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nconst ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n let i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n let value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nmodule.exports = AlphanumericData\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n const bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n const bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nmodule.exports = BitBuffer\n","/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = new Uint8Array(size * size)\n this.reservedBit = new Uint8Array(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n const index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","const encodeUtf8 = require('encode-utf8')\nconst Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n this.data = new Uint8Array(encodeUtf8(data))\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (let i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nmodule.exports = ByteData\n","const ECLevel = require('./error-correction-level')\r\n\r\nconst EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nconst EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const getSymbolSize = require('./utils').getSymbolSize\nconst FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","const Utils = require('./utils')\n\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nconst G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n const data = ((errorCorrectionLevel.bit << 3) | mask)\n let d = data << 10\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n","const EXP_TABLE = new Uint8Array(512)\nconst LOG_TABLE = new Uint8Array(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n let x = 1\n for (let i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (let i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","const Mode = require('./mode')\nconst Utils = require('./utils')\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n let i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n let value = Utils.toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nmodule.exports = KanjiData\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nconst PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n const size = data.size\n let points = 0\n let sameCountCol = 0\n let sameCountRow = 0\n let lastCol = null\n let lastRow = null\n\n for (let row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (let col = 0; col < size; col++) {\n let module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n const size = data.size\n let points = 0\n\n for (let row = 0; row < size - 1; row++) {\n for (let col = 0; col < size - 1; col++) {\n const last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n const size = data.size\n let points = 0\n let bitsCol = 0\n let bitsRow = 0\n\n for (let row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (let col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n let darkCount = 0\n const modulesCount = data.data.length\n\n for (let i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n const k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n const size = data.size\n\n for (let col = 0; col < size; col++) {\n for (let row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n const numPatterns = Object.keys(exports.Patterns).length\n let bestPattern = 0\n let lowerPenalty = Infinity\n\n for (let p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n exports.applyMask(p, data)\n\n // Calculate penalty\n const penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data)\n\n // Undo previously applied mask\n exports.applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","const VersionCheck = require('./version-check')\nconst Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const Mode = require('./mode')\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n let i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n const remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nmodule.exports = NumericData\n","const GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Uint8Array} p1 Polynomial\n * @param {Uint8Array} p2 Polynomial\n * @return {Uint8Array} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n const coeff = new Uint8Array(p1.length + p2.length - 1)\n\n for (let i = 0; i < p1.length; i++) {\n for (let j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Uint8Array} divident Polynomial\n * @param {Uint8Array} divisor Polynomial\n * @return {Uint8Array} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n let result = new Uint8Array(divident)\n\n while ((result.length - divisor.length) >= 0) {\n const coeff = result[0]\n\n for (let i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n let offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Uint8Array} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n let poly = new Uint8Array([1])\n for (let i = 0; i < degree; i++) {\n poly = exports.mul(poly, new Uint8Array([1, GF.exp(i)]))\n }\n\n return poly\n}\n","const Utils = require('./utils')\nconst ECLevel = require('./error-correction-level')\nconst BitBuffer = require('./bit-buffer')\nconst BitMatrix = require('./bit-matrix')\nconst AlignmentPattern = require('./alignment-pattern')\nconst FinderPattern = require('./finder-pattern')\nconst MaskPattern = require('./mask-pattern')\nconst ECCode = require('./error-correction-code')\nconst ReedSolomonEncoder = require('./reed-solomon-encoder')\nconst Version = require('./version')\nconst FormatInfo = require('./format-info')\nconst Mode = require('./mode')\nconst Segments = require('./segments')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n const size = matrix.size\n const pos = FinderPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n const size = matrix.size\n\n for (let r = 8; r < size - 8; r++) {\n const value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n const pos = AlignmentPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n const size = matrix.size\n const bits = Version.getEncodedBits(version)\n let row, col, mod\n\n for (let i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n const size = matrix.size\n const bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n let i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Uint8Array} data Data codewords\n */\nfunction setupData (matrix, data) {\n const size = matrix.size\n let inc = -1\n let row = size - 1\n let bitIndex = 7\n let byteIndex = 0\n\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) {\n for (let c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n let dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n const buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n const remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (let i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n const ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n const blocksInGroup2 = totalCodewords % ecTotalBlocks\n const blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n const totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n const dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n const dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n const ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n const rs = new ReedSolomonEncoder(ecCount)\n\n let offset = 0\n const dcData = new Array(ecTotalBlocks)\n const ecData = new Array(ecTotalBlocks)\n let maxDataSize = 0\n const buffer = new Uint8Array(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (let b = 0; b < ecTotalBlocks; b++) {\n const dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n const data = new Uint8Array(totalCodewords)\n let index = 0\n let i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n let segments\n\n if (Array.isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n let estimatedVersion = version\n\n if (!estimatedVersion) {\n const rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments, errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n const bestVersion = Version.getBestVersionForData(segments, errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n const dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n const moduleCount = Utils.getSymbolSize(version)\n const modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n let errorCorrectionLevel = ECLevel.M\n let version\n let mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","const Polynomial = require('./polynomial')\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Uint8Array} data Buffer containing input data\n * @return {Uint8Array} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n const paddedData = new Uint8Array(data.length + this.degree)\n paddedData.set(data)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n const remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n const start = this.degree - remainder.length\n if (start > 0) {\n const buff = new Uint8Array(this.degree)\n buff.set(remainder, start)\n\n return buff\n }\n\n return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","const numeric = '[0-9]+'\nconst alphanumeric = '[A-Z $%*+\\\\-./:]+'\nlet kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nconst byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nconst TEST_KANJI = new RegExp('^' + kanji + '$')\nconst TEST_NUMERIC = new RegExp('^' + numeric + '$')\nconst TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","const Mode = require('./mode')\nconst NumericData = require('./numeric-data')\nconst AlphanumericData = require('./alphanumeric-data')\nconst ByteData = require('./byte-data')\nconst KanjiData = require('./kanji-data')\nconst Regex = require('./regex')\nconst Utils = require('./utils')\nconst dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n const segments = []\n let result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n const numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n const alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n let byteSegs\n let kanjiSegs\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n const segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n const prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n const nodes = []\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n const table = {}\n const graph = { start: {} }\n let prevNodeIds = ['start']\n\n for (let i = 0; i < nodes.length; i++) {\n const nodeGroup = nodes[i]\n const currentNodeIds = []\n\n for (let j = 0; j < nodeGroup.length; j++) {\n const node = nodeGroup[j]\n const key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n const prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]].end = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n let mode\n const bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n const segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n const nodes = buildNodes(segs)\n const graph = buildGraph(nodes, version)\n const path = dijkstra.find_path(graph.map, 'start', 'end')\n\n const optimizedSegs = []\n for (let i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n}\n","let toSJISFunction\nconst CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n let digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n","/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n","const Utils = require('./utils')\nconst ECCode = require('./error-correction-code')\nconst ECLevel = require('./error-correction-level')\nconst Mode = require('./mode')\nconst VersionCheck = require('./version-check')\n\n// Generator polynomial used to encode version information\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nconst G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n let totalBits = 0\n\n segments.forEach(function (data) {\n const reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n const length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n const usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n let seg\n\n const ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (Array.isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n let d = version << 12\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","const Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n let opts = options\n let canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n const size = Utils.getImageWidth(qrData.modules.size, opts)\n\n const ctx = canvasEl.getContext('2d')\n const image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n let opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n const canvasEl = exports.render(qrData, canvas, opts)\n\n const type = opts.type || 'image/png'\n const rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","const Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n const alpha = color.a / 255\n const str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n let str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n let path = ''\n let moveBy = 0\n let newRow = false\n let lineLength = 0\n\n for (let i = 0; i < data.length; i++) {\n const col = Math.floor(i % size)\n const row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n const opts = Utils.getOptions(options)\n const size = qrData.modules.size\n const data = qrData.modules.data\n const qrcodesize = size + opts.margin * 2\n\n const bg = !opts.color.light.a\n ? ''\n : ''\n\n const path =\n ''\n\n const viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n const width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n const svgTag = '' + bg + path + '\\n'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\n}\n","function hex2rgba (hex) {\n if (typeof hex === 'number') {\n hex = hex.toString()\n }\n\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n let hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n const hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n const margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0\n ? 4\n : options.margin\n\n const width = options.width && options.width >= 21 ? options.width : undefined\n const scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n const scale = exports.getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n const size = qr.modules.size\n const data = qr.modules.data\n const scale = exports.getScale(size, opts)\n const symbolSize = Math.floor((size + opts.margin * 2) * scale)\n const scaledMargin = opts.margin * scale\n const palette = [opts.color.light, opts.color.dark]\n\n for (let i = 0; i < symbolSize; i++) {\n for (let j = 0; j < symbolSize; j++) {\n let posDst = (i * symbolSize + j) * 4\n let pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n const iSrc = Math.floor((i - scaledMargin) / scale)\n const jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (value === null || value === undefined || value.length === 0) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.split('').indexOf(options.arrayFormatSeparator) > -1;\n\t\t\t\tconst newValue = isArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(input, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof input !== 'string') {\n\t\treturn ret;\n\t}\n\n\tinput = input.trim().replace(/^[?#&]/, '');\n\n\tif (!input) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of input.split('&')) {\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (input, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url, hash] = splitOnFirst(input, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url.split('?')[0] || '',\n\t\t\tquery: parse(extract(input), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (input, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true\n\t}, options);\n\n\tconst url = removeHash(input.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(input.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, input.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(input.url);\n\tif (input.fragmentIdentifier) {\n\t\thash = `#${encode(input.fragmentIdentifier, options)}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3\"object\"==typeof window?((t?t.querySelector(\"#_goober\"):window._goober)||Object.assign((t||document.head).appendChild(document.createElement(\"style\")),{innerHTML:\" \",id:\"_goober\"})).firstChild:t||e,r=e=>{let r=t(e),l=r.data;return r.data=\"\",l},l=/(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g,a=/\\/\\*[^]*?\\*\\/| +/g,n=/\\n+/g,o=(e,t)=>{let r=\"\",l=\"\",a=\"\";for(let n in e){let c=e[n];\"@\"==n[0]?\"i\"==n[1]?r=n+\" \"+c+\";\":l+=\"f\"==n[1]?o(c,n):n+\"{\"+o(c,\"k\"==n[1]?\"\":t)+\"}\":\"object\"==typeof c?l+=o(c,t?t.replace(/([^,])+/g,e=>n.replace(/(^:.*)|([^,])+/g,t=>/&/.test(t)?t.replace(/&/g,e):e?e+\" \"+t:t)):n):null!=c&&(n=/^--/.test(n)?n:n.replace(/[A-Z]/g,\"-$&\").toLowerCase(),a+=o.p?o.p(n,c):n+\":\"+c+\";\")}return r+(t&&a?t+\"{\"+a+\"}\":a)+l},c={},s=e=>{if(\"object\"==typeof e){let t=\"\";for(let r in e)t+=r+s(e[r]);return t}return e},i=(e,t,r,i,p)=>{let u=s(e),d=c[u]||(c[u]=(e=>{let t=0,r=11;for(;t>>0;return\"go\"+r})(u));if(!c[d]){let t=u!==e?e:(e=>{let t,r,o=[{}];for(;t=l.exec(e.replace(a,\"\"));)t[4]?o.shift():t[3]?(r=t[3].replace(n,\" \").trim(),o.unshift(o[0][r]=o[0][r]||{})):o[0][t[1]]=t[2].replace(n,\" \").trim();return o[0]})(e);c[d]=o(p?{[\"@keyframes \"+d]:t}:t,r?\"\":\".\"+d)}return((e,t,r)=>{-1==t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(c[d],t,i),d},p=(e,t,r)=>e.reduce((e,l,a)=>{let n=t[a];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?\".\"+t:e&&\"object\"==typeof e?e.props?\"\":o(e,\"\"):!1===e?\"\":e}return e+l+(null==n?\"\":n)},\"\");function u(e){let r=this||{},l=e.call?e(r.p):e;return i(l.unshift?l.raw?p(l,[].slice.call(arguments,1),r.p):l.reduce((e,t)=>Object.assign(e,t&&t.call?t(r.p):t),{}):l,t(r.target),r.g,r.o,r.k)}let d,f,g,b=u.bind({g:1}),h=u.bind({k:1});function m(e,t,r,l){o.p=t,d=e,f=r,g=l}function j(e,t){let r=this||{};return function(){let l=arguments;function a(n,o){let c=Object.assign({},n),s=c.className||a.className;r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\\d+/.test(s),c.className=u.apply(r,l)+(s?\" \"+s:\"\"),t&&(c.ref=o);let i=e;return e[0]&&(i=c.as||e,delete c.as),g&&i[0]&&g(c),d(i,c)}return t?t(a):a}}export{u as css,r as extractCss,b as glob,h as keyframes,m as setup,j as styled};\n","import { CSSProperties } from 'react';\n\nexport type ToastType = 'success' | 'error' | 'loading' | 'blank' | 'custom';\nexport type ToastPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\nexport type Renderable = JSX.Element | string | null;\n\nexport interface IconTheme {\n primary: string;\n secondary: string;\n}\n\nexport type ValueFunction = (arg: TArg) => TValue;\nexport type ValueOrFunction =\n | TValue\n | ValueFunction;\n\nconst isFunction = (\n valOrFunction: ValueOrFunction\n): valOrFunction is ValueFunction =>\n typeof valOrFunction === 'function';\n\nexport const resolveValue = (\n valOrFunction: ValueOrFunction,\n arg: TArg\n): TValue => (isFunction(valOrFunction) ? valOrFunction(arg) : valOrFunction);\n\nexport interface Toast {\n type: ToastType;\n id: string;\n message: ValueOrFunction;\n icon?: Renderable;\n duration?: number;\n pauseDuration: number;\n position?: ToastPosition;\n\n ariaProps: {\n role: 'status' | 'alert';\n 'aria-live': 'assertive' | 'off' | 'polite';\n };\n\n style?: CSSProperties;\n className?: string;\n iconTheme?: IconTheme;\n\n createdAt: number;\n visible: boolean;\n height?: number;\n}\n\nexport type ToastOptions = Partial<\n Pick<\n Toast,\n | 'id'\n | 'icon'\n | 'duration'\n | 'ariaProps'\n | 'className'\n | 'style'\n | 'position'\n | 'iconTheme'\n >\n>;\n\nexport type DefaultToastOptions = ToastOptions &\n {\n [key in ToastType]?: ToastOptions;\n };\n\nexport interface ToasterProps {\n position?: ToastPosition;\n toastOptions?: DefaultToastOptions;\n reverseOrder?: boolean;\n gutter?: number;\n containerStyle?: React.CSSProperties;\n containerClassName?: string;\n children?: (toast: Toast) => JSX.Element;\n}\n","import { useEffect, useState } from 'react';\nimport { DefaultToastOptions, Toast, ToastType } from './types';\n\nconst TOAST_LIMIT = 20;\n\nexport enum ActionType {\n ADD_TOAST,\n UPDATE_TOAST,\n UPSERT_TOAST,\n DISMISS_TOAST,\n REMOVE_TOAST,\n START_PAUSE,\n END_PAUSE,\n}\n\ntype Action =\n | {\n type: ActionType.ADD_TOAST;\n toast: Toast;\n }\n | {\n type: ActionType.UPSERT_TOAST;\n toast: Toast;\n }\n | {\n type: ActionType.UPDATE_TOAST;\n toast: Partial;\n }\n | {\n type: ActionType.DISMISS_TOAST;\n toastId?: string;\n }\n | {\n type: ActionType.REMOVE_TOAST;\n toastId?: string;\n }\n | {\n type: ActionType.START_PAUSE;\n time: number;\n }\n | {\n type: ActionType.END_PAUSE;\n time: number;\n };\n\ninterface State {\n toasts: Toast[];\n pausedAt: number | undefined;\n}\n\nconst toastTimeouts = new Map>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: ActionType.REMOVE_TOAST,\n toastId: toastId,\n });\n }, 1000);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nconst clearFromRemoveQueue = (toastId: string) => {\n const timeout = toastTimeouts.get(toastId);\n if (timeout) {\n clearTimeout(timeout);\n }\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case ActionType.ADD_TOAST:\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case ActionType.UPDATE_TOAST:\n // ! Side effects !\n if (action.toast.id) {\n clearFromRemoveQueue(action.toast.id);\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n };\n\n case ActionType.UPSERT_TOAST:\n const { toast } = action;\n return state.toasts.find((t) => t.id === toast.id)\n ? reducer(state, { type: ActionType.UPDATE_TOAST, toast })\n : reducer(state, { type: ActionType.ADD_TOAST, toast });\n\n case ActionType.DISMISS_TOAST:\n const { toastId } = action;\n\n // ! Side effects ! - This could be execrated into a dismissToast() action, but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n visible: false,\n }\n : t\n ),\n };\n case ActionType.REMOVE_TOAST:\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n\n case ActionType.START_PAUSE:\n return {\n ...state,\n pausedAt: action.time,\n };\n\n case ActionType.END_PAUSE:\n const diff = action.time - (state.pausedAt || 0);\n\n return {\n ...state,\n pausedAt: undefined,\n toasts: state.toasts.map((t) => ({\n ...t,\n pauseDuration: t.pauseDuration + diff,\n })),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [], pausedAt: undefined };\n\nexport const dispatch = (action: Action) => {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n};\n\nconst defaultTimeouts: {\n [key in ToastType]: number;\n} = {\n blank: 4000,\n error: 4000,\n success: 2000,\n loading: Infinity,\n custom: 4000,\n};\n\nexport const useStore = (toastOptions: DefaultToastOptions = {}): State => {\n const [state, setState] = useState(memoryState);\n useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n const mergedToasts = state.toasts.map((t) => ({\n ...toastOptions,\n ...toastOptions[t.type],\n ...t,\n duration:\n t.duration ||\n toastOptions[t.type]?.duration ||\n toastOptions?.duration ||\n defaultTimeouts[t.type],\n style: {\n ...toastOptions.style,\n ...toastOptions[t.type]?.style,\n ...t.style,\n },\n }));\n\n return {\n ...state,\n toasts: mergedToasts,\n };\n};\n","export const genId = (() => {\n let count = 0;\n return () => {\n return (++count).toString();\n };\n})();\n\nexport const createRectRef = (onRect: (rect: DOMRect) => void) => (\n el: HTMLElement | null\n) => {\n if (el) {\n setTimeout(() => {\n const boundingRect = el.getBoundingClientRect();\n onRect(boundingRect);\n });\n }\n};\n\nexport const prefersReducedMotion = (() => {\n // Cache result\n let shouldReduceMotion: boolean | undefined = undefined;\n\n return () => {\n if (shouldReduceMotion === undefined && typeof window !== 'undefined') {\n const mediaQuery = matchMedia('(prefers-reduced-motion: reduce)');\n shouldReduceMotion = !mediaQuery || mediaQuery.matches;\n }\n return shouldReduceMotion;\n };\n})();\n","import {\n Renderable,\n Toast,\n ToastOptions,\n ToastType,\n DefaultToastOptions,\n ValueOrFunction,\n resolveValue,\n} from './types';\nimport { genId } from './utils';\nimport { dispatch, ActionType } from './store';\n\ntype Message = ValueOrFunction;\n\ntype ToastHandler = (message: Message, options?: ToastOptions) => string;\n\nconst createToast = (\n message: Message,\n type: ToastType = 'blank',\n opts?: ToastOptions\n): Toast => ({\n createdAt: Date.now(),\n visible: true,\n type,\n ariaProps: {\n role: 'status',\n 'aria-live': 'polite',\n },\n message,\n pauseDuration: 0,\n ...opts,\n id: opts?.id || genId(),\n});\n\nconst createHandler = (type?: ToastType): ToastHandler => (\n message,\n options\n) => {\n const toast = createToast(message, type, options);\n dispatch({ type: ActionType.UPSERT_TOAST, toast });\n return toast.id;\n};\n\nconst toast = (message: Message, opts?: ToastOptions) =>\n createHandler('blank')(message, opts);\n\ntoast.error = createHandler('error');\ntoast.success = createHandler('success');\ntoast.loading = createHandler('loading');\ntoast.custom = createHandler('custom');\n\ntoast.dismiss = (toastId?: string) => {\n dispatch({\n type: ActionType.DISMISS_TOAST,\n toastId,\n });\n};\n\ntoast.remove = (toastId?: string) =>\n dispatch({ type: ActionType.REMOVE_TOAST, toastId });\n\ntoast.promise = (\n promise: Promise,\n msgs: {\n loading: Renderable;\n success: ValueOrFunction;\n error: ValueOrFunction;\n },\n opts?: DefaultToastOptions\n) => {\n const id = toast.loading(msgs.loading, { ...opts, ...opts?.loading });\n\n promise\n .then((p) => {\n toast.success(resolveValue(msgs.success, p), {\n id,\n ...opts,\n ...opts?.success,\n });\n return p;\n })\n .catch((e) => {\n toast.error(resolveValue(msgs.error, e), {\n id,\n ...opts,\n ...opts?.error,\n });\n });\n\n return promise;\n};\n\nexport { toast };\n","import { useEffect, useMemo } from 'react';\nimport { dispatch, ActionType, useStore } from './store';\nimport { toast } from './toast';\nimport { DefaultToastOptions, Toast, ToastPosition } from './types';\n\nexport const useToaster = (toastOptions?: DefaultToastOptions) => {\n const { toasts, pausedAt } = useStore(toastOptions);\n\n useEffect(() => {\n if (pausedAt) {\n return;\n }\n\n const now = Date.now();\n const timeouts = toasts.map((t) => {\n if (t.duration === Infinity) {\n return;\n }\n\n const durationLeft =\n (t.duration || 0) + t.pauseDuration - (now - t.createdAt);\n\n if (durationLeft < 0) {\n if (t.visible) {\n toast.dismiss(t.id);\n }\n return;\n }\n return setTimeout(() => toast.dismiss(t.id), durationLeft);\n });\n\n return () => {\n timeouts.forEach((timeout) => timeout && clearTimeout(timeout));\n };\n }, [toasts, pausedAt]);\n\n const handlers = useMemo(\n () => ({\n startPause: () => {\n dispatch({\n type: ActionType.START_PAUSE,\n time: Date.now(),\n });\n },\n endPause: () => {\n if (pausedAt) {\n dispatch({ type: ActionType.END_PAUSE, time: Date.now() });\n }\n },\n updateHeight: (toastId: string, height: number) =>\n dispatch({\n type: ActionType.UPDATE_TOAST,\n toast: { id: toastId, height },\n }),\n calculateOffset: (\n toast: Toast,\n opts?: {\n reverseOrder?: boolean;\n gutter?: number;\n defaultPosition?: ToastPosition;\n }\n ) => {\n const { reverseOrder = false, gutter = 8, defaultPosition } =\n opts || {};\n\n const relevantToasts = toasts.filter(\n (t) =>\n (t.position || defaultPosition) ===\n (toast.position || defaultPosition) && t.height\n );\n const toastIndex = relevantToasts.findIndex((t) => t.id === toast.id);\n const toastsBefore = relevantToasts.filter(\n (toast, i) => i < toastIndex && toast.visible\n ).length;\n\n const offset = relevantToasts\n .filter((t) => t.visible)\n .slice(...(reverseOrder ? [toastsBefore + 1] : [0, toastsBefore]))\n .reduce((acc, t) => acc + (t.height || 0) + gutter, 0);\n\n return offset;\n },\n }),\n [toasts, pausedAt]\n );\n\n return {\n toasts,\n handlers,\n };\n};\n","import { styled, keyframes } from 'goober';\n\nconst circleAnimation = keyframes`\nfrom {\n transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(45deg);\n opacity: 1;\n}`;\n\nconst firstLineAnimation = keyframes`\nfrom {\n transform: scale(0);\n opacity: 0;\n}\nto {\n transform: scale(1);\n opacity: 1;\n}`;\n\nconst secondLineAnimation = keyframes`\nfrom {\n transform: scale(0) rotate(90deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(90deg);\n\topacity: 1;\n}`;\n\nexport interface ErrorTheme {\n primary?: string;\n secondary?: string;\n}\n\nexport const ErrorIcon = styled('div')`\n width: 20px;\n opacity: 0;\n height: 20px;\n border-radius: 10px;\n background: ${(p) => p.primary || '#ff4b4b'};\n position: relative;\n transform: rotate(45deg);\n\n animation: ${circleAnimation} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n animation-delay: 100ms;\n\n &:after,\n &:before {\n content: '';\n animation: ${firstLineAnimation} 0.15s ease-out forwards;\n animation-delay: 150ms;\n position: absolute;\n border-radius: 3px;\n opacity: 0;\n background: ${(p) => p.secondary || '#fff'};\n bottom: 9px;\n left: 4px;\n height: 2px;\n width: 12px;\n }\n\n &:before {\n animation: ${secondLineAnimation} 0.15s ease-out forwards;\n animation-delay: 180ms;\n transform: rotate(90deg);\n }\n`;\n","import { styled, keyframes } from 'goober';\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`;\n\nexport interface LoaderTheme {\n primary?: string;\n secondary?: string;\n}\n\nexport const LoaderIcon = styled('div')`\n width: 12px;\n height: 12px;\n box-sizing: border-box;\n border: 2px solid;\n border-radius: 100%;\n border-color: ${(p) => p.secondary || '#e0e0e0'};\n border-right-color: ${(p) => p.primary || '#616161'};\n animation: ${rotate} 1s linear infinite;\n`;\n","import { styled, keyframes } from 'goober';\n\nconst circleAnimation = keyframes`\nfrom {\n transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(45deg);\n\topacity: 1;\n}`;\n\nconst checkmarkAnimation = keyframes`\n0% {\n\theight: 0;\n\twidth: 0;\n\topacity: 0;\n}\n40% {\n height: 0;\n\twidth: 6px;\n\topacity: 1;\n}\n100% {\n opacity: 1;\n height: 10px;\n}`;\n\nexport interface CheckmarkTheme {\n primary?: string;\n secondary?: string;\n}\n\nexport const CheckmarkIcon = styled('div')`\n width: 20px;\n opacity: 0;\n height: 20px;\n border-radius: 10px;\n background: ${(p) => p.primary || '#61d345'};\n position: relative;\n transform: rotate(45deg);\n\n animation: ${circleAnimation} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n animation-delay: 100ms;\n &:after {\n content: '';\n box-sizing: border-box;\n animation: ${checkmarkAnimation} 0.2s ease-out forwards;\n opacity: 0;\n animation-delay: 200ms;\n position: absolute;\n border-right: 2px solid;\n border-bottom: 2px solid;\n border-color: ${(p) => p.secondary || '#fff'};\n bottom: 6px;\n left: 6px;\n height: 10px;\n width: 6px;\n }\n`;\n","import * as React from 'react';\nimport { styled, keyframes } from 'goober';\n\nimport { Toast } from '../core/types';\nimport { ErrorIcon, ErrorTheme } from './error';\nimport { LoaderIcon, LoaderTheme } from './loader';\nimport { CheckmarkIcon, CheckmarkTheme } from './checkmark';\n\nconst StatusWrapper = styled('div')`\n position: absolute;\n`;\n\nconst IndicatorWrapper = styled('div')`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n min-width: 20px;\n min-height: 20px;\n`;\n\nconst enter = keyframes`\nfrom {\n transform: scale(0.6);\n opacity: 0.4;\n}\nto {\n transform: scale(1);\n opacity: 1;\n}`;\n\nexport const AnimatedIconWrapper = styled('div')`\n position: relative;\n transform: scale(0.6);\n opacity: 0.4;\n min-width: 20px;\n animation: ${enter} 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n`;\n\nexport type IconThemes = Partial<{\n success: CheckmarkTheme;\n error: ErrorTheme;\n loading: LoaderTheme;\n}>;\n\nexport const ToastIcon: React.FC<{\n toast: Toast;\n}> = ({ toast }) => {\n const { icon, type, iconTheme } = toast;\n if (icon !== undefined) {\n if (typeof icon === 'string') {\n return {icon};\n } else {\n return icon;\n }\n }\n\n if (type === 'blank') {\n return null;\n }\n\n return (\n \n \n {type !== 'loading' && (\n \n {type === 'error' ? (\n \n ) : (\n \n )}\n \n )}\n \n );\n};\n","import * as React from 'react';\nimport { styled, keyframes } from 'goober';\n\nimport { Toast, ToastPosition, resolveValue, Renderable } from '../core/types';\nimport { ToastIcon } from './toast-icon';\nimport { prefersReducedMotion } from '../core/utils';\n\nconst enterAnimation = (factor: number) => `\n0% {transform: translate3d(0,${factor * -200}%,0) scale(.6); opacity:.5;}\n100% {transform: translate3d(0,0,0) scale(1); opacity:1;}\n`;\n\nconst exitAnimation = (factor: number) => `\n0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}\n100% {transform: translate3d(0,${factor * -150}%,-1px) scale(.6); opacity:0;}\n`;\n\nconst fadeInAnimation = `0%{opacity:0;} 100%{opacity:1;}`;\nconst fadeOutAnimation = `0%{opacity:1;} 100%{opacity:0;}`;\n\nconst ToastBarBase = styled('div', React.forwardRef)`\n display: flex;\n align-items: center;\n background: #fff;\n color: #363636;\n line-height: 1.3;\n will-change: transform;\n box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05);\n max-width: 350px;\n pointer-events: auto;\n padding: 8px 10px;\n border-radius: 8px;\n`;\n\nconst Message = styled('div')`\n display: flex;\n justify-content: center;\n margin: 4px 10px;\n color: inherit;\n flex: 1 1 auto;\n white-space: pre-line;\n`;\n\ninterface ToastBarProps {\n toast: Toast;\n position?: ToastPosition;\n style?: React.CSSProperties;\n children?: (components: {\n icon: Renderable;\n message: Renderable;\n }) => Renderable;\n}\n\nconst getAnimationStyle = (\n position: ToastPosition,\n visible: boolean\n): React.CSSProperties => {\n const top = position.includes('top');\n const factor = top ? 1 : -1;\n\n const [enter, exit] = prefersReducedMotion()\n ? [fadeInAnimation, fadeOutAnimation]\n : [enterAnimation(factor), exitAnimation(factor)];\n\n return {\n animation: visible\n ? `${keyframes(enter)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`\n : `${keyframes(exit)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`,\n };\n};\n\nexport const ToastBar: React.FC = React.memo(\n ({ toast, position, style, children }) => {\n const animationStyle: React.CSSProperties = toast?.height\n ? getAnimationStyle(\n toast.position || position || 'top-center',\n toast.visible\n )\n : { opacity: 0 };\n\n const icon = ;\n const message = (\n \n {resolveValue(toast.message, toast)}\n \n );\n\n return (\n \n {typeof children === 'function' ? (\n children({\n icon,\n message,\n })\n ) : (\n <>\n {icon}\n {message}\n \n )}\n \n );\n }\n);\n","import { css, setup } from 'goober';\nimport * as React from 'react';\nimport { resolveValue, ToasterProps, ToastPosition } from '../core/types';\nimport { useToaster } from '../core/use-toaster';\nimport { createRectRef, prefersReducedMotion } from '../core/utils';\nimport { ToastBar } from './toast-bar';\n\nsetup(React.createElement);\n\nconst getPositionStyle = (\n position: ToastPosition,\n offset: number\n): React.CSSProperties => {\n const top = position.includes('top');\n const verticalStyle: React.CSSProperties = top ? { top: 0 } : { bottom: 0 };\n const horizontalStyle: React.CSSProperties = position.includes('center')\n ? {\n justifyContent: 'center',\n }\n : position.includes('right')\n ? {\n justifyContent: 'flex-end',\n }\n : {};\n return {\n left: 0,\n right: 0,\n display: 'flex',\n position: 'absolute',\n transition: prefersReducedMotion()\n ? undefined\n : `all 230ms cubic-bezier(.21,1.02,.73,1)`,\n transform: `translateY(${offset * (top ? 1 : -1)}px)`,\n ...verticalStyle,\n ...horizontalStyle,\n };\n};\n\nconst activeClass = css`\n z-index: 9999;\n > * {\n pointer-events: auto;\n }\n`;\n\nconst DEFAULT_OFFSET = 16;\n\nexport const Toaster: React.FC = ({\n reverseOrder,\n position = 'top-center',\n toastOptions,\n gutter,\n children,\n containerStyle,\n containerClassName,\n}) => {\n const { toasts, handlers } = useToaster(toastOptions);\n\n return (\n \n {toasts.map((t) => {\n const toastPosition = t.position || position;\n const offset = handlers.calculateOffset(t, {\n reverseOrder,\n gutter,\n defaultPosition: position,\n });\n const positionStyle = getPositionStyle(toastPosition, offset);\n\n const ref = t.height\n ? undefined\n : createRectRef((rect) => {\n handlers.updateHeight(t.id, rect.height);\n });\n\n return (\n \n {t.type === 'custom' ? (\n resolveValue(t.message, t)\n ) : children ? (\n children(t)\n ) : (\n \n )}\n \n );\n })}\n \n );\n};\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","/**\n * Module dependencies\n */\nvar balanced = require(\"balanced-match\")\nvar reduceFunctionCall = require(\"reduce-function-call\")\nvar mexp = require(\"math-expression-evaluator\")\n\n/**\n * Constantes\n */\nvar MAX_STACK = 100 // should be enough for a single calc()...\nvar NESTED_CALC_RE = /(\\+|\\-|\\*|\\\\|[^a-z]|)(\\s*)(\\()/g\n\n/**\n * Global variables\n */\nvar stack\n\n/**\n * Expose reduceCSSCalc plugin\n *\n * @type {Function}\n */\nmodule.exports = reduceCSSCalc\n\n/**\n * Reduce CSS calc() in a string, whenever it's possible\n *\n * @param {String} value css input\n */\nfunction reduceCSSCalc(value, decimalPrecision) {\n stack = 0\n decimalPrecision = Math.pow(10, decimalPrecision === undefined ? 5 : decimalPrecision)\n\n // Allow calc() on multiple lines\n value = value.replace(/\\n+/g, \" \")\n\n /**\n * Evaluates an expression\n *\n * @param {String} expression\n * @returns {String}\n */\n function evaluateExpression (expression, functionIdentifier, call) {\n if (stack++ > MAX_STACK) {\n stack = 0\n throw new Error(\"Call stack overflow for \" + call)\n }\n\n if (expression === \"\") {\n throw new Error(functionIdentifier + \"(): '\" + call + \"' must contain a non-whitespace string\")\n }\n\n expression = evaluateNestedExpression(expression, call)\n\n var units = getUnitsInExpression(expression)\n\n // If the expression contains multiple units or CSS variables,\n // then let the expression be (i.e. browser calc())\n if (units.length > 1 || expression.indexOf(\"var(\") > -1) {\n return functionIdentifier + \"(\" + expression + \")\"\n }\n\n var unit = units[0] || \"\"\n\n if (unit === \"%\") {\n // Convert percentages to numbers, to handle expressions like: 50% * 50% (will become: 25%):\n // console.log(expression)\n expression = expression.replace(/\\b[0-9\\.]+%/g, function(percent) {\n return parseFloat(percent.slice(0, -1)) * 0.01\n })\n }\n\n // Remove units in expression:\n var toEvaluate = expression.replace(new RegExp(unit, \"gi\"), \"\")\n var result\n\n try {\n result = mexp.eval(toEvaluate)\n }\n catch (e) {\n return functionIdentifier + \"(\" + expression + \")\"\n }\n\n // Transform back to a percentage result:\n if (unit === \"%\") {\n result *= 100\n }\n\n // adjust rounding shit\n // (0.1 * 0.2 === 0.020000000000000004)\n if (functionIdentifier.length || unit === \"%\") {\n result = Math.round(result * decimalPrecision) / decimalPrecision\n }\n\n // Add unit\n result += unit\n\n return result\n }\n\n /**\n * Evaluates nested expressions\n *\n * @param {String} expression\n * @returns {String}\n */\n function evaluateNestedExpression(expression, call) {\n // Remove the calc part from nested expressions to ensure\n // better browser compatibility\n expression = expression.replace(/((?:\\-[a-z]+\\-)?calc)/g, \"\")\n var evaluatedPart = \"\"\n var nonEvaluatedPart = expression\n var matches\n while ((matches = NESTED_CALC_RE.exec(nonEvaluatedPart))) {\n if (matches[0].index > 0) {\n evaluatedPart += nonEvaluatedPart.substring(0, matches[0].index)\n }\n\n var balancedExpr = balanced(\"(\", \")\", nonEvaluatedPart.substring([0].index))\n if (balancedExpr.body === \"\") {\n throw new Error(\"'\" + expression + \"' must contain a non-whitespace string\")\n }\n\n var evaluated = evaluateExpression(balancedExpr.body, \"\", call)\n\n evaluatedPart += balancedExpr.pre + evaluated\n nonEvaluatedPart = balancedExpr.post\n }\n\n return evaluatedPart + nonEvaluatedPart\n }\n\n return reduceFunctionCall(value, /((?:\\-[a-z]+\\-)?calc)\\(/, evaluateExpression)\n}\n\n/**\n * Checks what units are used in an expression\n *\n * @param {String} expression\n * @returns {Array}\n */\n\nfunction getUnitsInExpression(expression) {\n var uniqueUnits = []\n var uniqueLowerCaseUnits = []\n var unitRegEx = /[\\.0-9]([%a-z]+)/gi\n var matches = unitRegEx.exec(expression)\n\n while (matches) {\n if (!matches || !matches[1]) {\n continue\n }\n\n if (uniqueLowerCaseUnits.indexOf(matches[1].toLowerCase()) === -1) {\n uniqueUnits.push(matches[1])\n uniqueLowerCaseUnits.push(matches[1].toLowerCase())\n }\n\n matches = unitRegEx.exec(expression)\n }\n\n return uniqueUnits\n}\n","module.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","/*\n * Module dependencies\n */\nvar balanced = require(\"balanced-match\")\n\n/**\n * Expose `reduceFunctionCall`\n *\n * @type {Function}\n */\nmodule.exports = reduceFunctionCall\n\n/**\n * Walkthrough all expressions, evaluate them and insert them into the declaration\n *\n * @param {Array} expressions\n * @param {Object} declaration\n */\n\nfunction reduceFunctionCall(string, functionRE, callback) {\n var call = string\n return getFunctionCalls(string, functionRE).reduce(function(string, obj) {\n return string.replace(obj.functionIdentifier + \"(\" + obj.matches.body + \")\", evalFunctionCall(obj.matches.body, obj.functionIdentifier, callback, call, functionRE))\n }, string)\n}\n\n/**\n * Parses expressions in a value\n *\n * @param {String} value\n * @returns {Array}\n * @api private\n */\n\nfunction getFunctionCalls(call, functionRE) {\n var expressions = []\n\n var fnRE = typeof functionRE === \"string\" ? new RegExp(\"\\\\b(\" + functionRE + \")\\\\(\") : functionRE\n do {\n var searchMatch = fnRE.exec(call)\n if (!searchMatch) {\n return expressions\n }\n if (searchMatch[1] === undefined) {\n throw new Error(\"Missing the first couple of parenthesis to get the function identifier in \" + functionRE)\n }\n var fn = searchMatch[1]\n var startIndex = searchMatch.index\n var matches = balanced(\"(\", \")\", call.substring(startIndex))\n\n if (!matches || matches.start !== searchMatch[0].length - 1) {\n throw new SyntaxError(fn + \"(): missing closing ')' in the value '\" + call + \"'\")\n }\n\n expressions.push({matches: matches, functionIdentifier: fn})\n call = matches.post\n }\n while (fnRE.test(call))\n\n return expressions\n}\n\n/**\n * Evaluates an expression\n *\n * @param {String} expression\n * @returns {String}\n * @api private\n */\n\nfunction evalFunctionCall (string, functionIdentifier, callback, call, functionRE) {\n // allow recursivity\n return callback(reduceFunctionCall(string, functionRE, callback), functionIdentifier, call)\n}\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","import BN from 'bn.js'\n\nimport { Decoded, Input, List } from './types'\n\n// Types exported outside of this package\nexport { Decoded, Input, List }\n\n/**\n * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP\n * This function takes in a data, convert it to buffer if not, and a length for recursion\n * @param input - will be converted to buffer\n * @returns returns buffer of encoded data\n **/\nexport function encode(input: Input): Buffer {\n if (Array.isArray(input)) {\n const output: Buffer[] = []\n for (let i = 0; i < input.length; i++) {\n output.push(encode(input[i]))\n }\n const buf = Buffer.concat(output)\n return Buffer.concat([encodeLength(buf.length, 192), buf])\n } else {\n const inputBuf = toBuffer(input)\n return inputBuf.length === 1 && inputBuf[0] < 128\n ? inputBuf\n : Buffer.concat([encodeLength(inputBuf.length, 128), inputBuf])\n }\n}\n\n/**\n * Parse integers. Check if there is no leading zeros\n * @param v The value to parse\n * @param base The base to parse the integer into\n */\nfunction safeParseInt(v: string, base: number): number {\n if (v[0] === '0' && v[1] === '0') {\n throw new Error('invalid RLP: extra zeros')\n }\n\n return parseInt(v, base)\n}\n\nfunction encodeLength(len: number, offset: number): Buffer {\n if (len < 56) {\n return Buffer.from([len + offset])\n } else {\n const hexLength = intToHex(len)\n const lLength = hexLength.length / 2\n const firstByte = intToHex(offset + 55 + lLength)\n return Buffer.from(firstByte + hexLength, 'hex')\n }\n}\n\n/**\n * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}\n * @param input - will be converted to buffer\n * @param stream - Is the input a stream (false by default)\n * @returns - returns decode Array of Buffers containg the original message\n **/\nexport function decode(input: Buffer, stream?: boolean): Buffer\nexport function decode(input: Buffer[], stream?: boolean): Buffer[]\nexport function decode(input: Input, stream?: boolean): Buffer[] | Buffer | Decoded\nexport function decode(input: Input, stream: boolean = false): Buffer[] | Buffer | Decoded {\n if (!input || (input as any).length === 0) {\n return Buffer.from([])\n }\n\n const inputBuffer = toBuffer(input)\n const decoded = _decode(inputBuffer)\n\n if (stream) {\n return decoded\n }\n if (decoded.remainder.length !== 0) {\n throw new Error('invalid remainder')\n }\n\n return decoded.data\n}\n\n/**\n * Get the length of the RLP input\n * @param input\n * @returns The length of the input or an empty Buffer if no input\n */\nexport function getLength(input: Input): Buffer | number {\n if (!input || (input as any).length === 0) {\n return Buffer.from([])\n }\n\n const inputBuffer = toBuffer(input)\n const firstByte = inputBuffer[0]\n\n if (firstByte <= 0x7f) {\n return inputBuffer.length\n } else if (firstByte <= 0xb7) {\n return firstByte - 0x7f\n } else if (firstByte <= 0xbf) {\n return firstByte - 0xb6\n } else if (firstByte <= 0xf7) {\n // a list between 0-55 bytes long\n return firstByte - 0xbf\n } else {\n // a list over 55 bytes long\n const llength = firstByte - 0xf6\n const length = safeParseInt(inputBuffer.slice(1, llength).toString('hex'), 16)\n return llength + length\n }\n}\n\n/** Decode an input with RLP */\nfunction _decode(input: Buffer): Decoded {\n let length, llength, data, innerRemainder, d\n const decoded = []\n const firstByte = input[0]\n\n if (firstByte <= 0x7f) {\n // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.\n return {\n data: input.slice(0, 1),\n remainder: input.slice(1),\n }\n } else if (firstByte <= 0xb7) {\n // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string\n // The range of the first byte is [0x80, 0xb7]\n length = firstByte - 0x7f\n\n // set 0x80 null to 0\n if (firstByte === 0x80) {\n data = Buffer.from([])\n } else {\n data = input.slice(1, length)\n }\n\n if (length === 2 && data[0] < 0x80) {\n throw new Error('invalid rlp encoding: byte must be less 0x80')\n }\n\n return {\n data: data,\n remainder: input.slice(length),\n }\n } else if (firstByte <= 0xbf) {\n // string is greater than 55 bytes long. A single byte with the value (0xb7 plus the length of the length),\n // followed by the length, followed by the string\n llength = firstByte - 0xb6\n if (input.length - 1 < llength) {\n throw new Error('invalid RLP: not enough bytes for string length')\n }\n length = safeParseInt(input.slice(1, llength).toString('hex'), 16)\n if (length <= 55) {\n throw new Error('invalid RLP: expected string length to be greater than 55')\n }\n data = input.slice(llength, length + llength)\n if (data.length < length) {\n throw new Error('invalid RLP: not enough bytes for string')\n }\n\n return {\n data: data,\n remainder: input.slice(length + llength),\n }\n } else if (firstByte <= 0xf7) {\n // a list between 0-55 bytes long\n length = firstByte - 0xbf\n innerRemainder = input.slice(1, length)\n while (innerRemainder.length) {\n d = _decode(innerRemainder)\n decoded.push(d.data as Buffer)\n innerRemainder = d.remainder\n }\n\n return {\n data: decoded,\n remainder: input.slice(length),\n }\n } else {\n // a list over 55 bytes long\n llength = firstByte - 0xf6\n length = safeParseInt(input.slice(1, llength).toString('hex'), 16)\n const totalLength = llength + length\n if (totalLength > input.length) {\n throw new Error('invalid rlp: total length is larger than the data')\n }\n\n innerRemainder = input.slice(llength, totalLength)\n if (innerRemainder.length === 0) {\n throw new Error('invalid rlp, List has a invalid length')\n }\n\n while (innerRemainder.length) {\n d = _decode(innerRemainder)\n decoded.push(d.data as Buffer)\n innerRemainder = d.remainder\n }\n return {\n data: decoded,\n remainder: input.slice(totalLength),\n }\n }\n}\n\n/** Check if a string is prefixed by 0x */\nfunction isHexPrefixed(str: string): boolean {\n return str.slice(0, 2) === '0x'\n}\n\n/** Removes 0x from a given String */\nfunction stripHexPrefix(str: string): string {\n if (typeof str !== 'string') {\n return str\n }\n return isHexPrefixed(str) ? str.slice(2) : str\n}\n\n/** Transform an integer into its hexadecimal value */\nfunction intToHex(integer: number | bigint): string {\n if (integer < 0) {\n throw new Error('Invalid integer as argument, must be unsigned!')\n }\n const hex = integer.toString(16)\n return hex.length % 2 ? `0${hex}` : hex\n}\n\n/** Pad a string to be even */\nfunction padToEven(a: string): string {\n return a.length % 2 ? `0${a}` : a\n}\n\n/** Transform an integer into a Buffer */\nfunction intToBuffer(integer: number | bigint): Buffer {\n const hex = intToHex(integer)\n return Buffer.from(hex, 'hex')\n}\n\n/** Transform anything into a Buffer */\nfunction toBuffer(v: Input): Buffer {\n if (!Buffer.isBuffer(v)) {\n if (typeof v === 'string') {\n if (isHexPrefixed(v)) {\n return Buffer.from(padToEven(stripHexPrefix(v)), 'hex')\n } else {\n return Buffer.from(v)\n }\n } else if (typeof v === 'number' || typeof v === 'bigint') {\n if (!v) {\n return Buffer.from([])\n } else {\n return intToBuffer(v)\n }\n } else if (v === null || v === undefined) {\n return Buffer.from([])\n } else if (v instanceof Uint8Array) {\n return Buffer.from(v as any)\n } else if (BN.isBN(v)) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray())\n } else {\n throw new Error('invalid type')\n }\n }\n return v\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Client = void 0;\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _websocket = _interopRequireDefault(require(\"./lib/client/websocket.browser\"));\n\nvar _client = _interopRequireDefault(require(\"./lib/client\"));\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar Client = /*#__PURE__*/function (_CommonClient) {\n (0, _inherits2[\"default\"])(Client, _CommonClient);\n\n var _super = _createSuper(Client);\n\n function Client() {\n var address = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"ws://localhost:8080\";\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$autoconnect = _ref.autoconnect,\n autoconnect = _ref$autoconnect === void 0 ? true : _ref$autoconnect,\n _ref$reconnect = _ref.reconnect,\n reconnect = _ref$reconnect === void 0 ? true : _ref$reconnect,\n _ref$reconnect_interv = _ref.reconnect_interval,\n reconnect_interval = _ref$reconnect_interv === void 0 ? 1000 : _ref$reconnect_interv,\n _ref$max_reconnects = _ref.max_reconnects,\n max_reconnects = _ref$max_reconnects === void 0 ? 5 : _ref$max_reconnects;\n\n var generate_request_id = arguments.length > 2 ? arguments[2] : undefined;\n (0, _classCallCheck2[\"default\"])(this, Client);\n return _super.call(this, _websocket[\"default\"], address, {\n autoconnect: autoconnect,\n reconnect: reconnect,\n reconnect_interval: reconnect_interval,\n max_reconnects: max_reconnects\n }, generate_request_id);\n }\n\n return (0, _createClass2[\"default\"])(Client);\n}(_client[\"default\"]);\n\nexports.Client = Client;","/**\n * \"Client\" wraps \"ws\" or a browser-implemented \"WebSocket\" library\n * according to the environment providing JSON RPC 2.0 support on top.\n * @module Client\n */\n\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _eventemitter = require(\"eventemitter3\");\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar __rest = void 0 && (void 0).__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}; // @ts-ignore\n\n\nvar CommonClient = /*#__PURE__*/function (_EventEmitter) {\n (0, _inherits2[\"default\"])(CommonClient, _EventEmitter);\n\n var _super = _createSuper(CommonClient);\n\n /**\n * Instantiate a Client class.\n * @constructor\n * @param {webSocketFactory} webSocketFactory - factory method for WebSocket\n * @param {String} address - url to a websocket server\n * @param {Object} options - ws options object with reconnect parameters\n * @param {Function} generate_request_id - custom generation request Id\n * @return {CommonClient}\n */\n function CommonClient(webSocketFactory) {\n var _this;\n\n var address = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"ws://localhost:8080\";\n\n var _a = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var generate_request_id = arguments.length > 3 ? arguments[3] : undefined;\n (0, _classCallCheck2[\"default\"])(this, CommonClient);\n\n var _a$autoconnect = _a.autoconnect,\n autoconnect = _a$autoconnect === void 0 ? true : _a$autoconnect,\n _a$reconnect = _a.reconnect,\n reconnect = _a$reconnect === void 0 ? true : _a$reconnect,\n _a$reconnect_interval = _a.reconnect_interval,\n reconnect_interval = _a$reconnect_interval === void 0 ? 1000 : _a$reconnect_interval,\n _a$max_reconnects = _a.max_reconnects,\n max_reconnects = _a$max_reconnects === void 0 ? 5 : _a$max_reconnects,\n rest_options = __rest(_a, [\"autoconnect\", \"reconnect\", \"reconnect_interval\", \"max_reconnects\"]);\n\n _this = _super.call(this);\n _this.webSocketFactory = webSocketFactory;\n _this.queue = {};\n _this.rpc_id = 0;\n _this.address = address;\n _this.autoconnect = autoconnect;\n _this.ready = false;\n _this.reconnect = reconnect;\n _this.reconnect_interval = reconnect_interval;\n _this.max_reconnects = max_reconnects;\n _this.rest_options = rest_options;\n _this.current_reconnects = 0;\n\n _this.generate_request_id = generate_request_id || function () {\n return ++_this.rpc_id;\n };\n\n if (_this.autoconnect) _this._connect(_this.address, Object.assign({\n autoconnect: _this.autoconnect,\n reconnect: _this.reconnect,\n reconnect_interval: _this.reconnect_interval,\n max_reconnects: _this.max_reconnects\n }, _this.rest_options));\n return _this;\n }\n /**\n * Connects to a defined server if not connected already.\n * @method\n * @return {Undefined}\n */\n\n\n (0, _createClass2[\"default\"])(CommonClient, [{\n key: \"connect\",\n value: function connect() {\n if (this.socket) return;\n\n this._connect(this.address, Object.assign({\n autoconnect: this.autoconnect,\n reconnect: this.reconnect,\n reconnect_interval: this.reconnect_interval,\n max_reconnects: this.max_reconnects\n }, this.rest_options));\n }\n /**\n * Calls a registered RPC method on server.\n * @method\n * @param {String} method - RPC method name\n * @param {Object|Array} params - optional method parameters\n * @param {Number} timeout - RPC reply timeout value\n * @param {Object} ws_opts - options passed to ws\n * @return {Promise}\n */\n\n }, {\n key: \"call\",\n value: function call(method, params, timeout, ws_opts) {\n var _this2 = this;\n\n if (!ws_opts && \"object\" === (0, _typeof2[\"default\"])(timeout)) {\n ws_opts = timeout;\n timeout = null;\n }\n\n return new Promise(function (resolve, reject) {\n if (!_this2.ready) return reject(new Error(\"socket not ready\"));\n\n var rpc_id = _this2.generate_request_id(method, params);\n\n var message = {\n jsonrpc: \"2.0\",\n method: method,\n params: params || null,\n id: rpc_id\n };\n\n _this2.socket.send(JSON.stringify(message), ws_opts, function (error) {\n if (error) return reject(error);\n _this2.queue[rpc_id] = {\n promise: [resolve, reject]\n };\n\n if (timeout) {\n _this2.queue[rpc_id].timeout = setTimeout(function () {\n delete _this2.queue[rpc_id];\n reject(new Error(\"reply timeout\"));\n }, timeout);\n }\n });\n });\n }\n /**\n * Logins with the other side of the connection.\n * @method\n * @param {Object} params - Login credentials object\n * @return {Promise}\n */\n\n }, {\n key: \"login\",\n value: function () {\n var _login = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(params) {\n var resp;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.call(\"rpc.login\", params);\n\n case 2:\n resp = _context.sent;\n\n if (resp) {\n _context.next = 5;\n break;\n }\n\n throw new Error(\"authentication failed\");\n\n case 5:\n return _context.abrupt(\"return\", resp);\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function login(_x) {\n return _login.apply(this, arguments);\n }\n\n return login;\n }()\n /**\n * Fetches a list of client's methods registered on server.\n * @method\n * @return {Array}\n */\n\n }, {\n key: \"listMethods\",\n value: function () {\n var _listMethods = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2() {\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.call(\"__listMethods\");\n\n case 2:\n return _context2.abrupt(\"return\", _context2.sent);\n\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function listMethods() {\n return _listMethods.apply(this, arguments);\n }\n\n return listMethods;\n }()\n /**\n * Sends a JSON-RPC 2.0 notification to server.\n * @method\n * @param {String} method - RPC method name\n * @param {Object} params - optional method parameters\n * @return {Promise}\n */\n\n }, {\n key: \"notify\",\n value: function notify(method, params) {\n var _this3 = this;\n\n return new Promise(function (resolve, reject) {\n if (!_this3.ready) return reject(new Error(\"socket not ready\"));\n var message = {\n jsonrpc: \"2.0\",\n method: method,\n params: params || null\n };\n\n _this3.socket.send(JSON.stringify(message), function (error) {\n if (error) return reject(error);\n resolve();\n });\n });\n }\n /**\n * Subscribes for a defined event.\n * @method\n * @param {String|Array} event - event name\n * @return {Undefined}\n * @throws {Error}\n */\n\n }, {\n key: \"subscribe\",\n value: function () {\n var _subscribe = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee3(event) {\n var result;\n return _regenerator[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (typeof event === \"string\") event = [event];\n _context3.next = 3;\n return this.call(\"rpc.on\", event);\n\n case 3:\n result = _context3.sent;\n\n if (!(typeof event === \"string\" && result[event] !== \"ok\")) {\n _context3.next = 6;\n break;\n }\n\n throw new Error(\"Failed subscribing to an event '\" + event + \"' with: \" + result[event]);\n\n case 6:\n return _context3.abrupt(\"return\", result);\n\n case 7:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function subscribe(_x2) {\n return _subscribe.apply(this, arguments);\n }\n\n return subscribe;\n }()\n /**\n * Unsubscribes from a defined event.\n * @method\n * @param {String|Array} event - event name\n * @return {Undefined}\n * @throws {Error}\n */\n\n }, {\n key: \"unsubscribe\",\n value: function () {\n var _unsubscribe = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee4(event) {\n var result;\n return _regenerator[\"default\"].wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (typeof event === \"string\") event = [event];\n _context4.next = 3;\n return this.call(\"rpc.off\", event);\n\n case 3:\n result = _context4.sent;\n\n if (!(typeof event === \"string\" && result[event] !== \"ok\")) {\n _context4.next = 6;\n break;\n }\n\n throw new Error(\"Failed unsubscribing from an event with: \" + result);\n\n case 6:\n return _context4.abrupt(\"return\", result);\n\n case 7:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function unsubscribe(_x3) {\n return _unsubscribe.apply(this, arguments);\n }\n\n return unsubscribe;\n }()\n /**\n * Closes a WebSocket connection gracefully.\n * @method\n * @param {Number} code - socket close code\n * @param {String} data - optional data to be sent before closing\n * @return {Undefined}\n */\n\n }, {\n key: \"close\",\n value: function close(code, data) {\n this.socket.close(code || 1000, data);\n }\n /**\n * Connection/Message handler.\n * @method\n * @private\n * @param {String} address - WebSocket API address\n * @param {Object} options - ws options object\n * @return {Undefined}\n */\n\n }, {\n key: \"_connect\",\n value: function _connect(address, options) {\n var _this4 = this;\n\n this.socket = this.webSocketFactory(address, options);\n this.socket.addEventListener(\"open\", function () {\n _this4.ready = true;\n\n _this4.emit(\"open\");\n\n _this4.current_reconnects = 0;\n });\n this.socket.addEventListener(\"message\", function (_ref) {\n var message = _ref.data;\n if (message instanceof ArrayBuffer) message = Buffer.from(message).toString();\n\n try {\n message = JSON.parse(message);\n } catch (error) {\n return;\n } // check if any listeners are attached and forward event\n\n\n if (message.notification && _this4.listeners(message.notification).length) {\n if (!Object.keys(message.params).length) return _this4.emit(message.notification);\n var args = [message.notification];\n if (message.params.constructor === Object) args.push(message.params);else // using for-loop instead of unshift/spread because performance is better\n for (var i = 0; i < message.params.length; i++) {\n args.push(message.params[i]);\n } // run as microtask so that pending queue messages are resolved first\n // eslint-disable-next-line prefer-spread\n\n return Promise.resolve().then(function () {\n _this4.emit.apply(_this4, args);\n });\n }\n\n if (!_this4.queue[message.id]) {\n // general JSON RPC 2.0 events\n if (message.method && message.params) {\n // run as microtask so that pending queue messages are resolved first\n return Promise.resolve().then(function () {\n _this4.emit(message.method, message.params);\n });\n }\n\n return;\n } // reject early since server's response is invalid\n\n\n if (\"error\" in message === \"result\" in message) _this4.queue[message.id].promise[1](new Error(\"Server response malformed. Response must include either \\\"result\\\"\" + \" or \\\"error\\\", but not both.\"));\n if (_this4.queue[message.id].timeout) clearTimeout(_this4.queue[message.id].timeout);\n if (message.error) _this4.queue[message.id].promise[1](message.error);else _this4.queue[message.id].promise[0](message.result);\n delete _this4.queue[message.id];\n });\n this.socket.addEventListener(\"error\", function (error) {\n return _this4.emit(\"error\", error);\n });\n this.socket.addEventListener(\"close\", function (_ref2) {\n var code = _ref2.code,\n reason = _ref2.reason;\n if (_this4.ready) // Delay close event until internal state is updated\n setTimeout(function () {\n return _this4.emit(\"close\", code, reason);\n }, 0);\n _this4.ready = false;\n _this4.socket = undefined;\n if (code === 1000) return;\n _this4.current_reconnects++;\n if (_this4.reconnect && (_this4.max_reconnects > _this4.current_reconnects || _this4.max_reconnects === 0)) setTimeout(function () {\n return _this4._connect(address, options);\n }, _this4.reconnect_interval);\n });\n }\n }]);\n return CommonClient;\n}(_eventemitter.EventEmitter);\n\nexports[\"default\"] = CommonClient;","/**\n * WebSocket implements a browser-side WebSocket specification.\n * @module Client\n */\n\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = _default;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _eventemitter = require(\"eventemitter3\");\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar WebSocketBrowserImpl = /*#__PURE__*/function (_EventEmitter) {\n (0, _inherits2[\"default\"])(WebSocketBrowserImpl, _EventEmitter);\n\n var _super = _createSuper(WebSocketBrowserImpl);\n\n /** Instantiate a WebSocket class\n * @constructor\n * @param {String} address - url to a websocket server\n * @param {(Object)} options - websocket options\n * @param {(String|Array)} protocols - a list of protocols\n * @return {WebSocketBrowserImpl} - returns a WebSocket instance\n */\n function WebSocketBrowserImpl(address, options, protocols) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, WebSocketBrowserImpl);\n _this = _super.call(this);\n _this.socket = new window.WebSocket(address, protocols);\n\n _this.socket.onopen = function () {\n return _this.emit(\"open\");\n };\n\n _this.socket.onmessage = function (event) {\n return _this.emit(\"message\", event.data);\n };\n\n _this.socket.onerror = function (error) {\n return _this.emit(\"error\", error);\n };\n\n _this.socket.onclose = function (event) {\n _this.emit(\"close\", event.code, event.reason);\n };\n\n return _this;\n }\n /**\n * Sends data through a websocket connection\n * @method\n * @param {(String|Object)} data - data to be sent via websocket\n * @param {Object} optionsOrCallback - ws options\n * @param {Function} callback - a callback called once the data is sent\n * @return {Undefined}\n */\n\n\n (0, _createClass2[\"default\"])(WebSocketBrowserImpl, [{\n key: \"send\",\n value: function send(data, optionsOrCallback, callback) {\n var cb = callback || optionsOrCallback;\n\n try {\n this.socket.send(data);\n cb();\n } catch (error) {\n cb(error);\n }\n }\n /**\n * Closes an underlying socket\n * @method\n * @param {Number} code - status code explaining why the connection is being closed\n * @param {String} reason - a description why the connection is closing\n * @return {Undefined}\n * @throws {Error}\n */\n\n }, {\n key: \"close\",\n value: function close(code, reason) {\n this.socket.close(code, reason);\n }\n }, {\n key: \"addEventListener\",\n value: function addEventListener(type, listener, options) {\n this.socket.addEventListener(type, listener, options);\n }\n }]);\n return WebSocketBrowserImpl;\n}(_eventemitter.EventEmitter);\n/**\n * factory method for common WebSocket instance\n * @method\n * @param {String} address - url to a websocket server\n * @param {(Object)} options - websocket options\n * @return {Undefined}\n */\n\n\nfunction _default(address, options) {\n return new WebSocketBrowserImpl(address, options);\n}","import { AsyncAction } from './AsyncAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nimport { SchedulerAction } from '../types';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AnimationFrameAction extends AsyncAction {\n\n constructor(protected scheduler: AnimationFrameScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AnimationFrameScheduler, id?: any, delay: number = 0): any {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If an animation frame has already been requested, don't request another\n // one. If an animation frame hasn't been requested yet, request one. Return\n // the current animation frame request id.\n return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(\n () => scheduler.flush(null)));\n }\n protected recycleAsyncId(scheduler: AnimationFrameScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue is empty, cancel the requested animation frame and\n // set the scheduled flag to undefined so the next AnimationFrameAction will\n // request its own.\n if (scheduler.actions.length === 0) {\n cancelAnimationFrame(id);\n scheduler.scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AnimationFrameScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n\n this.active = true;\n this.scheduled = undefined;\n\n const {actions} = this;\n let error: any;\n let index: number = -1;\n let count: number = actions.length;\n action = action || actions.shift();\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this.active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\n\n/**\n *\n * Animation Frame Scheduler\n *\n * Perform task when `window.requestAnimationFrame` would fire\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link asyncScheduler} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * ## Example\n * Schedule div height animation\n * ```ts\n * // html:
\n * import { animationFrameScheduler } from 'rxjs';\n *\n * const div = document.querySelector('div');\n *\n * animationFrameScheduler.schedule(function(height) {\n * div.style.height = height + \"px\";\n *\n * this.schedule(height + 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see a div element growing in height\n * ```\n */\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\n\n/**\n * @deprecated renamed. Use {@link animationFrameScheduler}\n */\nexport const animationFrame = animationFrameScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { SchedulerAction } from '../types';\n\nexport class VirtualTimeScheduler extends AsyncScheduler {\n\n protected static frameTimeFactor: number = 10;\n\n public frame: number = 0;\n public index: number = -1;\n\n constructor(SchedulerAction: typeof AsyncAction = VirtualAction as any,\n public maxFrames: number = Number.POSITIVE_INFINITY) {\n super(SchedulerAction, () => this.frame);\n }\n\n /**\n * Prompt the Scheduler to execute all of its queued actions, therefore\n * clearing its queue.\n * @return {void}\n */\n public flush(): void {\n\n const {actions, maxFrames} = this;\n let error: any, action: AsyncAction;\n\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n }\n\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @nodoc\n */\nexport class VirtualAction extends AsyncAction {\n\n protected active: boolean = true;\n\n constructor(protected scheduler: VirtualTimeScheduler,\n protected work: (this: SchedulerAction, state?: T) => void,\n protected index: number = scheduler.index += 1) {\n super(scheduler, work);\n this.index = scheduler.index = index;\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (!this.id) {\n return super.schedule(state, delay);\n }\n this.active = false;\n // If an action is rescheduled, we save allocations by mutating its state,\n // pushing it to the end of the scheduler queue, and recycling the action.\n // But since the VirtualTimeScheduler is used for testing, VirtualActions\n // must be immutable so they can be inspected later.\n const action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n }\n\n protected requestAsyncId(scheduler: VirtualTimeScheduler, id?: any, delay: number = 0): any {\n this.delay = scheduler.frame + delay;\n const {actions} = scheduler;\n actions.push(this);\n (actions as Array>).sort(VirtualAction.sortActions);\n return true;\n }\n\n protected recycleAsyncId(scheduler: VirtualTimeScheduler, id?: any, delay: number = 0): any {\n return undefined;\n }\n\n protected _execute(state: T, delay: number): any {\n if (this.active === true) {\n return super._execute(state, delay);\n }\n }\n\n public static sortActions(a: VirtualAction, b: VirtualAction) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n } else if (a.index > b.index) {\n return 1;\n } else {\n return -1;\n }\n } else if (a.delay > b.delay) {\n return 1;\n } else {\n return -1;\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput } from '../types';\n\n/**\n * Tests to see if the object is an RxJS {@link Observable}\n * @param obj the object to test\n */\nexport function isObservable(obj: any): obj is Observable {\n return !!obj && (obj instanceof Observable || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function'));\n}\n","import { SchedulerLike, SchedulerAction } from '../types';\nimport { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { Subscriber } from '../Subscriber';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isArray } from '../util/isArray';\nimport { isScheduler } from '../util/isScheduler';\n\n// tslint:disable:max-line-length\n/** @deprecated resultSelector is no longer supported, use a mapping function. */\nexport function bindCallback(callbackFunc: Function, resultSelector: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n\nexport function bindCallback(callbackFunc: (callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): () => Observable;\nexport function bindCallback(callbackFunc: (callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): () => Observable;\nexport function bindCallback(callbackFunc: (callback: () => any) => any, scheduler?: SchedulerLike): () => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\n\nexport function bindCallback(callbackFunc: (...args: Array any)>) => any, scheduler?: SchedulerLike): (...args: A[]) => Observable;\nexport function bindCallback(callbackFunc: (...args: Array any)>) => any, scheduler?: SchedulerLike): (...args: A[]) => Observable;\n\nexport function bindCallback(callbackFunc: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n\n// tslint:enable:max-line-length\n\n/**\n * Converts a callback API to a function that returns an Observable.\n *\n * Give it a function `f` of type `f(x, callback)` and\n * it will return a function `g` that when called as `g(x)` will output an\n * Observable.\n *\n * `bindCallback` is not an operator because its input and output are not\n * Observables. The input is a function `func` with some parameters. The\n * last parameter must be a callback function that `func` calls when it is\n * done.\n *\n * The output of `bindCallback` is a function that takes the same parameters\n * as `func`, except the last one (the callback). When the output function\n * is called with arguments it will return an Observable. If function `func`\n * calls its callback with one argument, the Observable will emit that value.\n * If on the other hand the callback is called with multiple values the resulting\n * Observable will emit an array with said values as arguments.\n *\n * It is **very important** to remember that input function `func` is not called\n * when the output function is, but rather when the Observable returned by the output\n * function is subscribed. This means if `func` makes an AJAX request, that request\n * will be made every time someone subscribes to the resulting Observable, but not before.\n *\n * The last optional parameter - `scheduler` - can be used to control when the call\n * to `func` happens after someone subscribes to Observable, as well as when results\n * passed to callback will be emitted. By default, the subscription to an Observable calls `func`\n * synchronously, but using {@link asyncScheduler} as the last parameter will defer the call to `func`,\n * just like wrapping the call in `setTimeout` with a timeout of `0` would. If you were to use the async Scheduler\n * and call `subscribe` on the output Observable, all function calls that are currently executing\n * will end before `func` is invoked.\n *\n * By default, results passed to the callback are emitted immediately after `func` invokes the callback.\n * In particular, if the callback is called synchronously, then the subscription of the resulting Observable\n * will call the `next` function synchronously as well. If you want to defer that call,\n * you may use {@link asyncScheduler} just as before. This means that by using `Scheduler.async` you can\n * ensure that `func` always calls its callback asynchronously, thus avoiding terrifying Zalgo.\n *\n * Note that the Observable created by the output function will always emit a single value\n * and then complete immediately. If `func` calls the callback multiple times, values from subsequent\n * calls will not appear in the stream. If you need to listen for multiple calls,\n * you probably want to use {@link fromEvent} or {@link fromEventPattern} instead.\n *\n * If `func` depends on some context (`this` property) and is not already bound, the context of `func`\n * will be the context that the output function has at call time. In particular, if `func`\n * is called as a method of some objec and if `func` is not already bound, in order to preserve the context\n * it is recommended that the context of the output function is set to that object as well.\n *\n * If the input function calls its callback in the \"node style\" (i.e. first argument to callback is\n * optional error parameter signaling whether the call failed or not), {@link bindNodeCallback}\n * provides convenient error handling and probably is a better choice.\n * `bindCallback` will treat such functions the same as any other and error parameters\n * (whether passed or not) will always be interpreted as regular callback argument.\n *\n * ## Examples\n *\n * ### Convert jQuery's getJSON to an Observable API\n * ```ts\n * import { bindCallback } from 'rxjs';\n * import * as jQuery from 'jquery';\n *\n * // Suppose we have jQuery.getJSON('/my/url', callback)\n * const getJSONAsObservable = bindCallback(jQuery.getJSON);\n * const result = getJSONAsObservable('/my/url');\n * result.subscribe(x => console.log(x), e => console.error(e));\n * ```\n *\n * ### Receive an array of arguments passed to a callback\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * const someFunction = (a, b, c) => {\n * console.log(a); // 5\n * console.log(b); // 'some string'\n * console.log(c); // {someProperty: 'someValue'}\n * };\n *\n * const boundSomeFunction = bindCallback(someFunction);\n * boundSomeFunction().subscribe(values => {\n * console.log(values) // [5, 'some string', {someProperty: 'someValue'}]\n * });\n * ```\n *\n * ### Compare behaviour with and without async Scheduler\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * function iCallMyCallbackSynchronously(cb) {\n * cb();\n * }\n *\n * const boundSyncFn = bindCallback(iCallMyCallbackSynchronously);\n * const boundAsyncFn = bindCallback(iCallMyCallbackSynchronously, null, Rx.Scheduler.async);\n *\n * boundSyncFn().subscribe(() => console.log('I was sync!'));\n * boundAsyncFn().subscribe(() => console.log('I was async!'));\n * console.log('This happened...');\n *\n * // Logs:\n * // I was sync!\n * // This happened...\n * // I was async!\n * ```\n *\n * ### Use bindCallback on an object method\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * const boundMethod = bindCallback(someObject.methodWithCallback);\n * boundMethod.call(someObject) // make sure methodWithCallback has access to someObject\n * .subscribe(subscriber);\n * ```\n *\n * @see {@link bindNodeCallback}\n * @see {@link from}\n *\n * @param {function} func A function with a callback as the last parameter.\n * @param {SchedulerLike} [scheduler] The scheduler on which to schedule the\n * callbacks.\n * @return {function(...params: *): Observable} A function which returns the\n * Observable that delivers the same values the callback would deliver.\n * @name bindCallback\n */\nexport function bindCallback(\n callbackFunc: Function,\n resultSelector?: Function|SchedulerLike,\n scheduler?: SchedulerLike\n): (...args: any[]) => Observable {\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n } else {\n // DEPRECATED PATH\n return (...args: any[]) => bindCallback(callbackFunc, scheduler)(...args).pipe(\n map((args) => isArray(args) ? resultSelector(...args) : resultSelector(args)),\n );\n }\n }\n\n return function (this: any, ...args: any[]): Observable {\n const context = this;\n let subject: AsyncSubject;\n const params = {\n context,\n subject,\n callbackFunc,\n scheduler,\n };\n return new Observable(subscriber => {\n if (!scheduler) {\n if (!subject) {\n subject = new AsyncSubject();\n const handler = (...innerArgs: any[]) => {\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n } else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n } else {\n const state: DispatchState = {\n args, subscriber, params,\n };\n return scheduler.schedule>(dispatch, 0, state);\n }\n });\n };\n}\n\ninterface DispatchState {\n args: any[];\n subscriber: Subscriber;\n params: ParamsContext;\n}\n\ninterface ParamsContext {\n callbackFunc: Function;\n scheduler: SchedulerLike;\n context: any;\n subject: AsyncSubject;\n}\n\nfunction dispatch(this: SchedulerAction>, state: DispatchState) {\n const self = this;\n const { args, subscriber, params } = state;\n const { callbackFunc, context, scheduler } = params;\n let { subject } = params;\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n\n const handler = (...innerArgs: any[]) => {\n const value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n this.add(scheduler.schedule>(dispatchNext, 0, { value, subject }));\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n subject.error(err);\n }\n }\n\n this.add(subject.subscribe(subscriber));\n}\n\ninterface NextState {\n subject: AsyncSubject;\n value: T;\n}\n\nfunction dispatchNext(this: SchedulerAction>, state: NextState) {\n const { value, subject } = state;\n subject.next(value);\n subject.complete();\n}\n\ninterface ErrorState {\n subject: AsyncSubject;\n err: any;\n}\n\nfunction dispatchError(this: SchedulerAction>, state: ErrorState) {\n const { err, subject } = state;\n subject.error(err);\n}\n","import { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { Subscriber } from '../Subscriber';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\n\n/* tslint:disable:max-line-length */\n/** @deprecated resultSelector is deprecated, pipe to map instead */\nexport function bindNodeCallback(callbackFunc: Function, resultSelector: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): () => Observable;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any) => any) => any, scheduler?: SchedulerLike): () => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable; /* tslint:enable:max-line-length */\n\nexport function bindNodeCallback(callbackFunc: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n/**\n * Converts a Node.js-style callback API to a function that returns an\n * Observable.\n *\n * It's just like {@link bindCallback}, but the\n * callback is expected to be of type `callback(error, result)`.\n *\n * `bindNodeCallback` is not an operator because its input and output are not\n * Observables. The input is a function `func` with some parameters, but the\n * last parameter must be a callback function that `func` calls when it is\n * done. The callback function is expected to follow Node.js conventions,\n * where the first argument to the callback is an error object, signaling\n * whether call was successful. If that object is passed to callback, it means\n * something went wrong.\n *\n * The output of `bindNodeCallback` is a function that takes the same\n * parameters as `func`, except the last one (the callback). When the output\n * function is called with arguments, it will return an Observable.\n * If `func` calls its callback with error parameter present, Observable will\n * error with that value as well. If error parameter is not passed, Observable will emit\n * second parameter. If there are more parameters (third and so on),\n * Observable will emit an array with all arguments, except first error argument.\n *\n * Note that `func` will not be called at the same time output function is,\n * but rather whenever resulting Observable is subscribed. By default call to\n * `func` will happen synchronously after subscription, but that can be changed\n * with proper `scheduler` provided as optional third parameter. {@link SchedulerLike}\n * can also control when values from callback will be emitted by Observable.\n * To find out more, check out documentation for {@link bindCallback}, where\n * {@link SchedulerLike} works exactly the same.\n *\n * As in {@link bindCallback}, context (`this` property) of input function will be set to context\n * of returned function, when it is called.\n *\n * After Observable emits value, it will complete immediately. This means\n * even if `func` calls callback again, values from second and consecutive\n * calls will never appear on the stream. If you need to handle functions\n * that call callbacks multiple times, check out {@link fromEvent} or\n * {@link fromEventPattern} instead.\n *\n * Note that `bindNodeCallback` can be used in non-Node.js environments as well.\n * \"Node.js-style\" callbacks are just a convention, so if you write for\n * browsers or any other environment and API you use implements that callback style,\n * `bindNodeCallback` can be safely used on that API functions as well.\n *\n * Remember that Error object passed to callback does not have to be an instance\n * of JavaScript built-in `Error` object. In fact, it does not even have to an object.\n * Error parameter of callback function is interpreted as \"present\", when value\n * of that parameter is truthy. It could be, for example, non-zero number, non-empty\n * string or boolean `true`. In all of these cases resulting Observable would error\n * with that value. This means usually regular style callbacks will fail very often when\n * `bindNodeCallback` is used. If your Observable errors much more often then you\n * would expect, check if callback really is called in Node.js-style and, if not,\n * switch to {@link bindCallback} instead.\n *\n * Note that even if error parameter is technically present in callback, but its value\n * is falsy, it still won't appear in array emitted by Observable.\n *\n * ## Examples\n * ### Read a file from the filesystem and get the data as an Observable\n * ```ts\n * import * as fs from 'fs';\n * const readFileAsObservable = bindNodeCallback(fs.readFile);\n * const result = readFileAsObservable('./roadNames.txt', 'utf8');\n * result.subscribe(x => console.log(x), e => console.error(e));\n * ```\n *\n * ### Use on function calling callback with multiple arguments\n * ```ts\n * someFunction((err, a, b) => {\n * console.log(err); // null\n * console.log(a); // 5\n * console.log(b); // \"some string\"\n * });\n * const boundSomeFunction = bindNodeCallback(someFunction);\n * boundSomeFunction()\n * .subscribe(value => {\n * console.log(value); // [5, \"some string\"]\n * });\n * ```\n *\n * ### Use on function calling callback in regular style\n * ```ts\n * someFunction(a => {\n * console.log(a); // 5\n * });\n * const boundSomeFunction = bindNodeCallback(someFunction);\n * boundSomeFunction()\n * .subscribe(\n * value => {} // never gets called\n * err => console.log(err) // 5\n * );\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link from}\n *\n * @param {function} func Function with a Node.js-style callback as the last parameter.\n * @param {SchedulerLike} [scheduler] The scheduler on which to schedule the\n * callbacks.\n * @return {function(...params: *): Observable} A function which returns the\n * Observable that delivers the same values the Node.js callback would\n * deliver.\n * @name bindNodeCallback\n */\nexport function bindNodeCallback(\n callbackFunc: Function,\n resultSelector: Function|SchedulerLike,\n scheduler?: SchedulerLike\n): (...args: any[]) => Observable {\n\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n } else {\n // DEPRECATED PATH\n return (...args: any[]) => bindNodeCallback(callbackFunc, scheduler)(...args).pipe(\n map(args => isArray(args) ? resultSelector(...args) : resultSelector(args))\n );\n }\n }\n\n return function(this: any, ...args: any[]): Observable {\n const params: ParamsState = {\n subject: undefined,\n args,\n callbackFunc,\n scheduler,\n context: this,\n };\n return new Observable(subscriber => {\n const { context } = params;\n let { subject } = params;\n if (!scheduler) {\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n const handler = (...innerArgs: any[]) => {\n const err = innerArgs.shift();\n\n if (err) {\n subject.error(err);\n return;\n }\n\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n } else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n } else {\n return scheduler.schedule>(dispatch, 0, { params, subscriber, context });\n }\n });\n };\n}\n\ninterface DispatchState {\n subscriber: Subscriber;\n context: any;\n params: ParamsState;\n}\n\ninterface ParamsState {\n callbackFunc: Function;\n args: any[];\n scheduler: SchedulerLike;\n subject: AsyncSubject;\n context: any;\n}\n\nfunction dispatch(this: SchedulerAction>, state: DispatchState) {\n const { params, subscriber, context } = state;\n const { callbackFunc, args, scheduler } = params;\n let subject = params.subject;\n\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n\n const handler = (...innerArgs: any[]) => {\n const err = innerArgs.shift();\n if (err) {\n this.add(scheduler.schedule>(dispatchError, 0, { err, subject }));\n } else {\n const value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n this.add(scheduler.schedule>(dispatchNext, 0, { value, subject }));\n }\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n this.add(scheduler.schedule>(dispatchError, 0, { err, subject }));\n }\n }\n\n this.add(subject.subscribe(subscriber));\n}\n\ninterface DispatchNextArg {\n subject: AsyncSubject;\n value: T;\n}\n\nfunction dispatchNext(arg: DispatchNextArg) {\n const { value, subject } = arg;\n subject.next(value);\n subject.complete();\n}\n\ninterface DispatchErrorArg {\n subject: AsyncSubject;\n err: any;\n}\n\nfunction dispatchError(arg: DispatchErrorArg) {\n const { err, subject } = arg;\n subject.error(err);\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, ObservedValuesFromArray, ObservedValueOf, SubscribableOrPromise } from '../types';\nimport { isArray } from '../util/isArray';\nimport { map } from '../operators/map';\nimport { isObject } from '../util/isObject';\nimport { isObservable } from '../util/isObservable';\nimport { from } from './from';\n\n/* tslint:disable:max-line-length */\n\n// forkJoin(a$, b$, c$)\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: SubscribableOrPromise): Observable<[T]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput): Observable<[T, T2]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput): Observable<[T, T2, T3]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable<[T, T2, T3, T4]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable<[T, T2, T3, T4, T5]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable<[T, T2, T3, T4, T5, T6]>;\n\n// forkJoin([a$, b$, c$]);\n// TODO(benlesh): Uncomment for TS 3.0\n// export function forkJoin(sources: []): Observable;\nexport function forkJoin(sources: [ObservableInput]): Observable<[A]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput]): Observable<[A, B]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C, D]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C, D, E]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C, D, E, F]>;\nexport function forkJoin[]>(sources: A): Observable[]>;\n\n// forkJoin({})\nexport function forkJoin(sourcesObject: {}): Observable;\nexport function forkJoin(sourcesObject: T): Observable<{ [K in keyof T]: ObservedValueOf }>;\n\n/** @deprecated resultSelector is deprecated, pipe to map instead */\nexport function forkJoin(...args: Array|Function>): Observable;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(...sources: ObservableInput[]): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Accepts an `Array` of {@link ObservableInput} or a dictionary `Object` of {@link ObservableInput} and returns\n * an {@link Observable} that emits either an array of values in the exact same order as the passed array,\n * or a dictionary of values in the same shape as the passed dictionary.\n *\n * Wait for Observables to complete and then combine last values they emitted.\n *\n * ![](forkJoin.png)\n *\n * `forkJoin` is an operator that takes any number of input observables which can be passed either as an array\n * or a dictionary of input observables. If no input observables are provided, resulting stream will complete\n * immediately.\n *\n * `forkJoin` will wait for all passed observables to complete and then it will emit an array or an object with last\n * values from corresponding observables.\n *\n * If you pass an array of `n` observables to the operator, resulting\n * array will have `n` values, where first value is the last thing emitted by the first observable,\n * second value is the last thing emitted by the second observable and so on.\n *\n * If you pass a dictionary of observables to the operator, resulting\n * objects will have the same keys as the dictionary passed, with their last values they've emitted\n * located at the corresponding key.\n *\n * That means `forkJoin` will not emit more than once and it will complete after that. If you need to emit combined\n * values not only at the end of lifecycle of passed observables, but also throughout it, try out {@link combineLatest}\n * or {@link zip} instead.\n *\n * In order for resulting array to have the same length as the number of input observables, whenever any of\n * that observables completes without emitting any value, `forkJoin` will complete at that moment as well\n * and it will not emit anything either, even if it already has some last values from other observables.\n * Conversely, if there is an observable that never completes, `forkJoin` will never complete as well,\n * unless at any point some other observable completes without emitting value, which brings us back to\n * the previous case. Overall, in order for `forkJoin` to emit a value, all observables passed as arguments\n * have to emit something at least once and complete.\n *\n * If any input observable errors at some point, `forkJoin` will error as well and all other observables\n * will be immediately unsubscribed.\n *\n * Optionally `forkJoin` accepts project function, that will be called with values which normally\n * would land in emitted array. Whatever is returned by project function, will appear in output\n * observable instead. This means that default project can be thought of as a function that takes\n * all its arguments and puts them into an array. Note that project function will be called only\n * when output observable is supposed to emit a result.\n *\n * ## Examples\n *\n * ### Use forkJoin with a dictionary of observable inputs\n * ```ts\n * import { forkJoin, of, timer } from 'rxjs';\n *\n * const observable = forkJoin({\n * foo: of(1, 2, 3, 4),\n * bar: Promise.resolve(8),\n * baz: timer(4000),\n * });\n * observable.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // { foo: 4, bar: 8, baz: 0 } after 4 seconds\n * // \"This is how it ends!\" immediately after\n * ```\n *\n * ### Use forkJoin with an array of observable inputs\n * ```ts\n * import { forkJoin, of } from 'rxjs';\n *\n * const observable = forkJoin([\n * of(1, 2, 3, 4),\n * Promise.resolve(8),\n * timer(4000),\n * ]);\n * observable.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // [4, 8, 0] after 4 seconds\n * // \"This is how it ends!\" immediately after\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n *\n * @param {...ObservableInput} sources Any number of Observables provided either as an array or as an arguments\n * passed directly to the operator.\n * @param {function} [project] Function that takes values emitted by input Observables and returns value\n * that will appear in resulting Observable instead of default array.\n * @return {Observable} Observable emitting either an array of last values emitted by passed Observables\n * or value from project function.\n */\nexport function forkJoin(\n ...sources: any[]\n): Observable {\n if (sources.length === 1) {\n const first = sources[0];\n if (isArray(first)) {\n return forkJoinInternal(first, null);\n }\n // TODO(benlesh): isObservable check will not be necessary when deprecated path is removed.\n if (isObject(first) && Object.getPrototypeOf(first) === Object.prototype) {\n const keys = Object.keys(first);\n return forkJoinInternal(keys.map(key => first[key]), keys);\n }\n }\n\n // DEPRECATED PATHS BELOW HERE\n if (typeof sources[sources.length - 1] === 'function') {\n const resultSelector = sources.pop() as Function;\n sources = (sources.length === 1 && isArray(sources[0])) ? sources[0] : sources;\n return forkJoinInternal(sources, null).pipe(\n map((args: any[]) => resultSelector(...args))\n );\n }\n\n return forkJoinInternal(sources, null);\n}\n\nfunction forkJoinInternal(sources: ObservableInput[], keys: string[] | null): Observable {\n return new Observable(subscriber => {\n const len = sources.length;\n if (len === 0) {\n subscriber.complete();\n return;\n }\n const values = new Array(len);\n let completed = 0;\n let emitted = 0;\n for (let i = 0; i < len; i++) {\n const source = from(sources[i]);\n let hasValue = false;\n subscriber.add(source.subscribe({\n next: value => {\n if (!hasValue) {\n hasValue = true;\n emitted++;\n }\n values[i] = value;\n },\n error: err => subscriber.error(err),\n complete: () => {\n completed++;\n if (completed === len || !hasValue) {\n if (emitted === len) {\n subscriber.next(keys ?\n keys.reduce((result, key, i) => (result[key] = values[i], result), {}) :\n values);\n }\n subscriber.complete();\n }\n }\n }));\n }\n });\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { Subscriber } from '../Subscriber';\nimport { map } from '../operators/map';\n\nconst toString: Function = (() => Object.prototype.toString)();\n\nexport interface NodeStyleEventEmitter {\n addListener: (eventName: string | symbol, handler: NodeEventHandler) => this;\n removeListener: (eventName: string | symbol, handler: NodeEventHandler) => this;\n}\n\nexport type NodeEventHandler = (...args: any[]) => void;\n\n// For APIs that implement `addListener` and `removeListener` methods that may\n// not use the same arguments or return EventEmitter values\n// such as React Native\nexport interface NodeCompatibleEventEmitter {\n addListener: (eventName: string, handler: NodeEventHandler) => void | {};\n removeListener: (eventName: string, handler: NodeEventHandler) => void | {};\n}\n\nexport interface JQueryStyleEventEmitter {\n on: (eventName: string, handler: Function) => void;\n off: (eventName: string, handler: Function) => void;\n}\n\nexport interface HasEventTargetAddRemove {\n addEventListener(type: string, listener: ((evt: E) => void) | null, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: string, listener?: ((evt: E) => void) | null, options?: EventListenerOptions | boolean): void;\n}\n\nexport type EventTargetLike = HasEventTargetAddRemove | NodeStyleEventEmitter | NodeCompatibleEventEmitter | JQueryStyleEventEmitter;\n\nexport type FromEventTarget = EventTargetLike | ArrayLike>;\n\nexport interface EventListenerOptions {\n capture?: boolean;\n passive?: boolean;\n once?: boolean;\n}\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n once?: boolean;\n passive?: boolean;\n}\n\n/* tslint:disable:max-line-length */\nexport function fromEvent(target: FromEventTarget, eventName: string): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function fromEvent(target: FromEventTarget, eventName: string, resultSelector: (...args: any[]) => T): Observable;\nexport function fromEvent(target: FromEventTarget, eventName: string, options: EventListenerOptions): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function fromEvent(target: FromEventTarget, eventName: string, options: EventListenerOptions, resultSelector: (...args: any[]) => T): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Creates an Observable that emits events of a specific type coming from the\n * given event target.\n *\n * Creates an Observable from DOM events, or Node.js\n * EventEmitter events or others.\n *\n * ![](fromEvent.png)\n *\n * `fromEvent` accepts as a first argument event target, which is an object with methods\n * for registering event handler functions. As a second argument it takes string that indicates\n * type of event we want to listen for. `fromEvent` supports selected types of event targets,\n * which are described in detail below. If your event target does not match any of the ones listed,\n * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.\n * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event\n * handler functions have different names, but they all accept a string describing event type\n * and function itself, which will be called whenever said event happens.\n *\n * Every time resulting Observable is subscribed, event handler function will be registered\n * to event target on given event type. When that event fires, value\n * passed as a first argument to registered function will be emitted by output Observable.\n * When Observable is unsubscribed, function will be unregistered from event target.\n *\n * Note that if event target calls registered function with more than one argument, second\n * and following arguments will not appear in resulting stream. In order to get access to them,\n * you can pass to `fromEvent` optional project function, which will be called with all arguments\n * passed to event handler. Output Observable will then emit value returned by project function,\n * instead of the usual value.\n *\n * Remember that event targets listed below are checked via duck typing. It means that\n * no matter what kind of object you have and no matter what environment you work in,\n * you can safely use `fromEvent` on that object if it exposes described methods (provided\n * of course they behave as was described above). So for example if Node.js library exposes\n * event target which has the same method names as DOM EventTarget, `fromEvent` is still\n * a good choice.\n *\n * If the API you use is more callback then event handler oriented (subscribed\n * callback function fires only once and thus there is no need to manually\n * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}\n * instead.\n *\n * `fromEvent` supports following types of event targets:\n *\n * **DOM EventTarget**\n *\n * This is an object with `addEventListener` and `removeEventListener` methods.\n *\n * In the browser, `addEventListener` accepts - apart from event type string and event\n * handler function arguments - optional third parameter, which is either an object or boolean,\n * both used for additional configuration how and when passed function will be called. When\n * `fromEvent` is used with event target of that type, you can provide this values\n * as third parameter as well.\n *\n * **Node.js EventEmitter**\n *\n * An object with `addListener` and `removeListener` methods.\n *\n * **JQuery-style event target**\n *\n * An object with `on` and `off` methods\n *\n * **DOM NodeList**\n *\n * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.\n *\n * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes\n * it contains and install event handler function in every of them. When returned Observable\n * is unsubscribed, function will be removed from all Nodes.\n *\n * **DOM HtmlCollection**\n *\n * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is\n * installed and removed in each of elements.\n *\n *\n * ## Examples\n * ### Emits clicks happening on the DOM document\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * clicks.subscribe(x => console.log(x));\n *\n * // Results in:\n * // MouseEvent object logged to console every time a click\n * // occurs on the document.\n * ```\n *\n * ### Use addEventListener with capture option\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicksInDocument = fromEvent(document, 'click', true); // note optional configuration parameter\n * // which will be passed to addEventListener\n * const clicksInDiv = fromEvent(someDivInDocument, 'click');\n *\n * clicksInDocument.subscribe(() => console.log('document'));\n * clicksInDiv.subscribe(() => console.log('div'));\n *\n * // By default events bubble UP in DOM tree, so normally\n * // when we would click on div in document\n * // \"div\" would be logged first and then \"document\".\n * // Since we specified optional `capture` option, document\n * // will catch event when it goes DOWN DOM tree, so console\n * // will log \"document\" and then \"div\".\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n * @see {@link fromEventPattern}\n *\n * @param {FromEventTarget} target The DOM EventTarget, Node.js\n * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to.\n * @param {string} eventName The event name of interest, being emitted by the\n * `target`.\n * @param {EventListenerOptions} [options] Options to pass through to addEventListener\n * @return {Observable}\n * @name fromEvent\n */\nexport function fromEvent(\n target: FromEventTarget,\n eventName: string,\n options?: EventListenerOptions | ((...args: any[]) => T),\n resultSelector?: ((...args: any[]) => T)\n): Observable {\n\n if (isFunction(options)) {\n // DEPRECATED PATH\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n // DEPRECATED PATH\n return fromEvent(target, eventName, options).pipe(\n map(args => isArray(args) ? resultSelector(...args) : resultSelector(args))\n );\n }\n\n return new Observable(subscriber => {\n function handler(e: T) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n } else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options as EventListenerOptions);\n });\n}\n\nfunction setupSubscription(sourceObj: FromEventTarget, eventName: string,\n handler: (...args: any[]) => void, subscriber: Subscriber,\n options?: EventListenerOptions) {\n let unsubscribe: () => void;\n if (isEventTarget(sourceObj)) {\n const source = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = () => source.removeEventListener(eventName, handler, options);\n } else if (isJQueryStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = () => source.off(eventName, handler);\n } else if (isNodeStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.addListener(eventName, handler as NodeEventHandler);\n unsubscribe = () => source.removeListener(eventName, handler as NodeEventHandler);\n } else if (sourceObj && (sourceObj as any).length) {\n for (let i = 0, len = (sourceObj as any).length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n } else {\n throw new TypeError('Invalid event target');\n }\n\n subscriber.add(unsubscribe);\n}\n\nfunction isNodeStyleEventEmitter(sourceObj: any): sourceObj is NodeStyleEventEmitter {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\n\nfunction isJQueryStyleEventEmitter(sourceObj: any): sourceObj is JQueryStyleEventEmitter {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\n\nfunction isEventTarget(sourceObj: any): sourceObj is HasEventTargetAddRemove {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { NodeEventHandler } from './fromEvent';\nimport { map } from '../operators/map';\n\n/* tslint:disable:max-line-length */\nexport function fromEventPattern(addHandler: (handler: NodeEventHandler) => any, removeHandler?: (handler: NodeEventHandler, signal?: any) => void): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function fromEventPattern(addHandler: (handler: NodeEventHandler) => any, removeHandler?: (handler: NodeEventHandler, signal?: any) => void, resultSelector?: (...args: any[]) => T): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Creates an Observable from an arbitrary API for registering event handlers.\n *\n * When that method for adding event handler was something {@link fromEvent}\n * was not prepared for.\n *\n * ![](fromEventPattern.png)\n *\n * `fromEventPattern` allows you to convert into an Observable any API that supports registering handler functions\n * for events. It is similar to {@link fromEvent}, but far\n * more flexible. In fact, all use cases of {@link fromEvent} could be easily handled by\n * `fromEventPattern` (although in slightly more verbose way).\n *\n * This operator accepts as a first argument an `addHandler` function, which will be injected with\n * handler parameter. That handler is actually an event handler function that you now can pass\n * to API expecting it. `addHandler` will be called whenever Observable\n * returned by the operator is subscribed, so registering handler in API will not\n * necessarily happen when `fromEventPattern` is called.\n *\n * After registration, every time an event that we listen to happens,\n * Observable returned by `fromEventPattern` will emit value that event handler\n * function was called with. Note that if event handler was called with more\n * then one argument, second and following arguments will not appear in the Observable.\n *\n * If API you are using allows to unregister event handlers as well, you can pass to `fromEventPattern`\n * another function - `removeHandler` - as a second parameter. It will be injected\n * with the same handler function as before, which now you can use to unregister\n * it from the API. `removeHandler` will be called when consumer of resulting Observable\n * unsubscribes from it.\n *\n * In some APIs unregistering is actually handled differently. Method registering an event handler\n * returns some kind of token, which is later used to identify which function should\n * be unregistered or it itself has method that unregisters event handler.\n * If that is the case with your API, make sure token returned\n * by registering method is returned by `addHandler`. Then it will be passed\n * as a second argument to `removeHandler`, where you will be able to use it.\n *\n * If you need access to all event handler parameters (not only the first one),\n * or you need to transform them in any way, you can call `fromEventPattern` with optional\n * third parameter - project function which will accept all arguments passed to\n * event handler when it is called. Whatever is returned from project function will appear on\n * resulting stream instead of usual event handlers first argument. This means\n * that default project can be thought of as function that takes its first parameter\n * and ignores the rest.\n *\n * ## Example\n * ### Emits clicks happening on the DOM document\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * function addClickHandler(handler) {\n * document.addEventListener('click', handler);\n * }\n *\n * function removeClickHandler(handler) {\n * document.removeEventListener('click', handler);\n * }\n *\n * const clicks = fromEventPattern(\n * addClickHandler,\n * removeClickHandler\n * );\n * clicks.subscribe(x => console.log(x));\n *\n * // Whenever you click anywhere in the browser, DOM MouseEvent\n * // object will be logged.\n * ```\n *\n * ## Example\n * ### Use with API that returns cancellation token\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * const token = someAPI.registerEventHandler(function() {});\n * someAPI.unregisterEventHandler(token); // this APIs cancellation method accepts\n * // not handler itself, but special token.\n *\n * const someAPIObservable = fromEventPattern(\n * function(handler) { return someAPI.registerEventHandler(handler); }, // Note that we return the token here...\n * function(handler, token) { someAPI.unregisterEventHandler(token); } // ...to then use it here.\n * );\n * ```\n *\n * ## Example\n * ### Use with project function\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * someAPI.registerEventHandler((eventType, eventMessage) => {\n * console.log(eventType, eventMessage); // Logs \"EVENT_TYPE\" \"EVENT_MESSAGE\" to console.\n * });\n *\n * const someAPIObservable = fromEventPattern(\n * handler => someAPI.registerEventHandler(handler),\n * handler => someAPI.unregisterEventHandler(handler)\n * (eventType, eventMessage) => eventType + \" --- \" + eventMessage // without that function only \"EVENT_TYPE\"\n * ); // would be emitted by the Observable\n *\n * someAPIObservable.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"EVENT_TYPE --- EVENT_MESSAGE\"\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n *\n * @param {function(handler: Function): any} addHandler A function that takes\n * a `handler` function as argument and attaches it somehow to the actual\n * source of events.\n * @param {function(handler: Function, token?: any): void} [removeHandler] A function that\n * takes a `handler` function as an argument and removes it from the event source. If `addHandler`\n * returns some kind of token, `removeHandler` function will have it as a second parameter.\n * @param {function(...args: any): T} [project] A function to\n * transform results. It takes the arguments from the event handler and\n * should return a single value.\n * @return {Observable} Observable which, when an event happens, emits first parameter\n * passed to registered event handler. Alternatively it emits whatever project function returns\n * at that moment.\n * @static true\n * @name fromEventPattern\n * @owner Observable\n */\n\nexport function fromEventPattern(addHandler: (handler: NodeEventHandler) => any,\n removeHandler?: (handler: NodeEventHandler, signal?: any) => void,\n resultSelector?: (...args: any[]) => T): Observable {\n\n if (resultSelector) {\n // DEPRECATED PATH\n return fromEventPattern(addHandler, removeHandler).pipe(\n map(args => isArray(args) ? resultSelector(...args) : resultSelector(args))\n );\n }\n\n return new Observable(subscriber => {\n const handler = (...e: T[]) => subscriber.next(e.length === 1 ? e[0] : e);\n\n let retValue: any;\n try {\n retValue = addHandler(handler);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n\n if (!isFunction(removeHandler)) {\n return undefined;\n }\n\n return () => removeHandler(handler, retValue) ;\n });\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { identity } from '../util/identity';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { isScheduler } from '../util/isScheduler';\n\nexport type ConditionFunc = (state: S) => boolean;\nexport type IterateFunc = (state: S) => S;\nexport type ResultFunc = (state: S) => T;\n\ninterface SchedulerState {\n needIterate?: boolean;\n state: S;\n subscriber: Subscriber;\n condition?: ConditionFunc;\n iterate: IterateFunc;\n resultSelector: ResultFunc;\n}\n\nexport interface GenerateBaseOptions {\n /**\n * Initial state.\n */\n initialState: S;\n /**\n * Condition function that accepts state and returns boolean.\n * When it returns false, the generator stops.\n * If not specified, a generator never stops.\n */\n condition?: ConditionFunc;\n /**\n * Iterate function that accepts state and returns new state.\n */\n iterate: IterateFunc;\n /**\n * SchedulerLike to use for generation process.\n * By default, a generator starts immediately.\n */\n scheduler?: SchedulerLike;\n}\n\nexport interface GenerateOptions extends GenerateBaseOptions {\n /**\n * Result selection function that accepts state and returns a value to emit.\n */\n resultSelector: ResultFunc;\n}\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n *\n * ![](generate.png)\n *\n * @example Produces sequence of 0, 1, 2, ... 9, then completes.\n * const res = generate(0, x => x < 10, x => x + 1, x => x);\n *\n * @example Using asap scheduler, produces sequence of 2, 3, 5, then completes.\n * const res = generate(1, x => x < 5, x => x * 2, x => x + 1, asap);\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {S} initialState Initial state.\n * @param {function (state: S): boolean} condition Condition to terminate generation (upon returning false).\n * @param {function (state: S): S} iterate Iteration step function.\n * @param {function (state: S): T} resultSelector Selector function for results produced in the sequence. (deprecated)\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} on which to run the generator loop. If not provided, defaults to emit immediately.\n * @returns {Observable} The generated sequence.\n */\n export function generate(initialState: S,\n condition: ConditionFunc,\n iterate: IterateFunc,\n resultSelector: ResultFunc,\n scheduler?: SchedulerLike): Observable;\n\n/**\n * Generates an Observable by running a state-driven loop\n * that emits an element on each iteration.\n *\n * Use it instead of nexting values in a for loop.\n *\n * \n *\n * `generate` allows you to create stream of values generated with a loop very similar to\n * traditional for loop. First argument of `generate` is a beginning value. Second argument\n * is a function that accepts this value and tests if some condition still holds. If it does,\n * loop continues, if not, it stops. Third value is a function which takes previously defined\n * value and modifies it in some way on each iteration. Note how these three parameters\n * are direct equivalents of three expressions in regular for loop: first expression\n * initializes some state (for example numeric index), second tests if loop can make next\n * iteration (for example if index is lower than 10) and third states how defined value\n * will be modified on every step (index will be incremented by one).\n *\n * Return value of a `generate` operator is an Observable that on each loop iteration\n * emits a value. First, condition function is ran. If it returned true, Observable\n * emits currently stored value (initial value at the first iteration) and then updates\n * that value with iterate function. If at some point condition returned false, Observable\n * completes at that moment.\n *\n * Optionally you can pass fourth parameter to `generate` - a result selector function which allows you\n * to immediately map value that would normally be emitted by an Observable.\n *\n * If you find three anonymous functions in `generate` call hard to read, you can provide\n * single object to the operator instead. That object has properties: `initialState`,\n * `condition`, `iterate` and `resultSelector`, which should have respective values that you\n * would normally pass to `generate`. `resultSelector` is still optional, but that form\n * of calling `generate` allows you to omit `condition` as well. If you omit it, that means\n * condition always holds, so output Observable will never complete.\n *\n * Both forms of `generate` can optionally accept a scheduler. In case of multi-parameter call,\n * scheduler simply comes as a last argument (no matter if there is resultSelector\n * function or not). In case of single-parameter call, you can provide it as a\n * `scheduler` property on object passed to the operator. In both cases scheduler decides when\n * next iteration of the loop will happen and therefore when next value will be emitted\n * by the Observable. For example to ensure that each value is pushed to the observer\n * on separate task in event loop, you could use `async` scheduler. Note that\n * by default (when no scheduler is passed) values are simply emitted synchronously.\n *\n *\n * @example Use with condition and iterate functions.\n * const generated = generate(0, x => x < 3, x => x + 1);\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!')\n * );\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // \"Yo!\"\n *\n *\n * @example Use with condition, iterate and resultSelector functions.\n * const generated = generate(0, x => x < 3, x => x + 1, x => x * 1000);\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!')\n * );\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // \"Yo!\"\n *\n *\n * @example Use with options object.\n * const generated = generate({\n * initialState: 0,\n * condition(value) { return value < 3; },\n * iterate(value) { return value + 1; },\n * resultSelector(value) { return value * 1000; }\n * });\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!')\n * );\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // \"Yo!\"\n *\n * @example Use options object without condition function.\n * const generated = generate({\n * initialState: 0,\n * iterate(value) { return value + 1; },\n * resultSelector(value) { return value * 1000; }\n * });\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!') // This will never run.\n * );\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // 3000\n * // ...and never stops.\n *\n *\n * @see {@link from}\n * @see {@link index/Observable.create}\n *\n * @param {S} initialState Initial state.\n * @param {function (state: S): boolean} condition Condition to terminate generation (upon returning false).\n * @param {function (state: S): S} iterate Iteration step function.\n * @param {function (state: S): T} [resultSelector] Selector function for results produced in the sequence.\n * @param {Scheduler} [scheduler] A {@link Scheduler} on which to run the generator loop. If not provided, defaults to emitting immediately.\n * @return {Observable} The generated sequence.\n */\nexport function generate(initialState: S,\n condition: ConditionFunc,\n iterate: IterateFunc,\n scheduler?: SchedulerLike): Observable;\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n * The overload accepts options object that might contain initial state, iterate,\n * condition and scheduler.\n *\n * ![](generate.png)\n *\n * @example Produces sequence of 0, 1, 2, ... 9, then completes.\n * const res = generate({\n * initialState: 0,\n * condition: x => x < 10,\n * iterate: x => x + 1,\n * });\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {GenerateBaseOptions} options Object that must contain initialState, iterate and might contain condition and scheduler.\n * @returns {Observable} The generated sequence.\n */\nexport function generate(options: GenerateBaseOptions): Observable;\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n * The overload accepts options object that might contain initial state, iterate,\n * condition, result selector and scheduler.\n *\n * ![](generate.png)\n *\n * @example Produces sequence of 0, 1, 2, ... 9, then completes.\n * const res = generate({\n * initialState: 0,\n * condition: x => x < 10,\n * iterate: x => x + 1,\n * resultSelector: x => x,\n * });\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {GenerateOptions} options Object that must contain initialState, iterate, resultSelector and might contain condition and scheduler.\n * @returns {Observable} The generated sequence.\n */\nexport function generate(options: GenerateOptions): Observable;\n\nexport function generate(initialStateOrOptions: S | GenerateOptions,\n condition?: ConditionFunc,\n iterate?: IterateFunc,\n resultSelectorOrObservable?: (ResultFunc) | SchedulerLike,\n scheduler?: SchedulerLike): Observable {\n\n let resultSelector: ResultFunc;\n let initialState: S;\n\n if (arguments.length == 1) {\n const options = initialStateOrOptions as GenerateOptions;\n initialState = options.initialState;\n condition = options.condition;\n iterate = options.iterate;\n resultSelector = options.resultSelector || identity as ResultFunc;\n scheduler = options.scheduler;\n } else if (resultSelectorOrObservable === undefined || isScheduler(resultSelectorOrObservable)) {\n initialState = initialStateOrOptions as S;\n resultSelector = identity as ResultFunc;\n scheduler = resultSelectorOrObservable as SchedulerLike;\n } else {\n initialState = initialStateOrOptions as S;\n resultSelector = resultSelectorOrObservable as ResultFunc;\n }\n\n return new Observable(subscriber => {\n let state = initialState;\n if (scheduler) {\n return scheduler.schedule>(dispatch, 0, {\n subscriber,\n iterate,\n condition,\n resultSelector,\n state\n });\n }\n\n do {\n if (condition) {\n let conditionResult: boolean;\n try {\n conditionResult = condition(state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n break;\n }\n }\n let value: T;\n try {\n value = resultSelector(state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n break;\n }\n try {\n state = iterate(state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n } while (true);\n\n return undefined;\n });\n}\n\nfunction dispatch(this: SchedulerAction>, state: SchedulerState) {\n const { subscriber, condition } = state;\n if (subscriber.closed) {\n return undefined;\n }\n if (state.needIterate) {\n try {\n state.state = state.iterate(state.state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n } else {\n state.needIterate = true;\n }\n if (condition) {\n let conditionResult: boolean;\n try {\n conditionResult = condition(state.state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n }\n let value: T;\n try {\n value = state.resultSelector(state.state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n return undefined;\n }\n return this.schedule(state);\n}\n","import { Observable } from '../Observable';\nimport { defer } from './defer';\nimport { EMPTY } from './empty';\nimport { SubscribableOrPromise } from '../types';\n\n/**\n * Decides at subscription time which Observable will actually be subscribed.\n *\n * `If` statement for Observables.\n *\n * `iif` accepts a condition function and two Observables. When\n * an Observable returned by the operator is subscribed, condition function will be called.\n * Based on what boolean it returns at that moment, consumer will subscribe either to\n * the first Observable (if condition was true) or to the second (if condition was false). Condition\n * function may also not return anything - in that case condition will be evaluated as false and\n * second Observable will be subscribed.\n *\n * Note that Observables for both cases (true and false) are optional. If condition points to an Observable that\n * was left undefined, resulting stream will simply complete immediately. That allows you to, rather\n * than controlling which Observable will be subscribed, decide at runtime if consumer should have access\n * to given Observable or not.\n *\n * If you have more complex logic that requires decision between more than two Observables, {@link defer}\n * will probably be a better choice. Actually `iif` can be easily implemented with {@link defer}\n * and exists only for convenience and readability reasons.\n *\n *\n * ## Examples\n * ### Change at runtime which Observable will be subscribed\n * ```ts\n * import { iif, of } from 'rxjs';\n *\n * let subscribeToFirst;\n * const firstOrSecond = iif(\n * () => subscribeToFirst,\n * of('first'),\n * of('second'),\n * );\n *\n * subscribeToFirst = true;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"first\"\n *\n * subscribeToFirst = false;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"second\"\n *\n * ```\n *\n * ### Control an access to an Observable\n * ```ts\n * let accessGranted;\n * const observableIfYouHaveAccess = iif(\n * () => accessGranted,\n * of('It seems you have an access...'), // Note that only one Observable is passed to the operator.\n * );\n *\n * accessGranted = true;\n * observableIfYouHaveAccess.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('The end'),\n * );\n *\n * // Logs:\n * // \"It seems you have an access...\"\n * // \"The end\"\n *\n * accessGranted = false;\n * observableIfYouHaveAccess.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('The end'),\n * );\n *\n * // Logs:\n * // \"The end\"\n * ```\n *\n * @see {@link defer}\n *\n * @param {function(): boolean} condition Condition which Observable should be chosen.\n * @param {Observable} [trueObservable] An Observable that will be subscribed if condition is true.\n * @param {Observable} [falseObservable] An Observable that will be subscribed if condition is false.\n * @return {Observable} Either first or second Observable, depending on condition.\n * @static true\n * @name iif\n * @owner Observable\n*/\nexport function iif(\n condition: () => boolean,\n trueResult: SubscribableOrPromise = EMPTY,\n falseResult: SubscribableOrPromise = EMPTY\n): Observable {\n return defer(() => condition() ? trueResult : falseResult);\n}\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { isNumeric } from '../util/isNumeric';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that emits sequential numbers every specified\n * interval of time, on a specified {@link SchedulerLike}.\n *\n * Emits incremental numbers periodically in time.\n * \n *\n * ![](interval.png)\n *\n * `interval` returns an Observable that emits an infinite sequence of\n * ascending integers, with a constant interval of time of your choosing\n * between those emissions. The first emission is not sent immediately, but\n * only after the first period has passed. By default, this operator uses the\n * `async` {@link SchedulerLike} to provide a notion of time, but you may pass any\n * {@link SchedulerLike} to it.\n *\n * ## Example\n * Emits ascending numbers, one every second (1000ms) up to the number 3\n * ```ts\n * import { interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const numbers = interval(1000);\n *\n * const takeFourNumbers = numbers.pipe(take(4));\n *\n * takeFourNumbers.subscribe(x => console.log('Next: ', x));\n *\n * // Logs:\n * // Next: 0\n * // Next: 1\n * // Next: 2\n * // Next: 3\n * ```\n *\n * @see {@link timer}\n * @see {@link delay}\n *\n * @param {number} [period=0] The interval size in milliseconds (by default)\n * or the time unit determined by the scheduler's clock.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for scheduling\n * the emission of values, and providing a notion of \"time\".\n * @return {Observable} An Observable that emits a sequential number each time\n * interval.\n * @static true\n * @name interval\n * @owner Observable\n */\nexport function interval(period = 0,\n scheduler: SchedulerLike = async): Observable {\n if (!isNumeric(period) || period < 0) {\n period = 0;\n }\n\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n scheduler = async;\n }\n\n return new Observable(subscriber => {\n subscriber.add(\n scheduler.schedule(dispatch, period, { subscriber, counter: 0, period })\n );\n return subscriber;\n });\n}\n\nfunction dispatch(this: SchedulerAction, state: IntervalState) {\n const { subscriber, counter, period } = state;\n subscriber.next(counter);\n this.schedule({ subscriber, counter: counter + 1, period }, period);\n}\n\ninterface IntervalState {\n subscriber: Subscriber;\n counter: number;\n period: number;\n}\n","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\n\n/**\n * An Observable that emits no items to the Observer and never completes.\n *\n * ![](never.png)\n *\n * A simple Observable that emits neither values nor errors nor the completion\n * notification. It can be used for testing purposes or for composing with other\n * Observables. Please note that by never emitting a complete notification, this\n * Observable keeps the subscription from being disposed automatically.\n * Subscriptions need to be manually disposed.\n *\n * ## Example\n * ### Emit the number 7, then never emit anything else (not even complete)\n * ```ts\n * import { NEVER } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * function info() {\n * console.log('Will not be called');\n * }\n * const result = NEVER.pipe(startWith(7));\n * result.subscribe(x => console.log(x), info, info);\n *\n * ```\n *\n * @see {@link Observable}\n * @see {@link index/EMPTY}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const NEVER = new Observable(noop);\n\n/**\n * @deprecated Deprecated in favor of using {@link NEVER} constant.\n */\nexport function never () {\n return NEVER;\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput } from '../types';\nimport { from } from './from';\nimport { isArray } from '../util/isArray';\nimport { EMPTY } from './empty';\n\n/* tslint:disable:max-line-length */\nexport function onErrorResumeNext(v: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable;\n\nexport function onErrorResumeNext(...observables: Array | ((...values: Array) => R)>): Observable;\nexport function onErrorResumeNext(array: ObservableInput[]): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one\n * that was passed.\n *\n * Execute series of Observables no matter what, even if it means swallowing errors.\n *\n * ![](onErrorResumeNext.png)\n *\n * `onErrorResumeNext` Will subscribe to each observable source it is provided, in order.\n * If the source it's subscribed to emits an error or completes, it will move to the next source\n * without error.\n *\n * If `onErrorResumeNext` is provided no arguments, or a single, empty array, it will return {@link index/EMPTY}.\n *\n * `onErrorResumeNext` is basically {@link concat}, only it will continue, even if one of its\n * sources emits an error.\n *\n * Note that there is no way to handle any errors thrown by sources via the result of\n * `onErrorResumeNext`. If you want to handle errors thrown in any given source, you can\n * always use the {@link catchError} operator on them before passing them into `onErrorResumeNext`.\n *\n * ## Example\n * Subscribe to the next Observable after map fails\n * ```ts\n * import { onErrorResumeNext, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * onErrorResumeNext(\n * of(1, 2, 3, 0).pipe(\n * map(x => {\n * if (x === 0) throw Error();\n * return 10 / x;\n * })\n * ),\n * of(1, 2, 3),\n * )\n * .subscribe(\n * val => console.log(val),\n * err => console.log(err), // Will never be called.\n * () => console.log('done'),\n * );\n *\n * // Logs:\n * // 10\n * // 5\n * // 3.3333333333333335\n * // 1\n * // 2\n * // 3\n * // \"done\"\n * ```\n *\n * @see {@link concat}\n * @see {@link catchError}\n *\n * @param {...ObservableInput} sources Observables (or anything that *is* observable) passed either directly or as an array.\n * @return {Observable} An Observable that concatenates all sources, one after the other,\n * ignoring all errors, such that any error causes it to move on to the next source.\n */\nexport function onErrorResumeNext(...sources: Array |\n Array> |\n ((...values: Array) => R)>): Observable {\n\n if (sources.length === 0) {\n return EMPTY;\n }\n\n const [ first, ...remainder ] = sources;\n\n if (sources.length === 1 && isArray(first)) {\n return onErrorResumeNext(...first);\n }\n\n return new Observable(subscriber => {\n const subNext = () => subscriber.add(\n onErrorResumeNext(...remainder).subscribe(subscriber)\n );\n\n return from(first).subscribe({\n next(value) { subscriber.next(value); },\n error: subNext,\n complete: subNext,\n });\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\n\n/**\n * Convert an object into an Observable of `[key, value]` pairs.\n *\n * Turn entries of an object into a stream.\n *\n * \n *\n * `pairs` takes an arbitrary object and returns an Observable that emits arrays. Each\n * emitted array has exactly two elements - the first is a key from the object\n * and the second is a value corresponding to that key. Keys are extracted from\n * an object via `Object.keys` function, which means that they will be only\n * enumerable keys that are present on an object directly - not ones inherited\n * via prototype chain.\n *\n * By default these arrays are emitted synchronously. To change that you can\n * pass a {@link SchedulerLike} as a second argument to `pairs`.\n *\n * @example Converts a javascript object to an Observable\n * ```ts\n * import { pairs } from 'rxjs';\n *\n * const obj = {\n * foo: 42,\n * bar: 56,\n * baz: 78\n * };\n *\n * pairs(obj)\n * .subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('the end!')\n * );\n *\n * // Logs:\n * // [\"foo\", 42],\n * // [\"bar\", 56],\n * // [\"baz\", 78],\n * // \"the end!\"\n * ```\n *\n * @param {Object} obj The object to inspect and turn into an\n * Observable sequence.\n * @param {Scheduler} [scheduler] An optional IScheduler to schedule\n * when resulting Observable will emit values.\n * @returns {(Observable>)} An observable sequence of\n * [key, value] pairs from the object.\n */\nexport function pairs(obj: Object, scheduler?: SchedulerLike): Observable<[string, T]> {\n if (!scheduler) {\n return new Observable<[string, T]>(subscriber => {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length && !subscriber.closed; i++) {\n const key = keys[i];\n if (obj.hasOwnProperty(key)) {\n subscriber.next([key, obj[key]]);\n }\n }\n subscriber.complete();\n });\n } else {\n return new Observable<[string, T]>(subscriber => {\n const keys = Object.keys(obj);\n const subscription = new Subscription();\n subscription.add(\n scheduler.schedule<{ keys: string[], index: number, subscriber: Subscriber<[string, T]>, subscription: Subscription, obj: Object }>\n (dispatch, 0, { keys, index: 0, subscriber, subscription, obj }));\n return subscription;\n });\n }\n}\n\n/** @internal */\nexport function dispatch(this: SchedulerAction,\n state: { keys: string[], index: number, subscriber: Subscriber<[string, T]>, subscription: Subscription, obj: Object }) {\n const { keys, index, subscriber, subscription, obj } = state;\n if (!subscriber.closed) {\n if (index < keys.length) {\n const key = keys[index];\n subscriber.next([key, obj[key]]);\n subscription.add(this.schedule({ keys, index: index + 1, subscriber, subscription, obj }));\n } else {\n subscriber.complete();\n }\n }\n}\n","import { not } from '../util/not';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { filter } from '../operators/filter';\nimport { ObservableInput } from '../types';\nimport { Observable } from '../Observable';\n\n/**\n * Splits the source Observable into two, one with values that satisfy a\n * predicate, and another with values that don't satisfy the predicate.\n *\n * It's like {@link filter}, but returns two Observables:\n * one like the output of {@link filter}, and the other with values that did not\n * pass the condition.\n *\n * ![](partition.png)\n *\n * `partition` outputs an array with two Observables that partition the values\n * from the source Observable through the given `predicate` function. The first\n * Observable in that array emits source values for which the predicate argument\n * returns true. The second Observable emits source values for which the\n * predicate returns false. The first behaves like {@link filter} and the second\n * behaves like {@link filter} with the predicate negated.\n *\n * ## Example\n * Partition a set of numbers into odds and evens observables\n * ```ts\n * import { of, partition } from 'rxjs';\n *\n * const observableValues = of(1, 2, 3, 4, 5, 6);\n * const [evens$, odds$] = partition(observableValues, (value, index) => value % 2 === 0);\n *\n * odds$.subscribe(x => console.log('odds', x));\n * evens$.subscribe(x => console.log('evens', x));\n *\n * // Logs:\n * // odds 1\n * // odds 3\n * // odds 5\n * // evens 2\n * // evens 4\n * // evens 6\n * ```\n *\n * @see {@link filter}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted on the first Observable in the returned array, if\n * `false` the value is emitted on the second Observable in the array. The\n * `index` parameter is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {[Observable, Observable]} An array with two Observables: one\n * with values that passed the predicate, and another with values that did not\n * pass the predicate.\n */\nexport function partition(\n source: ObservableInput,\n predicate: (value: T, index: number) => boolean,\n thisArg?: any\n): [Observable, Observable] {\n return [\n filter(predicate, thisArg)(new Observable(subscribeTo(source))),\n filter(not(predicate, thisArg) as any)(new Observable(subscribeTo(source)))\n ] as [Observable, Observable];\n}\n","import { SchedulerAction, SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits a sequence of numbers within a specified\n * range.\n *\n * Emits a sequence of numbers in a range.\n *\n * ![](range.png)\n *\n * `range` operator emits a range of sequential integers, in order, where you\n * select the `start` of the range and its `length`. By default, uses no\n * {@link SchedulerLike} and just delivers the notifications synchronously, but may use\n * an optional {@link SchedulerLike} to regulate those deliveries.\n *\n * ## Example\n * Emits the numbers 1 to 10\n * ```ts\n * import { range } from 'rxjs';\n *\n * const numbers = range(1, 10);\n * numbers.subscribe(x => console.log(x));\n * ```\n * @see {@link timer}\n * @see {@link index/interval}\n *\n * @param {number} [start=0] The value of the first integer in the sequence.\n * @param {number} count The number of sequential integers to generate.\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} to use for scheduling\n * the emissions of the notifications.\n * @return {Observable} An Observable of numbers that emits a finite range of\n * sequential integers.\n * @static true\n * @name range\n * @owner Observable\n */\nexport function range(start: number = 0,\n count?: number,\n scheduler?: SchedulerLike): Observable {\n return new Observable(subscriber => {\n if (count === undefined) {\n count = start;\n start = 0;\n }\n\n let index = 0;\n let current = start;\n\n if (scheduler) {\n return scheduler.schedule(dispatch, 0, {\n index, count, start, subscriber\n });\n } else {\n do {\n if (index++ >= count) {\n subscriber.complete();\n break;\n }\n subscriber.next(current++);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n }\n\n return undefined;\n });\n}\n\n/** @internal */\nexport function dispatch(this: SchedulerAction, state: any) {\n const { start, index, count, subscriber } = state;\n\n if (index >= count) {\n subscriber.complete();\n return;\n }\n\n subscriber.next(start);\n\n if (subscriber.closed) {\n return;\n }\n\n state.index = index + 1;\n state.start = start + 1;\n\n this.schedule(state);\n}\n","import { Observable } from '../Observable';\nimport { Unsubscribable, ObservableInput } from '../types';\nimport { from } from './from'; // from from from! LAWL\nimport { EMPTY } from './empty';\n\n/**\n * Creates an Observable that uses a resource which will be disposed at the same time as the Observable.\n *\n * Use it when you catch yourself cleaning up after an Observable.\n *\n * `using` is a factory operator, which accepts two functions. First function returns a disposable resource.\n * It can be an arbitrary object that implements `unsubscribe` method. Second function will be injected with\n * that object and should return an Observable. That Observable can use resource object during its execution.\n * Both functions passed to `using` will be called every time someone subscribes - neither an Observable nor\n * resource object will be shared in any way between subscriptions.\n *\n * When Observable returned by `using` is subscribed, Observable returned from the second function will be subscribed\n * as well. All its notifications (nexted values, completion and error events) will be emitted unchanged by the output\n * Observable. If however someone unsubscribes from the Observable or source Observable completes or errors by itself,\n * the `unsubscribe` method on resource object will be called. This can be used to do any necessary clean up, which\n * otherwise would have to be handled by hand. Note that complete or error notifications are not emitted when someone\n * cancels subscription to an Observable via `unsubscribe`, so `using` can be used as a hook, allowing you to make\n * sure that all resources which need to exist during an Observable execution will be disposed at appropriate time.\n *\n * @see {@link defer}\n *\n * @param {function(): ISubscription} resourceFactory A function which creates any resource object\n * that implements `unsubscribe` method.\n * @param {function(resource: ISubscription): Observable} observableFactory A function which\n * creates an Observable, that can use injected resource object.\n * @return {Observable} An Observable that behaves the same as Observable returned by `observableFactory`, but\n * which - when completed, errored or unsubscribed - will also call `unsubscribe` on created resource object.\n */\nexport function using(resourceFactory: () => Unsubscribable | void,\n observableFactory: (resource: Unsubscribable | void) => ObservableInput | void): Observable {\n return new Observable(subscriber => {\n let resource: Unsubscribable | void;\n\n try {\n resource = resourceFactory();\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n\n let result: ObservableInput | void;\n try {\n result = observableFactory(resource);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n\n const source = result ? from(result) : EMPTY;\n const subscription = source.subscribe(subscriber);\n return () => {\n subscription.unsubscribe();\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\n","import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\n\n/**\n * A variant of Subject that only emits a value when it completes. It will emit\n * its latest value to all its observers on completion.\n *\n * @class AsyncSubject\n */\nexport class AsyncSubject extends Subject {\n private value: T = null;\n private hasNext: boolean = false;\n private hasCompleted: boolean = false;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n } else if (this.hasCompleted && this.hasNext) {\n subscriber.next(this.value);\n subscriber.complete();\n return Subscription.EMPTY;\n }\n return super._subscribe(subscriber);\n }\n\n next(value: T): void {\n if (!this.hasCompleted) {\n this.value = value;\n this.hasNext = true;\n }\n }\n\n error(error: any): void {\n if (!this.hasCompleted) {\n super.error(error);\n }\n }\n\n complete(): void {\n this.hasCompleted = true;\n if (this.hasNext) {\n super.next(this.value);\n }\n super.complete();\n }\n}\n","import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { SubscriptionLike } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\n\n/**\n * A variant of Subject that requires an initial value and emits its current\n * value whenever it is subscribed to.\n *\n * @class BehaviorSubject\n */\nexport class BehaviorSubject extends Subject {\n\n constructor(private _value: T) {\n super();\n }\n\n get value(): T {\n return this.getValue();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n const subscription = super._subscribe(subscriber);\n if (subscription && !(subscription).closed) {\n subscriber.next(this._value);\n }\n return subscription;\n }\n\n getValue(): T {\n if (this.hasError) {\n throw this.thrownError;\n } else if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else {\n return this._value;\n }\n }\n\n next(value: T): void {\n super.next(this._value = value);\n }\n}\n","import { PartialObserver } from './types';\nimport { Observable } from './Observable';\nimport { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nimport { deprecate } from 'util';\n\n// TODO: When this enum is removed, replace it with a type alias. See #4556.\n/**\n * @deprecated NotificationKind is deprecated as const enums are not compatible with isolated modules. Use a string literal instead.\n */\nexport enum NotificationKind {\n NEXT = 'N',\n ERROR = 'E',\n COMPLETE = 'C',\n}\n\n/**\n * Represents a push-based event or value that an {@link Observable} can emit.\n * This class is particularly useful for operators that manage notifications,\n * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and\n * others. Besides wrapping the actual delivered value, it also annotates it\n * with metadata of, for instance, what type of push message it is (`next`,\n * `error`, or `complete`).\n *\n * @see {@link materialize}\n * @see {@link dematerialize}\n * @see {@link observeOn}\n *\n * @class Notification\n */\nexport class Notification {\n hasValue: boolean;\n\n constructor(public kind: 'N' | 'E' | 'C', public value?: T, public error?: any) {\n this.hasValue = kind === 'N';\n }\n\n /**\n * Delivers to the given `observer` the value wrapped by this Notification.\n * @param {Observer} observer\n * @return\n */\n observe(observer: PartialObserver): any {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n }\n\n /**\n * Given some {@link Observer} callbacks, deliver the value represented by the\n * current Notification to the correctly corresponding callback.\n * @param {function(value: T): void} next An Observer `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n do(next: (value: T) => void, error?: (err: any) => void, complete?: () => void): any {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n }\n\n /**\n * Takes an Observer or its individual callback functions, and calls `observe`\n * or `do` methods accordingly.\n * @param {Observer|function(value: T): void} nextOrObserver An Observer or\n * the `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n accept(nextOrObserver: PartialObserver | ((value: T) => void), error?: (err: any) => void, complete?: () => void) {\n if (nextOrObserver && typeof (>nextOrObserver).next === 'function') {\n return this.observe(>nextOrObserver);\n } else {\n return this.do(<(value: T) => void>nextOrObserver, error, complete);\n }\n }\n\n /**\n * Returns a simple Observable that just delivers the notification represented\n * by this Notification instance.\n * @return {any}\n */\n toObservable(): Observable {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n }\n\n private static completeNotification: Notification = new Notification('C');\n private static undefinedValueNotification: Notification = new Notification('N', undefined);\n\n /**\n * A shortcut to create a Notification instance of the type `next` from a\n * given value.\n * @param {T} value The `next` value.\n * @return {Notification} The \"next\" Notification representing the\n * argument.\n * @nocollapse\n */\n static createNext(value: T): Notification {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n }\n\n /**\n * A shortcut to create a Notification instance of the type `error` from a\n * given error.\n * @param {any} [err] The `error` error.\n * @return {Notification} The \"error\" Notification representing the\n * argument.\n * @nocollapse\n */\n static createError(err?: any): Notification {\n return new Notification('E', undefined, err);\n }\n\n /**\n * A shortcut to create a Notification instance of the type `complete`.\n * @return {Notification} The valueless \"complete\" Notification.\n * @nocollapse\n */\n static createComplete(): Notification {\n return Notification.completeNotification;\n }\n}\n","import { Operator } from './Operator';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, PartialObserver, Subscribable } from './types';\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { iif } from './observable/iif';\nimport { throwError } from './observable/throwError';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable\n */\nexport class Observable implements Subscribable {\n\n /** Internal implementation detail, do not use directly. */\n public _isScalar: boolean = false;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n source: Observable;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n operator: Operator;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable, subscriber: Subscriber) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new cold Observable by calling the Observable constructor\n * @static true\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new cold observable\n * @nocollapse\n * @deprecated use new Observable() instead\n */\n static create: Function = (subscribe?: (subscriber: Subscriber) => TeardownLogic) => {\n return new Observable(subscribe);\n }\n\n /**\n * Creates a new Observable, with this Observable as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param {Operator} operator the operator defining the operation to take on the observable\n * @return {Observable} a new observable with the Operator applied\n */\n lift(operator: Operator): Observable {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observer?: PartialObserver): Subscription;\n /** @deprecated Use an observer instead of a complete callback */\n subscribe(next: null | undefined, error: null | undefined, complete: () => void): Subscription;\n /** @deprecated Use an observer instead of an error callback */\n subscribe(next: null | undefined, error: (error: any) => void, complete?: () => void): Subscription;\n /** @deprecated Use an observer instead of a complete callback */\n subscribe(next: (value: T) => void, error: null | undefined, complete: () => void): Subscription;\n subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * Use it when you have all these Observables, but still nothing is happening.\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided, all errors will\n * be left uncaught.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of Observer,\n * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown.\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * ## Example\n * ### Subscribe with an Observer\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n * ```\n *\n * ### Subscribe with functions\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n * ```\n *\n * ### Cancel a subscription\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe(\n * num => console.log(num),\n * undefined,\n * () => {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * );\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // \"unsubscribed!\" after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {ISubscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscription {\n\n const { operator } = this;\n const sink = toSubscriber(observerOrNext, error, complete);\n\n if (operator) {\n sink.add(operator.call(sink, this.source));\n } else {\n sink.add(\n this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink)\n );\n }\n\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n\n return sink;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _trySubscribe(sink: Subscriber): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n } else {\n console.warn(err);\n }\n }\n }\n\n /**\n * @method forEach\n * @param {Function} next a handler for each value emitted by the observable\n * @param {PromiseConstructor} [promiseCtor] a constructor function used to instantiate the Promise\n * @return {Promise} a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n // Must be declared in a separate statement to avoid a ReferenceError when\n // accessing subscription below in the closure due to Temporal Dead Zone.\n let subscription: Subscription;\n subscription = this.subscribe((value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n }) as Promise;\n }\n\n /** @internal This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): TeardownLogic {\n const { source } = this;\n return source && source.subscribe(subscriber);\n }\n\n // `if` and `throw` are special snow flakes, the compiler sees them as reserved words. Deprecated in\n // favor of iif and throwError functions.\n /**\n * @nocollapse\n * @deprecated In favor of iif creation function: import { iif } from 'rxjs';\n */\n static if: typeof iif;\n /**\n * @nocollapse\n * @deprecated In favor of throwError creation function: import { throwError } from 'rxjs';\n */\n static throw: typeof throwError;\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable;\n pipe(op1: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction, op9: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction, op9: OperatorFunction, ...operations: OperatorFunction[]): Observable<{}>;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ### Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { map, filter, scan } from 'rxjs/operators';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x))\n * ```\n */\n pipe(...operations: OperatorFunction[]): Observable {\n if (operations.length === 0) {\n return this as any;\n }\n\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n toPromise(this: Observable): Promise;\n toPromise(this: Observable, PromiseCtor: typeof Promise): Promise;\n toPromise(this: Observable, PromiseCtor: PromiseConstructorLike): Promise;\n /* tslint:enable:max-line-length */\n\n toPromise(promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: any;\n this.subscribe((x: T) => value = x, (err: any) => reject(err), () => resolve(value));\n }) as Promise;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n\n return promiseCtor;\n}\n","import { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nimport { PartialObserver } from '../types';\n\nexport function toSubscriber(\n nextOrObserver?: PartialObserver | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscriber {\n\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return (> nextOrObserver);\n }\n\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n\n return new Subscriber(nextOrObserver, error, complete);\n}\n","import { Observer } from './types';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\n\nexport const empty: Observer = {\n closed: true,\n next(value: any): void { /* noop */},\n error(err: any): void {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n } else {\n hostReportError(err);\n }\n },\n complete(): void { /*noop*/ }\n};\n","import { Subscriber } from './Subscriber';\nimport { InnerSubscriber } from './InnerSubscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class OuterSubscriber extends Subscriber {\n notifyNext(outerValue: T, innerValue: R,\n outerIndex: number, innerIndex: number,\n innerSub: InnerSubscriber): void {\n this.destination.next(innerValue);\n }\n\n notifyError(error: any, innerSub: InnerSubscriber): void {\n this.destination.error(error);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n this.destination.complete();\n }\n}\n","import { Subject } from './Subject';\nimport { SchedulerLike } from './types';\nimport { queue } from './scheduler/queue';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\n/**\n * A variant of Subject that \"replays\" or emits old values to new subscribers.\n * It buffers a set number of values and will emit those values immediately to\n * any new subscribers in addition to emitting new values to existing subscribers.\n *\n * @class ReplaySubject\n */\nexport class ReplaySubject extends Subject {\n private _events: (ReplayEvent | T)[] = [];\n private _bufferSize: number;\n private _windowTime: number;\n private _infiniteTimeWindow: boolean = false;\n\n constructor(bufferSize: number = Number.POSITIVE_INFINITY,\n windowTime: number = Number.POSITIVE_INFINITY,\n private scheduler?: SchedulerLike) {\n super();\n this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n this._windowTime = windowTime < 1 ? 1 : windowTime;\n\n if (windowTime === Number.POSITIVE_INFINITY) {\n this._infiniteTimeWindow = true;\n this.next = this.nextInfiniteTimeWindow;\n } else {\n this.next = this.nextTimeWindow;\n }\n }\n\n private nextInfiniteTimeWindow(value: T): void {\n if (!this.isStopped) {\n const _events = this._events;\n _events.push(value);\n // Since this method is invoked in every next() call than the buffer\n // can overgrow the max size only by one item\n if (_events.length > this._bufferSize) {\n _events.shift();\n }\n }\n super.next(value);\n }\n\n private nextTimeWindow(value: T): void {\n if (!this.isStopped) {\n this._events.push(new ReplayEvent(this._getNow(), value));\n this._trimBufferThenGetEvents();\n }\n super.next(value);\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n // When `_infiniteTimeWindow === true` then the buffer is already trimmed\n const _infiniteTimeWindow = this._infiniteTimeWindow;\n const _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n const scheduler = this.scheduler;\n const len = _events.length;\n let subscription: Subscription;\n\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else if (this.isStopped || this.hasError) {\n subscription = Subscription.EMPTY;\n } else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription(this, subscriber);\n }\n\n if (scheduler) {\n subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n }\n\n if (_infiniteTimeWindow) {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i]);\n }\n } else {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next((>_events[i]).value);\n }\n }\n\n if (this.hasError) {\n subscriber.error(this.thrownError);\n } else if (this.isStopped) {\n subscriber.complete();\n }\n\n return subscription;\n }\n\n _getNow(): number {\n return (this.scheduler || queue).now();\n }\n\n private _trimBufferThenGetEvents(): ReplayEvent[] {\n const now = this._getNow();\n const _bufferSize = this._bufferSize;\n const _windowTime = this._windowTime;\n const _events = []>this._events;\n\n const eventsCount = _events.length;\n let spliceCount = 0;\n\n // Trim events that fall out of the time window.\n // Start at the front of the list. Break early once\n // we encounter an event that falls within the window.\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n\n return _events;\n }\n\n}\n\nclass ReplayEvent {\n constructor(public time: number, public value: T) {\n }\n}\n","import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}\n */\nexport class Scheduler implements SchedulerLike {\n\n /**\n * Note: the extra arrow function wrapper is to make testing by overriding\n * Date.now easier.\n * @nocollapse\n */\n public static now: () => number = () => Date.now();\n\n constructor(private SchedulerAction: typeof Action,\n now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.SchedulerAction(this, work).schedule(state, delay);\n }\n}\n","import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\n\n/**\n * @class SubjectSubscriber\n */\nexport class SubjectSubscriber extends Subscriber {\n constructor(protected destination: Subject) {\n super(destination);\n }\n}\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n *\n * @class Subject\n */\nexport class Subject extends Observable implements SubscriptionLike {\n\n [rxSubscriberSymbol]() {\n return new SubjectSubscriber(this);\n }\n\n observers: Observer[] = [];\n\n closed = false;\n\n isStopped = false;\n\n hasError = false;\n\n thrownError: any = null;\n\n constructor() {\n super();\n }\n\n /**@nocollapse\n * @deprecated use new Subject() instead\n */\n static create: Function = (destination: Observer, source: Observable): AnonymousSubject => {\n return new AnonymousSubject(destination, source);\n }\n\n lift(operator: Operator): Observable {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n\n next(value?: T) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n }\n\n error(err: any) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n }\n\n complete() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n }\n\n unsubscribe() {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _trySubscribe(subscriber: Subscriber): TeardownLogic {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else {\n return super._trySubscribe(subscriber);\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n } else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n } else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create customize Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable {\n const observable = new Observable();\n (observable).source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject\n */\nexport class AnonymousSubject extends Subject {\n constructor(protected destination?: Observer, source?: Observable) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n const { destination } = this;\n if (destination && destination.next) {\n destination.next(value);\n }\n }\n\n error(err: any) {\n const { destination } = this;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n }\n\n complete() {\n const { destination } = this;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n const { source } = this;\n if (source) {\n return this.source.subscribe(subscriber);\n } else {\n return Subscription.EMPTY;\n }\n }\n}\n","import { Subject } from './Subject';\nimport { Observer } from './types';\nimport { Subscription } from './Subscription';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SubjectSubscription extends Subscription {\n closed: boolean = false;\n\n constructor(public subject: Subject, public subscriber: Observer) {\n super();\n }\n\n unsubscribe() {\n if (this.closed) {\n return;\n }\n\n this.closed = true;\n\n const subject = this.subject;\n const observers = subject.observers;\n\n this.subject = null;\n\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n\n const subscriberIndex = observers.indexOf(this.subscriber);\n\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n }\n}\n","import { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Observer, PartialObserver, TeardownLogic } from './types';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber\n */\nexport class Subscriber extends Subscription implements Observer {\n\n [rxSubscriberSymbol]() { return this; }\n\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param {function(x: ?T): void} [next] The `next` callback of an Observer.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n * @return {Subscriber} A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n */\n static create(next?: (x?: T) => void,\n error?: (e?: any) => void,\n complete?: () => void): Subscriber {\n const subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n }\n\n /** @internal */ syncErrorValue: any = null;\n /** @internal */ syncErrorThrown: boolean = false;\n /** @internal */ syncErrorThrowable: boolean = false;\n\n protected isStopped: boolean = false;\n protected destination: PartialObserver | Subscriber; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @param {Observer|function(value: T): void} [destinationOrNext] A partially\n * defined Observer or a `next` callback function.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n */\n constructor(destinationOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n switch (arguments.length) {\n case 0:\n this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n this.destination = destinationOrNext;\n destinationOrNext.add(this);\n } else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, > destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, <((value: T) => void)> destinationOrNext, error, complete);\n break;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (!this.isStopped) {\n this._next(value);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n super.unsubscribe();\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n this.destination.error(err);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.destination.complete();\n this.unsubscribe();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribeAndRecycle(): Subscriber {\n const { _parentOrParents } = this;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SafeSubscriber extends Subscriber {\n\n private _context: any;\n\n constructor(private _parentSubscriber: Subscriber,\n observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n let next: ((value: T) => void);\n let context: any = this;\n\n if (isFunction(observerOrNext)) {\n next = (<((value: T) => void)> observerOrNext);\n } else if (observerOrNext) {\n next = (> observerOrNext).next;\n error = (> observerOrNext).error;\n complete = (> observerOrNext).complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n this.add(<() => void> context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n\n next(value?: T): void {\n if (!this.isStopped && this._next) {\n const { _parentSubscriber } = this;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n } else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n }\n\n error(err?: any): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n const { useDeprecatedSynchronousErrorHandling } = config;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n } else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n } else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n } else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n }\n\n complete(): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._complete) {\n const wrappedComplete = () => this._complete.call(this._context);\n\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n } else {\n this.unsubscribe();\n }\n }\n }\n\n private __tryOrUnsub(fn: Function, value?: any): void {\n try {\n fn.call(this._context, value);\n } catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n } else {\n hostReportError(err);\n }\n }\n }\n\n private __tryOrSetError(parent: Subscriber, fn: Function, value?: any): boolean {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n } else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n }\n\n /** @internal This is an internal implementation detail, do not use. */\n _unsubscribe(): void {\n const { _parentSubscriber } = this;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n }\n}\n","import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic } from './types';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY: Subscription = (function(empty: any) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n * @type {boolean}\n */\n public closed: boolean = false;\n\n /** @internal */\n protected _parentOrParents: Subscription | Subscription[] = null;\n /** @internal */\n private _subscriptions: SubscriptionLike[] = null;\n\n /**\n * @param {function(): void} [unsubscribe] A function describing how to\n * perform the disposal of resources when the `unsubscribe` method is called.\n */\n constructor(unsubscribe?: () => void) {\n if (unsubscribe) {\n (this as any)._ctorUnsubscribe = true;\n (this as any)._unsubscribe = unsubscribe;\n }\n }\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[];\n\n if (this.closed) {\n return;\n }\n\n let { _parentOrParents, _ctorUnsubscribe, _unsubscribe, _subscriptions } = (this as any);\n\n this.closed = true;\n this._parentOrParents = null;\n // null out _subscriptions first so any child subscriptions that attempt\n // to remove themselves from this subscription will noop\n this._subscriptions = null;\n\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n } else if (_parentOrParents !== null) {\n for (let index = 0; index < _parentOrParents.length; ++index) {\n const parent = _parentOrParents[index];\n parent.remove(this);\n }\n }\n\n if (isFunction(_unsubscribe)) {\n // It's only possible to null _unsubscribe - to release the reference to\n // any teardown function passed in the constructor - if the property was\n // actually assigned in the constructor, as there are some classes that\n // are derived from Subscriber (which derives from Subscription) that\n // implement an _unsubscribe method as a mechanism for obtaining\n // unsubscription notifications and some of those subscribers are\n // recycled. Also, in some of those subscribers, _unsubscribe switches\n // from a prototype method to an instance property - see notifyNext in\n // RetryWhenSubscriber.\n if (_ctorUnsubscribe) {\n (this as any)._unsubscribe = undefined;\n }\n try {\n _unsubscribe.call(this);\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n\n if (isArray(_subscriptions)) {\n let index = -1;\n let len = _subscriptions.length;\n\n while (++index < len) {\n const sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n } catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n } else {\n errors.push(e);\n }\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n\n /**\n * Adds a tear down to be called during the unsubscribe() of this\n * Subscription. Can also be used to add a child subscription.\n *\n * If the tear down being added is a subscription that is already\n * unsubscribed, is the same reference `add` is being called on, or is\n * `Subscription.EMPTY`, it will not be added.\n *\n * If this subscription is already in an `closed` state, the passed\n * tear down logic will be executed immediately.\n *\n * When a parent subscription is unsubscribed, any child subscriptions that were added to it are also unsubscribed.\n *\n * @param {TeardownLogic} teardown The additional logic to execute on\n * teardown.\n * @return {Subscription} Returns the Subscription used or created to be\n * added to the inner subscriptions list. This Subscription can be used with\n * `remove()` to remove the passed teardown logic from the inner subscriptions\n * list.\n */\n add(teardown: TeardownLogic): Subscription {\n let subscription = (teardown);\n\n if (!teardown) {\n return Subscription.EMPTY;\n }\n\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(<(() => void)>teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n // This also covers the case where `subscription` is `Subscription.EMPTY`, which is always in `closed` state.\n return subscription;\n } else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n } else if (!(subscription instanceof Subscription)) {\n const tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n\n // Add `this` as parent of `subscription` if that's not already the case.\n let { _parentOrParents } = subscription;\n if (_parentOrParents === null) {\n // If we don't have a parent, then set `subscription._parents` to\n // the `this`, which is the common case that we optimize for.\n subscription._parentOrParents = this;\n } else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n // The `subscription` already has `this` as a parent.\n return subscription;\n }\n // If there's already one parent, but not multiple, allocate an\n // Array to store the rest of the parent Subscriptions.\n subscription._parentOrParents = [_parentOrParents, this];\n } else if (_parentOrParents.indexOf(this) === -1) {\n // Only add `this` to the _parentOrParents list if it's not already there.\n _parentOrParents.push(this);\n } else {\n // The `subscription` already has `this` as a parent.\n return subscription;\n }\n\n // Optimize for the common case when adding the first subscription.\n const subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n } else {\n subscriptions.push(subscription);\n }\n\n return subscription;\n }\n\n /**\n * Removes a Subscription from the internal list of subscriptions that will\n * unsubscribe during the unsubscribe process of this Subscription.\n * @param {Subscription} subscription The subscription to remove.\n * @return {void}\n */\n remove(subscription: Subscription): void {\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n const subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n }\n}\n\nfunction flattenUnsubscriptionErrors(errors: any[]) {\n return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []);\n}\n","let _enable_super_gross_mode_that_will_cause_bad_things = false;\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like what Promise contructor should used to create Promises\n */\nexport const config = {\n /**\n * The promise constructor used by default for methods such as\n * {@link toPromise} and {@link forEach}\n */\n Promise: undefined as PromiseConstructorLike,\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BY TIME\n * FOR MIGRATION REASONS.\n */\n set useDeprecatedSynchronousErrorHandling(value: boolean) {\n if (value) {\n const error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n } else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n","/** @prettier */\nimport { Subscription } from './Subscription';\nimport { Subscriber } from './Subscriber';\nimport { Observable } from './Observable';\nimport { subscribeTo } from './util/subscribeTo';\n\ninterface SimpleOuterSubscriberLike {\n /**\n * A handler for inner next notifications from the inner subscription\n * @param innerValue the value nexted by the inner producer\n */\n notifyNext(innerValue: T): void;\n /**\n * A handler for inner error notifications from the inner subscription\n * @param err the error from the inner producer\n */\n notifyError(err: any): void;\n /**\n * A handler for inner complete notifications from the inner subscription.\n */\n notifyComplete(): void;\n}\n\nexport class SimpleInnerSubscriber extends Subscriber {\n constructor(private parent: SimpleOuterSubscriberLike) {\n super();\n }\n\n protected _next(value: T): void {\n this.parent.notifyNext(value);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete();\n this.unsubscribe();\n }\n}\n\nexport class ComplexInnerSubscriber extends Subscriber {\n constructor(private parent: ComplexOuterSubscriber, public outerValue: T, public outerIndex: number) {\n super();\n }\n\n protected _next(value: R): void {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n\nexport class SimpleOuterSubscriber extends Subscriber implements SimpleOuterSubscriberLike {\n notifyNext(innerValue: R): void {\n this.destination.next(innerValue);\n }\n\n notifyError(err: any): void {\n this.destination.error(err);\n }\n\n notifyComplete(): void {\n this.destination.complete();\n }\n}\n\n/**\n * DO NOT USE (formerly \"OuterSubscriber\")\n * TODO: We want to refactor this and remove it. It is retaining values it shouldn't for long\n * periods of time.\n */\nexport class ComplexOuterSubscriber extends Subscriber {\n /**\n * @param _outerValue Used by: bufferToggle, delayWhen, windowToggle\n * @param innerValue Used by: subclass default, combineLatest, race, bufferToggle, windowToggle, withLatestFrom\n * @param _outerIndex Used by: combineLatest, race, withLatestFrom\n * @param _innerSub Used by: delayWhen\n */\n notifyNext(_outerValue: T, innerValue: R, _outerIndex: number, _innerSub: ComplexInnerSubscriber): void {\n this.destination.next(innerValue);\n }\n\n notifyError(error: any): void {\n this.destination.error(error);\n }\n\n /**\n * @param _innerSub Used by: race, bufferToggle, delayWhen, windowToggle, windowWhen\n */\n notifyComplete(_innerSub: ComplexInnerSubscriber): void {\n this.destination.complete();\n }\n}\n\nexport function innerSubscribe(result: any, innerSubscriber: Subscriber): Subscription | undefined {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n let subscription: Subscription;\n try {\n subscription = subscribeTo(result)(innerSubscriber) as Subscription;\n } catch (error) {\n innerSubscriber.error(error);\n }\n return subscription;\n}\n","import { Subject, SubjectSubscriber } from '../Subject';\nimport { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { TeardownLogic } from '../types';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\n\n/**\n * @class ConnectableObservable\n */\nexport class ConnectableObservable extends Observable {\n\n protected _subject: Subject;\n protected _refCount: number = 0;\n protected _connection: Subscription;\n /** @internal */\n _isComplete = false;\n\n constructor(public source: Observable,\n protected subjectFactory: () => Subject) {\n super();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n return this.getSubject().subscribe(subscriber);\n }\n\n protected getSubject(): Subject {\n const subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n }\n\n connect(): Subscription {\n let connection = this._connection;\n if (!connection) {\n this._isComplete = false;\n connection = this._connection = new Subscription();\n connection.add(this.source\n .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n }\n\n refCount(): Observable {\n return higherOrderRefCount()(this) as Observable;\n }\n}\n\nexport const connectableObservableDescriptor: PropertyDescriptorMap = (() => {\n const connectableProto = ConnectableObservable.prototype;\n return {\n operator: { value: null as null },\n _refCount: { value: 0, writable: true },\n _subject: { value: null as null, writable: true },\n _connection: { value: null as null, writable: true },\n _subscribe: { value: connectableProto._subscribe },\n _isComplete: { value: connectableProto._isComplete, writable: true },\n getSubject: { value: connectableProto.getSubject },\n connect: { value: connectableProto.connect },\n refCount: { value: connectableProto.refCount }\n };\n})();\n\nclass ConnectableSubscriber extends SubjectSubscriber {\n constructor(destination: Subject,\n private connectable: ConnectableObservable) {\n super(destination);\n }\n protected _error(err: any): void {\n this._unsubscribe();\n super._error(err);\n }\n protected _complete(): void {\n this.connectable._isComplete = true;\n this._unsubscribe();\n super._complete();\n }\n protected _unsubscribe() {\n const connectable = this.connectable;\n if (connectable) {\n this.connectable = null;\n const connection = connectable._connection;\n connectable._refCount = 0;\n connectable._subject = null;\n connectable._connection = null;\n if (connection) {\n connection.unsubscribe();\n }\n }\n }\n}\n\nclass RefCountOperator implements Operator {\n constructor(private connectable: ConnectableObservable) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n\n const { connectable } = this;\n ( connectable)._refCount++;\n\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n\n if (!refCounter.closed) {\n ( refCounter).connection = connectable.connect();\n }\n\n return subscription;\n }\n}\n\nclass RefCountSubscriber extends Subscriber {\n\n private connection: Subscription;\n\n constructor(destination: Subscriber,\n private connectable: ConnectableObservable) {\n super(destination);\n }\n\n protected _unsubscribe() {\n\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n\n this.connectable = null;\n const refCount = ( connectable)._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n\n ( connectable)._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n\n ///\n // Compare the local RefCountSubscriber's connection Subscription to the\n // connection Subscription on the shared ConnectableObservable. In cases\n // where the ConnectableObservable source synchronously emits values, and\n // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n // execution continues to here before the RefCountOperator has a chance to\n // supply the RefCountSubscriber with the shared connection Subscription.\n // For example:\n // ```\n // range(0, 10).pipe(\n // publish(),\n // refCount(),\n // take(5),\n // ).subscribe();\n // ```\n // In order to account for this case, RefCountSubscriber should only dispose\n // the ConnectableObservable's shared connection Subscription if the\n // connection Subscription exists, *and* either:\n // a. RefCountSubscriber doesn't have a reference to the shared connection\n // Subscription yet, or,\n // b. RefCountSubscriber's connection Subscription reference is identical\n // to the shared connection Subscription\n ///\n const { connection } = this;\n const sharedConnection = ( connectable)._connection;\n this.connection = null;\n\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nimport { Subscriber } from '../Subscriber';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { Operator } from '../Operator';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { fromArray } from './fromArray';\n\nconst NONE = {};\n\n/* tslint:disable:max-line-length */\n\n// If called with a single array, it \"auto-spreads\" the array, with result selector\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(sources: [O1], resultSelector: (v1: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, R>(sources: [O1, O2], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, R>(sources: [O1, O2, O3], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, R>(sources: [O1, O2, O3, O4], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(sources: [O1, O2, O3, O4, O5], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(sources: [O1, O2, O3, O4, O5, O6], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(sources: O[], resultSelector: (...args: ObservedValueOf[]) => R, scheduler?: SchedulerLike): Observable;\n\n// standard call, but with a result selector\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(v1: O1, resultSelector: (v1: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, R>(v1: O1, v2: O2, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n\n// With a scheduler (deprecated)\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest>(sources: [O1], scheduler: SchedulerLike): Observable<[ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput>(sources: [O1, O2], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput>(sources: [O1, O2, O3], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(sources: [O1, O2, O3, O4], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(sources: [O1, O2, O3, O4, O5], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(sources: [O1, O2, O3, O4, O5, O6], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest>(sources: O[], scheduler: SchedulerLike): Observable[]>;\n\n// Best case\nexport function combineLatest>(sources: [O1]): Observable<[ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput>(sources: [O1, O2]): Observable<[ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput>(sources: [O1, O2, O3]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(sources: [O1, O2, O3, O4]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(sources: [O1, O2, O3, O4, O5]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(sources: [O1, O2, O3, O4, O5, O6]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest>(sources: O[]): Observable[]>;\n\n// Standard calls\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest>(v1: O1, scheduler?: SchedulerLike): Observable<[ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput>(v1: O1, v2: O2, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest>(...observables: O[]): Observable;\n\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, R>(...observables: Array | ((...values: Array) => R)>): Observable;\n\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(array: O[], resultSelector: (...values: ObservedValueOf[]) => R, scheduler?: SchedulerLike): Observable;\n\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest>(...observables: Array): Observable;\n\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, R>(...observables: Array[]) => R) | SchedulerLike>): Observable;\n\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest(...observables: Array | ((...values: Array) => R) | SchedulerLike>): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Combines multiple Observables to create an Observable whose values are\n * calculated from the latest values of each of its input Observables.\n *\n * Whenever any input Observable emits a value, it\n * computes a formula using the latest values from all the inputs, then emits\n * the output of that formula.\n *\n * ![](combineLatest.png)\n *\n * `combineLatest` combines the values from all the Observables passed as\n * arguments. This is done by subscribing to each Observable in order and,\n * whenever any Observable emits, collecting an array of the most recent\n * values from each Observable. So if you pass `n` Observables to operator,\n * returned Observable will always emit an array of `n` values, in order\n * corresponding to order of passed Observables (value from the first Observable\n * on the first place and so on).\n *\n * Static version of `combineLatest` accepts either an array of Observables\n * or each Observable can be put directly as an argument. Note that array of\n * Observables is good choice, if you don't know beforehand how many Observables\n * you will combine. Passing empty array will result in Observable that\n * completes immediately.\n *\n * To ensure output array has always the same length, `combineLatest` will\n * actually wait for all input Observables to emit at least once,\n * before it starts emitting results. This means if some Observable emits\n * values before other Observables started emitting, all these values but the last\n * will be lost. On the other hand, if some Observable does not emit a value but\n * completes, resulting Observable will complete at the same moment without\n * emitting anything, since it will be now impossible to include value from\n * completed Observable in resulting array. Also, if some input Observable does\n * not emit any value and never completes, `combineLatest` will also never emit\n * and never complete, since, again, it will wait for all streams to emit some\n * value.\n *\n * If at least one Observable was passed to `combineLatest` and all passed Observables\n * emitted something, resulting Observable will complete when all combined\n * streams complete. So even if some Observable completes, result of\n * `combineLatest` will still emit values when other Observables do. In case\n * of completed Observable, its value from now on will always be the last\n * emitted value. On the other hand, if any Observable errors, `combineLatest`\n * will error immediately as well, and all other Observables will be unsubscribed.\n *\n * `combineLatest` accepts as optional parameter `project` function, which takes\n * as arguments all values that would normally be emitted by resulting Observable.\n * `project` can return any kind of value, which will be then emitted by Observable\n * instead of default array. Note that `project` does not take as argument that array\n * of values, but values themselves. That means default `project` can be imagined\n * as function that takes all its arguments and puts them into an array.\n *\n * ## Examples\n * ### Combine two timer Observables\n * ```ts\n * import { combineLatest, timer } from 'rxjs';\n *\n * const firstTimer = timer(0, 1000); // emit 0, 1, 2... after every second, starting from now\n * const secondTimer = timer(500, 1000); // emit 0, 1, 2... after every second, starting 0,5s from now\n * const combinedTimers = combineLatest(firstTimer, secondTimer);\n * combinedTimers.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0] after 0.5s\n * // [1, 0] after 1s\n * // [1, 1] after 1.5s\n * // [2, 1] after 2s\n * ```\n *\n * ### Combine an array of Observables\n * ```ts\n * import { combineLatest, of } from 'rxjs';\n * import { delay, starWith } from 'rxjs/operators';\n *\n * const observables = [1, 5, 10].map(\n * n => of(n).pipe(\n * delay(n * 1000), // emit 0 and then emit n after n seconds\n * startWith(0),\n * )\n * );\n * const combined = combineLatest(observables);\n * combined.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0, 0] immediately\n * // [1, 0, 0] after 1s\n * // [1, 5, 0] after 5s\n * // [1, 5, 10] after 10s\n * ```\n *\n *\n * ### Use project function to dynamically calculate the Body-Mass Index\n * ```ts\n * import { combineLatest, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * const weight = of(70, 72, 76, 79, 75);\n * const height = of(1.76, 1.77, 1.78);\n * const bmi = combineLatest(weight, height).pipe(\n * map(([w, h]) => w / (h * h)),\n * );\n * bmi.subscribe(x => console.log('BMI is ' + x));\n *\n * // With output to console:\n * // BMI is 24.212293388429753\n * // BMI is 23.93948099205209\n * // BMI is 23.671253629592222\n * ```\n *\n * @see {@link combineAll}\n * @see {@link merge}\n * @see {@link withLatestFrom}\n *\n * @param {ObservableInput} observable1 An input Observable to combine with other Observables.\n * @param {ObservableInput} observable2 An input Observable to combine with other Observables.\n * More than one input Observables may be given as arguments\n * or an array of Observables may be given as the first argument.\n * @param {function} [project] An optional function to project the values from\n * the combined latest values into a new value on the output Observable.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for subscribing to\n * each input Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n */\nexport function combineLatest, R>(\n ...observables: (O | ((...values: ObservedValueOf[]) => R) | SchedulerLike)[]\n): Observable {\n let resultSelector: ((...values: Array) => R) | undefined = undefined;\n let scheduler: SchedulerLike|undefined = undefined;\n\n if (isScheduler(observables[observables.length - 1])) {\n scheduler = observables.pop() as SchedulerLike;\n }\n\n if (typeof observables[observables.length - 1] === 'function') {\n resultSelector = observables.pop() as (...values: Array) => R;\n }\n\n // if the first and only other argument besides the resultSelector is an array\n // assume it's been called with `combineLatest([obs1, obs2, obs3], resultSelector)`\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0] as any;\n }\n\n return fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\n\nexport class CombineLatestOperator implements Operator {\n constructor(private resultSelector?: (...values: Array) => R) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class CombineLatestSubscriber extends OuterSubscriber {\n private active: number = 0;\n private values: any[] = [];\n private observables: any[] = [];\n private toRespond?: number;\n\n constructor(destination: Subscriber, private resultSelector?: (...values: Array) => R) {\n super(destination);\n }\n\n protected _next(observable: any) {\n this.values.push(NONE);\n this.observables.push(observable);\n }\n\n protected _complete() {\n const observables = this.observables;\n const len = observables.length;\n if (len === 0) {\n this.destination.complete!();\n } else {\n this.active = len;\n this.toRespond = len;\n for (let i = 0; i < len; i++) {\n const observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n }\n\n notifyComplete(unused: Subscriber): void {\n if ((this.active -= 1) === 0) {\n this.destination.complete!();\n }\n }\n\n notifyNext(_outerValue: T, innerValue: R,\n outerIndex: number): void {\n const values = this.values;\n const oldVal = values[outerIndex];\n const toRespond = !this.toRespond\n ? 0\n : oldVal === NONE ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n\n if (toRespond === 0) {\n if (this.resultSelector) {\n this._tryResultSelector(values);\n } else {\n this.destination.next!(values.slice());\n }\n }\n }\n\n private _tryResultSelector(values: any[]) {\n let result: any;\n try {\n result = this.resultSelector!.apply(this, values);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.destination.next!(result);\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { of } from './of';\nimport { from } from './from';\nimport { concatAll } from '../operators/concatAll';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat>(v1: O1, scheduler: SchedulerLike): Observable>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput>(v1: O1, v2: O2, scheduler: SchedulerLike): Observable | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n\nexport function concat>(v1: O1): Observable>;\nexport function concat, O2 extends ObservableInput>(v1: O1, v2: O2): Observable | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3): Observable | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat>(...observables: O[]): Observable>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat>(...observables: (O | SchedulerLike)[]): Observable>;\nexport function concat(...observables: ObservableInput[]): Observable;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat(...observables: (ObservableInput | SchedulerLike)[]): Observable;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which sequentially emits all values from given\n * Observable and then moves on to the next.\n *\n * Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.\n *\n * ![](concat.png)\n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * ## Examples\n * ### Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10\n * ```ts\n * import { concat, interval, range } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer = interval(1000).pipe(take(4));\n * const sequence = range(1, 10);\n * const result = concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n * ```\n *\n * ### Concatenate 3 Observables\n * ```ts\n * import { concat, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n *\n * const result = concat(timer1, timer2, timer3);\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n * ```\n *\n * ### Concatenate the same Observable to repeat it\n * ```ts\n * import { concat, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer = interval(1000).pipe(take(2));\n *\n * concat(timer, timer) // concatenating the same Observable!\n * .subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('...and it is done!')\n * );\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // \"...and it is done!\" also after 4s\n * ```\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link startWith}\n * @see {@link endWith}\n *\n * @param {ObservableInput} input1 An input Observable to concatenate with others.\n * @param {ObservableInput} input2 An input Observable to concatenate with others.\n * More than one input Observables may be given as argument.\n * @param {SchedulerLike} [scheduler=null] An optional {@link SchedulerLike} to schedule each\n * Observable subscription on.\n * @return {Observable} All values of each passed Observable merged into a\n * single Observable, in order, in serial fashion.\n * @static true\n * @name concat\n * @owner Observable\n */\nexport function concat, R>(...observables: Array): Observable | R> {\n return concatAll()(of(...observables));\n}\n","import { Observable } from '../Observable';\nimport { SubscribableOrPromise, ObservedValueOf, ObservableInput } from '../types';\nimport { from } from './from'; // lol\nimport { empty } from './empty';\n\n/**\n * Creates an Observable that, on subscribe, calls an Observable factory to\n * make an Observable for each new Observer.\n *\n * Creates the Observable lazily, that is, only when it\n * is subscribed.\n * \n *\n * ![](defer.png)\n *\n * `defer` allows you to create the Observable only when the Observer\n * subscribes, and create a fresh Observable for each Observer. It waits until\n * an Observer subscribes to it, and then it generates an Observable,\n * typically with an Observable factory function. It does this afresh for each\n * subscriber, so although each subscriber may think it is subscribing to the\n * same Observable, in fact each subscriber gets its own individual\n * Observable.\n *\n * ## Example\n * ### Subscribe to either an Observable of clicks or an Observable of interval, at random\n * ```ts\n * import { defer, fromEvent, interval } from 'rxjs';\n *\n * const clicksOrInterval = defer(function () {\n * return Math.random() > 0.5\n * ? fromEvent(document, 'click')\n * : interval(1000);\n * });\n * clicksOrInterval.subscribe(x => console.log(x));\n *\n * // Results in the following behavior:\n * // If the result of Math.random() is greater than 0.5 it will listen\n * // for clicks anywhere on the \"document\"; when document is clicked it\n * // will log a MouseEvent object to the console. If the result is less\n * // than 0.5 it will emit ascending numbers, one every second(1000ms).\n * ```\n *\n * @see {@link Observable}\n *\n * @param {function(): SubscribableOrPromise} observableFactory The Observable\n * factory function to invoke for each Observer that subscribes to the output\n * Observable. May also return a Promise, which will be converted on the fly\n * to an Observable.\n * @return {Observable} An Observable whose Observers' subscriptions trigger\n * an invocation of the given Observable factory function.\n * @static true\n * @name defer\n * @owner Observable\n */\nexport function defer | void>(observableFactory: () => R): Observable> {\n return new Observable>(subscriber => {\n let input: R | void;\n try {\n input = observableFactory();\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n const source = input ? from(input as ObservableInput>) : empty();\n return source.subscribe(subscriber);\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * The same Observable instance returned by any call to {@link empty} without a\n * `scheduler`. It is preferrable to use this over `empty()`.\n */\nexport const EMPTY = new Observable(subscriber => subscriber.complete());\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * Just emits 'complete', and nothing else.\n * \n *\n * ![](empty.png)\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the complete notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n * ### Emit the number 7, then complete\n * ```ts\n * import { empty } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * const result = empty().pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * ### Map and flatten only odd numbers to the sequence 'a', 'b', 'c'\n * ```ts\n * import { empty, interval, of } from 'rxjs';\n * import { mergeMap } from 'rxjs/operators';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : empty()),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval eg(0,1,2,3,...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1 print abc\n * // if x % 2 is not equal to 1 nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link never}\n * @see {@link of}\n * @see {@link throwError}\n *\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @return An \"empty\" Observable: emits only the complete\n * notification.\n * @deprecated Deprecated in favor of using {@link EMPTY} constant, or {@link scheduled} (e.g. `scheduled([], scheduler)`)\n */\nexport function empty(scheduler?: SchedulerLike) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n return new Observable(subscriber => scheduler.schedule(() => subscriber.complete()));\n}\n","import { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { scheduled } from '../scheduled/scheduled';\n\nexport function from>(input: O): Observable>;\n/** @deprecated use {@link scheduled} instead. */\nexport function from>(input: O, scheduler: SchedulerLike): Observable>;\n\n/**\n * Creates an Observable from an Array, an array-like object, a Promise, an iterable object, or an Observable-like object.\n *\n * Converts almost anything to an Observable.\n *\n * ![](from.png)\n *\n * `from` converts various other objects and data types into Observables. It also converts a Promise, an array-like, or an\n * iterable\n * object into an Observable that emits the items in that promise, array, or iterable. A String, in this context, is treated\n * as an array of characters. Observable-like objects (contains a function named with the ES2015 Symbol for Observable) can also be\n * converted through this operator.\n *\n * ## Examples\n *\n * ### Converts an array to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n *\n * const array = [10, 20, 30];\n * const result = from(array);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 10\n * // 20\n * // 30\n * ```\n *\n * ---\n *\n * ### Convert an infinite iterable (from a generator) to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * function* generateDoubles(seed) {\n * let i = seed;\n * while (true) {\n * yield i;\n * i = 2 * i; // double it\n * }\n * }\n *\n * const iterator = generateDoubles(3);\n * const result = from(iterator).pipe(take(10));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 3\n * // 6\n * // 12\n * // 24\n * // 48\n * // 96\n * // 192\n * // 384\n * // 768\n * // 1536\n * ```\n *\n * ---\n *\n * ### With async scheduler\n *\n * ```ts\n * import { from, asyncScheduler } from 'rxjs';\n *\n * console.log('start');\n *\n * const array = [10, 20, 30];\n * const result = from(array, asyncScheduler);\n *\n * result.subscribe(x => console.log(x));\n *\n * console.log('end');\n *\n * // Logs:\n * // start\n * // end\n * // 10\n * // 20\n * // 30\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n *\n * @param {ObservableInput} A subscription object, a Promise, an Observable-like,\n * an Array, an iterable, or an array-like object to be converted.\n * @param {SchedulerLike} An optional {@link SchedulerLike} on which to schedule the emission of values.\n * @return {Observable}\n * @name from\n * @owner Observable\n */\nexport function from(input: ObservableInput, scheduler?: SchedulerLike): Observable {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n } else {\n return scheduled(input, scheduler);\n }\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { subscribeToArray } from '../util/subscribeToArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\n\nexport function fromArray(input: ArrayLike, scheduler?: SchedulerLike) {\n if (!scheduler) {\n return new Observable(subscribeToArray(input));\n } else {\n return scheduleArray(input, scheduler);\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike} from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n\nexport function merge(v1: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, concurrent?: number): Observable;\nexport function merge(...observables: (ObservableInput | number)[]): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(...observables: (ObservableInput | SchedulerLike | number)[]): Observable;\nexport function merge(...observables: (ObservableInput | number)[]): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(...observables: (ObservableInput | SchedulerLike | number)[]): Observable;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * Flattens multiple Observables together by blending\n * their values into one Observable.\n *\n * ![](merge.png)\n *\n * `merge` subscribes to each given input Observable (as arguments), and simply\n * forwards (without doing any transformation) all the values from all the input\n * Observables to the output Observable. The output Observable only completes\n * once all input Observables have completed. Any error delivered by an input\n * Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n * ### Merge together two Observables: 1s interval and clicks\n * ```ts\n * import { merge, fromEvent, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const clicksOrTimer = merge(clicks, timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // timer will emit ascending values, one every second(1000ms) to console\n * // clicks logs MouseEvents to console everytime the \"document\" is clicked\n * // Since the two streams are merged you see these happening\n * // as they occur.\n * ```\n *\n * ### Merge together 3 Observables, but only 2 run concurrently\n * ```ts\n * import { merge, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n * const concurrent = 2; // the argument\n * const merged = merge(timer1, timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - First timer1 and timer2 will run concurrently\n * // - timer1 will emit a value every 1000ms for 10 iterations\n * // - timer2 will emit a value every 2000ms for 6 iterations\n * // - after timer1 hits its max iteration, timer2 will\n * // continue, and timer3 will start to run concurrently with timer2\n * // - when timer2 hits its max iteration it terminates, and\n * // timer3 will continue to emit a value every 500ms until it is complete\n * ```\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {...ObservableInput} observables Input Observables to merge together.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for managing\n * concurrency of input Observables.\n * @return {Observable} an Observable that emits items that are the result of\n * every input Observable.\n * @static true\n * @name merge\n * @owner Observable\n */\nexport function merge(...observables: Array | SchedulerLike | number>): Observable {\n let concurrent = Number.POSITIVE_INFINITY;\n let scheduler: SchedulerLike = null;\n let last: any = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n } else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return >observables[0];\n }\n\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n","import { SchedulerLike } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { Observable } from '../Observable';\nimport { scheduleArray } from '../scheduled/scheduleArray';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, scheduler: SchedulerLike):\n Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, scheduler: SchedulerLike):\n Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, i: T9, scheduler: SchedulerLike):\n Observable;\nexport function of(...args: (T | SchedulerLike)[]): Observable;\n\n// TODO(benlesh): Update the typings for this when we can switch to TS 3.x\nexport function of(a: T): Observable;\nexport function of(a: T, b: T2): Observable;\nexport function of(a: T, b: T2, c: T3): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7):\n Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8):\n Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, i: T9):\n Observable;\nexport function of(...args: T[]): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Converts the arguments to an observable sequence.\n *\n * Each argument becomes a `next` notification.\n *\n * ![](of.png)\n *\n * Unlike {@link from}, it does not do any flattening and emits each argument in whole\n * as a separate `next` notification.\n *\n * ## Examples\n *\n * Emit the values `10, 20, 30`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of(10, 20, 30)\n * .subscribe(\n * next => console.log('next:', next),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n * // result:\n * // 'next: 10'\n * // 'next: 20'\n * // 'next: 30'\n *\n * ```\n *\n * Emit the array `[1,2,3]`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of([1,2,3])\n * .subscribe(\n * next => console.log('next:', next),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n * // result:\n * // 'next: [1,2,3]'\n * ```\n *\n * @see {@link from}\n * @see {@link range}\n *\n * @param {...T} values A comma separated list of arguments you want to be emitted\n * @return {Observable} An Observable that emits the arguments\n * described above and then completes.\n * @method of\n * @owner Observable\n */\n\nexport function of(...args: Array): Observable {\n let scheduler = args[args.length - 1] as SchedulerLike;\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args as T[], scheduler);\n } else {\n return fromArray(args as T[]);\n }\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { fromArray } from './fromArray';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { TeardownLogic, ObservableInput } from '../types';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n\n// tslint:disable:max-line-length\nexport function race(arg: [ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput, ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable;\nexport function race(arg: ObservableInput[]): Observable;\nexport function race(arg: ObservableInput[]): Observable<{}>;\n\nexport function race(a: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput, c: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput, c: ObservableInput, d: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput, c: ObservableInput, d: ObservableInput, e: ObservableInput): Observable;\n// tslint:enable:max-line-length\n\nexport function race(observables: ObservableInput[]): Observable;\nexport function race(observables: ObservableInput[]): Observable<{}>;\nexport function race(...observables: ObservableInput[]): Observable;\nexport function race(...observables: ObservableInput[]): Observable<{}>;\n\n/**\n * Returns an Observable that mirrors the first source Observable to emit an item.\n *\n * ## Example\n * ### Subscribes to the observable that was the first to start emitting.\n *\n * ```ts\n * import { race, interval } from 'rxjs';\n * import { mapTo } from 'rxjs/operators';\n *\n * const obs1 = interval(1000).pipe(mapTo('fast one'));\n * const obs2 = interval(3000).pipe(mapTo('medium one'));\n * const obs3 = interval(5000).pipe(mapTo('slow one'));\n *\n * race(obs3, obs1, obs2)\n * .subscribe(\n * winner => console.log(winner)\n * );\n *\n * // result:\n * // a series of 'fast one'\n * ```\n *\n * @param {...Observables} ...observables sources used to race for which Observable emits first.\n * @return {Observable} an Observable that mirrors the output of the first Observable to emit an item.\n * @static true\n * @name race\n * @owner Observable\n */\nexport function race(...observables: ObservableInput[]): Observable {\n // if the only argument is an array, it was most likely called with\n // `race([obs1, obs2, ...])`\n if (observables.length === 1) {\n if (isArray(observables[0])) {\n observables = observables[0] as Observable[];\n } else {\n return observables[0] as Observable;\n }\n }\n\n return fromArray(observables, undefined).lift(new RaceOperator());\n}\n\nexport class RaceOperator implements Operator {\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RaceSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class RaceSubscriber extends OuterSubscriber {\n private hasFirst: boolean = false;\n private observables: Observable[] = [];\n private subscriptions: Subscription[] = [];\n\n constructor(destination: Subscriber) {\n super(destination);\n }\n\n protected _next(observable: any): void {\n this.observables.push(observable);\n }\n\n protected _complete() {\n const observables = this.observables;\n const len = observables.length;\n\n if (len === 0) {\n this.destination.complete!();\n } else {\n for (let i = 0; i < len && !this.hasFirst; i++) {\n const observable = observables[i];\n const subscription = subscribeToResult(this, observable, undefined, i)!;\n\n if (this.subscriptions) {\n this.subscriptions.push(subscription);\n }\n this.add(subscription);\n }\n this.observables = null!;\n }\n }\n\n notifyNext(_outerValue: T, innerValue: T,\n outerIndex: number): void {\n if (!this.hasFirst) {\n this.hasFirst = true;\n\n for (let i = 0; i < this.subscriptions.length; i++) {\n if (i !== outerIndex) {\n let subscription = this.subscriptions[i];\n\n subscription.unsubscribe();\n this.remove(subscription);\n }\n }\n\n this.subscriptions = null!;\n }\n\n this.destination.next!(innerValue);\n }\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits an error notification.\n *\n * Just emits 'error', and nothing else.\n * \n *\n * ![](throw.png)\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the error notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n * ### Emit the number 7, then emit an error\n * ```ts\n * import { throwError, concat, of } from 'rxjs';\n *\n * const result = concat(of(7), throwError(new Error('oops!')));\n * result.subscribe(x => console.log(x), e => console.error(e));\n *\n * // Logs:\n * // 7\n * // Error: oops!\n * ```\n *\n * ---\n *\n * ### Map and flatten numbers to the sequence 'a', 'b', 'c', but throw an error for 2\n * ```ts\n * import { throwError, interval, of } from 'rxjs';\n * import { mergeMap } from 'rxjs/operators';\n *\n * interval(1000).pipe(\n * mergeMap(x => x === 2\n * ? throwError('Twos are bad')\n * : of('a', 'b', 'c')\n * ),\n * ).subscribe(x => console.log(x), e => console.error(e));\n *\n * // Logs:\n * // a\n * // b\n * // c\n * // a\n * // b\n * // c\n * // Twos are bad\n * ```\n *\n * @see {@link Observable}\n * @see {@link empty}\n * @see {@link never}\n * @see {@link of}\n *\n * @param {any} error The particular Error to pass to the error notification.\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} to use for scheduling\n * the emission of the error notification.\n * @return {Observable} An error Observable: emits only the error notification\n * using the given error argument.\n * @static true\n * @name throwError\n * @owner Observable\n */\nexport function throwError(error: any, scheduler?: SchedulerLike): Observable {\n if (!scheduler) {\n return new Observable(subscriber => subscriber.error(error));\n } else {\n return new Observable(subscriber => scheduler.schedule(dispatch, 0, { error, subscriber }));\n }\n}\n\ninterface DispatchArg {\n error: any;\n subscriber: Subscriber;\n}\n\nfunction dispatch({ error, subscriber }: DispatchArg) {\n subscriber.error(error);\n}\n","import { Observable } from '../Observable';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that starts emitting after an `dueTime` and\n * emits ever increasing numbers after each `period` of time thereafter.\n *\n * Its like {@link index/interval}, but you can specify when\n * should the emissions start.\n *\n * ![](timer.png)\n *\n * `timer` returns an Observable that emits an infinite sequence of ascending\n * integers, with a constant interval of time, `period` of your choosing\n * between those emissions. The first emission happens after the specified\n * `dueTime`. The initial delay may be a `Date`. By default, this\n * operator uses the {@link asyncScheduler} {@link SchedulerLike} to provide a notion of time, but you\n * may pass any {@link SchedulerLike} to it. If `period` is not specified, the output\n * Observable emits only one value, `0`. Otherwise, it emits an infinite\n * sequence.\n *\n * ## Examples\n * ### Emits ascending numbers, one every second (1000ms), starting after 3 seconds\n * ```ts\n * import { timer } from 'rxjs';\n *\n * const numbers = timer(3000, 1000);\n * numbers.subscribe(x => console.log(x));\n * ```\n *\n * ### Emits one number after five seconds\n * ```ts\n * import { timer } from 'rxjs';\n *\n * const numbers = timer(5000);\n * numbers.subscribe(x => console.log(x));\n * ```\n * @see {@link index/interval}\n * @see {@link delay}\n *\n * @param {number|Date} [dueTime] The initial delay time specified as a Date object or as an integer denoting\n * milliseconds to wait before emitting the first value of 0`.\n * @param {number|SchedulerLike} [periodOrScheduler] The period of time between emissions of the\n * subsequent numbers.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for scheduling\n * the emission of values, and providing a notion of \"time\".\n * @return {Observable} An Observable that emits a `0` after the\n * `dueTime` and ever increasing numbers after each `period` of time\n * thereafter.\n * @static true\n * @name timer\n * @owner Observable\n */\nexport function timer(dueTime: number | Date = 0,\n periodOrScheduler?: number | SchedulerLike,\n scheduler?: SchedulerLike): Observable {\n let period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n } else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler as any;\n }\n\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n\n return new Observable(subscriber => {\n const due = isNumeric(dueTime)\n ? (dueTime as number)\n : (+dueTime - scheduler.now());\n\n return scheduler.schedule(dispatch, due, {\n index: 0, period, subscriber\n });\n });\n}\n\ninterface TimerState {\n index: number;\n period: number;\n subscriber: Subscriber;\n}\n\nfunction dispatch(this: SchedulerAction, state: TimerState) {\n const { index, period, subscriber } = state;\n subscriber.next(index);\n\n if (subscriber.closed) {\n return;\n } else if (period === -1) {\n return subscriber.complete();\n }\n\n state.index = index + 1;\n this.schedule(state, period);\n}\n","import { Observable } from '../Observable';\nimport { fromArray } from './fromArray';\nimport { isArray } from '../util/isArray';\nimport { Operator } from '../Operator';\nimport { ObservableInput, PartialObserver, ObservedValueOf } from '../types';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../../internal/symbol/iterator';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, R>(v1: O1, resultSelector: (v1: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, R>(v1: O1, v2: O2, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R): Observable;\n\nexport function zip, O2 extends ObservableInput>(v1: O1, v2: O2): Observable<[ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n\nexport function zip>(array: O[]): Observable[]>;\nexport function zip(array: ObservableInput[]): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, R>(array: O[], resultSelector: (...values: ObservedValueOf[]) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip(array: ObservableInput[], resultSelector: (...values: any[]) => R): Observable;\n\nexport function zip>(...observables: O[]): Observable[]>;\nexport function zip, R>(...observables: Array[]) => R)>): Observable;\nexport function zip(...observables: Array | ((...values: Array) => R)>): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Combines multiple Observables to create an Observable whose values are calculated from the values, in order, of each\n * of its input Observables.\n *\n * If the last parameter is a function, this function is used to compute the created value from the input values.\n * Otherwise, an array of the input values is returned.\n *\n * ## Example\n * Combine age and name from different sources\n * ```ts\n * import { zip, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * let age$ = of(27, 25, 29);\n * let name$ = of('Foo', 'Bar', 'Beer');\n * let isDev$ = of(true, true, false);\n *\n * zip(age$, name$, isDev$).pipe(\n * map(([age, name, isDev]) => ({ age, name, isDev })),\n * )\n * .subscribe(x => console.log(x));\n *\n * // outputs\n * // { age: 27, name: 'Foo', isDev: true }\n * // { age: 25, name: 'Bar', isDev: true }\n * // { age: 29, name: 'Beer', isDev: false }\n * ```\n * @param observables\n * @return {Observable}\n * @static true\n * @name zip\n * @owner Observable\n */\nexport function zip, R>(\n ...observables: Array[]) => R)>\n): Observable[]|R> {\n const resultSelector = <((...ys: Array) => R)> observables[observables.length - 1];\n if (typeof resultSelector === 'function') {\n observables.pop();\n }\n return fromArray(observables, undefined).lift(new ZipOperator(resultSelector));\n}\n\nexport class ZipOperator implements Operator {\n\n resultSelector?: (...values: Array) => R;\n\n constructor(resultSelector?: (...values: Array) => R) {\n this.resultSelector = resultSelector;\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class ZipSubscriber extends Subscriber {\n private iterators: LookAheadIterator[] = [];\n private active = 0;\n\n constructor(destination: Subscriber,\n private resultSelector?: (...values: Array) => R,\n values: any = Object.create(null)) {\n super(destination);\n this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : undefined;\n }\n\n protected _next(value: any) {\n const iterators = this.iterators;\n if (isArray(value)) {\n iterators.push(new StaticArrayIterator(value));\n } else if (typeof value[Symbol_iterator] === 'function') {\n iterators.push(new StaticIterator(value[Symbol_iterator]()));\n } else {\n iterators.push(new ZipBufferIterator(this.destination, this, value));\n }\n }\n\n protected _complete() {\n const iterators = this.iterators;\n const len = iterators.length;\n\n this.unsubscribe();\n\n if (len === 0) {\n this.destination.complete!();\n return;\n }\n\n this.active = len;\n for (let i = 0; i < len; i++) {\n let iterator: ZipBufferIterator = iterators[i];\n if (iterator.stillUnsubscribed) {\n const destination = this.destination as Subscription;\n destination.add(iterator.subscribe());\n } else {\n this.active--; // not an observable\n }\n }\n }\n\n notifyInactive() {\n this.active--;\n if (this.active === 0) {\n this.destination.complete!();\n }\n }\n\n checkIterators() {\n const iterators = this.iterators;\n const len = iterators.length;\n const destination = this.destination;\n\n // abort if not all of them have values\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {\n return;\n }\n }\n\n let shouldComplete = false;\n const args: any[] = [];\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n let result = iterator.next();\n\n // check to see if it's completed now that you've gotten\n // the next value.\n if (iterator.hasCompleted()) {\n shouldComplete = true;\n }\n\n if (result.done) {\n destination.complete!();\n return;\n }\n\n args.push(result.value);\n }\n\n if (this.resultSelector) {\n this._tryresultSelector(args);\n } else {\n destination.next!(args);\n }\n\n if (shouldComplete) {\n destination.complete!();\n }\n }\n\n protected _tryresultSelector(args: any[]) {\n let result: any;\n try {\n result = this.resultSelector!.apply(this, args);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.destination.next!(result);\n }\n}\n\ninterface LookAheadIterator extends Iterator {\n hasValue(): boolean;\n hasCompleted(): boolean;\n}\n\nclass StaticIterator implements LookAheadIterator {\n private nextResult: IteratorResult;\n\n constructor(private iterator: Iterator) {\n this.nextResult = iterator.next();\n }\n\n hasValue() {\n return true;\n }\n\n next(): IteratorResult {\n const result = this.nextResult;\n this.nextResult = this.iterator.next();\n return result;\n }\n\n hasCompleted(): boolean {\n const nextResult = this.nextResult;\n return Boolean(nextResult && nextResult.done);\n }\n}\n\nclass StaticArrayIterator implements LookAheadIterator {\n private index = 0;\n private length = 0;\n\n constructor(private array: T[]) {\n this.length = array.length;\n }\n\n [Symbol_iterator]() {\n return this;\n }\n\n next(value?: any): IteratorResult {\n const i = this.index++;\n const array = this.array;\n return i < this.length ? { value: array[i], done: false } : { value: null, done: true };\n }\n\n hasValue() {\n return this.array.length > this.index;\n }\n\n hasCompleted() {\n return this.array.length === this.index;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass ZipBufferIterator extends SimpleOuterSubscriber implements LookAheadIterator {\n stillUnsubscribed = true;\n buffer: T[] = [];\n isComplete = false;\n\n constructor(destination: PartialObserver,\n private parent: ZipSubscriber,\n private observable: Observable) {\n super(destination);\n }\n\n [Symbol_iterator]() {\n return this;\n }\n\n // NOTE: there is actually a name collision here with Subscriber.next and Iterator.next\n // this is legit because `next()` will never be called by a subscription in this case.\n next(): IteratorResult {\n const buffer = this.buffer;\n if (buffer.length === 0 && this.isComplete) {\n return { value: null, done: true };\n } else {\n return { value: buffer.shift()!, done: false };\n }\n }\n\n hasValue() {\n return this.buffer.length > 0;\n }\n\n hasCompleted() {\n return this.buffer.length === 0 && this.isComplete;\n }\n\n notifyComplete() {\n if (this.buffer.length > 0) {\n this.isComplete = true;\n this.parent.notifyInactive();\n } else {\n this.destination.complete!();\n }\n }\n\n notifyNext(innerValue: any): void {\n this.buffer.push(innerValue);\n this.parent.checkIterators();\n }\n\n subscribe() {\n return innerSubscribe(this.observable, new SimpleInnerSubscriber(this));\n }\n}\n","\nimport { mergeAll } from './mergeAll';\nimport { OperatorFunction, ObservableInput } from '../types';\n\nexport function concatAll(): OperatorFunction, T>;\nexport function concatAll(): OperatorFunction;\n\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.\n *\n * ![](concatAll.png)\n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n *\n * For each click event, tick every second from 0 to 3, with no concurrency\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, take, concatAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(ev => interval(1000).pipe(take(4))),\n * );\n * const firstOrder = higherOrder.pipe(concatAll());\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaust}\n * @see {@link mergeAll}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable emitting values from all the inner\n * Observables concatenated.\n * @method concatAll\n * @owner Observable\n */\nexport function concatAll(): OperatorFunction, T> {\n return mergeAll(1);\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function filter(predicate: (value: T, index: number) => value is S,\n thisArg?: any): OperatorFunction;\nexport function filter(predicate: (value: T, index: number) => boolean,\n thisArg?: any): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.\n *\n * ![](filter.png)\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * ## Example\n * Emit only click events whose target was a DIV element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { filter } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksOnDivs = clicks.pipe(filter(ev => ev.target.tagName === 'DIV'));\n * clicksOnDivs.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nexport function filter(predicate: (value: T, index: number) => boolean,\n thisArg?: any): MonoTypeOperatorFunction {\n return function filterOperatorFunction(source: Observable): Observable {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\n\nclass FilterOperator implements Operator {\n constructor(private predicate: (value: T, index: number) => boolean,\n private thisArg?: any) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass FilterSubscriber extends Subscriber {\n\n count: number = 0;\n\n constructor(destination: Subscriber,\n private predicate: (value: T, index: number) => boolean,\n private thisArg: any) {\n super(destination);\n }\n\n // the try catch block below is left specifically for\n // optimization and perf reasons. a tryCatcher is not necessary here.\n protected _next(value: T) {\n let result: any;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subject } from '../Subject';\nimport { OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function groupBy(keySelector: (value: T) => K): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector: void, durationSelector: (grouped: GroupedObservable) => Observable): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector?: (value: T) => R, durationSelector?: (grouped: GroupedObservable) => Observable): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector?: (value: T) => R, durationSelector?: (grouped: GroupedObservable) => Observable, subjectSelector?: () => Subject): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Groups the items emitted by an Observable according to a specified criterion,\n * and emits these grouped items as `GroupedObservables`, one\n * {@link GroupedObservable} per group.\n *\n * ![](groupBy.png)\n *\n * When the Observable emits an item, a key is computed for this item with the keySelector function.\n *\n * If a {@link GroupedObservable} for this key exists, this {@link GroupedObservable} emits. Elsewhere, a new\n * {@link GroupedObservable} for this key is created and emits.\n *\n * A {@link GroupedObservable} represents values belonging to the same group represented by a common key. The common\n * key is available as the key field of a {@link GroupedObservable} instance.\n *\n * The elements emitted by {@link GroupedObservable}s are by default the items emitted by the Observable, or elements\n * returned by the elementSelector function.\n *\n * ## Examples\n *\n * ### Group objects by id and return as array\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { mergeMap, groupBy, reduce } from 'rxjs/operators';\n *\n * of(\n * {id: 1, name: 'JavaScript'},\n * {id: 2, name: 'Parcel'},\n * {id: 2, name: 'webpack'},\n * {id: 1, name: 'TypeScript'},\n * {id: 3, name: 'TSLint'}\n * ).pipe(\n * groupBy(p => p.id),\n * mergeMap((group$) => group$.pipe(reduce((acc, cur) => [...acc, cur], []))),\n * )\n * .subscribe(p => console.log(p));\n *\n * // displays:\n * // [ { id: 1, name: 'JavaScript'},\n * // { id: 1, name: 'TypeScript'} ]\n * //\n * // [ { id: 2, name: 'Parcel'},\n * // { id: 2, name: 'webpack'} ]\n * //\n * // [ { id: 3, name: 'TSLint'} ]\n * ```\n *\n * ### Pivot data on the id field\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { groupBy, map, mergeMap, reduce } from 'rxjs/operators';\n *\n * of(\n * { id: 1, name: 'JavaScript' },\n * { id: 2, name: 'Parcel' },\n * { id: 2, name: 'webpack' },\n * { id: 1, name: 'TypeScript' },\n * { id: 3, name: 'TSLint' }\n * )\n * .pipe(\n * groupBy(p => p.id, p => p.name),\n * mergeMap(group$ =>\n * group$.pipe(reduce((acc, cur) => [...acc, cur], [`${group$.key}`]))\n * ),\n * map(arr => ({ id: parseInt(arr[0], 10), values: arr.slice(1) }))\n * )\n * .subscribe(p => console.log(p));\n *\n * // displays:\n * // { id: 1, values: [ 'JavaScript', 'TypeScript' ] }\n * // { id: 2, values: [ 'Parcel', 'webpack' ] }\n * // { id: 3, values: [ 'TSLint' ] }\n * ```\n *\n * @param {function(value: T): K} keySelector A function that extracts the key\n * for each item.\n * @param {function(value: T): R} [elementSelector] A function that extracts the\n * return element for each item.\n * @param {function(grouped: GroupedObservable): Observable} [durationSelector]\n * A function that returns an Observable to determine how long each group should\n * exist.\n * @return {Observable>} An Observable that emits\n * GroupedObservables, each of which corresponds to a unique key value and each\n * of which emits those items from the source Observable that share that key\n * value.\n * @method groupBy\n * @owner Observable\n */\nexport function groupBy(keySelector: (value: T) => K,\n elementSelector?: ((value: T) => R) | void,\n durationSelector?: (grouped: GroupedObservable) => Observable,\n subjectSelector?: () => Subject): OperatorFunction> {\n return (source: Observable) =>\n source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector));\n}\n\nexport interface RefCountSubscription {\n count: number;\n unsubscribe: () => void;\n closed: boolean;\n attemptedToUnsubscribe: boolean;\n}\n\nclass GroupByOperator implements Operator> {\n constructor(private keySelector: (value: T) => K,\n private elementSelector?: ((value: T) => R) | void,\n private durationSelector?: (grouped: GroupedObservable) => Observable,\n private subjectSelector?: () => Subject) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new GroupBySubscriber(\n subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass GroupBySubscriber extends Subscriber implements RefCountSubscription {\n private groups: Map> = null;\n public attemptedToUnsubscribe: boolean = false;\n public count: number = 0;\n\n constructor(destination: Subscriber>,\n private keySelector: (value: T) => K,\n private elementSelector?: ((value: T) => R) | void,\n private durationSelector?: (grouped: GroupedObservable) => Observable,\n private subjectSelector?: () => Subject) {\n super(destination);\n }\n\n protected _next(value: T): void {\n let key: K;\n try {\n key = this.keySelector(value);\n } catch (err) {\n this.error(err);\n return;\n }\n\n this._group(value, key);\n }\n\n private _group(value: T, key: K) {\n let groups = this.groups;\n\n if (!groups) {\n groups = this.groups = new Map>();\n }\n\n let group = groups.get(key);\n\n let element: R;\n if (this.elementSelector) {\n try {\n element = this.elementSelector(value);\n } catch (err) {\n this.error(err);\n }\n } else {\n element = value;\n }\n\n if (!group) {\n group = (this.subjectSelector ? this.subjectSelector() : new Subject()) as Subject;\n groups.set(key, group);\n const groupedObservable = new GroupedObservable(key, group, this);\n this.destination.next(groupedObservable);\n if (this.durationSelector) {\n let duration: any;\n try {\n duration = this.durationSelector(new GroupedObservable(key, >group));\n } catch (err) {\n this.error(err);\n return;\n }\n this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this)));\n }\n }\n\n if (!group.closed) {\n group.next(element);\n }\n }\n\n protected _error(err: any): void {\n const groups = this.groups;\n if (groups) {\n groups.forEach((group, key) => {\n group.error(err);\n });\n\n groups.clear();\n }\n this.destination.error(err);\n }\n\n protected _complete(): void {\n const groups = this.groups;\n if (groups) {\n groups.forEach((group, key) => {\n group.complete();\n });\n\n groups.clear();\n }\n this.destination.complete();\n }\n\n removeGroup(key: K): void {\n this.groups.delete(key);\n }\n\n unsubscribe() {\n if (!this.closed) {\n this.attemptedToUnsubscribe = true;\n if (this.count === 0) {\n super.unsubscribe();\n }\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass GroupDurationSubscriber extends Subscriber {\n constructor(private key: K,\n private group: Subject,\n private parent: GroupBySubscriber) {\n super(group);\n }\n\n protected _next(value: T): void {\n this.complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { parent, key } = this;\n this.key = this.parent = null;\n if (parent) {\n parent.removeGroup(key);\n }\n }\n}\n\n/**\n * An Observable representing values belonging to the same group represented by\n * a common key. The values emitted by a GroupedObservable come from the source\n * Observable. The common key is available as the field `key` on a\n * GroupedObservable instance.\n *\n * @class GroupedObservable\n */\nexport class GroupedObservable extends Observable {\n /** @deprecated Do not construct this type. Internal use only */\n constructor(public key: K,\n private groupSubject: Subject,\n private refCountSubscription?: RefCountSubscription) {\n super();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n const subscription = new Subscription();\n const { refCountSubscription, groupSubject } = this;\n if (refCountSubscription && !refCountSubscription.closed) {\n subscription.add(new InnerRefCountSubscription(refCountSubscription));\n }\n subscription.add(groupSubject.subscribe(subscriber));\n return subscription;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass InnerRefCountSubscription extends Subscription {\n constructor(private parent: RefCountSubscription) {\n super();\n parent.count++;\n }\n\n unsubscribe() {\n const parent = this.parent;\n if (!parent.closed && !this.closed) {\n super.unsubscribe();\n parent.count -= 1;\n if (parent.count === 0 && parent.attemptedToUnsubscribe) {\n parent.unsubscribe();\n }\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\n\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.\n *\n * ![](map.png)\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * ## Example\n * Map every click to the clientX position of that click\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const positions = clicks.pipe(map(ev => ev.clientX));\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nexport function map(project: (value: T, index: number) => R, thisArg?: any): OperatorFunction {\n return function mapOperation(source: Observable): Observable {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\n\nexport class MapOperator implements Operator {\n constructor(private project: (value: T, index: number) => R, private thisArg: any) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass MapSubscriber extends Subscriber {\n count: number = 0;\n private thisArg: any;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => R,\n thisArg: any) {\n super(destination);\n this.thisArg = thisArg || this;\n }\n\n // NOTE: This looks unoptimized, but it's actually purposefully NOT\n // using try/catch optimizations.\n protected _next(value: T) {\n let result: R;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","\nimport { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nimport { OperatorFunction, ObservableInput } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * Flattens an Observable-of-Observables.\n *\n * ![](mergeAll.png)\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n * Spawn a new interval Observable for each click event, and blend their outputs as one Observable\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(map((ev) => interval(1000)));\n * const firstOrder = higherOrder.pipe(mergeAll());\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * Count from 0 to 9 every second for each click, but only allow 2 concurrent timers\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { take, map, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map((ev) => interval(1000).pipe(take(10))),\n * );\n * const firstOrder = higherOrder.pipe(mergeAll(2));\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits values coming from all the\n * inner Observables emitted by the source Observable.\n * @method mergeAll\n * @owner Observable\n */\nexport function mergeAll(concurrent: number = Number.POSITIVE_INFINITY): OperatorFunction, T> {\n return mergeMap(identity, concurrent);\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function mergeMap>(project: (value: T, index: number) => O, concurrent?: number): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function mergeMap>(project: (value: T, index: number) => O, resultSelector: undefined, concurrent?: number): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function mergeMap>(project: (value: T, index: number) => O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R, concurrent?: number): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.\n *\n * ![](mergeMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * ## Example\n * Map and flatten each letter to an Observable ticking every 1 second\n * ```ts\n * import { of, interval } from 'rxjs';\n * import { mergeMap, map } from 'rxjs/operators';\n *\n * const letters = of('a', 'b', 'c');\n * const result = letters.pipe(\n * mergeMap(x => interval(1000).pipe(map(i => x+i))),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a,b,c with respective ascending integers\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional deprecated `resultSelector`) to each item\n * emitted by the source Observable and merging the results of the Observables\n * obtained from this transformation.\n */\nexport function mergeMap>(\n project: (value: T, index: number) => O,\n resultSelector?: ((outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Number.POSITIVE_INFINITY\n): OperatorFunction|R> {\n if (typeof resultSelector === 'function') {\n // DEPRECATED PATH\n return (source: Observable) => source.pipe(\n mergeMap((a, i) => from(project(a, i)).pipe(\n map((b: any, ii: number) => resultSelector(a, b, i, ii)),\n ), concurrent)\n );\n } else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return (source: Observable) => source.lift(new MergeMapOperator(project, concurrent));\n}\n\nexport class MergeMapOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput,\n private concurrent: number = Number.POSITIVE_INFINITY) {\n }\n\n call(observer: Subscriber, source: any): any {\n return source.subscribe(new MergeMapSubscriber(\n observer, this.project, this.concurrent\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class MergeMapSubscriber extends SimpleOuterSubscriber {\n private hasCompleted: boolean = false;\n private buffer: T[] = [];\n private active: number = 0;\n protected index: number = 0;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput,\n private concurrent: number = Number.POSITIVE_INFINITY) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n } else {\n this.buffer.push(value);\n }\n }\n\n protected _tryNext(value: T) {\n let result: ObservableInput;\n const index = this.index++;\n try {\n result = this.project(value, index);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.active++;\n this._innerSub(result);\n }\n\n private _innerSub(ish: ObservableInput): void {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(ish, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n this.destination.next!(innerValue);\n }\n\n notifyComplete(): void {\n const buffer = this.buffer;\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift()!);\n } else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete!();\n }\n }\n}\n\n/**\n * @deprecated renamed. Use {@link mergeMap}\n */\nexport const flatMap = mergeMap;","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Notification } from '../Notification';\nimport { MonoTypeOperatorFunction, PartialObserver, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n *\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * Ensure a specific scheduler is used, from outside of an Observable.\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * ## Example\n * Ensure values in subscribe are called just before browser repaint.\n * ```ts\n * import { interval } from 'rxjs';\n * import { observeOn } from 'rxjs/operators';\n *\n * const intervals = interval(10); // Intervals are scheduled\n * // with async scheduler by default...\n * intervals.pipe(\n * observeOn(animationFrameScheduler), // ...but we will observe on animationFrame\n * ) // scheduler to ensure smooth animation.\n * .subscribe(val => {\n * someDiv.style.height = val + 'px';\n * });\n * ```\n *\n * @see {@link delay}\n *\n * @param {SchedulerLike} scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param {number} [delay] Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return {Observable} Observable that emits the same notifications as the source Observable,\n * but with provided scheduler.\n *\n * @method observeOn\n * @owner Observable\n */\nexport function observeOn(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction {\n return function observeOnOperatorFunction(source: Observable): Observable {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\n\nexport class ObserveOnOperator implements Operator {\n constructor(private scheduler: SchedulerLike, private delay: number = 0) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class ObserveOnSubscriber extends Subscriber {\n /** @nocollapse */\n static dispatch(this: SchedulerAction, arg: ObserveOnMessage) {\n const { notification, destination } = arg;\n notification.observe(destination);\n this.unsubscribe();\n }\n\n constructor(destination: Subscriber,\n private scheduler: SchedulerLike,\n private delay: number = 0) {\n super(destination);\n }\n\n private scheduleMessage(notification: Notification): void {\n const destination = this.destination as Subscription;\n destination.add(this.scheduler.schedule(\n ObserveOnSubscriber.dispatch,\n this.delay,\n new ObserveOnMessage(notification, this.destination)\n ));\n }\n\n protected _next(value: T): void {\n this.scheduleMessage(Notification.createNext(value));\n }\n\n protected _error(err: any): void {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n }\n}\n\nexport class ObserveOnMessage {\n constructor(public notification: Notification,\n public destination: PartialObserver) {\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { Observable } from '../Observable';\n\n/**\n * Make a {@link ConnectableObservable} behave like a ordinary observable and automates the way\n * you can connect to it.\n *\n * Internally it counts the subscriptions to the observable and subscribes (only once) to the source if\n * the number of subscriptions is larger than 0. If the number of subscriptions is smaller than 1, it\n * unsubscribes from the source. This way you can make sure that everything before the *published*\n * refCount has only a single subscription independently of the number of subscribers to the target\n * observable.\n *\n * Note that using the {@link share} operator is exactly the same as using the *publish* operator\n * (making the observable hot) and the *refCount* operator in a sequence.\n *\n * ![](refCount.png)\n *\n * ## Example\n *\n * In the following example there are two intervals turned into connectable observables\n * by using the *publish* operator. The first one uses the *refCount* operator, the\n * second one does not use it. You will notice that a connectable observable does nothing\n * until you call its connect function.\n *\n * ```ts\n * import { interval } from 'rxjs';\n * import { tap, publish, refCount } from 'rxjs/operators';\n *\n * // Turn the interval observable into a ConnectableObservable (hot)\n * const refCountInterval = interval(400).pipe(\n * tap((num) => console.log(`refCount ${num}`)),\n * publish(),\n * refCount()\n * );\n *\n * const publishedInterval = interval(400).pipe(\n * tap((num) => console.log(`publish ${num}`)),\n * publish()\n * );\n *\n * refCountInterval.subscribe();\n * refCountInterval.subscribe();\n * // 'refCount 0' -----> 'refCount 1' -----> etc\n * // All subscriptions will receive the same value and the tap (and\n * // every other operator) before the publish operator will be executed\n * // only once per event independently of the number of subscriptions.\n *\n * publishedInterval.subscribe();\n * // Nothing happens until you call .connect() on the observable.\n * ```\n *\n * @see {@link ConnectableObservable}\n * @see {@link share}\n * @see {@link publish}\n */\nexport function refCount(): MonoTypeOperatorFunction {\n return function refCountOperatorFunction(source: ConnectableObservable): Observable {\n return source.lift(new RefCountOperator(source));\n } as MonoTypeOperatorFunction;\n}\n\nclass RefCountOperator implements Operator {\n constructor(private connectable: ConnectableObservable) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n\n const { connectable } = this;\n ( connectable)._refCount++;\n\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n\n if (!refCounter.closed) {\n ( refCounter).connection = connectable.connect();\n }\n\n return subscription;\n }\n}\n\nclass RefCountSubscriber extends Subscriber {\n\n private connection: Subscription;\n\n constructor(destination: Subscriber,\n private connectable: ConnectableObservable) {\n super(destination);\n }\n\n protected _unsubscribe() {\n\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n\n this.connectable = null;\n const refCount = ( connectable)._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n\n ( connectable)._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n\n ///\n // Compare the local RefCountSubscriber's connection Subscription to the\n // connection Subscription on the shared ConnectableObservable. In cases\n // where the ConnectableObservable source synchronously emits values, and\n // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n // execution continues to here before the RefCountOperator has a chance to\n // supply the RefCountSubscriber with the shared connection Subscription.\n // For example:\n // ```\n // range(0, 10).pipe(\n // publish(),\n // refCount(),\n // take(5),\n // )\n // .subscribe();\n // ```\n // In order to account for this case, RefCountSubscriber should only dispose\n // the ConnectableObservable's shared connection Subscription if the\n // connection Subscription exists, *and* either:\n // a. RefCountSubscriber doesn't have a reference to the shared connection\n // Subscription yet, or,\n // b. RefCountSubscriber's connection Subscription reference is identical\n // to the shared connection Subscription\n ///\n const { connection } = this;\n const sharedConnection = ( connectable)._connection;\n this.connection = null;\n\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport function scheduleArray(input: ArrayLike, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n let i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { ObservableInput, SchedulerLike, Observable } from 'rxjs';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\n\n/**\n * Converts from a common {@link ObservableInput} type to an observable where subscription and emissions\n * are scheduled on the provided scheduler.\n *\n * @see from\n * @see of\n *\n * @param input The observable, array, promise, iterable, etc you would like to schedule\n * @param scheduler The scheduler to use to schedule the subscription and emissions from\n * the returned observable.\n */\nexport function scheduled(input: ObservableInput, scheduler: SchedulerLike): Observable {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n } else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n } else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n } else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n","import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable {\n return input && typeof input[Symbol_observable] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { InteropObservable, SchedulerLike, Subscribable } from '../types';\n\nexport function scheduleObservable(input: InteropObservable, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => {\n const observable: Subscribable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next(value) { sub.add(scheduler.schedule(() => subscriber.next(value))); },\n error(err) { sub.add(scheduler.schedule(() => subscriber.error(err))); },\n complete() { sub.add(scheduler.schedule(() => subscriber.complete())); },\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport function schedulePromise(input: PromiseLike, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => input.then(\n value => {\n sub.add(scheduler.schedule(() => {\n subscriber.next(value);\n sub.add(scheduler.schedule(() => subscriber.complete()));\n }));\n },\n err => {\n sub.add(scheduler.schedule(() => subscriber.error(err)));\n }\n )));\n return sub;\n });\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\n\nexport function scheduleIterable(input: Iterable, scheduler: SchedulerLike) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(subscriber => {\n const sub = new Subscription();\n let iterator: Iterator;\n sub.add(() => {\n // Finalize generators\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(() => {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n let value: T;\n let done: boolean;\n try {\n const result = iterator.next();\n value = result.value;\n done = result.done;\n } catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n } else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n","import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AsyncAction extends Action {\n\n public id: any;\n public state: T;\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, id?: any, delay: number = 0): any {\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(scheduler: AsyncScheduler, id: any, delay: number = 0): any {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n clearInterval(id);\n return undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, delay: number): any {\n let errored: boolean = false;\n let errorValue: any = undefined;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n\n const id = this.id;\n const scheduler = this.scheduler;\n const actions = scheduler.actions;\n const index = actions.indexOf(this);\n\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n\n if (index !== -1) {\n actions.splice(index, 1);\n }\n\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null;\n }\n}\n","import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action\n */\nexport class Action extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n","import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport class AsyncScheduler extends Scheduler {\n public static delegate?: Scheduler;\n public actions: Array> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n * @deprecated internal use only\n */\n public active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n * @deprecated internal use only\n */\n public scheduled: any = undefined;\n\n constructor(SchedulerAction: typeof Action,\n now: () => number = Scheduler.now) {\n super(SchedulerAction, () => {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.now();\n } else {\n return now();\n }\n });\n }\n\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n } else {\n return super.schedule(work, delay, state);\n }\n }\n\n public flush(action: AsyncAction): void {\n\n const {actions} = this;\n\n if (this.active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this.active = true;\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift()); // exhaust the scheduler queue\n\n this.active = false;\n\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","let nextHandle = 1;\nconst RESOLVED = (() => Promise.resolve())();\nconst activeHandles: { [key: number]: any } = {};\n\n/**\n * Finds the handle in the list of active handles, and removes it.\n * Returns `true` if found, `false` otherwise. Used both to clear\n * Immediate scheduled tasks, and to identify if a task should be scheduled.\n */\nfunction findAndClearHandle(handle: number): boolean {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\n\n/**\n * Helper functions to schedule and unschedule microtasks.\n */\nexport const Immediate = {\n setImmediate(cb: () => void): number {\n const handle = nextHandle++;\n activeHandles[handle] = true;\n RESOLVED.then(() => findAndClearHandle(handle) && cb());\n return handle;\n },\n\n clearImmediate(handle: number): void {\n findAndClearHandle(handle);\n },\n};\n\n/**\n * Used for internal testing purposes only. Do not export from library.\n */\nexport const TestTools = {\n pending() {\n return Object.keys(activeHandles).length;\n }\n};\n","import { Immediate } from '../util/Immediate';\nimport { AsyncAction } from './AsyncAction';\nimport { AsapScheduler } from './AsapScheduler';\nimport { SchedulerAction } from '../types';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AsapAction extends AsyncAction {\n\n constructor(protected scheduler: AsapScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AsapScheduler, id?: any, delay: number = 0): any {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If a microtask has already been scheduled, don't schedule another\n // one. If a microtask hasn't been scheduled yet, schedule one now. Return\n // the current scheduled microtask id.\n return scheduler.scheduled || (scheduler.scheduled = Immediate.setImmediate(\n scheduler.flush.bind(scheduler, null)\n ));\n }\n protected recycleAsyncId(scheduler: AsapScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue is empty, cancel the requested microtask and\n // set the scheduled flag to undefined so the next AsapAction will schedule\n // its own.\n if (scheduler.actions.length === 0) {\n Immediate.clearImmediate(id);\n scheduler.scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AsapScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n\n this.active = true;\n this.scheduled = undefined;\n\n const {actions} = this;\n let error: any;\n let index: number = -1;\n let count: number = actions.length;\n action = action || actions.shift();\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this.active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\n\n/**\n *\n * Asap Scheduler\n *\n * Perform task as fast as it can be performed asynchronously\n *\n * `asap` scheduler behaves the same as {@link asyncScheduler} scheduler when you use it to delay task\n * in time. If however you set delay to `0`, `asap` will wait for current synchronously executing\n * code to end and then it will try to execute given task as fast as possible.\n *\n * `asap` scheduler will do its best to minimize time between end of currently executing code\n * and start of scheduled task. This makes it best candidate for performing so called \"deferring\".\n * Traditionally this was achieved by calling `setTimeout(deferredTask, 0)`, but that technique involves\n * some (although minimal) unwanted delay.\n *\n * Note that using `asap` scheduler does not necessarily mean that your task will be first to process\n * after currently executing code. In particular, if some task was also scheduled with `asap` before,\n * that task will execute first. That being said, if you need to schedule task asynchronously, but\n * as soon as possible, `asap` scheduler is your best bet.\n *\n * ## Example\n * Compare async and asap scheduler<\n * ```ts\n * import { asapScheduler, asyncScheduler } from 'rxjs';\n *\n * asyncScheduler.schedule(() => console.log('async')); // scheduling 'async' first...\n * asapScheduler.schedule(() => console.log('asap'));\n *\n * // Logs:\n * // \"asap\"\n * // \"async\"\n * // ... but 'asap' goes first!\n * ```\n */\nexport const asapScheduler = new AsapScheduler(AsapAction);\n\n/**\n * @deprecated renamed. Use {@link asapScheduler}\n */\nexport const asap = asapScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * Schedule task as if you used setTimeout(task, duration)\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated renamed. Use {@link asyncScheduler}\n */\nexport const async = asyncScheduler;","import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { QueueScheduler } from './QueueScheduler';\nimport { SchedulerAction } from '../types';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class QueueAction extends AsyncAction {\n\n constructor(protected scheduler: QueueScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (delay > 0) {\n return super.schedule(state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n }\n\n public execute(state: T, delay: number): any {\n return (delay > 0 || this.closed) ?\n super.execute(state, delay) :\n this._execute(state, delay) ;\n }\n\n protected requestAsyncId(scheduler: QueueScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Otherwise flush the scheduler starting with this action.\n return scheduler.flush(this);\n }\n}\n","import { AsyncScheduler } from './AsyncScheduler';\n\nexport class QueueScheduler extends AsyncScheduler {\n}\n","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\n\n/**\n *\n * Queue Scheduler\n *\n * Put every next task on a queue, instead of executing it immediately\n *\n * `queue` scheduler, when used with delay, behaves the same as {@link asyncScheduler} scheduler.\n *\n * When used without delay, it schedules given task synchronously - executes it right when\n * it is scheduled. However when called recursively, that is when inside the scheduled task,\n * another task is scheduled with queue scheduler, instead of executing immediately as well,\n * that task will be put on a queue and wait for current one to finish.\n *\n * This means that when you execute task with `queue` scheduler, you are sure it will end\n * before any other task scheduled with that scheduler will start.\n *\n * ## Examples\n * Schedule recursively first, then do something\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(() => {\n * queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue\n *\n * console.log('first');\n * });\n *\n * // Logs:\n * // \"first\"\n * // \"second\"\n * ```\n *\n * Reschedule itself recursively\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(function(state) {\n * if (state !== 0) {\n * console.log('before', state);\n * this.schedule(state - 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * console.log('after', state);\n * }\n * }, 0, 3);\n *\n * // In scheduler that runs recursively, you would expect:\n * // \"before\", 3\n * // \"before\", 2\n * // \"before\", 1\n * // \"after\", 1\n * // \"after\", 2\n * // \"after\", 3\n *\n * // But with queue it logs:\n * // \"before\", 3\n * // \"after\", 3\n * // \"before\", 2\n * // \"after\", 2\n * // \"before\", 1\n * // \"after\", 1\n * ```\n */\nexport const queueScheduler = new QueueScheduler(QueueAction);\n\n/**\n * @deprecated renamed. Use {@link queueScheduler}\n */\nexport const queue = queueScheduler;\n","export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n\n/**\n * @deprecated use {@link iterator} instead\n */\nexport const $$iterator = iterator;\n","/** @deprecated do not use, this is no longer checked by RxJS internals */\nexport const rxSubscriber = (() =>\n typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random())();\n\n/**\n * @deprecated use rxSubscriber instead\n */\nexport const $$rxSubscriber = rxSubscriber;\n","export interface ArgumentOutOfRangeError extends Error {\n}\n\nexport interface ArgumentOutOfRangeErrorCtor {\n new(): ArgumentOutOfRangeError;\n}\n\nconst ArgumentOutOfRangeErrorImpl = (() => {\n function ArgumentOutOfRangeErrorImpl(this: any) {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n }\n\n ArgumentOutOfRangeErrorImpl.prototype = Object.create(Error.prototype);\n\n return ArgumentOutOfRangeErrorImpl;\n})();\n\n/**\n * An error thrown when an element was queried at a certain index of an\n * Observable, but no such index or position exists in that sequence.\n *\n * @see {@link elementAt}\n * @see {@link take}\n * @see {@link takeLast}\n *\n * @class ArgumentOutOfRangeError\n */\nexport const ArgumentOutOfRangeError: ArgumentOutOfRangeErrorCtor = ArgumentOutOfRangeErrorImpl as any;","export interface EmptyError extends Error {\n}\n\nexport interface EmptyErrorCtor {\n new(): EmptyError;\n}\n\nconst EmptyErrorImpl = (() => {\n function EmptyErrorImpl(this: any) {\n Error.call(this);\n this.message = 'no elements in sequence';\n this.name = 'EmptyError';\n return this;\n }\n\n EmptyErrorImpl.prototype = Object.create(Error.prototype);\n\n return EmptyErrorImpl;\n})();\n\n/**\n * An error thrown when an Observable or a sequence was queried but has no\n * elements.\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link single}\n *\n * @class EmptyError\n */\nexport const EmptyError: EmptyErrorCtor = EmptyErrorImpl as any;","export interface ObjectUnsubscribedError extends Error {\n}\n\nexport interface ObjectUnsubscribedErrorCtor {\n new(): ObjectUnsubscribedError;\n}\n\nconst ObjectUnsubscribedErrorImpl = (() => {\n function ObjectUnsubscribedErrorImpl(this: any) {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n\n ObjectUnsubscribedErrorImpl.prototype = Object.create(Error.prototype);\n\n return ObjectUnsubscribedErrorImpl;\n})();\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = ObjectUnsubscribedErrorImpl as any;","export interface TimeoutError extends Error {\n}\n\nexport interface TimeoutErrorCtor {\n new(): TimeoutError;\n}\n\nconst TimeoutErrorImpl = (() => {\n function TimeoutErrorImpl(this: any) {\n Error.call(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n return this;\n }\n\n TimeoutErrorImpl.prototype = Object.create(Error.prototype);\n\n return TimeoutErrorImpl;\n})();\n\n/**\n * An error thrown when duetime elapses.\n *\n * @see {@link operators/timeout}\n *\n * @class TimeoutError\n */\nexport const TimeoutError: TimeoutErrorCtor = TimeoutErrorImpl as any;\n","export interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n new(errors: any[]): UnsubscriptionError;\n}\n\nconst UnsubscriptionErrorImpl = (() => {\n function UnsubscriptionErrorImpl(this: any, errors: any[]) {\n Error.call(this);\n this.message = errors ?\n `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}` : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n\n UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\n\n return UnsubscriptionErrorImpl;\n})();\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = UnsubscriptionErrorImpl as any;","import { Subscriber } from '../Subscriber';\nimport { Subject } from '../Subject';\n\n/**\n * Determines whether the ErrorObserver is closed or stopped or has a\n * destination that is closed or stopped - in which case errors will\n * need to be reported via a different mechanism.\n * @param observer the observer\n */\nexport function canReportError(observer: Subscriber | Subject): boolean {\n while (observer) {\n const { closed, destination, isStopped } = observer as any;\n if (closed || isStopped) {\n return false;\n } else if (destination && destination instanceof Subscriber) {\n observer = destination;\n } else {\n observer = null;\n }\n }\n return true;\n}\n","/**\n * Throws an error on another job so that it's picked up by the runtime's\n * uncaught error handling mechanism.\n * @param err the error to throw\n */\nexport function hostReportError(err: any) {\n setTimeout(() => { throw err; }, 0);\n}","export function identity(x: T): T {\n return x;\n}\n","export function isFunction(x: any): x is Function {\n return typeof x === 'function';\n}\n","import { isArray } from './isArray';\n\nexport function isNumeric(val: any): val is number | string {\n // parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n // ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n // subtraction forces infinities to NaN\n // adding 1 corrects loss of precision from parseFloat (#15100)\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n","export function isObject(x: any): x is Object {\n return x !== null && typeof x === 'object';\n}\n","/**\n * Tests to see if the object is an ES2015 (ES6) Promise\n * @see {@link https://www.ecma-international.org/ecma-262/6.0/#sec-promise-objects}\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike {\n return !!value && typeof (value).subscribe !== 'function' && typeof (value as any).then === 'function';\n}\n","import { SchedulerLike } from '../types';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n return value && typeof (value).schedule === 'function';\n}\n","export function not(pred: Function, thisArg: any): Function {\n function notPred(): any {\n return !(( notPred).pred.apply(( notPred).thisArg, arguments));\n }\n ( notPred).pred = pred;\n ( notPred).thisArg = thisArg;\n return notPred;\n}","import { noop } from './noop';\nimport { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function pipe(): UnaryFunction;\nexport function pipe(fn1: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction, fn9: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction, fn9: UnaryFunction, ...fns: UnaryFunction[]): UnaryFunction;\n/* tslint:enable:max-line-length */\n\nexport function pipe(...fns: Array>): UnaryFunction {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray(fns: Array>): UnaryFunction {\n if (fns.length === 0) {\n return identity as UnaryFunction;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction) => fn(prev), input as any);\n };\n}\n","import { ObservableInput } from '../types';\nimport { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { Subscription } from '../Subscription';\nimport { Subscriber } from '../Subscriber';\n\nexport const subscribeTo = (result: ObservableInput): (subscriber: Subscriber) => Subscription | void => {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result as any);\n } else if (isArrayLike(result)) {\n return subscribeToArray(result);\n } else if (isPromise(result)) {\n return subscribeToPromise(result as Promise);\n } else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result as any);\n } else {\n const value = isObject(result) ? 'an invalid object' : `'${result}'`;\n const msg = `You provided ${value} where a stream was expected.`\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n","import { Subscriber } from '../Subscriber';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\n/**\n * Subscribes to an object that implements Symbol.observable with the given\n * Subscriber.\n * @param obj An object that implements Symbol.observable\n */\nexport const subscribeToObservable = (obj: any) => (subscriber: Subscriber) => {\n const obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n // Should be caught by observable subscribe function error handling.\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n } else {\n return obs.subscribe(subscriber);\n }\n};\n","import { Subscriber } from '../Subscriber';\nimport { hostReportError } from './hostReportError';\n\nexport const subscribeToPromise = (promise: PromiseLike) => (subscriber: Subscriber) => {\n promise.then(\n (value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n },\n (err: any) => subscriber.error(err)\n )\n .then(null, hostReportError);\n return subscriber;\n};\n","import { Subscriber } from '../Subscriber';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\n\nexport const subscribeToIterable = (iterable: Iterable) => (subscriber: Subscriber) => {\n const iterator = (iterable as any)[Symbol_iterator]();\n\n do {\n let item: IteratorResult;\n try {\n item = iterator.next();\n } catch (err) {\n subscriber.error(err);\n return subscriber;\n }\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n\n // Finalize the iterator if it happens to be a Generator\n if (typeof iterator.return === 'function') {\n subscriber.add(() => {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n\n return subscriber;\n};\n","import { Subscriber } from '../Subscriber';\n\n/**\n * Subscribes to an ArrayLike with a subscriber\n * @param array The array or array-like to subscribe to\n */\nexport const subscribeToArray = (array: ArrayLike) => (subscriber: Subscriber) => {\n for (let i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n};\n","import { Subscriber } from './Subscriber';\nimport { OuterSubscriber } from './OuterSubscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class InnerSubscriber extends Subscriber {\n private index = 0;\n\n constructor(private parent: OuterSubscriber, public outerValue: T, public outerIndex: number) {\n super();\n }\n\n protected _next(value: R): void {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n","import { Subscription } from '../Subscription';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { Subscriber } from '../Subscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue: undefined,\n outerIndex: undefined,\n innerSubscriber: InnerSubscriber\n): Subscription | undefined;\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue?: T,\n outerIndex?: number\n): Subscription | undefined;\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue?: T,\n outerIndex?: number,\n innerSubscriber: Subscriber = new InnerSubscriber(outerSubscriber, outerValue, outerIndex)\n): Subscription | undefined {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n return subscribeTo(result)(innerSubscriber) as Subscription;\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SubscribableOrPromise, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Ignores source values for a duration determined by another Observable, then\n * emits the most recent value from the source Observable, then repeats this\n * process.\n *\n * It's like {@link auditTime}, but the silencing\n * duration is determined by a second Observable.\n *\n * ![](audit.png)\n *\n * `audit` is similar to `throttle`, but emits the last value from the silenced\n * time window, instead of the first value. `audit` emits the most recent value\n * from the source Observable on the output Observable as soon as its internal\n * timer becomes disabled, and ignores source values while the timer is enabled.\n * Initially, the timer is disabled. As soon as the first source value arrives,\n * the timer is enabled by calling the `durationSelector` function with the\n * source value, which returns the \"duration\" Observable. When the duration\n * Observable emits a value or completes, the timer is disabled, then the most\n * recent source value is emitted on the output Observable, and this process\n * repeats for the next source value.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { audit } from 'rxjs/operators'\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(audit(ev => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttle}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration, returned as an Observable or a Promise.\n * @return {Observable} An Observable that performs rate-limiting of\n * emissions from the source Observable.\n * @method audit\n * @owner Observable\n */\nexport function audit(durationSelector: (value: T) => SubscribableOrPromise): MonoTypeOperatorFunction {\n return function auditOperatorFunction(source: Observable) {\n return source.lift(new AuditOperator(durationSelector));\n };\n}\n\nclass AuditOperator implements Operator {\n constructor(private durationSelector: (value: T) => SubscribableOrPromise) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass AuditSubscriber extends SimpleOuterSubscriber {\n\n private value?: T;\n private hasValue: boolean = false;\n private throttled?: Subscription;\n\n constructor(destination: Subscriber,\n private durationSelector: (value: T) => SubscribableOrPromise) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.value = value;\n this.hasValue = true;\n if (!this.throttled) {\n let duration;\n try {\n const { durationSelector } = this;\n duration = durationSelector(value);\n } catch (err) {\n return this.destination.error!(err);\n }\n const innerSubscription = innerSubscribe(duration, new SimpleInnerSubscriber(this));\n if (!innerSubscription || innerSubscription.closed) {\n this.clearThrottle();\n } else {\n this.add(this.throttled = innerSubscription);\n }\n }\n }\n\n clearThrottle() {\n const { value, hasValue, throttled } = this;\n if (throttled) {\n this.remove(throttled);\n this.throttled = undefined;\n throttled.unsubscribe();\n }\n if (hasValue) {\n this.value = undefined;\n this.hasValue = false;\n this.destination.next!(value);\n }\n }\n\n notifyNext(): void {\n this.clearThrottle();\n }\n\n notifyComplete(): void {\n this.clearThrottle();\n }\n}\n","import { async } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/**\n * Ignores source values for `duration` milliseconds, then emits the most recent\n * value from the source Observable, then repeats this process.\n *\n * When it sees a source value, it ignores that plus\n * the next ones for `duration` milliseconds, and then it emits the most recent\n * value from the source.\n *\n * ![](auditTime.png)\n *\n * `auditTime` is similar to `throttleTime`, but emits the last value from the\n * silenced time window, instead of the first value. `auditTime` emits the most\n * recent value from the source Observable on the output Observable as soon as\n * its internal timer becomes disabled, and ignores source values while the\n * timer is enabled. Initially, the timer is disabled. As soon as the first\n * source value arrives, the timer is enabled. After `duration` milliseconds (or\n * the time unit determined internally by the optional `scheduler`) has passed,\n * the timer is disabled, then the most recent source value is emitted on the\n * output Observable, and this process repeats for the next source value.\n * Optionally takes a {@link SchedulerLike} for managing timers.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { auditTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(auditTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} duration Time to wait before emitting the most recent source\n * value, measured in milliseconds or the time unit determined internally\n * by the optional `scheduler`.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the rate-limiting behavior.\n * @return {Observable} An Observable that performs rate-limiting of\n * emissions from the source Observable.\n * @method auditTime\n * @owner Observable\n */\nexport function auditTime(duration: number, scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return audit(() => timer(duration, scheduler));\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Buffers the source Observable values until `closingNotifier` emits.\n *\n * Collects values from the past as an array, and emits\n * that array only when another Observable emits.\n *\n * ![](buffer.png)\n *\n * Buffers the incoming Observable values until the given `closingNotifier`\n * Observable emits a value, at which point it emits the buffer on the output\n * Observable and starts a new buffer internally, awaiting the next time\n * `closingNotifier` emits.\n *\n * ## Example\n *\n * On every click, emit array of most recent interval events\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { buffer } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const intervalEvents = interval(1000);\n * const buffered = intervalEvents.pipe(buffer(clicks));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link window}\n *\n * @param {Observable} closingNotifier An Observable that signals the\n * buffer to be emitted on the output Observable.\n * @return {Observable} An Observable of buffers, which are arrays of\n * values.\n * @method buffer\n * @owner Observable\n */\nexport function buffer(closingNotifier: Observable): OperatorFunction {\n return function bufferOperatorFunction(source: Observable) {\n return source.lift(new BufferOperator(closingNotifier));\n };\n}\n\nclass BufferOperator implements Operator {\n\n constructor(private closingNotifier: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new BufferSubscriber(subscriber, this.closingNotifier));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferSubscriber extends SimpleOuterSubscriber {\n private buffer: T[] = [];\n\n constructor(destination: Subscriber, closingNotifier: Observable) {\n super(destination);\n this.add(innerSubscribe(closingNotifier, new SimpleInnerSubscriber(this)));\n }\n\n protected _next(value: T) {\n this.buffer.push(value);\n }\n\n notifyNext(): void {\n const buffer = this.buffer;\n this.buffer = [];\n this.destination.next!(buffer);\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Buffers the source Observable values until the size hits the maximum\n * `bufferSize` given.\n *\n * Collects values from the past as an array, and emits\n * that array only when its size reaches `bufferSize`.\n *\n * ![](bufferCount.png)\n *\n * Buffers a number of values from the source Observable by `bufferSize` then\n * emits the buffer and clears it, and starts a new buffer each\n * `startBufferEvery` values. If `startBufferEvery` is not provided or is\n * `null`, then new buffers are started immediately at the start of the source\n * and when each buffer closes and is emitted.\n *\n * ## Examples\n *\n * Emit the last two click events as an array\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferCount } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferCount(2));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * On every click, emit the last two click events as an array\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferCount } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferCount(2, 1));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link pairwise}\n * @see {@link windowCount}\n *\n * @param {number} bufferSize The maximum size of the buffer emitted.\n * @param {number} [startBufferEvery] Interval at which to start a new buffer.\n * For example if `startBufferEvery` is `2`, then a new buffer will be started\n * on every other value from the source. A new buffer is started at the\n * beginning of the source by default.\n * @return {Observable} An Observable of arrays of buffered values.\n * @method bufferCount\n * @owner Observable\n */\nexport function bufferCount(bufferSize: number, startBufferEvery: number = null): OperatorFunction {\n return function bufferCountOperatorFunction(source: Observable) {\n return source.lift(new BufferCountOperator(bufferSize, startBufferEvery));\n };\n}\n\nclass BufferCountOperator implements Operator {\n private subscriberClass: any;\n\n constructor(private bufferSize: number, private startBufferEvery: number) {\n if (!startBufferEvery || bufferSize === startBufferEvery) {\n this.subscriberClass = BufferCountSubscriber;\n } else {\n this.subscriberClass = BufferSkipCountSubscriber;\n }\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new this.subscriberClass(subscriber, this.bufferSize, this.startBufferEvery));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferCountSubscriber extends Subscriber {\n private buffer: T[] = [];\n\n constructor(destination: Subscriber, private bufferSize: number) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const buffer = this.buffer;\n\n buffer.push(value);\n\n if (buffer.length == this.bufferSize) {\n this.destination.next(buffer);\n this.buffer = [];\n }\n }\n\n protected _complete(): void {\n const buffer = this.buffer;\n if (buffer.length > 0) {\n this.destination.next(buffer);\n }\n super._complete();\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferSkipCountSubscriber extends Subscriber {\n private buffers: Array = [];\n private count: number = 0;\n\n constructor(destination: Subscriber, private bufferSize: number, private startBufferEvery: number) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const { bufferSize, startBufferEvery, buffers, count } = this;\n\n this.count++;\n if (count % startBufferEvery === 0) {\n buffers.push([]);\n }\n\n for (let i = buffers.length; i--; ) {\n const buffer = buffers[i];\n buffer.push(value);\n if (buffer.length === bufferSize) {\n buffers.splice(i, 1);\n this.destination.next(buffer);\n }\n }\n }\n\n protected _complete(): void {\n const { buffers, destination } = this;\n\n while (buffers.length > 0) {\n let buffer = buffers.shift();\n if (buffer.length > 0) {\n destination.next(buffer);\n }\n }\n super._complete();\n }\n\n}\n","import { Operator } from '../Operator';\nimport { async } from '../scheduler/async';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { isScheduler } from '../util/isScheduler';\nimport { OperatorFunction, SchedulerAction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function bufferTime(bufferTimeSpan: number, scheduler?: SchedulerLike): OperatorFunction;\nexport function bufferTime(bufferTimeSpan: number, bufferCreationInterval: number | null | undefined, scheduler?: SchedulerLike): OperatorFunction;\nexport function bufferTime(bufferTimeSpan: number, bufferCreationInterval: number | null | undefined, maxBufferSize: number, scheduler?: SchedulerLike): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Buffers the source Observable values for a specific time period.\n *\n * Collects values from the past as an array, and emits\n * those arrays periodically in time.\n *\n * ![](bufferTime.png)\n *\n * Buffers values from the source for a specific time duration `bufferTimeSpan`.\n * Unless the optional argument `bufferCreationInterval` is given, it emits and\n * resets the buffer every `bufferTimeSpan` milliseconds. If\n * `bufferCreationInterval` is given, this operator opens the buffer every\n * `bufferCreationInterval` milliseconds and closes (emits and resets) the\n * buffer every `bufferTimeSpan` milliseconds. When the optional argument\n * `maxBufferSize` is specified, the buffer will be closed either after\n * `bufferTimeSpan` milliseconds or when it contains `maxBufferSize` elements.\n *\n * ## Examples\n *\n * Every second, emit an array of the recent click events\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferTime(1000));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * Every 5 seconds, emit the click events from the next 2 seconds\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferTime(2000, 5000));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link windowTime}\n *\n * @param {number} bufferTimeSpan The amount of time to fill each buffer array.\n * @param {number} [bufferCreationInterval] The interval at which to start new\n * buffers.\n * @param {number} [maxBufferSize] The maximum buffer size.\n * @param {SchedulerLike} [scheduler=async] The scheduler on which to schedule the\n * intervals that determine buffer boundaries.\n * @return {Observable} An observable of arrays of buffered values.\n * @method bufferTime\n * @owner Observable\n */\nexport function bufferTime(bufferTimeSpan: number): OperatorFunction {\n let length: number = arguments.length;\n\n let scheduler: SchedulerLike = async;\n if (isScheduler(arguments[arguments.length - 1])) {\n scheduler = arguments[arguments.length - 1];\n length--;\n }\n\n let bufferCreationInterval: number = null;\n if (length >= 2) {\n bufferCreationInterval = arguments[1];\n }\n\n let maxBufferSize: number = Number.POSITIVE_INFINITY;\n if (length >= 3) {\n maxBufferSize = arguments[2];\n }\n\n return function bufferTimeOperatorFunction(source: Observable) {\n return source.lift(new BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler));\n };\n}\n\nclass BufferTimeOperator implements Operator {\n constructor(private bufferTimeSpan: number,\n private bufferCreationInterval: number,\n private maxBufferSize: number,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new BufferTimeSubscriber(\n subscriber, this.bufferTimeSpan, this.bufferCreationInterval, this.maxBufferSize, this.scheduler\n ));\n }\n}\n\nclass Context {\n buffer: T[] = [];\n closeAction: Subscription;\n}\n\ninterface DispatchCreateArg {\n bufferTimeSpan: number;\n bufferCreationInterval: number;\n subscriber: BufferTimeSubscriber;\n scheduler: SchedulerLike;\n}\n\ninterface DispatchCloseArg {\n subscriber: BufferTimeSubscriber;\n context: Context;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferTimeSubscriber extends Subscriber {\n private contexts: Array> = [];\n private timespanOnly: boolean;\n\n constructor(destination: Subscriber,\n private bufferTimeSpan: number,\n private bufferCreationInterval: number,\n private maxBufferSize: number,\n private scheduler: SchedulerLike) {\n super(destination);\n const context = this.openContext();\n this.timespanOnly = bufferCreationInterval == null || bufferCreationInterval < 0;\n if (this.timespanOnly) {\n const timeSpanOnlyState = { subscriber: this, context, bufferTimeSpan };\n this.add(context.closeAction = scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n } else {\n const closeState = { subscriber: this, context };\n const creationState: DispatchCreateArg = { bufferTimeSpan, bufferCreationInterval, subscriber: this, scheduler };\n this.add(context.closeAction = scheduler.schedule>(dispatchBufferClose, bufferTimeSpan, closeState));\n this.add(scheduler.schedule>(dispatchBufferCreation, bufferCreationInterval, creationState));\n }\n }\n\n protected _next(value: T) {\n const contexts = this.contexts;\n const len = contexts.length;\n let filledBufferContext: Context;\n for (let i = 0; i < len; i++) {\n const context = contexts[i];\n const buffer = context.buffer;\n buffer.push(value);\n if (buffer.length == this.maxBufferSize) {\n filledBufferContext = context;\n }\n }\n\n if (filledBufferContext) {\n this.onBufferFull(filledBufferContext);\n }\n }\n\n protected _error(err: any) {\n this.contexts.length = 0;\n super._error(err);\n }\n\n protected _complete() {\n const { contexts, destination } = this;\n while (contexts.length > 0) {\n const context = contexts.shift();\n destination.next(context.buffer);\n }\n super._complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n this.contexts = null;\n }\n\n protected onBufferFull(context: Context) {\n this.closeContext(context);\n const closeAction = context.closeAction;\n closeAction.unsubscribe();\n this.remove(closeAction);\n\n if (!this.closed && this.timespanOnly) {\n context = this.openContext();\n const bufferTimeSpan = this.bufferTimeSpan;\n const timeSpanOnlyState = { subscriber: this, context, bufferTimeSpan };\n this.add(context.closeAction = this.scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n }\n }\n\n openContext(): Context {\n const context: Context = new Context();\n this.contexts.push(context);\n return context;\n }\n\n closeContext(context: Context) {\n this.destination.next(context.buffer);\n const contexts = this.contexts;\n\n const spliceIndex = contexts ? contexts.indexOf(context) : -1;\n if (spliceIndex >= 0) {\n contexts.splice(contexts.indexOf(context), 1);\n }\n }\n}\n\nfunction dispatchBufferTimeSpanOnly(this: SchedulerAction, state: any) {\n const subscriber: BufferTimeSubscriber = state.subscriber;\n\n const prevContext = state.context;\n if (prevContext) {\n subscriber.closeContext(prevContext);\n }\n\n if (!subscriber.closed) {\n state.context = subscriber.openContext();\n state.context.closeAction = this.schedule(state, state.bufferTimeSpan);\n }\n}\n\nfunction dispatchBufferCreation(this: SchedulerAction>, state: DispatchCreateArg) {\n const { bufferCreationInterval, bufferTimeSpan, subscriber, scheduler } = state;\n const context = subscriber.openContext();\n const action = >>this;\n if (!subscriber.closed) {\n subscriber.add(context.closeAction = scheduler.schedule>(dispatchBufferClose, bufferTimeSpan, { subscriber, context }));\n action.schedule(state, bufferCreationInterval);\n }\n}\n\nfunction dispatchBufferClose(arg: DispatchCloseArg) {\n const { subscriber, context } = arg;\n subscriber.closeContext(context);\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { OperatorFunction, SubscribableOrPromise } from '../types';\n\n/**\n * Buffers the source Observable values starting from an emission from\n * `openings` and ending when the output of `closingSelector` emits.\n *\n * Collects values from the past as an array. Starts\n * collecting only when `opening` emits, and calls the `closingSelector`\n * function to get an Observable that tells when to close the buffer.\n *\n * ![](bufferToggle.png)\n *\n * Buffers values from the source by opening the buffer via signals from an\n * Observable provided to `openings`, and closing and sending the buffers when\n * a Subscribable or Promise returned by the `closingSelector` function emits.\n *\n * ## Example\n *\n * Every other second, emit the click events from the next 500ms\n *\n * ```ts\n * import { fromEvent, interval, EMPTY } from 'rxjs';\n * import { bufferToggle } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const openings = interval(1000);\n * const buffered = clicks.pipe(bufferToggle(openings, i =>\n * i % 2 ? interval(500) : EMPTY\n * ));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferWhen}\n * @see {@link windowToggle}\n *\n * @param {SubscribableOrPromise} openings A Subscribable or Promise of notifications to start new\n * buffers.\n * @param {function(value: O): SubscribableOrPromise} closingSelector A function that takes\n * the value emitted by the `openings` observable and returns a Subscribable or Promise,\n * which, when it emits, signals that the associated buffer should be emitted\n * and cleared.\n * @return {Observable} An observable of arrays of buffered values.\n * @method bufferToggle\n * @owner Observable\n */\nexport function bufferToggle(\n openings: SubscribableOrPromise,\n closingSelector: (value: O) => SubscribableOrPromise\n): OperatorFunction {\n return function bufferToggleOperatorFunction(source: Observable) {\n return source.lift(new BufferToggleOperator(openings, closingSelector));\n };\n}\n\nclass BufferToggleOperator implements Operator {\n\n constructor(private openings: SubscribableOrPromise,\n private closingSelector: (value: O) => SubscribableOrPromise) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new BufferToggleSubscriber(subscriber, this.openings, this.closingSelector));\n }\n}\n\ninterface BufferContext {\n buffer: T[];\n subscription: Subscription;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferToggleSubscriber extends OuterSubscriber {\n private contexts: Array> = [];\n\n constructor(destination: Subscriber,\n openings: SubscribableOrPromise,\n private closingSelector: (value: O) => SubscribableOrPromise | void) {\n super(destination);\n this.add(subscribeToResult(this, openings));\n }\n\n protected _next(value: T): void {\n const contexts = this.contexts;\n const len = contexts.length;\n for (let i = 0; i < len; i++) {\n contexts[i].buffer.push(value);\n }\n }\n\n protected _error(err: any): void {\n const contexts = this.contexts;\n while (contexts.length > 0) {\n const context = contexts.shift()!;\n context.subscription.unsubscribe();\n context.buffer = null!;\n context.subscription = null!;\n }\n this.contexts = null!;\n super._error(err);\n }\n\n protected _complete(): void {\n const contexts = this.contexts;\n while (contexts.length > 0) {\n const context = contexts.shift()!;\n this.destination.next!(context.buffer);\n context.subscription.unsubscribe();\n context.buffer = null!;\n context.subscription = null!;\n }\n this.contexts = null!;\n super._complete();\n }\n\n notifyNext(outerValue: any, innerValue: O): void {\n outerValue ? this.closeBuffer(outerValue) : this.openBuffer(innerValue);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n this.closeBuffer(( innerSub).context);\n }\n\n private openBuffer(value: O): void {\n try {\n const closingSelector = this.closingSelector;\n const closingNotifier = closingSelector.call(this, value);\n if (closingNotifier) {\n this.trySubscribe(closingNotifier);\n }\n } catch (err) {\n this._error(err);\n }\n }\n\n private closeBuffer(context: BufferContext): void {\n const contexts = this.contexts;\n\n if (contexts && context) {\n const { buffer, subscription } = context;\n this.destination.next!(buffer);\n contexts.splice(contexts.indexOf(context), 1);\n this.remove(subscription);\n subscription.unsubscribe();\n }\n }\n\n private trySubscribe(closingNotifier: any): void {\n const contexts = this.contexts;\n\n const buffer: Array = [];\n const subscription = new Subscription();\n const context = { buffer, subscription };\n contexts.push(context);\n\n const innerSubscription = subscribeToResult(this, closingNotifier, context as any);\n\n if (!innerSubscription || innerSubscription.closed) {\n this.closeBuffer(context);\n } else {\n (innerSubscription as any).context = context;\n\n this.add(innerSubscription);\n subscription.add(innerSubscription);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { OperatorFunction } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Buffers the source Observable values, using a factory function of closing\n * Observables to determine when to close, emit, and reset the buffer.\n *\n * Collects values from the past as an array. When it\n * starts collecting values, it calls a function that returns an Observable that\n * tells when to close the buffer and restart collecting.\n *\n * ![](bufferWhen.png)\n *\n * Opens a buffer immediately, then closes the buffer when the observable\n * returned by calling `closingSelector` function emits a value. When it closes\n * the buffer, it immediately opens a new buffer and repeats the process.\n *\n * ## Example\n *\n * Emit an array of the last clicks every [1-5] random seconds\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { bufferWhen } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferWhen(() =>\n * interval(1000 + Math.random() * 4000)\n * ));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link windowWhen}\n *\n * @param {function(): Observable} closingSelector A function that takes no\n * arguments and returns an Observable that signals buffer closure.\n * @return {Observable} An observable of arrays of buffered values.\n * @method bufferWhen\n * @owner Observable\n */\nexport function bufferWhen(closingSelector: () => Observable): OperatorFunction {\n return function (source: Observable) {\n return source.lift(new BufferWhenOperator(closingSelector));\n };\n}\n\nclass BufferWhenOperator implements Operator {\n\n constructor(private closingSelector: () => Observable) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new BufferWhenSubscriber(subscriber, this.closingSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferWhenSubscriber extends SimpleOuterSubscriber {\n private buffer?: T[];\n private subscribing: boolean = false;\n private closingSubscription?: Subscription;\n\n constructor(destination: Subscriber, private closingSelector: () => Observable) {\n super(destination);\n this.openBuffer();\n }\n\n protected _next(value: T) {\n this.buffer!.push(value);\n }\n\n protected _complete() {\n const buffer = this.buffer;\n if (buffer) {\n this.destination.next!(buffer);\n }\n super._complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n this.buffer = undefined;\n this.subscribing = false;\n }\n\n notifyNext(): void {\n this.openBuffer();\n }\n\n notifyComplete(): void {\n if (this.subscribing) {\n this.complete();\n } else {\n this.openBuffer();\n }\n }\n\n openBuffer() {\n let { closingSubscription } = this;\n\n if (closingSubscription) {\n this.remove(closingSubscription);\n closingSubscription.unsubscribe();\n }\n\n const buffer = this.buffer;\n if (this.buffer) {\n this.destination.next!(buffer);\n }\n\n this.buffer = [];\n\n let closingNotifier;\n try {\n const { closingSelector } = this;\n closingNotifier = closingSelector();\n } catch (err) {\n return this.error(err);\n }\n closingSubscription = new Subscription();\n this.closingSubscription = closingSubscription;\n this.add(closingSubscription);\n this.subscribing = true;\n closingSubscription.add(innerSubscribe(closingNotifier, new SimpleInnerSubscriber(this)));\n this.subscribing = false;\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\n\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function catchError>(selector: (err: any, caught: Observable) => O): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * ![](catch.png)\n *\n * ## Examples\n * Continues with a different Observable when there's an error\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * \t if (n === 4) {\n * \t throw 'four!';\n * }\n *\t return n;\n * }),\n * catchError(err => of('I', 'II', 'III', 'IV', 'V')),\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, I, II, III, IV, V\n * ```\n *\n * Retries the caught source Observable again in case of error, similar to retry() operator\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError, take } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * \t if (n === 4) {\n * \t throw 'four!';\n * }\n * \t return n;\n * }),\n * catchError((err, caught) => caught),\n * take(30),\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, 1, 2, 3, ...\n * ```\n *\n * Throws a new error when the source Observable throws an error\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError(err => {\n * throw 'error in source. Details: ' + err;\n * }),\n * )\n * .subscribe(\n * x => console.log(x),\n * err => console.log(err)\n * );\n * // 1, 2, 3, error in source. Details: four!\n * ```\n *\n * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which\n * is the source observable, in case you'd like to \"retry\" that observable by returning it again. Whatever observable\n * is returned by the `selector` will be used to continue the observable chain.\n * @return {Observable} An observable that originates from either the source or the observable returned by the\n * catch `selector` function.\n * @name catchError\n */\nexport function catchError>(\n selector: (err: any, caught: Observable) => O\n): OperatorFunction> {\n return function catchErrorOperatorFunction(source: Observable): Observable> {\n const operator = new CatchOperator(selector);\n const caught = source.lift(operator);\n return (operator.caught = caught as Observable);\n };\n}\n\nclass CatchOperator implements Operator {\n caught: Observable;\n\n constructor(private selector: (err: any, caught: Observable) => ObservableInput) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass CatchSubscriber extends SimpleOuterSubscriber {\n constructor(destination: Subscriber,\n private selector: (err: any, caught: Observable) => ObservableInput,\n private caught: Observable) {\n super(destination);\n }\n\n // NOTE: overriding `error` instead of `_error` because we don't want\n // to have this flag this subscriber as `isStopped`. We can mimic the\n // behavior of the RetrySubscriber (from the `retry` operator), where\n // we unsubscribe from our source chain, reset our Subscriber flags,\n // then subscribe to the selector result.\n error(err: any) {\n if (!this.isStopped) {\n let result: any;\n try {\n result = this.selector(err, this.caught);\n } catch (err2) {\n super.error(err2);\n return;\n }\n this._unsubscribeAndRecycle();\n const innerSubscriber = new SimpleInnerSubscriber(this);\n this.add(innerSubscriber);\n const innerSubscription = innerSubscribe(result, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n this.add(innerSubscription);\n }\n }\n }\n}\n","import { CombineLatestOperator } from '../observable/combineLatest';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, ObservableInput } from '../types';\n\nexport function combineAll(): OperatorFunction, T[]>;\nexport function combineAll(): OperatorFunction;\nexport function combineAll(project: (...values: T[]) => R): OperatorFunction, R>;\nexport function combineAll(project: (...values: Array) => R): OperatorFunction;\n/**\n * Flattens an Observable-of-Observables by applying {@link combineLatest} when the Observable-of-Observables completes.\n *\n * ![](combineAll.png)\n *\n * `combineAll` takes an Observable of Observables, and collects all Observables from it. Once the outer Observable completes,\n * it subscribes to all collected Observables and combines their values using the {@link combineLatest} strategy, such that:\n *\n * * Every time an inner Observable emits, the output Observable emits\n * * When the returned observable emits, it emits all of the latest values by:\n * * If a `project` function is provided, it is called with each recent value from each inner Observable in whatever order they\n * arrived, and the result of the `project` function is what is emitted by the output Observable.\n * * If there is no `project` function, an array of all the most recent values is emitted by the output Observable.\n *\n * ---\n *\n * ## Examples\n *\n * ### Map two click events to a finite interval Observable, then apply `combineAll`\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, combineAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(ev =>\n * interval(Math.random() * 2000).pipe(take(3))\n * ),\n * take(2)\n * );\n * const result = higherOrder.pipe(\n * combineAll()\n * );\n *\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link mergeAll}\n *\n * @param {function(...values: Array)} An optional function to map the most recent values from each inner Observable into a new result.\n * Takes each of the most recent values from each collected inner Observable as arguments, in order.\n * @return {Observable}\n * @name combineAll\n */\nexport function combineAll(project?: (...values: Array) => R): OperatorFunction {\n return (source: Observable) => source.lift(new CombineLatestOperator(project));\n}\n","\nimport { isArray } from '../util/isArray';\nimport { CombineLatestOperator } from '../observable/combineLatest';\nimport { from } from '../observable/from';\nimport { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction } from '../types';\n\nconst none = {};\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(project: (v1: T) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, project: (v1: T, v2: T2) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, project: (v1: T, v2: T2, v3: T3) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => R): OperatorFunction ;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): OperatorFunction ;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(...observables: Array | ((...values: Array) => R)>): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(array: ObservableInput[]): OperatorFunction>;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(array: ObservableInput[], project: (v1: T, ...values: Array) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * @deprecated Deprecated in favor of static {@link combineLatest}.\n */\nexport function combineLatest(...observables: Array |\n Array> |\n ((...values: Array) => R)>): OperatorFunction {\n let project: (...values: Array) => R = null;\n if (typeof observables[observables.length - 1] === 'function') {\n project = <(...values: Array) => R>observables.pop();\n }\n\n // if the first and only other argument besides the resultSelector is an array\n // assume it's been called with `combineLatest([obs1, obs2, obs3], project)`\n if (observables.length === 1 && isArray(observables[0])) {\n observables = (observables[0]).slice();\n }\n\n return (source: Observable) => source.lift.call(from([source, ...observables]), new CombineLatestOperator(project));\n}\n","import { concat as concatStatic } from '../observable/concat';\nimport { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction, MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, v3: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(...observables: Array | SchedulerLike>): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(...observables: Array | SchedulerLike>): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * @deprecated Deprecated in favor of static {@link concat}.\n */\nexport function concat(...observables: Array | SchedulerLike>): OperatorFunction {\n return (source: Observable) => source.lift.call(concatStatic(source, ...observables));\n}\n","import { mergeMap } from './mergeMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function concatMap>(project: (value: T, index: number) => O): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function concatMap>(project: (value: T, index: number) => O, resultSelector: undefined): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function concatMap>(project: (value: T, index: number) => O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, in a serialized fashion waiting for each one to complete before\n * merging the next.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link concatAll}.\n *\n * ![](concatMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each new inner Observable is\n * concatenated with the previous inner Observable.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMap` is equivalent to `mergeMap` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n * For each click event, tick every second from 0 to 3, with no concurrency\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { concatMap, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * concatMap(ev => interval(1000).pipe(take(4)))\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMapTo}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional deprecated `resultSelector`) to each item emitted\n * by the source Observable and taking values from each projected inner\n * Observable sequentially.\n * @method concatMap\n * @owner Observable\n */\nexport function concatMap>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction|R> {\n return mergeMap(project, resultSelector, 1);\n}\n","import { concatMap } from './concatMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function concatMapTo>(observable: O): OperatorFunction>;\n/** @deprecated */\nexport function concatMapTo>(observable: O, resultSelector: undefined): OperatorFunction>;\n/** @deprecated */\nexport function concatMapTo>(observable: O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to the same Observable which is merged multiple\n * times in a serialized fashion on the output Observable.\n *\n * It's like {@link concatMap}, but maps each value\n * always to the same inner Observable.\n *\n * ![](concatMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then flattens those resulting Observables into one\n * single Observable, which is the output Observable. Each new `innerObservable`\n * instance emitted on the output Observable is concatenated with the previous\n * `innerObservable` instance.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMapTo` is equivalent to `mergeMapTo` with concurrency parameter\n * set to `1`.\n *\n * ## Example\n * For each click event, tick every second from 0 to 3, with no concurrency\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { concatMapTo, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * concatMapTo(interval(1000).pipe(take(4))),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link mergeMapTo}\n * @see {@link switchMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @return {Observable} An observable of values merged together by joining the\n * passed observable with itself, one after the other, for each value emitted\n * from the source.\n * @method concatMapTo\n * @owner Observable\n */\nexport function concatMapTo>(\n innerObservable: O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction|R> {\n return concatMap(() => innerObservable, resultSelector);\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Observer, OperatorFunction } from '../types';\nimport { Subscriber } from '../Subscriber';\n/**\n * Counts the number of emissions on the source and emits that number when the\n * source completes.\n *\n * Tells how many values were emitted, when the source\n * completes.\n *\n * ![](count.png)\n *\n * `count` transforms an Observable that emits values into an Observable that\n * emits a single value that represents the number of values emitted by the\n * source Observable. If the source Observable terminates with an error, `count`\n * will pass this error notification along without emitting a value first. If\n * the source Observable does not terminate at all, `count` will neither emit\n * a value nor terminate. This operator takes an optional `predicate` function\n * as argument, in which case the output emission will represent the number of\n * source values that matched `true` with the `predicate`.\n *\n * ## Examples\n *\n * Counts how many seconds have passed before the first click happened\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { count, takeUntil } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const secondsBeforeClick = seconds.pipe(takeUntil(clicks));\n * const result = secondsBeforeClick.pipe(count());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Counts how many odd numbers are there between 1 and 7\n * ```ts\n * import { range } from 'rxjs';\n * import { count } from 'rxjs/operators';\n *\n * const numbers = range(1, 7);\n * const result = numbers.pipe(count(i => i % 2 === 1));\n * result.subscribe(x => console.log(x));\n * // Results in:\n * // 4\n * ```\n *\n * @see {@link max}\n * @see {@link min}\n * @see {@link reduce}\n *\n * @param {function(value: T, i: number, source: Observable): boolean} [predicate] A\n * boolean function to select what values are to be counted. It is provided with\n * arguments of:\n * - `value`: the value from the source Observable.\n * - `index`: the (zero-based) \"index\" of the value from the source Observable.\n * - `source`: the source Observable instance itself.\n * @return {Observable} An Observable of one number that represents the count as\n * described above.\n * @method count\n * @owner Observable\n */\n\nexport function count(predicate?: (value: T, index: number, source: Observable) => boolean): OperatorFunction {\n return (source: Observable) => source.lift(new CountOperator(predicate, source));\n}\n\nclass CountOperator implements Operator {\n constructor(private predicate?: (value: T, index: number, source: Observable) => boolean,\n private source?: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new CountSubscriber(subscriber, this.predicate, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass CountSubscriber extends Subscriber {\n private count: number = 0;\n private index: number = 0;\n\n constructor(destination: Observer,\n private predicate?: (value: T, index: number, source: Observable) => boolean,\n private source?: Observable) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (this.predicate) {\n this._tryPredicate(value);\n } else {\n this.count++;\n }\n }\n\n private _tryPredicate(value: T) {\n let result: any;\n\n try {\n result = this.predicate(value, this.index++, this.source);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n\n if (result) {\n this.count++;\n }\n }\n\n protected _complete(): void {\n this.destination.next(this.count);\n this.destination.complete();\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SubscribableOrPromise, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Emits a value from the source Observable only after a particular time span\n * determined by another Observable has passed without another source emission.\n *\n * It's like {@link debounceTime}, but the time span of\n * emission silence is determined by a second Observable.\n *\n * ![](debounce.png)\n *\n * `debounce` delays values emitted by the source Observable, but drops previous\n * pending delayed emissions if a new value arrives on the source Observable.\n * This operator keeps track of the most recent value from the source\n * Observable, and spawns a duration Observable by calling the\n * `durationSelector` function. The value is emitted only when the duration\n * Observable emits a value or completes, and if no other value was emitted on\n * the source Observable since the duration Observable was spawned. If a new\n * value appears before the duration Observable emits, the previous value will\n * be dropped and will not be emitted on the output Observable.\n *\n * Like {@link debounceTime}, this is a rate-limiting operator, and also a\n * delay-like operator since output emissions do not necessarily occur at the\n * same time as they did on the source Observable.\n *\n * ## Example\n * Emit the most recent click after a burst of clicks\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { debounce } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(debounce(() => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delayWhen}\n * @see {@link throttle}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the timeout\n * duration for each source value, returned as an Observable or a Promise.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified duration Observable returned by\n * `durationSelector`, and may drop some values if they occur too frequently.\n * @method debounce\n * @owner Observable\n */\nexport function debounce(durationSelector: (value: T) => SubscribableOrPromise): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new DebounceOperator(durationSelector));\n}\n\nclass DebounceOperator implements Operator {\n constructor(private durationSelector: (value: T) => SubscribableOrPromise) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DebounceSubscriber(subscriber, this.durationSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DebounceSubscriber extends SimpleOuterSubscriber {\n private value?: T;\n private hasValue = false;\n private durationSubscription?: Subscription;\n\n constructor(destination: Subscriber,\n private durationSelector: (value: T) => SubscribableOrPromise) {\n super(destination);\n }\n\n protected _next(value: T): void {\n try {\n const result = this.durationSelector.call(this, value);\n\n if (result) {\n this._tryNext(value, result);\n }\n } catch (err) {\n this.destination.error!(err);\n }\n }\n\n protected _complete(): void {\n this.emitValue();\n this.destination.complete!();\n }\n\n private _tryNext(value: T, duration: SubscribableOrPromise): void {\n let subscription = this.durationSubscription;\n this.value = value;\n this.hasValue = true;\n if (subscription) {\n subscription.unsubscribe();\n this.remove(subscription);\n }\n\n subscription = innerSubscribe(duration, new SimpleInnerSubscriber(this));\n if (subscription && !subscription.closed) {\n this.add(this.durationSubscription = subscription);\n }\n }\n\n notifyNext(): void {\n this.emitValue();\n }\n\n notifyComplete(): void {\n this.emitValue();\n }\n\n emitValue(): void {\n if (this.hasValue) {\n const value = this.value;\n const subscription = this.durationSubscription;\n if (subscription) {\n this.durationSubscription = undefined;\n subscription.unsubscribe();\n this.remove(subscription);\n }\n // This must be done *before* passing the value\n // along to the destination because it's possible for\n // the value to synchronously re-enter this operator\n // recursively if the duration selector Observable\n // emits synchronously\n this.value = undefined;\n this.hasValue = false;\n super._next(value!);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { async } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Emits a value from the source Observable only after a particular time span\n * has passed without another source emission.\n *\n * It's like {@link delay}, but passes only the most\n * recent value from each burst of emissions.\n *\n * ![](debounceTime.png)\n *\n * `debounceTime` delays values emitted by the source Observable, but drops\n * previous pending delayed emissions if a new value arrives on the source\n * Observable. This operator keeps track of the most recent value from the\n * source Observable, and emits that only when `dueTime` enough time has passed\n * without any other value appearing on the source Observable. If a new value\n * appears before `dueTime` silence occurs, the previous value will be dropped\n * and will not be emitted on the output Observable.\n *\n * This is a rate-limiting operator, because it is impossible for more than one\n * value to be emitted in any time window of duration `dueTime`, but it is also\n * a delay-like operator since output emissions do not occur at the same time as\n * they did on the source Observable. Optionally takes a {@link SchedulerLike} for\n * managing timers.\n *\n * ## Example\n * Emit the most recent click after a burst of clicks\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { debounceTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(debounceTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} dueTime The timeout duration in milliseconds (or the time\n * unit determined internally by the optional `scheduler`) for the window of\n * time required to wait for emission silence before emitting the most recent\n * source value.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the timeout for each value.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified `dueTime`, and may drop some values if they occur\n * too frequently.\n * @method debounceTime\n * @owner Observable\n */\nexport function debounceTime(dueTime: number, scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new DebounceTimeOperator(dueTime, scheduler));\n}\n\nclass DebounceTimeOperator implements Operator {\n constructor(private dueTime: number, private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DebounceTimeSubscriber extends Subscriber {\n private debouncedSubscription: Subscription = null;\n private lastValue: T = null;\n private hasValue: boolean = false;\n\n constructor(destination: Subscriber,\n private dueTime: number,\n private scheduler: SchedulerLike) {\n super(destination);\n }\n\n protected _next(value: T) {\n this.clearDebounce();\n this.lastValue = value;\n this.hasValue = true;\n this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));\n }\n\n protected _complete() {\n this.debouncedNext();\n this.destination.complete();\n }\n\n debouncedNext(): void {\n this.clearDebounce();\n\n if (this.hasValue) {\n const { lastValue } = this;\n // This must be done *before* passing the value\n // along to the destination because it's possible for\n // the value to synchronously re-enter this operator\n // recursively when scheduled with things like\n // VirtualScheduler/TestScheduler.\n this.lastValue = null;\n this.hasValue = false;\n this.destination.next(lastValue);\n }\n }\n\n private clearDebounce(): void {\n const debouncedSubscription = this.debouncedSubscription;\n\n if (debouncedSubscription !== null) {\n this.remove(debouncedSubscription);\n debouncedSubscription.unsubscribe();\n this.debouncedSubscription = null;\n }\n }\n}\n\nfunction dispatchNext(subscriber: DebounceTimeSubscriber) {\n subscriber.debouncedNext();\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction, MonoTypeOperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function defaultIfEmpty(defaultValue?: T): MonoTypeOperatorFunction;\nexport function defaultIfEmpty(defaultValue?: R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Emits a given value if the source Observable completes without emitting any\n * `next` value, otherwise mirrors the source Observable.\n *\n * If the source Observable turns out to be empty, then\n * this operator will emit a default value.\n *\n * ![](defaultIfEmpty.png)\n *\n * `defaultIfEmpty` emits the values emitted by the source Observable or a\n * specified default value if the source Observable is empty (completes without\n * having emitted any `next` value).\n *\n * ## Example\n * If no clicks happen in 5 seconds, then emit \"no clicks\"\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { defaultIfEmpty, takeUntil } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksBeforeFive = clicks.pipe(takeUntil(interval(5000)));\n * const result = clicksBeforeFive.pipe(defaultIfEmpty('no clicks'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link empty}\n * @see {@link last}\n *\n * @param {any} [defaultValue=null] The default value used if the source\n * Observable is empty.\n * @return {Observable} An Observable that emits either the specified\n * `defaultValue` if the source Observable emits no items, or the values emitted\n * by the source Observable.\n * @method defaultIfEmpty\n * @owner Observable\n */\nexport function defaultIfEmpty(defaultValue: R = null): OperatorFunction {\n return (source: Observable) => source.lift(new DefaultIfEmptyOperator(defaultValue)) as Observable;\n}\n\nclass DefaultIfEmptyOperator implements Operator {\n\n constructor(private defaultValue: R) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DefaultIfEmptySubscriber extends Subscriber {\n private isEmpty: boolean = true;\n\n constructor(destination: Subscriber, private defaultValue: R) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.isEmpty = false;\n this.destination.next(value);\n }\n\n protected _complete(): void {\n if (this.isEmpty) {\n this.destination.next(this.defaultValue);\n }\n this.destination.complete();\n }\n}\n","export function isDate(value: any): value is Date {\n return value instanceof Date && !isNaN(+value);\n}\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Notification } from '../Notification';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, PartialObserver, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Delays the emission of items from the source Observable by a given timeout or\n * until a given Date.\n *\n * Time shifts each item by some specified amount of\n * milliseconds.\n *\n * ![](delay.png)\n *\n * If the delay argument is a Number, this operator time shifts the source\n * Observable by that amount of time expressed in milliseconds. The relative\n * time intervals between the values are preserved.\n *\n * If the delay argument is a Date, this operator time shifts the start of the\n * Observable execution until the given date occurs.\n *\n * ## Examples\n * Delay each click by one second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { delay } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(delay(1000)); // each click emitted after 1 second\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * Delay all clicks until a future date happens\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { delay } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const date = new Date('March 15, 2050 12:00:00'); // in the future\n * const delayedClicks = clicks.pipe(delay(date)); // click emitted only after that date\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link debounceTime}\n * @see {@link delayWhen}\n *\n * @param {number|Date} delay The delay duration in milliseconds (a `number`) or\n * a `Date` until which the emission of the source items is delayed.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the time-shift for each item.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified timeout or Date.\n * @method delay\n * @owner Observable\n */\nexport function delay(delay: number|Date,\n scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n const absoluteDelay = isDate(delay);\n const delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n return (source: Observable) => source.lift(new DelayOperator(delayFor, scheduler));\n}\n\nclass DelayOperator implements Operator {\n constructor(private delay: number,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n }\n}\n\ninterface DelayState {\n source: DelaySubscriber;\n destination: PartialObserver;\n scheduler: SchedulerLike;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DelaySubscriber extends Subscriber {\n private queue: Array> = [];\n private active: boolean = false;\n private errored: boolean = false;\n\n private static dispatch(this: SchedulerAction>, state: DelayState): void {\n const source = state.source;\n const queue = source.queue;\n const scheduler = state.scheduler;\n const destination = state.destination;\n\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n\n if (queue.length > 0) {\n const delay = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay);\n } else {\n this.unsubscribe();\n source.active = false;\n }\n }\n\n constructor(destination: Subscriber,\n private delay: number,\n private scheduler: SchedulerLike) {\n super(destination);\n }\n\n private _schedule(scheduler: SchedulerLike): void {\n this.active = true;\n const destination = this.destination as Subscription;\n destination.add(scheduler.schedule>(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n }\n\n private scheduleNotification(notification: Notification): void {\n if (this.errored === true) {\n return;\n }\n\n const scheduler = this.scheduler;\n const message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n\n if (this.active === false) {\n this._schedule(scheduler);\n }\n }\n\n protected _next(value: T) {\n this.scheduleNotification(Notification.createNext(value));\n }\n\n protected _error(err: any) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n this.unsubscribe();\n }\n\n protected _complete() {\n this.scheduleNotification(Notification.createComplete());\n this.unsubscribe();\n }\n}\n\nclass DelayMessage {\n constructor(public readonly time: number,\n public readonly notification: Notification) {\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated In future versions, empty notifiers will no longer re-emit the source value on the output observable. */\nexport function delayWhen(delayDurationSelector: (value: T, index: number) => Observable, subscriptionDelay?: Observable): MonoTypeOperatorFunction;\nexport function delayWhen(delayDurationSelector: (value: T, index: number) => Observable, subscriptionDelay?: Observable): MonoTypeOperatorFunction;\n/* tslint:disable:max-line-length */\n\n/**\n * Delays the emission of items from the source Observable by a given time span\n * determined by the emissions of another Observable.\n *\n * It's like {@link delay}, but the time span of the\n * delay duration is determined by a second Observable.\n *\n * ![](delayWhen.png)\n *\n * `delayWhen` time shifts each emitted value from the source Observable by a\n * time span determined by another Observable. When the source emits a value,\n * the `delayDurationSelector` function is called with the source value as\n * argument, and should return an Observable, called the \"duration\" Observable.\n * The source value is emitted on the output Observable only when the duration\n * Observable emits a value or completes.\n * The completion of the notifier triggering the emission of the source value\n * is deprecated behavior and will be removed in future versions.\n *\n * Optionally, `delayWhen` takes a second argument, `subscriptionDelay`, which\n * is an Observable. When `subscriptionDelay` emits its first value or\n * completes, the source Observable is subscribed to and starts behaving like\n * described in the previous paragraph. If `subscriptionDelay` is not provided,\n * `delayWhen` will subscribe to the source Observable as soon as the output\n * Observable is subscribed.\n *\n * ## Example\n * Delay each click by a random amount of time, between 0 and 5 seconds\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { delayWhen } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(\n * delayWhen(event => interval(Math.random() * 5000)),\n * );\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link delay}\n * @see {@link throttle}\n * @see {@link throttleTime}\n * @see {@link debounce}\n * @see {@link debounceTime}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link audit}\n * @see {@link auditTime}\n *\n * @param {function(value: T, index: number): Observable} delayDurationSelector A function that\n * returns an Observable for each value emitted by the source Observable, which\n * is then used to delay the emission of that item on the output Observable\n * until the Observable returned from this function emits a value.\n * @param {Observable} subscriptionDelay An Observable that triggers the\n * subscription to the source Observable once it emits any value.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by an amount of time specified by the Observable returned by\n * `delayDurationSelector`.\n * @method delayWhen\n * @owner Observable\n */\nexport function delayWhen(delayDurationSelector: (value: T, index: number) => Observable,\n subscriptionDelay?: Observable): MonoTypeOperatorFunction {\n if (subscriptionDelay) {\n return (source: Observable) =>\n new SubscriptionDelayObservable(source, subscriptionDelay)\n .lift(new DelayWhenOperator(delayDurationSelector));\n }\n return (source: Observable) => source.lift(new DelayWhenOperator(delayDurationSelector));\n}\n\nclass DelayWhenOperator implements Operator {\n constructor(private delayDurationSelector: (value: T, index: number) => Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DelayWhenSubscriber(subscriber, this.delayDurationSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DelayWhenSubscriber extends OuterSubscriber {\n private completed: boolean = false;\n private delayNotifierSubscriptions: Array = [];\n private index: number = 0;\n\n constructor(destination: Subscriber,\n private delayDurationSelector: (value: T, index: number) => Observable) {\n super(destination);\n }\n\n notifyNext(outerValue: T, _innerValue: any,\n _outerIndex: number, _innerIndex: number,\n innerSub: InnerSubscriber): void {\n this.destination.next!(outerValue);\n this.removeSubscription(innerSub);\n this.tryComplete();\n }\n\n notifyError(error: any, innerSub: InnerSubscriber): void {\n this._error(error);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n const value = this.removeSubscription(innerSub);\n if (value) {\n this.destination.next!(value);\n }\n this.tryComplete();\n }\n\n protected _next(value: T): void {\n const index = this.index++;\n try {\n const delayNotifier = this.delayDurationSelector(value, index);\n if (delayNotifier) {\n this.tryDelay(delayNotifier, value);\n }\n } catch (err) {\n this.destination.error!(err);\n }\n }\n\n protected _complete(): void {\n this.completed = true;\n this.tryComplete();\n this.unsubscribe();\n }\n\n private removeSubscription(subscription: InnerSubscriber): T {\n subscription.unsubscribe();\n\n const subscriptionIdx = this.delayNotifierSubscriptions.indexOf(subscription);\n if (subscriptionIdx !== -1) {\n this.delayNotifierSubscriptions.splice(subscriptionIdx, 1);\n }\n\n return subscription.outerValue;\n }\n\n private tryDelay(delayNotifier: Observable, value: T): void {\n const notifierSubscription = subscribeToResult(this, delayNotifier, value);\n\n if (notifierSubscription && !notifierSubscription.closed) {\n const destination = this.destination as Subscription;\n destination.add(notifierSubscription);\n this.delayNotifierSubscriptions.push(notifierSubscription);\n }\n }\n\n private tryComplete(): void {\n if (this.completed && this.delayNotifierSubscriptions.length === 0) {\n this.destination.complete!();\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SubscriptionDelayObservable extends Observable {\n constructor(public source: Observable, private subscriptionDelay: Observable) {\n super();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n this.subscriptionDelay.subscribe(new SubscriptionDelaySubscriber(subscriber, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SubscriptionDelaySubscriber extends Subscriber {\n private sourceSubscribed: boolean = false;\n\n constructor(private parent: Subscriber, private source: Observable) {\n super();\n }\n\n protected _next(unused: any) {\n this.subscribeToSource();\n }\n\n protected _error(err: any) {\n this.unsubscribe();\n this.parent.error(err);\n }\n\n protected _complete() {\n this.unsubscribe();\n this.subscribeToSource();\n }\n\n private subscribeToSource(): void {\n if (!this.sourceSubscribed) {\n this.sourceSubscribed = true;\n this.unsubscribe();\n this.source.subscribe(this.parent);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nimport { OperatorFunction } from '../types';\n\n/**\n * Converts an Observable of {@link Notification} objects into the emissions\n * that they represent.\n *\n * Unwraps {@link Notification} objects as actual `next`,\n * `error` and `complete` emissions. The opposite of {@link materialize}.\n *\n * ![](dematerialize.png)\n *\n * `dematerialize` is assumed to operate an Observable that only emits\n * {@link Notification} objects as `next` emissions, and does not emit any\n * `error`. Such Observable is the output of a `materialize` operation. Those\n * notifications are then unwrapped using the metadata they contain, and emitted\n * as `next`, `error`, and `complete` on the output Observable.\n *\n * Use this operator in conjunction with {@link materialize}.\n *\n * ## Example\n * Convert an Observable of Notifications to an actual Observable\n * ```ts\n * import { of, Notification } from 'rxjs';\n * import { dematerialize } from 'rxjs/operators';\n *\n * const notifA = new Notification('N', 'A');\n * const notifB = new Notification('N', 'B');\n * const notifE = new Notification('E', undefined,\n * new TypeError('x.toUpperCase is not a function')\n * );\n * const materialized = of(notifA, notifB, notifE);\n * const upperCase = materialized.pipe(dematerialize());\n * upperCase.subscribe(x => console.log(x), e => console.error(e));\n *\n * // Results in:\n * // A\n * // B\n * // TypeError: x.toUpperCase is not a function\n * ```\n *\n * @see {@link Notification}\n * @see {@link materialize}\n *\n * @return {Observable} An Observable that emits items and notifications\n * embedded in Notification objects emitted by the source Observable.\n * @method dematerialize\n * @owner Observable\n */\nexport function dematerialize(): OperatorFunction, T> {\n return function dematerializeOperatorFunction(source: Observable>) {\n return source.lift(new DeMaterializeOperator());\n };\n}\n\nclass DeMaterializeOperator, R> implements Operator {\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new DeMaterializeSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DeMaterializeSubscriber> extends Subscriber {\n constructor(destination: Subscriber) {\n super(destination);\n }\n\n protected _next(value: T) {\n value.observe(this.destination);\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from previous items.\n *\n * If a keySelector function is provided, then it will project each value from the source observable into a new value that it will\n * check for equality with previously projected values. If a keySelector function is not provided, it will use each value from the\n * source observable directly with an equality check against previous values.\n *\n * In JavaScript runtimes that support `Set`, this operator will use a `Set` to improve performance of the distinct value checking.\n *\n * In other runtimes, this operator will use a minimal implementation of `Set` that relies on an `Array` and `indexOf` under the\n * hood, so performance will degrade as more values are checked for distinction. Even in newer browsers, a long-running `distinct`\n * use might result in memory leaks. To help alleviate this in some scenarios, an optional `flushes` parameter is also provided so\n * that the internal `Set` can be \"flushed\", basically clearing it of values.\n *\n * ## Examples\n * A simple example with numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { distinct } from 'rxjs/operators';\n *\n * of(1, 1, 2, 2, 2, 1, 2, 3, 4, 3, 2, 1).pipe(\n * distinct(),\n * )\n * .subscribe(x => console.log(x)); // 1, 2, 3, 4\n * ```\n *\n * An example using a keySelector function\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinct } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo'},\n * ).pipe(\n * distinct((p: Person) => p.name),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * ```\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param {function} [keySelector] Optional function to select which value you want to check as distinct.\n * @param {Observable} [flushes] Optional Observable for flushing the internal HashSet of the operator.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values.\n * @method distinct\n * @owner Observable\n */\nexport function distinct(keySelector?: (value: T) => K,\n flushes?: Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new DistinctOperator(keySelector, flushes));\n}\n\nclass DistinctOperator implements Operator {\n constructor(private keySelector?: (value: T) => K, private flushes?: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class DistinctSubscriber extends SimpleOuterSubscriber {\n private values = new Set();\n\n constructor(destination: Subscriber, private keySelector?: (value: T) => K, flushes?: Observable) {\n super(destination);\n\n if (flushes) {\n this.add(innerSubscribe(flushes, new SimpleInnerSubscriber(this)));\n }\n }\n\n notifyNext(): void {\n this.values.clear();\n }\n\n notifyError(error: any): void {\n this._error(error);\n }\n\n protected _next(value: T): void {\n if (this.keySelector) {\n this._useKeySelector(value);\n } else {\n this._finalizeNext(value, value);\n }\n }\n\n private _useKeySelector(value: T): void {\n let key: K;\n const { destination } = this;\n try {\n key = this.keySelector!(value);\n } catch (err) {\n destination.error!(err);\n return;\n }\n this._finalizeNext(key, value);\n }\n\n private _finalizeNext(key: K|T, value: T) {\n const { values } = this;\n if (!values.has(key)) {\n values.add(key);\n this.destination.next!(value);\n }\n }\n\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function distinctUntilChanged(compare?: (x: T, y: T) => boolean): MonoTypeOperatorFunction;\nexport function distinctUntilChanged(compare: (x: K, y: K) => boolean, keySelector: (x: T) => K): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item.\n *\n * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted.\n *\n * If a comparator function is not provided, an equality check is used by default.\n *\n * ## Example\n * A simple example with numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { distinctUntilChanged } from 'rxjs/operators';\n *\n * of(1, 1, 2, 2, 2, 1, 1, 2, 3, 3, 4).pipe(\n * distinctUntilChanged(),\n * )\n * .subscribe(x => console.log(x)); // 1, 2, 1, 2, 3, 4\n * ```\n *\n * An example using a compare function\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinctUntilChanged } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo'},\n * { age: 6, name: 'Foo'},\n * ).pipe(\n * distinctUntilChanged((p: Person, q: Person) => p.name === q.name),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo' }\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values.\n * @method distinctUntilChanged\n * @owner Observable\n */\nexport function distinctUntilChanged(compare?: (x: K, y: K) => boolean, keySelector?: (x: T) => K): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new DistinctUntilChangedOperator(compare, keySelector));\n}\n\nclass DistinctUntilChangedOperator implements Operator {\n constructor(private compare: (x: K, y: K) => boolean,\n private keySelector: (x: T) => K) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DistinctUntilChangedSubscriber extends Subscriber {\n private key: K;\n private hasKey: boolean = false;\n\n constructor(destination: Subscriber,\n compare: (x: K, y: K) => boolean,\n private keySelector: (x: T) => K) {\n super(destination);\n if (typeof compare === 'function') {\n this.compare = compare;\n }\n }\n\n private compare(x: any, y: any): boolean {\n return x === y;\n }\n\n protected _next(value: T): void {\n let key: any;\n try {\n const { keySelector } = this;\n key = keySelector ? keySelector(value) : value;\n } catch (err) {\n return this.destination.error(err);\n }\n let result = false;\n if (this.hasKey) {\n try {\n const { compare } = this;\n result = compare(this.key, key);\n } catch (err) {\n return this.destination.error(err);\n }\n } else {\n this.hasKey = true;\n }\n if (!result) {\n this.key = key;\n this.destination.next(value);\n }\n }\n}\n","import { distinctUntilChanged } from './distinctUntilChanged';\nimport { MonoTypeOperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function distinctUntilKeyChanged(key: keyof T): MonoTypeOperatorFunction;\nexport function distinctUntilKeyChanged(key: K, compare: (x: T[K], y: T[K]) => boolean): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item,\n * using a property accessed by using the key provided to check if the two items are distinct.\n *\n * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted.\n *\n * If a comparator function is not provided, an equality check is used by default.\n *\n * ## Examples\n * An example comparing the name of persons\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinctUntilKeyChanged } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo'},\n * { age: 6, name: 'Foo'},\n * ).pipe(\n * distinctUntilKeyChanged('name'),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo' }\n * ```\n *\n * An example comparing the first letters of the name\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinctUntilKeyChanged } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo1'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo2'},\n * { age: 6, name: 'Foo3'},\n * ).pipe(\n * distinctUntilKeyChanged('name', (x: string, y: string) => x.substring(0, 3) === y.substring(0, 3)),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo1' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo2' }\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n *\n * @param {string} key String key for object property lookup on each item.\n * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values based on the key specified.\n * @method distinctUntilKeyChanged\n * @owner Observable\n */\nexport function distinctUntilKeyChanged(key: K, compare?: (x: T[K], y: T[K]) => boolean): MonoTypeOperatorFunction {\n return distinctUntilChanged((x: T, y: T) => compare ? compare(x[key], y[key]) : x[key] === y[key]);\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { TeardownLogic, MonoTypeOperatorFunction } from '../types';\n\n/**\n * If the source observable completes without emitting a value, it will emit\n * an error. The error will be created at that time by the optional\n * `errorFactory` argument, otherwise, the error will be {@link EmptyError}.\n *\n * ![](throwIfEmpty.png)\n *\n * ## Example\n * ```ts\n * import { fromEvent, timer } from 'rxjs';\n * import { throwIfEmpty, takeUntil } from 'rxjs/operators';\n *\n * const click$ = fromEvent(document, 'click');\n *\n * click$.pipe(\n * takeUntil(timer(1000)),\n * throwIfEmpty(\n * () => new Error('the document was not clicked within 1 second')\n * ),\n * )\n * .subscribe({\n * next() { console.log('The button was clicked'); },\n * error(err) { console.error(err); }\n * });\n * ```\n *\n * @param errorFactory A factory function called to produce the\n * error to be thrown when the source observable completes without emitting a\n * value.\n */\nexport function throwIfEmpty (errorFactory: (() => any) = defaultErrorFactory): MonoTypeOperatorFunction {\n return (source: Observable) => {\n return source.lift(new ThrowIfEmptyOperator(errorFactory));\n };\n}\n\nclass ThrowIfEmptyOperator implements Operator {\n constructor(private errorFactory: () => any) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory));\n }\n}\n\nclass ThrowIfEmptySubscriber extends Subscriber {\n private hasValue: boolean = false;\n\n constructor(destination: Subscriber, private errorFactory: () => any) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.hasValue = true;\n this.destination.next(value);\n }\n\n protected _complete() {\n if (!this.hasValue) {\n let err: any;\n try {\n err = this.errorFactory();\n } catch (e) {\n err = e;\n }\n this.destination.error(err);\n } else {\n return this.destination.complete();\n }\n }\n}\n\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Emits only the first `count` values emitted by the source Observable.\n *\n * Takes the first `count` values from the source, then\n * completes.\n *\n * ![](take.png)\n *\n * `take` returns an Observable that emits only the first `count` values emitted\n * by the source Observable. If the source emits fewer than `count` values then\n * all of its values are emitted. After that, it completes, regardless if the\n * source completes.\n *\n * ## Example\n * Take the first 5 seconds of an infinite 1-second interval Observable\n * ```ts\n * import { interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const intervalCount = interval(1000);\n * const takeFive = intervalCount.pipe(take(5));\n * takeFive.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // 3\n * // 4\n * ```\n *\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @throws {ArgumentOutOfRangeError} When using `take(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0`.\n *\n * @param {number} count The maximum number of `next` values to emit.\n * @return {Observable} An Observable that emits only the first `count`\n * values emitted by the source Observable, or all of the values from the source\n * if the source emits fewer than `count` values.\n * @method take\n * @owner Observable\n */\nexport function take(count: number): MonoTypeOperatorFunction {\n return (source: Observable) => {\n if (count === 0) {\n return empty();\n } else {\n return source.lift(new TakeOperator(count));\n }\n };\n}\n\nclass TakeOperator implements Operator {\n constructor(private total: number) {\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new TakeSubscriber(subscriber, this.total));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeSubscriber extends Subscriber {\n private count: number = 0;\n\n constructor(destination: Subscriber, private total: number) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const total = this.total;\n const count = ++this.count;\n if (count <= total) {\n this.destination.next(value);\n if (count === total) {\n this.destination.complete();\n this.unsubscribe();\n }\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { filter } from './filter';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { take } from './take';\n\n/**\n * Emits the single value at the specified `index` in a sequence of emissions\n * from the source Observable.\n *\n * Emits only the i-th value, then completes.\n *\n * ![](elementAt.png)\n *\n * `elementAt` returns an Observable that emits the item at the specified\n * `index` in the source Observable, or a default value if that `index` is out\n * of range and the `default` argument is provided. If the `default` argument is\n * not given and the `index` is out of range, the output Observable will emit an\n * `ArgumentOutOfRangeError` error.\n *\n * ## Example\n * Emit only the third click event\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { elementAt } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(elementAt(2));\n * result.subscribe(x => console.log(x));\n *\n * // Results in:\n * // click 1 = nothing\n * // click 2 = nothing\n * // click 3 = MouseEvent object logged to console\n * ```\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link skip}\n * @see {@link single}\n * @see {@link take}\n *\n * @throws {ArgumentOutOfRangeError} When using `elementAt(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0` or the\n * Observable has completed before emitting the i-th `next` notification.\n *\n * @param {number} index Is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {T} [defaultValue] The default value returned for missing indices.\n * @return {Observable} An Observable that emits a single item, if it is found.\n * Otherwise, will emit the default value if given. If not, then emits an error.\n * @method elementAt\n * @owner Observable\n */\nexport function elementAt(index: number, defaultValue?: T): MonoTypeOperatorFunction {\n if (index < 0) { throw new ArgumentOutOfRangeError(); }\n const hasDefaultValue = arguments.length >= 2;\n return (source: Observable) => source.pipe(\n filter((v, i) => i === index),\n take(1),\n hasDefaultValue\n ? defaultIfEmpty(defaultValue)\n : throwIfEmpty(() => new ArgumentOutOfRangeError()),\n );\n}\n","import { Observable } from '../Observable';\nimport { concat } from '../observable/concat';\nimport { of } from '../observable/of';\nimport { MonoTypeOperatorFunction, SchedulerLike, OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(scheduler: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, v3: C, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, v3: C, v4: D, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, v3: C, v4: D, v5: E, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, v3: C, v4: D, v5: E, v6: F, scheduler: SchedulerLike): OperatorFunction;\n\nexport function endWith(v1: A): OperatorFunction;\nexport function endWith(v1: A, v2: B): OperatorFunction;\nexport function endWith(v1: A, v2: B, v3: C): OperatorFunction;\nexport function endWith(v1: A, v2: B, v3: C, v4: D): OperatorFunction;\nexport function endWith(v1: A, v2: B, v3: C, v4: D, v5: E): OperatorFunction;\nexport function endWith(v1: A, v2: B, v3: C, v4: D, v5: E, v6: F): OperatorFunction;\nexport function endWith(...array: Z[]): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(...array: Array): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits the items you specify as arguments after it finishes emitting\n * items emitted by the source Observable.\n *\n * ![](endWith.png)\n *\n * ## Example\n * ### After the source observable completes, appends an emission and then completes too.\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { endWith } from 'rxjs/operators';\n *\n * of('hi', 'how are you?', 'sorry, I have to go now').pipe(\n * endWith('goodbye!'),\n * )\n * .subscribe(word => console.log(word));\n * // result:\n * // 'hi'\n * // 'how are you?'\n * // 'sorry, I have to go now'\n * // 'goodbye!'\n * ```\n *\n * @param {...T} values - Items you want the modified Observable to emit last.\n * @param {SchedulerLike} [scheduler] - A {@link SchedulerLike} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items emitted by the source Observable\n * and then emits the items in the specified Iterable.\n * @method endWith\n * @owner Observable\n */\nexport function endWith(...array: Array): MonoTypeOperatorFunction {\n return (source: Observable) => concat(source, of(...array)) as Observable;\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Observer, OperatorFunction } from '../types';\n\n/**\n * Returns an Observable that emits whether or not every item of the source satisfies the condition specified.\n *\n * ## Example\n * A simple example emitting true if all elements are less than 5, false otherwise\n * ```ts\n * import { of } from 'rxjs';\n * import { every } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5, 6).pipe(\n * every(x => x < 5),\n * )\n * .subscribe(x => console.log(x)); // -> false\n * ```\n *\n * @param {function} predicate A function for determining if an item meets a specified condition.\n * @param {any} [thisArg] Optional object to use for `this` in the callback.\n * @return {Observable} An Observable of booleans that determines if all items of the source Observable meet the condition specified.\n * @method every\n * @owner Observable\n */\nexport function every(predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any): OperatorFunction {\n return (source: Observable) => source.lift(new EveryOperator(predicate, thisArg, source));\n}\n\nclass EveryOperator implements Operator {\n constructor(private predicate: (value: T, index: number, source: Observable) => boolean,\n private thisArg?: any,\n private source?: Observable) {\n }\n\n call(observer: Subscriber, source: any): any {\n return source.subscribe(new EverySubscriber(observer, this.predicate, this.thisArg, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass EverySubscriber extends Subscriber {\n private index: number = 0;\n\n constructor(destination: Observer,\n private predicate: (value: T, index: number, source: Observable) => boolean,\n private thisArg: any,\n private source?: Observable) {\n super(destination);\n this.thisArg = thisArg || this;\n }\n\n private notifyComplete(everyValueMatch: boolean): void {\n this.destination.next(everyValueMatch);\n this.destination.complete();\n }\n\n protected _next(value: T): void {\n let result = false;\n try {\n result = this.predicate.call(this.thisArg, value, this.index++, this.source);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n\n if (!result) {\n this.notifyComplete(false);\n }\n }\n\n protected _complete(): void {\n this.notifyComplete(true);\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { ObservableInput, OperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\nexport function exhaust(): OperatorFunction, T>;\nexport function exhaust(): OperatorFunction;\n\n/**\n * Converts a higher-order Observable into a first-order Observable by dropping\n * inner Observables while the previous inner Observable has not yet completed.\n *\n * Flattens an Observable-of-Observables by dropping the\n * next inner Observables while the current inner is still executing.\n *\n * ![](exhaust.png)\n *\n * `exhaust` subscribes to an Observable that emits Observables, also known as a\n * higher-order Observable. Each time it observes one of these emitted inner\n * Observables, the output Observable begins emitting the items emitted by that\n * inner Observable. So far, it behaves like {@link mergeAll}. However,\n * `exhaust` ignores every new inner Observable if the previous Observable has\n * not yet completed. Once that one completes, it will accept and flatten the\n * next inner Observable and repeat this process.\n *\n * ## Example\n * Run a finite timer for each click, only if there is no currently active timer\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { exhaust, map, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map((ev) => interval(1000).pipe(take(5))),\n * );\n * const result = higherOrder.pipe(exhaust());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link mergeAll}\n * @see {@link exhaustMap}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable that takes a source of Observables and propagates the first observable\n * exclusively until it completes before subscribing to the next.\n * @method exhaust\n * @owner Observable\n */\nexport function exhaust(): OperatorFunction {\n return (source: Observable) => source.lift(new SwitchFirstOperator());\n}\n\nclass SwitchFirstOperator implements Operator {\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SwitchFirstSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SwitchFirstSubscriber extends SimpleOuterSubscriber {\n private hasCompleted: boolean = false;\n private hasSubscription: boolean = false;\n\n constructor(destination: Subscriber) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (!this.hasSubscription) {\n this.hasSubscription = true;\n this.add(innerSubscribe(value, new SimpleInnerSubscriber(this)));\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (!this.hasSubscription) {\n this.destination.complete!();\n }\n }\n\n notifyComplete(): void {\n this.hasSubscription = false;\n if (this.hasCompleted) {\n this.destination.complete!();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function exhaustMap>(project: (value: T, index: number) => O): OperatorFunction>;\n/** @deprecated resultSelector is no longer supported. Use inner map instead. */\nexport function exhaustMap>(project: (value: T, index: number) => O, resultSelector: undefined): OperatorFunction>;\n/** @deprecated resultSelector is no longer supported. Use inner map instead. */\nexport function exhaustMap(project: (value: T, index: number) => ObservableInput, resultSelector: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable only if the previous projected Observable has completed.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link exhaust}.\n *\n * ![](exhaustMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. When it projects a source value to\n * an Observable, the output Observable begins emitting the items emitted by\n * that projected Observable. However, `exhaustMap` ignores every new projected\n * Observable if the previous projected Observable has not yet completed. Once\n * that one completes, it will accept and flatten the next projected Observable\n * and repeat this process.\n *\n * ## Example\n * Run a finite timer for each click, only if there is no currently active timer\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { exhaustMap, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * exhaustMap(ev => interval(1000).pipe(take(5)))\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaust}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return {Observable} An Observable containing projected Observables\n * of each item of the source, ignoring projected Observables that start before\n * their preceding Observable has completed.\n * @method exhaustMap\n * @owner Observable\n */\nexport function exhaustMap>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R,\n): OperatorFunction|R> {\n if (resultSelector) {\n // DEPRECATED PATH\n return (source: Observable) => source.pipe(\n exhaustMap((a, i) => from(project(a, i)).pipe(\n map((b: any, ii: any) => resultSelector(a, b, i, ii)),\n )),\n );\n }\n return (source: Observable) =>\n source.lift(new ExhaustMapOperator(project));\n}\n\nclass ExhaustMapOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new ExhaustMapSubscriber(subscriber, this.project));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass ExhaustMapSubscriber extends SimpleOuterSubscriber {\n private hasSubscription = false;\n private hasCompleted = false;\n private index = 0;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (!this.hasSubscription) {\n this.tryNext(value);\n }\n }\n\n private tryNext(value: T): void {\n let result: ObservableInput;\n const index = this.index++;\n try {\n result = this.project(value, index);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.hasSubscription = true;\n this._innerSub(result);\n }\n\n private _innerSub(result: ObservableInput): void {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(result, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (!this.hasSubscription) {\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n this.destination.next!(innerValue);\n }\n\n notifyError(err: any): void {\n this.destination.error!(err);\n }\n\n notifyComplete(): void {\n this.hasSubscription = false;\n if (this.hasCompleted) {\n this.destination.complete!();\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, OperatorFunction, ObservableInput, SchedulerLike } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function expand(project: (value: T, index: number) => ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\nexport function expand(project: (value: T, index: number) => ObservableInput, concurrent?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Recursively projects each source value to an Observable which is merged in\n * the output Observable.\n *\n * It's similar to {@link mergeMap}, but applies the\n * projection function to every source value as well as every output value.\n * It's recursive.\n *\n * ![](expand.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger. *Expand* will re-emit on the output\n * Observable every source value. Then, each output value is given to the\n * `project` function which returns an inner Observable to be merged on the\n * output Observable. Those output values resulting from the projection are also\n * given to the `project` function to produce new output values. This is how\n * *expand* behaves recursively.\n *\n * ## Example\n * Start emitting the powers of two on every click, at most 10 of them\n * ```ts\n * import { fromEvent, of } from 'rxjs';\n * import { expand, mapTo, delay, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const powersOfTwo = clicks.pipe(\n * mapTo(1),\n * expand(x => of(2 * x).pipe(delay(1000))),\n * take(10),\n * );\n * powersOfTwo.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mergeMap}\n * @see {@link mergeScan}\n *\n * @param {function(value: T, index: number) => Observable} project A function\n * that, when applied to an item emitted by the source or the output Observable,\n * returns an Observable.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for subscribing to\n * each projected inner Observable.\n * @return {Observable} An Observable that emits the source values and also\n * result of applying the projection function to each value emitted on the\n * output Observable and and merging the results of the Observables obtained\n * from this transformation.\n * @method expand\n * @owner Observable\n */\nexport function expand(project: (value: T, index: number) => ObservableInput,\n concurrent: number = Number.POSITIVE_INFINITY,\n scheduler?: SchedulerLike): OperatorFunction {\n concurrent = (concurrent || 0) < 1 ? Number.POSITIVE_INFINITY : concurrent;\n\n return (source: Observable) => source.lift(new ExpandOperator(project, concurrent, scheduler));\n}\n\nexport class ExpandOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput,\n private concurrent: number,\n private scheduler?: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new ExpandSubscriber(subscriber, this.project, this.concurrent, this.scheduler));\n }\n}\n\ninterface DispatchArg {\n subscriber: ExpandSubscriber;\n result: ObservableInput;\n value: any;\n index: number;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class ExpandSubscriber extends SimpleOuterSubscriber {\n private index: number = 0;\n private active: number = 0;\n private hasCompleted: boolean = false;\n private buffer?: any[];\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput,\n private concurrent: number,\n private scheduler?: SchedulerLike) {\n super(destination);\n if (concurrent < Number.POSITIVE_INFINITY) {\n this.buffer = [];\n }\n }\n\n private static dispatch(arg: DispatchArg): void {\n const {subscriber, result, value, index} = arg;\n subscriber.subscribeToProjection(result, value, index);\n }\n\n protected _next(value: any): void {\n const destination = this.destination;\n\n if (destination.closed) {\n this._complete();\n return;\n }\n\n const index = this.index++;\n if (this.active < this.concurrent) {\n destination.next!(value);\n try {\n const { project } = this;\n const result = project(value, index);\n if (!this.scheduler) {\n this.subscribeToProjection(result, value, index);\n } else {\n const state: DispatchArg = { subscriber: this, result, value, index };\n const destination = this.destination as Subscription;\n destination.add(this.scheduler.schedule>(ExpandSubscriber.dispatch as any, 0, state));\n }\n } catch (e) {\n destination.error!(e);\n }\n } else {\n this.buffer!.push(value);\n }\n }\n\n private subscribeToProjection(result: any, value: T, index: number): void {\n this.active++;\n const destination = this.destination as Subscription;\n destination.add(innerSubscribe(result, new SimpleInnerSubscriber(this)));\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (this.hasCompleted && this.active === 0) {\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n this._next(innerValue);\n }\n\n notifyComplete(): void {\n const buffer = this.buffer;\n this.active--;\n if (buffer && buffer.length > 0) {\n this._next(buffer.shift());\n }\n if (this.hasCompleted && this.active === 0) {\n this.destination.complete!();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that mirrors the source Observable, but will call a specified function when\n * the source terminates on complete or error.\n * @param {function} callback Function to be called when source terminates.\n * @return {Observable} An Observable that mirrors the source, but will call the specified function on termination.\n * @method finally\n * @owner Observable\n */\nexport function finalize(callback: () => void): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new FinallyOperator(callback));\n}\n\nclass FinallyOperator implements Operator {\n constructor(private callback: () => void) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new FinallySubscriber(subscriber, this.callback));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass FinallySubscriber extends Subscriber {\n constructor(destination: Subscriber, callback: () => void) {\n super(destination);\n this.add(new Subscription(callback));\n }\n}\n","import {Observable} from '../Observable';\nimport {Operator} from '../Operator';\nimport {Subscriber} from '../Subscriber';\nimport {OperatorFunction} from '../types';\n\nexport function find(predicate: (value: T, index: number, source: Observable) => value is S,\n thisArg?: any): OperatorFunction;\nexport function find(predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any): OperatorFunction;\n/**\n * Emits only the first value emitted by the source Observable that meets some\n * condition.\n *\n * Finds the first value that passes some test and emits\n * that.\n *\n * ![](find.png)\n *\n * `find` searches for the first item in the source Observable that matches the\n * specified condition embodied by the `predicate`, and returns the first\n * occurrence in the source. Unlike {@link first}, the `predicate` is required\n * in `find`, and does not emit an error if a valid value is not found.\n *\n * ## Example\n * Find and emit the first click that happens on a DIV element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { find } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(find(ev => ev.target.tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link first}\n * @see {@link findIndex}\n * @see {@link take}\n *\n * @param {function(value: T, index: number, source: Observable): boolean} predicate\n * A function called with each item to test for condition matching.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of the first item that matches the\n * condition.\n * @method find\n * @owner Observable\n */\nexport function find(predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any): OperatorFunction {\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate is not a function');\n }\n return (source: Observable) => source.lift(new FindValueOperator(predicate, source, false, thisArg)) as Observable;\n}\n\nexport class FindValueOperator implements Operator {\n constructor(private predicate: (value: T, index: number, source: Observable) => boolean,\n private source: Observable,\n private yieldIndex: boolean,\n private thisArg?: any) {\n }\n\n call(observer: Subscriber, source: any): any {\n return source.subscribe(new FindValueSubscriber(observer, this.predicate, this.source, this.yieldIndex, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class FindValueSubscriber extends Subscriber {\n private index: number = 0;\n\n constructor(destination: Subscriber,\n private predicate: (value: T, index: number, source: Observable) => boolean,\n private source: Observable,\n private yieldIndex: boolean,\n private thisArg?: any) {\n super(destination);\n }\n\n private notifyComplete(value: any): void {\n const destination = this.destination;\n\n destination.next(value);\n destination.complete();\n this.unsubscribe();\n }\n\n protected _next(value: T): void {\n const {predicate, thisArg} = this;\n const index = this.index++;\n try {\n const result = predicate.call(thisArg || this, value, index, this.source);\n if (result) {\n this.notifyComplete(this.yieldIndex ? index : value);\n }\n } catch (err) {\n this.destination.error(err);\n }\n }\n\n protected _complete(): void {\n this.notifyComplete(this.yieldIndex ? -1 : undefined);\n }\n}\n","import { Observable } from '../Observable';\nimport { FindValueOperator } from '../operators/find';\nimport { OperatorFunction } from '../types';\n/**\n * Emits only the index of the first value emitted by the source Observable that\n * meets some condition.\n *\n * It's like {@link find}, but emits the index of the\n * found value, not the value itself.\n *\n * ![](findIndex.png)\n *\n * `findIndex` searches for the first item in the source Observable that matches\n * the specified condition embodied by the `predicate`, and returns the\n * (zero-based) index of the first occurrence in the source. Unlike\n * {@link first}, the `predicate` is required in `findIndex`, and does not emit\n * an error if a valid value is not found.\n *\n * ## Example\n * Emit the index of first click that happens on a DIV element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { findIndex } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(findIndex(ev => ev.target.tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link first}\n * @see {@link take}\n *\n * @param {function(value: T, index: number, source: Observable): boolean} predicate\n * A function called with each item to test for condition matching.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of the index of the first item that\n * matches the condition.\n * @method find\n * @owner Observable\n */\nexport function findIndex(predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any): OperatorFunction {\n return (source: Observable) => source.lift(new FindValueOperator(predicate, source, true, thisArg)) as Observable;\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { EmptyError } from '../util/EmptyError';\nimport { OperatorFunction } from '../../internal/types';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\n\n/* tslint:disable:max-line-length */\nexport function first(\n predicate?: null,\n defaultValue?: D\n): OperatorFunction;\nexport function first(\n predicate: (value: T, index: number, source: Observable) => value is S,\n defaultValue?: S\n): OperatorFunction;\nexport function first(\n predicate: (value: T, index: number, source: Observable) => boolean,\n defaultValue?: D\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Emits only the first value (or the first value that meets some condition)\n * emitted by the source Observable.\n *\n * Emits only the first value. Or emits only the first\n * value that passes some test.\n *\n * ![](first.png)\n *\n * If called with no arguments, `first` emits the first value of the source\n * Observable, then completes. If called with a `predicate` function, `first`\n * emits the first value of the source that matches the specified condition. It\n * may also take a deprecated `resultSelector` function to produce the output\n * value from the input value, and a `defaultValue` to emit in case the source\n * completes before it is able to emit a valid value. Throws an error if\n * `defaultValue` was not provided and a matching element is not found.\n *\n * ## Examples\n * Emit only the first click that happens on the DOM\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { first } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(first());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Emits the first click that happens on a DIV\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { first } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(first(ev => ev.target.tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link take}\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n *\n * @param {function(value: T, index: number, source: Observable): boolean} [predicate]\n * An optional function called with each item to test for condition matching.\n * @param {R} [defaultValue] The default value emitted in case no valid value\n * was found on the source.\n * @return {Observable} An Observable of the first item that matches the\n * condition.\n * @method first\n * @owner Observable\n */\nexport function first(\n predicate?: ((value: T, index: number, source: Observable) => boolean) | null,\n defaultValue?: D\n): OperatorFunction {\n const hasDefaultValue = arguments.length >= 2;\n return (source: Observable) => source.pipe(\n predicate ? filter((v, i) => predicate(v, i, source)) : identity,\n take(1),\n hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()),\n );\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\n\n/**\n * Ignores all items emitted by the source Observable and only passes calls of `complete` or `error`.\n *\n * ![](ignoreElements.png)\n *\n * ## Examples\n * ### Ignores emitted values, reacts to observable's completion.\n * ```ts\n * import { of } from 'rxjs';\n * import { ignoreElements } from 'rxjs/operators';\n *\n * of('you', 'talking', 'to', 'me').pipe(\n * ignoreElements(),\n * )\n * .subscribe(\n * word => console.log(word),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n * // result:\n * // 'the end'\n * ```\n * @return {Observable} An empty Observable that only calls `complete`\n * or `error`, based on which one is called by the source Observable.\n * @method ignoreElements\n * @owner Observable\n */\nexport function ignoreElements(): OperatorFunction {\n return function ignoreElementsOperatorFunction(source: Observable) {\n return source.lift(new IgnoreElementsOperator());\n };\n}\n\nclass IgnoreElementsOperator implements Operator {\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new IgnoreElementsSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass IgnoreElementsSubscriber extends Subscriber {\n protected _next(unused: T): void {\n // Do nothing\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\n\n/**\n * Emits false if the input observable emits any values, or emits true if the\n * input observable completes without emitting any values.\n *\n * Tells whether any values are emitted by an observable\n *\n * ![](isEmpty.png)\n *\n * `isEmpty` transforms an Observable that emits values into an Observable that\n * emits a single boolean value representing whether or not any values were\n * emitted by the source Observable. As soon as the source Observable emits a\n * value, `isEmpty` will emit a `false` and complete. If the source Observable\n * completes having not emitted anything, `isEmpty` will emit a `true` and\n * complete.\n *\n * A similar effect could be achieved with {@link count}, but `isEmpty` can emit\n * a `false` value sooner.\n *\n * ## Examples\n *\n * Emit `false` for a non-empty Observable\n * ```javascript\n * import { Subject } from 'rxjs';\n * import { isEmpty } from 'rxjs/operators';\n *\n * const source = new Subject();\n * const result = source.pipe(isEmpty());\n * source.subscribe(x => console.log(x));\n * result.subscribe(x => console.log(x));\n * source.next('a');\n * source.next('b');\n * source.next('c');\n * source.complete();\n *\n * // Results in:\n * // a\n * // false\n * // b\n * // c\n * ```\n *\n * Emit `true` for an empty Observable\n * ```javascript\n * import { EMPTY } from 'rxjs';\n * import { isEmpty } from 'rxjs/operators';\n *\n * const result = EMPTY.pipe(isEmpty());\n * result.subscribe(x => console.log(x));\n * // Results in:\n * // true\n * ```\n *\n * @see {@link count}\n * @see {@link EMPTY}\n *\n * @return {OperatorFunction} An Observable of a boolean value indicating whether observable was empty or not\n * @method isEmpty\n * @owner Observable\n */\n\nexport function isEmpty(): OperatorFunction {\n return (source: Observable) => source.lift(new IsEmptyOperator());\n}\n\nclass IsEmptyOperator implements Operator {\n call (observer: Subscriber, source: any): any {\n return source.subscribe(new IsEmptySubscriber(observer));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass IsEmptySubscriber extends Subscriber {\n constructor(destination: Subscriber) {\n super(destination);\n }\n\n private notifyComplete(isEmpty: boolean): void {\n const destination = this.destination;\n\n destination.next(isEmpty);\n destination.complete();\n }\n\n protected _next(value: boolean) {\n this.notifyComplete(false);\n }\n\n protected _complete() {\n this.notifyComplete(true);\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Emits only the last `count` values emitted by the source Observable.\n *\n * Remembers the latest `count` values, then emits those\n * only when the source completes.\n *\n * ![](takeLast.png)\n *\n * `takeLast` returns an Observable that emits at most the last `count` values\n * emitted by the source Observable. If the source emits fewer than `count`\n * values then all of its values are emitted. This operator must wait until the\n * `complete` notification emission from the source in order to emit the `next`\n * values on the output Observable, because otherwise it is impossible to know\n * whether or not more values will be emitted on the source. For this reason,\n * all values are emitted synchronously, followed by the complete notification.\n *\n * ## Example\n * Take the last 3 values of an Observable with many values\n * ```ts\n * import { range } from 'rxjs';\n * import { takeLast } from 'rxjs/operators';\n *\n * const many = range(1, 100);\n * const lastThree = many.pipe(takeLast(3));\n * lastThree.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @throws {ArgumentOutOfRangeError} When using `takeLast(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0`.\n *\n * @param {number} count The maximum number of values to emit from the end of\n * the sequence of values emitted by the source Observable.\n * @return {Observable} An Observable that emits at most the last count\n * values emitted by the source Observable.\n * @method takeLast\n * @owner Observable\n */\nexport function takeLast(count: number): MonoTypeOperatorFunction {\n return function takeLastOperatorFunction(source: Observable): Observable {\n if (count === 0) {\n return empty();\n } else {\n return source.lift(new TakeLastOperator(count));\n }\n };\n}\n\nclass TakeLastOperator implements Operator {\n constructor(private total: number) {\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new TakeLastSubscriber(subscriber, this.total));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeLastSubscriber extends Subscriber {\n private ring: Array = new Array();\n private count: number = 0;\n\n constructor(destination: Subscriber, private total: number) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const ring = this.ring;\n const total = this.total;\n const count = this.count++;\n\n if (ring.length < total) {\n ring.push(value);\n } else {\n const index = count % total;\n ring[index] = value;\n }\n }\n\n protected _complete(): void {\n const destination = this.destination;\n let count = this.count;\n\n if (count > 0) {\n const total = this.count >= this.total ? this.total : this.count;\n const ring = this.ring;\n\n for (let i = 0; i < total; i++) {\n const idx = (count++) % total;\n destination.next(ring[idx]);\n }\n }\n\n destination.complete();\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { EmptyError } from '../util/EmptyError';\nimport { OperatorFunction } from '../../internal/types';\nimport { filter } from './filter';\nimport { takeLast } from './takeLast';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { identity } from '../util/identity';\n\n/* tslint:disable:max-line-length */\nexport function last(\n predicate?: null,\n defaultValue?: D\n): OperatorFunction;\nexport function last(\n predicate: (value: T, index: number, source: Observable) => value is S,\n defaultValue?: S\n): OperatorFunction;\nexport function last(\n predicate: (value: T, index: number, source: Observable) => boolean,\n defaultValue?: D\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits only the last item emitted by the source Observable.\n * It optionally takes a predicate function as a parameter, in which case, rather than emitting\n * the last item from the source Observable, the resulting Observable will emit the last item\n * from the source Observable that satisfies the predicate.\n *\n * ![](last.png)\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * @param {function} [predicate] - The condition any source emitted item has to satisfy.\n * @param {any} [defaultValue] - An optional default value to provide if last\n * predicate isn't met or no values were emitted.\n * @return {Observable} An Observable that emits only the last item satisfying the given condition\n * from the source, or an NoSuchElementException if no such items are emitted.\n * @throws - Throws if no items that match the predicate are emitted by the source Observable.\n */\nexport function last(\n predicate?: ((value: T, index: number, source: Observable) => boolean) | null,\n defaultValue?: D\n): OperatorFunction {\n const hasDefaultValue = arguments.length >= 2;\n return (source: Observable) => source.pipe(\n predicate ? filter((v, i) => predicate(v, i, source)) : identity,\n takeLast(1),\n hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()),\n );\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\n\n/**\n * Emits the given constant value on the output Observable every time the source\n * Observable emits a value.\n *\n * Like {@link map}, but it maps every source value to\n * the same output value every time.\n *\n * ![](mapTo.png)\n *\n * Takes a constant `value` as argument, and emits that whenever the source\n * Observable emits a value. In other words, ignores the actual source value,\n * and simply uses the emission moment to know when to emit the given `value`.\n *\n * ## Example\n * Map every click to the string 'Hi'\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { mapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const greetings = clicks.pipe(mapTo('Hi'));\n * greetings.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n *\n * @param {any} value The value to map each source value to.\n * @return {Observable} An Observable that emits the given `value` every time\n * the source Observable emits something.\n * @method mapTo\n * @owner Observable\n */\nexport function mapTo(value: R): OperatorFunction {\n return (source: Observable) => source.lift(new MapToOperator(value));\n}\n\nclass MapToOperator implements Operator {\n\n value: R;\n\n constructor(value: R) {\n this.value = value;\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new MapToSubscriber(subscriber, this.value));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass MapToSubscriber extends Subscriber {\n\n value: R;\n\n constructor(destination: Subscriber, value: R) {\n super(destination);\n this.value = value;\n }\n\n protected _next(x: T) {\n this.destination.next(this.value);\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nimport { OperatorFunction } from '../types';\n\n/**\n * Represents all of the notifications from the source Observable as `next`\n * emissions marked with their original types within {@link Notification}\n * objects.\n *\n * Wraps `next`, `error` and `complete` emissions in\n * {@link Notification} objects, emitted as `next` on the output Observable.\n * \n *\n * ![](materialize.png)\n *\n * `materialize` returns an Observable that emits a `next` notification for each\n * `next`, `error`, or `complete` emission of the source Observable. When the\n * source Observable emits `complete`, the output Observable will emit `next` as\n * a Notification of type \"complete\", and then it will emit `complete` as well.\n * When the source Observable emits `error`, the output will emit `next` as a\n * Notification of type \"error\", and then `complete`.\n *\n * This operator is useful for producing metadata of the source Observable, to\n * be consumed as `next` emissions. Use it in conjunction with\n * {@link dematerialize}.\n *\n * ## Example\n * Convert a faulty Observable to an Observable of Notifications\n * ```ts\n * import { of } from 'rxjs';\n * import { materialize, map } from 'rxjs/operators';\n *\n * const letters = of('a', 'b', 13, 'd');\n * const upperCase = letters.pipe(map(x => x.toUpperCase()));\n * const materialized = upperCase.pipe(materialize());\n * materialized.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - Notification {kind: \"N\", value: \"A\", error: undefined, hasValue: true}\n * // - Notification {kind: \"N\", value: \"B\", error: undefined, hasValue: true}\n * // - Notification {kind: \"E\", value: undefined, error: TypeError:\n * // x.toUpperCase is not a function at MapSubscriber.letters.map.x\n * // [as project] (http://1…, hasValue: false}\n * ```\n *\n * @see {@link Notification}\n * @see {@link dematerialize}\n *\n * @return {Observable>} An Observable that emits\n * {@link Notification} objects that wrap the original emissions from the source\n * Observable with metadata.\n * @method materialize\n * @owner Observable\n */\nexport function materialize(): OperatorFunction> {\n return function materializeOperatorFunction(source: Observable) {\n return source.lift(new MaterializeOperator());\n };\n}\n\nclass MaterializeOperator implements Operator> {\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new MaterializeSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass MaterializeSubscriber extends Subscriber {\n constructor(destination: Subscriber>) {\n super(destination);\n }\n\n protected _next(value: T) {\n this.destination.next(Notification.createNext(value));\n }\n\n protected _error(err: any) {\n const destination = this.destination;\n destination.next(Notification.createError(err));\n destination.complete();\n }\n\n protected _complete() {\n const destination = this.destination;\n destination.next(Notification.createComplete());\n destination.complete();\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction, MonoTypeOperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function scan(accumulator: (acc: R, value: T, index: number) => R, seed: R): OperatorFunction;\nexport function scan(accumulator: (acc: T, value: T, index: number) => T, seed?: T): MonoTypeOperatorFunction;\nexport function scan(accumulator: (acc: R, value: T, index: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Applies an accumulator function over the source Observable, and returns each\n * intermediate result, with an optional seed value.\n *\n * It's like {@link reduce}, but emits the current\n * accumulation whenever the source emits a value.\n *\n * ![](scan.png)\n *\n * Combines together all values emitted on the source, using an accumulator\n * function that knows how to join a new source value into the accumulation from\n * the past. Is similar to {@link reduce}, but emits the intermediate\n * accumulations.\n *\n * Returns an Observable that applies a specified `accumulator` function to each\n * item emitted by the source Observable. If a `seed` value is specified, then\n * that value will be used as the initial value for the accumulator. If no seed\n * value is specified, the first item of the source is used as the seed.\n *\n * ## Example\n * Count the number of click events\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { scan, mapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const ones = clicks.pipe(mapTo(1));\n * const seed = 0;\n * const count = ones.pipe(scan((acc, one) => acc + one, seed));\n * count.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link reduce}\n *\n * @param {function(acc: R, value: T, index: number): R} accumulator\n * The accumulator function called on each source value.\n * @param {T|R} [seed] The initial accumulation value.\n * @return {Observable} An observable of the accumulated values.\n * @method scan\n * @owner Observable\n */\nexport function scan(accumulator: (acc: R, value: T, index: number) => R, seed?: T | R): OperatorFunction {\n let hasSeed = false;\n // providing a seed of `undefined` *should* be valid and trigger\n // hasSeed! so don't use `seed !== undefined` checks!\n // For this reason, we have to check it here at the original call site\n // otherwise inside Operator/Subscriber we won't know if `undefined`\n // means they didn't provide anything or if they literally provided `undefined`\n if (arguments.length >= 2) {\n hasSeed = true;\n }\n\n return function scanOperatorFunction(source: Observable): Observable {\n return source.lift(new ScanOperator(accumulator, seed, hasSeed));\n };\n}\n\nclass ScanOperator implements Operator {\n constructor(private accumulator: (acc: R, value: T, index: number) => R, private seed?: T | R, private hasSeed: boolean = false) {}\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass ScanSubscriber extends Subscriber {\n private index: number = 0;\n\n get seed(): T | R {\n return this._seed;\n }\n\n set seed(value: T | R) {\n this.hasSeed = true;\n this._seed = value;\n }\n\n constructor(destination: Subscriber, private accumulator: (acc: R, value: T, index: number) => R, private _seed: T | R,\n private hasSeed: boolean) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (!this.hasSeed) {\n this.seed = value;\n this.destination.next(value);\n } else {\n return this._tryNext(value);\n }\n }\n\n private _tryNext(value: T): void {\n const index = this.index++;\n let result: any;\n try {\n result = this.accumulator(this.seed, value, index);\n } catch (err) {\n this.destination.error(err);\n }\n this.seed = result;\n this.destination.next(result);\n }\n}\n","import { Observable } from '../Observable';\nimport { scan } from './scan';\nimport { takeLast } from './takeLast';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { OperatorFunction, MonoTypeOperatorFunction } from '../types';\nimport { pipe } from '../util/pipe';\n\n/* tslint:disable:max-line-length */\nexport function reduce(accumulator: (acc: R, value: T, index: number) => R, seed: R): OperatorFunction;\nexport function reduce(accumulator: (acc: T, value: T, index: number) => T, seed?: T): MonoTypeOperatorFunction;\nexport function reduce(accumulator: (acc: R, value: T, index: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Applies an accumulator function over the source Observable, and returns the\n * accumulated result when the source completes, given an optional seed value.\n *\n * Combines together all values emitted on the source,\n * using an accumulator function that knows how to join a new source value into\n * the accumulation from the past.\n *\n * ![](reduce.png)\n *\n * Like\n * [Array.prototype.reduce()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce),\n * `reduce` applies an `accumulator` function against an accumulation and each\n * value of the source Observable (from the past) to reduce it to a single\n * value, emitted on the output Observable. Note that `reduce` will only emit\n * one value, only when the source Observable completes. It is equivalent to\n * applying operator {@link scan} followed by operator {@link last}.\n *\n * Returns an Observable that applies a specified `accumulator` function to each\n * item emitted by the source Observable. If a `seed` value is specified, then\n * that value will be used as the initial value for the accumulator. If no seed\n * value is specified, the first item of the source is used as the seed.\n *\n * ## Example\n * Count the number of click events that happened in 5 seconds\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { reduce, takeUntil, mapTo } from 'rxjs/operators';\n *\n * const clicksInFiveSeconds = fromEvent(document, 'click').pipe(\n * takeUntil(interval(5000)),\n * );\n * const ones = clicksInFiveSeconds.pipe(mapTo(1));\n * const seed = 0;\n * const count = ones.pipe(reduce((acc, one) => acc + one, seed));\n * count.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link count}\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link scan}\n *\n * @param {function(acc: R, value: T, index: number): R} accumulator The accumulator function\n * called on each source value.\n * @param {R} [seed] The initial accumulation value.\n * @return {Observable} An Observable that emits a single value that is the\n * result of accumulating the values emitted by the source Observable.\n * @method reduce\n * @owner Observable\n */\nexport function reduce(accumulator: (acc: T | R, value: T, index?: number) => T | R, seed?: T | R): OperatorFunction {\n // providing a seed of `undefined` *should* be valid and trigger\n // hasSeed! so don't use `seed !== undefined` checks!\n // For this reason, we have to check it here at the original call site\n // otherwise inside Operator/Subscriber we won't know if `undefined`\n // means they didn't provide anything or if they literally provided `undefined`\n if (arguments.length >= 2) {\n return function reduceOperatorFunctionWithSeed(source: Observable): Observable {\n return pipe(scan(accumulator, seed), takeLast(1), defaultIfEmpty(seed))(source);\n };\n }\n return function reduceOperatorFunction(source: Observable): Observable {\n return pipe(\n scan((acc, value, index) => accumulator(acc, value, index + 1)),\n takeLast(1),\n )(source);\n };\n}\n","import { reduce } from './reduce';\nimport { MonoTypeOperatorFunction } from '../types';\n\n/**\n * The Max operator operates on an Observable that emits numbers (or items that can be compared with a provided function),\n * and when source Observable completes it emits a single item: the item with the largest value.\n *\n * ![](max.png)\n *\n * ## Examples\n * Get the maximal value of a series of numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { max } from 'rxjs/operators';\n *\n * of(5, 4, 7, 2, 8).pipe(\n * max(),\n * )\n * .subscribe(x => console.log(x)); // -> 8\n * ```\n *\n * Use a comparer function to get the maximal item\n * ```typescript\n * import { of } from 'rxjs';\n * import { max } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n * of(\n * {age: 7, name: 'Foo'},\n * {age: 5, name: 'Bar'},\n * {age: 9, name: 'Beer'},\n * ).pipe(\n * max((a: Person, b: Person) => a.age < b.age ? -1 : 1),\n * )\n * .subscribe((x: Person) => console.log(x.name)); // -> 'Beer'\n * ```\n *\n * @see {@link min}\n *\n * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the\n * value of two items.\n * @return {Observable} An Observable that emits item with the largest value.\n * @method max\n * @owner Observable\n */\nexport function max(comparer?: (x: T, y: T) => number): MonoTypeOperatorFunction {\n const max: (x: T, y: T) => T = (typeof comparer === 'function')\n ? (x, y) => comparer(x, y) > 0 ? x : y\n : (x, y) => x > y ? x : y;\n\n return reduce(max);\n}\n","import { merge as mergeStatic } from '../observable/merge';\nimport { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction, MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(concurrent?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(...observables: Array | SchedulerLike | number>): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(...observables: Array | SchedulerLike | number>): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * @deprecated Deprecated in favor of static {@link merge}.\n */\nexport function merge(...observables: Array | SchedulerLike | number>): OperatorFunction {\n return (source: Observable) => source.lift.call(mergeStatic(source, ...observables));\n}\n","import { Observable } from '../Observable';\nimport { OperatorFunction, ObservedValueOf } from '../../internal/types';\nimport { mergeMap } from './mergeMap';\nimport { ObservableInput } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function mergeMapTo>(innerObservable: O, concurrent?: number): OperatorFunction>;\n/** @deprecated */\nexport function mergeMapTo>(innerObservable: O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R, concurrent?: number): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to the same Observable which is merged multiple\n * times in the output Observable.\n *\n * It's like {@link mergeMap}, but maps each value always\n * to the same inner Observable.\n *\n * ![](mergeMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then merges those resulting Observables into one\n * single Observable, which is the output Observable.\n *\n * ## Example\n * For each click event, start an interval Observable ticking every 1 second\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { mergeMapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(mergeMapTo(interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMapTo}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeScan}\n * @see {@link switchMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits items from the given\n * `innerObservable`\n * @method mergeMapTo\n * @owner Observable\n */\nexport function mergeMapTo>(\n innerObservable: O,\n resultSelector?: ((outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Number.POSITIVE_INFINITY\n): OperatorFunction|R> {\n if (typeof resultSelector === 'function') {\n return mergeMap(() => innerObservable, resultSelector, concurrent);\n }\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return mergeMap(() => innerObservable, concurrent);\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction } from '../types';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/**\n * Applies an accumulator function over the source Observable where the\n * accumulator function itself returns an Observable, then each intermediate\n * Observable returned is merged into the output Observable.\n *\n * It's like {@link scan}, but the Observables returned\n * by the accumulator are merged into the outer Observable.\n *\n * ## Example\n * Count the number of click events\n * ```ts\n * import { fromEvent, of } from 'rxjs';\n * import { mapTo, mergeScan } from 'rxjs/operators';\n *\n * const click$ = fromEvent(document, 'click');\n * const one$ = click$.pipe(mapTo(1));\n * const seed = 0;\n * const count$ = one$.pipe(\n * mergeScan((acc, one) => of(acc + one), seed),\n * );\n * count$.subscribe(x => console.log(x));\n *\n * // Results:\n * // 1\n * // 2\n * // 3\n * // 4\n * // ...and so on for each click\n * ```\n *\n * @param {function(acc: R, value: T): Observable} accumulator\n * The accumulator function called on each source value.\n * @param seed The initial accumulation value.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of\n * input Observables being subscribed to concurrently.\n * @return {Observable} An observable of the accumulated values.\n * @method mergeScan\n * @owner Observable\n */\nexport function mergeScan(accumulator: (acc: R, value: T, index: number) => ObservableInput,\n seed: R,\n concurrent: number = Number.POSITIVE_INFINITY): OperatorFunction {\n return (source: Observable) => source.lift(new MergeScanOperator(accumulator, seed, concurrent));\n}\n\nexport class MergeScanOperator implements Operator {\n constructor(private accumulator: (acc: R, value: T, index: number) => ObservableInput,\n private seed: R,\n private concurrent: number) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new MergeScanSubscriber(\n subscriber, this.accumulator, this.seed, this.concurrent\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class MergeScanSubscriber extends SimpleOuterSubscriber {\n private hasValue: boolean = false;\n private hasCompleted: boolean = false;\n private buffer: Observable[] = [];\n private active: number = 0;\n protected index: number = 0;\n\n constructor(destination: Subscriber,\n private accumulator: (acc: R, value: T, index: number) => ObservableInput,\n private acc: R,\n private concurrent: number) {\n super(destination);\n }\n\n protected _next(value: any): void {\n if (this.active < this.concurrent) {\n const index = this.index++;\n const destination = this.destination;\n let ish;\n try {\n const { accumulator } = this;\n ish = accumulator(this.acc, value, index);\n } catch (e) {\n return destination.error!(e);\n }\n this.active++;\n this._innerSub(ish);\n } else {\n this.buffer.push(value);\n }\n }\n\n private _innerSub(ish: any): void {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(ish, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n if (this.hasValue === false) {\n this.destination.next!(this.acc);\n }\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n const { destination } = this;\n this.acc = innerValue;\n this.hasValue = true;\n destination.next!(innerValue);\n }\n\n notifyComplete(): void {\n const buffer = this.buffer;\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n } else if (this.active === 0 && this.hasCompleted) {\n if (this.hasValue === false) {\n this.destination.next!(this.acc);\n }\n this.destination.complete!();\n }\n }\n}\n","import { reduce } from './reduce';\nimport { MonoTypeOperatorFunction } from '../types';\n\n/**\n * The Min operator operates on an Observable that emits numbers (or items that can be compared with a provided function),\n * and when source Observable completes it emits a single item: the item with the smallest value.\n *\n * ![](min.png)\n *\n * ## Examples\n * Get the minimal value of a series of numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { min } from 'rxjs/operators';\n *\n * of(5, 4, 7, 2, 8).pipe(\n * min(),\n * )\n * .subscribe(x => console.log(x)); // -> 2\n * ```\n *\n * Use a comparer function to get the minimal item\n * ```typescript\n * import { of } from 'rxjs';\n * import { min } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n * of(\n * {age: 7, name: 'Foo'},\n * {age: 5, name: 'Bar'},\n * {age: 9, name: 'Beer'},\n * ).pipe(\n * min( (a: Person, b: Person) => a.age < b.age ? -1 : 1),\n * )\n * .subscribe((x: Person) => console.log(x.name)); // -> 'Bar'\n * ```\n * @see {@link max}\n *\n * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the\n * value of two items.\n * @return {Observable} An Observable that emits item with the smallest value.\n * @method min\n * @owner Observable\n */\nexport function min(comparer?: (x: T, y: T) => number): MonoTypeOperatorFunction {\n const min: (x: T, y: T) => T = (typeof comparer === 'function')\n ? (x, y) => comparer(x, y) < 0 ? x : y\n : (x, y) => x < y ? x : y;\n return reduce(min);\n}\n","import { Subject } from '../Subject';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { ConnectableObservable, connectableObservableDescriptor } from '../observable/ConnectableObservable';\nimport { MonoTypeOperatorFunction, OperatorFunction, UnaryFunction, ObservedValueOf, ObservableInput } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function multicast(subject: Subject): UnaryFunction, ConnectableObservable>;\nexport function multicast>(subject: Subject, selector: (shared: Observable) => O): UnaryFunction, ConnectableObservable>>;\nexport function multicast(subjectFactory: (this: Observable) => Subject): UnaryFunction, ConnectableObservable>;\nexport function multicast>(SubjectFactory: (this: Observable) => Subject, selector: (shared: Observable) => O): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits the results of invoking a specified selector on items\n * emitted by a ConnectableObservable that shares a single subscription to the underlying stream.\n *\n * ![](multicast.png)\n *\n * @param {Function|Subject} subjectOrSubjectFactory - Factory function to create an intermediate subject through\n * which the source sequence's elements will be multicast to the selector function\n * or Subject to push source elements into.\n * @param {Function} [selector] - Optional selector function that can use the multicasted source stream\n * as many times as needed, without causing multiple subscriptions to the source stream.\n * Subscribers to the given source will receive all notifications of the source from the\n * time of the subscription forward.\n * @return {Observable} An Observable that emits the results of invoking the selector\n * on the items emitted by a `ConnectableObservable` that shares a single subscription to\n * the underlying stream.\n * @method multicast\n * @owner Observable\n */\nexport function multicast(subjectOrSubjectFactory: Subject | (() => Subject),\n selector?: (source: Observable) => Observable): OperatorFunction {\n return function multicastOperatorFunction(source: Observable): Observable {\n let subjectFactory: () => Subject;\n if (typeof subjectOrSubjectFactory === 'function') {\n subjectFactory = <() => Subject>subjectOrSubjectFactory;\n } else {\n subjectFactory = function subjectFactory() {\n return >subjectOrSubjectFactory;\n };\n }\n\n if (typeof selector === 'function') {\n return source.lift(new MulticastOperator(subjectFactory, selector));\n }\n\n const connectable: any = Object.create(source, connectableObservableDescriptor);\n connectable.source = source;\n connectable.subjectFactory = subjectFactory;\n\n return > connectable;\n };\n}\n\nexport class MulticastOperator implements Operator {\n constructor(private subjectFactory: () => Subject,\n private selector: (source: Observable) => Observable) {\n }\n call(subscriber: Subscriber, source: any): any {\n const { selector } = this;\n const subject = this.subjectFactory();\n const subscription = selector(subject).subscribe(subscriber);\n subscription.add(source.subscribe(subject));\n return subscription;\n }\n}\n","import { Observable } from '../Observable';\nimport { from } from '../observable/from';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { isArray } from '../util/isArray';\nimport { ObservableInput, OperatorFunction } from '../types';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function onErrorResumeNext(): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput, v3: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(...observables: Array>): OperatorFunction;\nexport function onErrorResumeNext(array: ObservableInput[]): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one\n * that was passed.\n *\n * Execute series of Observables no matter what, even if it means swallowing errors.\n *\n * ![](onErrorResumeNext.png)\n *\n * `onErrorResumeNext` is an operator that accepts a series of Observables, provided either directly as\n * arguments or as an array. If no single Observable is provided, returned Observable will simply behave the same\n * as the source.\n *\n * `onErrorResumeNext` returns an Observable that starts by subscribing and re-emitting values from the source Observable.\n * When its stream of values ends - no matter if Observable completed or emitted an error - `onErrorResumeNext`\n * will subscribe to the first Observable that was passed as an argument to the method. It will start re-emitting\n * its values as well and - again - when that stream ends, `onErrorResumeNext` will proceed to subscribing yet another\n * Observable in provided series, no matter if previous Observable completed or ended with an error. This will\n * be happening until there is no more Observables left in the series, at which point returned Observable will\n * complete - even if the last subscribed stream ended with an error.\n *\n * `onErrorResumeNext` can be therefore thought of as version of {@link concat} operator, which is more permissive\n * when it comes to the errors emitted by its input Observables. While `concat` subscribes to the next Observable\n * in series only if previous one successfully completed, `onErrorResumeNext` subscribes even if it ended with\n * an error.\n *\n * Note that you do not get any access to errors emitted by the Observables. In particular do not\n * expect these errors to appear in error callback passed to {@link Observable#subscribe}. If you want to take\n * specific actions based on what error was emitted by an Observable, you should try out {@link catchError} instead.\n *\n *\n * ## Example\n * Subscribe to the next Observable after map fails\n * ```ts\n * import { of } from 'rxjs';\n * import { onErrorResumeNext, map } from 'rxjs/operators';\n *\n * of(1, 2, 3, 0).pipe(\n * map(x => {\n * if (x === 0) { throw Error(); }\n * return 10 / x;\n * }),\n * onErrorResumeNext(of(1, 2, 3)),\n * )\n * .subscribe(\n * val => console.log(val),\n * err => console.log(err), // Will never be called.\n * () => console.log('that\\'s it!')\n * );\n *\n * // Logs:\n * // 10\n * // 5\n * // 3.3333333333333335\n * // 1\n * // 2\n * // 3\n * // \"that's it!\"\n * ```\n *\n * @see {@link concat}\n * @see {@link catchError}\n *\n * @param {...ObservableInput} observables Observables passed either directly or as an array.\n * @return {Observable} An Observable that emits values from source Observable, but - if it errors - subscribes\n * to the next passed Observable and so on, until it completes or runs out of Observables.\n * @method onErrorResumeNext\n * @owner Observable\n */\n\nexport function onErrorResumeNext(...nextSources: Array |\n Array>>): OperatorFunction {\n if (nextSources.length === 1 && isArray(nextSources[0])) {\n nextSources = >>nextSources[0];\n }\n\n return (source: Observable) => source.lift(new OnErrorResumeNextOperator(nextSources));\n}\n\n/* tslint:disable:max-line-length */\nexport function onErrorResumeNextStatic(v: ObservableInput): Observable;\nexport function onErrorResumeNextStatic(v2: ObservableInput, v3: ObservableInput): Observable;\nexport function onErrorResumeNextStatic(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable;\nexport function onErrorResumeNextStatic(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable;\nexport function onErrorResumeNextStatic(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable;\n\nexport function onErrorResumeNextStatic(...observables: Array | ((...values: Array) => R)>): Observable;\nexport function onErrorResumeNextStatic(array: ObservableInput[]): Observable;\n/* tslint:enable:max-line-length */\n\nexport function onErrorResumeNextStatic(...nextSources: Array |\n Array> |\n ((...values: Array) => R)>): Observable {\n let source: ObservableInput|undefined = undefined;\n\n if (nextSources.length === 1 && isArray(nextSources[0])) {\n nextSources = nextSources[0] as ObservableInput[];\n }\n // TODO: resolve issue with passing no arguments.\n source = nextSources.shift()!;\n\n return from(source).lift(new OnErrorResumeNextOperator(nextSources));\n}\n\nclass OnErrorResumeNextOperator implements Operator {\n constructor(private nextSources: Array>) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new OnErrorResumeNextSubscriber(subscriber, this.nextSources));\n }\n}\n\nclass OnErrorResumeNextSubscriber extends SimpleOuterSubscriber {\n constructor(protected destination: Subscriber,\n private nextSources: Array>) {\n super(destination);\n }\n\n notifyError(): void {\n this.subscribeToNextSource();\n }\n\n notifyComplete(): void {\n this.subscribeToNextSource();\n }\n\n protected _error(err: any): void {\n this.subscribeToNextSource();\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.subscribeToNextSource();\n this.unsubscribe();\n }\n\n private subscribeToNextSource(): void {\n const next = this.nextSources.shift();\n if (!!next) {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(next, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n } else {\n this.destination.complete();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\n\n/**\n * Groups pairs of consecutive emissions together and emits them as an array of\n * two values.\n *\n * Puts the current value and previous value together as\n * an array, and emits that.\n *\n * ![](pairwise.png)\n *\n * The Nth emission from the source Observable will cause the output Observable\n * to emit an array [(N-1)th, Nth] of the previous and the current value, as a\n * pair. For this reason, `pairwise` emits on the second and subsequent\n * emissions from the source Observable, but not on the first emission, because\n * there is no previous value in that case.\n *\n * ## Example\n * On every click (starting from the second), emit the relative distance to the previous click\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { pairwise, map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const pairs = clicks.pipe(pairwise());\n * const distance = pairs.pipe(\n * map(pair => {\n * const x0 = pair[0].clientX;\n * const y0 = pair[0].clientY;\n * const x1 = pair[1].clientX;\n * const y1 = pair[1].clientY;\n * return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2));\n * }),\n * );\n * distance.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n *\n * @return {Observable>} An Observable of pairs (as arrays) of\n * consecutive values from the source Observable.\n * @method pairwise\n * @owner Observable\n */\nexport function pairwise(): OperatorFunction {\n return (source: Observable) => source.lift(new PairwiseOperator());\n}\n\nclass PairwiseOperator implements Operator {\n call(subscriber: Subscriber<[T, T]>, source: any): any {\n return source.subscribe(new PairwiseSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass PairwiseSubscriber extends Subscriber {\n private prev: T;\n private hasPrev: boolean = false;\n\n constructor(destination: Subscriber<[T, T]>) {\n super(destination);\n }\n\n _next(value: T): void {\n let pair: [T, T] | undefined;\n\n if (this.hasPrev) {\n pair = [this.prev, value];\n } else {\n this.hasPrev = true;\n }\n\n this.prev = value;\n\n if (pair) {\n this.destination.next(pair);\n }\n }\n}\n","import { not } from '../util/not';\nimport { filter } from './filter';\nimport { Observable } from '../Observable';\nimport { UnaryFunction } from '../types';\n\n/**\n * Splits the source Observable into two, one with values that satisfy a\n * predicate, and another with values that don't satisfy the predicate.\n *\n * It's like {@link filter}, but returns two Observables:\n * one like the output of {@link filter}, and the other with values that did not\n * pass the condition.\n *\n * ![](partition.png)\n *\n * `partition` outputs an array with two Observables that partition the values\n * from the source Observable through the given `predicate` function. The first\n * Observable in that array emits source values for which the predicate argument\n * returns true. The second Observable emits source values for which the\n * predicate returns false. The first behaves like {@link filter} and the second\n * behaves like {@link filter} with the predicate negated.\n *\n * ## Example\n * Partition click events into those on DIV elements and those elsewhere\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { partition } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const parts = clicks.pipe(partition(ev => ev.target.tagName === 'DIV'));\n * const clicksOnDivs = parts[0];\n * const clicksElsewhere = parts[1];\n * clicksOnDivs.subscribe(x => console.log('DIV clicked: ', x));\n * clicksElsewhere.subscribe(x => console.log('Other clicked: ', x));\n * ```\n *\n * @see {@link filter}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted on the first Observable in the returned array, if\n * `false` the value is emitted on the second Observable in the array. The\n * `index` parameter is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {[Observable, Observable]} An array with two Observables: one\n * with values that passed the predicate, and another with values that did not\n * pass the predicate.\n * @method partition\n * @owner Observable\n * @deprecated use `partition` static creation function instead\n */\nexport function partition(predicate: (value: T, index: number) => boolean,\n thisArg?: any): UnaryFunction, [Observable, Observable]> {\n return (source: Observable) => [\n filter(predicate, thisArg)(source),\n filter(not(predicate, thisArg) as any)(source)\n ] as [Observable, Observable];\n}\n","import { Observable } from '../Observable';\nimport { map } from './map';\nimport { OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function pluck(k1: K1): OperatorFunction;\nexport function pluck(k1: K1, k2: K2): OperatorFunction;\nexport function pluck(k1: K1, k2: K2, k3: K3): OperatorFunction;\nexport function pluck(k1: K1, k2: K2, k3: K3, k4: K4): OperatorFunction;\nexport function pluck(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5): OperatorFunction;\nexport function pluck(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6): OperatorFunction;\nexport function pluck(...properties: string[]): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Maps each source value (an object) to its specified nested property.\n *\n * Like {@link map}, but meant only for picking one of\n * the nested properties of every emitted object.\n *\n * ![](pluck.png)\n *\n * Given a list of strings describing a path to an object property, retrieves\n * the value of a specified nested property from all values in the source\n * Observable. If a property can't be resolved, it will return `undefined` for\n * that value.\n *\n * ## Example\n * Map every click to the tagName of the clicked target element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { pluck } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const tagNames = clicks.pipe(pluck('target', 'tagName'));\n * tagNames.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n *\n * @param {...string} properties The nested properties to pluck from each source\n * value (an object).\n * @return {Observable} A new Observable of property values from the source values.\n * @method pluck\n * @owner Observable\n */\nexport function pluck(...properties: string[]): OperatorFunction {\n const length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return (source: Observable) => map(plucker(properties, length))(source as any);\n}\n\nfunction plucker(props: string[], length: number): (x: string) => any {\n const mapper = (x: string) => {\n let currentProp = x;\n for (let i = 0; i < length; i++) {\n const p = currentProp != null ? currentProp[props[i]] : undefined;\n if (p !== void 0) {\n currentProp = p;\n } else {\n return undefined;\n }\n }\n return currentProp;\n };\n\n return mapper;\n}\n","import { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { MonoTypeOperatorFunction, OperatorFunction, UnaryFunction, ObservableInput, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function publish(): UnaryFunction, ConnectableObservable>;\nexport function publish>(selector: (shared: Observable) => O): OperatorFunction>;\nexport function publish(selector: MonoTypeOperatorFunction): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns a ConnectableObservable, which is a variety of Observable that waits until its connect method is called\n * before it begins emitting items to those Observers that have subscribed to it.\n *\n * Makes a cold Observable hot\n *\n * ![](publish.png)\n *\n * ## Examples\n * Make source$ hot by applying publish operator, then merge each inner observable into a single one\n * and subscribe.\n * ```ts\n * import { of, zip, interval, merge } from \"rxjs\";\n * import { map, publish, tap } from \"rxjs/operators\";\n *\n * const source$ = zip(interval(2000), of(1, 2, 3, 4, 5, 6, 7, 8, 9)).pipe(\n * map(values => values[1])\n * );\n *\n * source$\n * .pipe(\n * publish(multicasted$ =>\n * merge(\n * multicasted$.pipe(tap(x => console.log('Stream 1:', x))),\n * multicasted$.pipe(tap(x => console.log('Stream 2:', x))),\n * multicasted$.pipe(tap(x => console.log('Stream 3:', x))),\n * )\n * )\n * )\n * .subscribe();\n *\n * // Results every two seconds\n * // Stream 1: 1\n * // Stream 2: 1\n * // Stream 3: 1\n * // ...\n * // Stream 1: 9\n * // Stream 2: 9\n * // Stream 3: 9\n * ```\n *\n * @param {Function} [selector] - Optional selector function which can use the multicasted source sequence as many times\n * as needed, without causing multiple subscriptions to the source sequence.\n * Subscribers to the given source will receive all notifications of the source from the time of the subscription on.\n * @return A ConnectableObservable that upon connection causes the source Observable to emit items to its Observers.\n * @method publish\n * @owner Observable\n *\n *\n */\nexport function publish(selector?: OperatorFunction): MonoTypeOperatorFunction | OperatorFunction {\n return selector ?\n multicast(() => new Subject(), selector) :\n multicast(new Subject());\n}\n","import { Observable } from '../Observable';\nimport { BehaviorSubject } from '../BehaviorSubject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { UnaryFunction } from '../types';\n\n/**\n * @param value\n * @return {ConnectableObservable}\n * @method publishBehavior\n * @owner Observable\n */\nexport function publishBehavior(value: T): UnaryFunction, ConnectableObservable> {\n return (source: Observable) => multicast(new BehaviorSubject(value))(source) as ConnectableObservable;\n}\n","import { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { UnaryFunction } from '../types';\n\n/**\n * Returns a connectable observable sequence that shares a single subscription to the\n * underlying sequence containing only the last notification.\n *\n * ![](publishLast.png)\n *\n * Similar to {@link publish}, but it waits until the source observable completes and stores\n * the last emitted value.\n * Similarly to {@link publishReplay} and {@link publishBehavior}, this keeps storing the last\n * value even if it has no more subscribers. If subsequent subscriptions happen, they will\n * immediately get that last stored value and complete.\n *\n * ## Example\n *\n * ```ts\n * import { interval } from 'rxjs';\n * import { publishLast, tap, take } from 'rxjs/operators';\n *\n * const connectable =\n * interval(1000)\n * .pipe(\n * tap(x => console.log(\"side effect\", x)),\n * take(3),\n * publishLast());\n *\n * connectable.subscribe(\n * x => console.log( \"Sub. A\", x),\n * err => console.log(\"Sub. A Error\", err),\n * () => console.log( \"Sub. A Complete\"));\n *\n * connectable.subscribe(\n * x => console.log( \"Sub. B\", x),\n * err => console.log(\"Sub. B Error\", err),\n * () => console.log( \"Sub. B Complete\"));\n *\n * connectable.connect();\n *\n * // Results:\n * // \"side effect 0\"\n * // \"side effect 1\"\n * // \"side effect 2\"\n * // \"Sub. A 2\"\n * // \"Sub. B 2\"\n * // \"Sub. A Complete\"\n * // \"Sub. B Complete\"\n * ```\n *\n * @see {@link ConnectableObservable}\n * @see {@link publish}\n * @see {@link publishReplay}\n * @see {@link publishBehavior}\n *\n * @return {ConnectableObservable} An observable sequence that contains the elements of a\n * sequence produced by multicasting the source sequence.\n * @method publishLast\n * @owner Observable\n */\n\nexport function publishLast(): UnaryFunction, ConnectableObservable> {\n return (source: Observable) => multicast(new AsyncSubject())(source);\n}\n","import { Observable } from '../Observable';\nimport { ReplaySubject } from '../ReplaySubject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { UnaryFunction, MonoTypeOperatorFunction, OperatorFunction, SchedulerLike, ObservableInput, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function publishReplay(bufferSize?: number, windowTime?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\nexport function publishReplay>(bufferSize?: number, windowTime?: number, selector?: (shared: Observable) => O, scheduler?: SchedulerLike): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\nexport function publishReplay(bufferSize?: number,\n windowTime?: number,\n selectorOrScheduler?: SchedulerLike | OperatorFunction,\n scheduler?: SchedulerLike): UnaryFunction, ConnectableObservable> {\n\n if (selectorOrScheduler && typeof selectorOrScheduler !== 'function') {\n scheduler = selectorOrScheduler;\n }\n\n const selector = typeof selectorOrScheduler === 'function' ? selectorOrScheduler : undefined;\n const subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n\n return (source: Observable) => multicast(() => subject, selector)(source) as ConnectableObservable;\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { MonoTypeOperatorFunction, OperatorFunction } from '../types';\nimport { race as raceStatic } from '../observable/race';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static race. */\nexport function race(observables: Array>): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static race. */\nexport function race(observables: Array>): OperatorFunction;\n/** @deprecated Deprecated in favor of static race. */\nexport function race(...observables: Array | Array>>): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static race. */\nexport function race(...observables: Array | Array>>): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that mirrors the first source Observable to emit a next,\n * error or complete notification from the combination of this Observable and supplied Observables.\n * @param {...Observables} ...observables Sources used to race for which Observable emits first.\n * @return {Observable} An Observable that mirrors the output of the first Observable to emit an item.\n * @method race\n * @owner Observable\n * @deprecated Deprecated in favor of static {@link race}.\n */\nexport function race(...observables: (Observable | Observable[])[]): MonoTypeOperatorFunction {\n return function raceOperatorFunction(source: Observable) {\n // if the only argument is an array, it was most likely called with\n // `pair([obs1, obs2, ...])`\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0] as Observable[];\n }\n\n return source.lift.call(raceStatic(source, ...(observables as Observable[])));\n };\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { empty } from '../observable/empty';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that will resubscribe to the source stream when the source stream completes, at most count times.\n *\n * Repeats all values emitted on the source. It's like {@link retry}, but for non error cases.\n *\n * ![](repeat.png)\n *\n * Similar to {@link retry}, this operator repeats the stream of items emitted by the source for non error cases.\n * Repeat can be useful for creating observables that are meant to have some repeated pattern or rhythm.\n *\n * Note: `repeat(0)` returns an empty observable and `repeat()` will repeat forever\n *\n * ## Example\n * Repeat a message stream\n * ```ts\n * import { of } from 'rxjs';\n * import { repeat, delay } from 'rxjs/operators';\n *\n * const source = of('Repeat message');\n * const example = source.pipe(repeat(3));\n * example.subscribe(x => console.log(x));\n *\n * // Results\n * // Repeat message\n * // Repeat message\n * // Repeat message\n * ```\n *\n * Repeat 3 values, 2 times\n * ```ts\n * import { interval } from 'rxjs';\n * import { repeat, take } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const example = source.pipe(take(3), repeat(2));\n * example.subscribe(x => console.log(x));\n *\n * // Results every second\n * // 0\n * // 1\n * // 2\n * // 0\n * // 1\n * // 2\n * ```\n *\n * @see {@link repeatWhen}\n * @see {@link retry}\n *\n * @param {number} [count] The number of times the source Observable items are repeated, a count of 0 will yield\n * an empty Observable.\n * @return {Observable} An Observable that will resubscribe to the source stream when the source stream completes\n * , at most count times.\n * @method repeat\n * @owner Observable\n */\nexport function repeat(count: number = -1): MonoTypeOperatorFunction {\n return (source: Observable) => {\n if (count === 0) {\n return empty();\n } else if (count < 0) {\n return source.lift(new RepeatOperator(-1, source));\n } else {\n return source.lift(new RepeatOperator(count - 1, source));\n }\n };\n}\n\nclass RepeatOperator implements Operator {\n constructor(private count: number,\n private source: Observable) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RepeatSubscriber(subscriber, this.count, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass RepeatSubscriber extends Subscriber {\n constructor(destination: Subscriber,\n private count: number,\n private source: Observable) {\n super(destination);\n }\n complete() {\n if (!this.isStopped) {\n const { source, count } = this;\n if (count === 0) {\n return super.complete();\n } else if (count > -1) {\n this.count = count - 1;\n }\n source.subscribe(this._unsubscribeAndRecycle());\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of a `complete`. If the source\n * Observable calls `complete`, this method will emit to the Observable returned from `notifier`. If that Observable\n * calls `complete` or `error`, then this method will call `complete` or `error` on the child subscription. Otherwise\n * this method will resubscribe to the source Observable.\n *\n * ![](repeatWhen.png)\n *\n * ## Example\n * Repeat a message stream on click\n * ```ts\n * import { of, fromEvent } from 'rxjs';\n * import { repeatWhen } from 'rxjs/operators';\n *\n * const source = of('Repeat message');\n * const documentClick$ = fromEvent(document, 'click');\n *\n * source.pipe(repeatWhen(() => documentClick$)\n * ).subscribe(data => console.log(data))\n * ```\n * @see {@link repeat}\n * @see {@link retry}\n * @see {@link retryWhen}\n *\n * @param {function(notifications: Observable): Observable} notifier - Receives an Observable of notifications with\n * which a user can `complete` or `error`, aborting the repetition.\n * @return {Observable} The source Observable modified with repeat logic.\n * @method repeatWhen\n * @owner Observable\n */\nexport function repeatWhen(notifier: (notifications: Observable) => Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new RepeatWhenOperator(notifier));\n}\n\nclass RepeatWhenOperator implements Operator {\n constructor(protected notifier: (notifications: Observable) => Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RepeatWhenSubscriber(subscriber, this.notifier, source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass RepeatWhenSubscriber extends SimpleOuterSubscriber {\n\n private notifications?: Subject;\n private retries?: Observable;\n private retriesSubscription?: Subscription;\n private sourceIsBeingSubscribedTo: boolean = true;\n\n constructor(destination: Subscriber,\n private notifier: (notifications: Observable) => Observable,\n private source: Observable) {\n super(destination);\n }\n\n notifyNext(): void {\n this.sourceIsBeingSubscribedTo = true;\n this.source.subscribe(this);\n }\n\n notifyComplete(): void {\n if (this.sourceIsBeingSubscribedTo === false) {\n return super.complete();\n }\n }\n\n complete() {\n this.sourceIsBeingSubscribedTo = false;\n\n if (!this.isStopped) {\n if (!this.retries) {\n this.subscribeToRetries();\n }\n if (!this.retriesSubscription || this.retriesSubscription.closed) {\n return super.complete();\n }\n\n this._unsubscribeAndRecycle();\n this.notifications!.next(undefined);\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { notifications, retriesSubscription } = this;\n if (notifications) {\n notifications.unsubscribe();\n this.notifications = undefined;\n }\n if (retriesSubscription) {\n retriesSubscription.unsubscribe();\n this.retriesSubscription = undefined;\n }\n this.retries = undefined;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribeAndRecycle(): Subscriber {\n const { _unsubscribe } = this;\n\n this._unsubscribe = null!;\n super._unsubscribeAndRecycle();\n this._unsubscribe = _unsubscribe;\n\n return this;\n }\n\n private subscribeToRetries() {\n this.notifications = new Subject();\n let retries;\n try {\n const { notifier } = this;\n retries = notifier(this.notifications);\n } catch (e) {\n return super.complete();\n }\n this.retries = retries;\n this.retriesSubscription = innerSubscribe(retries, new SimpleInnerSubscriber(this));\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable\n * calls `error`, this method will resubscribe to the source Observable for a maximum of `count` resubscriptions (given\n * as a number parameter) rather than propagating the `error` call.\n *\n * ![](retry.png)\n *\n * Any and all items emitted by the source Observable will be emitted by the resulting Observable, even those emitted\n * during failed subscriptions. For example, if an Observable fails at first but emits [1, 2] then succeeds the second\n * time and emits: [1, 2, 3, 4, 5] then the complete stream of emissions and notifications\n * would be: [1, 2, 1, 2, 3, 4, 5, `complete`].\n *\n * ## Example\n * ```ts\n * import { interval, of, throwError } from 'rxjs';\n * import { mergeMap, retry } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const example = source.pipe(\n * mergeMap(val => {\n * if(val > 5){\n * return throwError('Error!');\n * }\n * return of(val);\n * }),\n * //retry 2 times on error\n * retry(2)\n * );\n *\n * const subscribe = example.subscribe({\n * next: val => console.log(val),\n * error: val => console.log(`${val}: Retried 2 times then quit!`)\n * });\n *\n * // Output:\n * // 0..1..2..3..4..5..\n * // 0..1..2..3..4..5..\n * // 0..1..2..3..4..5..\n * // \"Error!: Retried 2 times then quit!\"\n * ```\n *\n * @param {number} count - Number of retry attempts before failing.\n * @return {Observable} The source Observable modified with the retry logic.\n * @method retry\n * @owner Observable\n */\nexport function retry(count: number = -1): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new RetryOperator(count, source));\n}\n\nclass RetryOperator implements Operator {\n constructor(private count: number,\n private source: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RetrySubscriber(subscriber, this.count, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass RetrySubscriber extends Subscriber {\n constructor(destination: Subscriber,\n private count: number,\n private source: Observable) {\n super(destination);\n }\n error(err: any) {\n if (!this.isStopped) {\n const { source, count } = this;\n if (count === 0) {\n return super.error(err);\n } else if (count > -1) {\n this.count = count - 1;\n }\n source.subscribe(this._unsubscribeAndRecycle());\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable\n * calls `error`, this method will emit the Throwable that caused the error to the Observable returned from `notifier`.\n * If that Observable calls `complete` or `error` then this method will call `complete` or `error` on the child\n * subscription. Otherwise this method will resubscribe to the source Observable.\n *\n * ![](retryWhen.png)\n *\n * @param {function(errors: Observable): Observable} notifier - Receives an Observable of notifications with which a\n * user can `complete` or `error`, aborting the retry.\n * @return {Observable} The source Observable modified with retry logic.\n * @method retryWhen\n * @owner Observable\n */\nexport function retryWhen(notifier: (errors: Observable) => Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new RetryWhenOperator(notifier, source));\n}\n\nclass RetryWhenOperator implements Operator {\n constructor(protected notifier: (errors: Observable) => Observable,\n protected source: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RetryWhenSubscriber(subscriber, this.notifier, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass RetryWhenSubscriber extends SimpleOuterSubscriber {\n\n private errors?: Subject;\n private retries?: Observable;\n private retriesSubscription?: Subscription;\n\n constructor(destination: Subscriber,\n private notifier: (errors: Observable) => Observable,\n private source: Observable) {\n super(destination);\n }\n\n error(err: any) {\n if (!this.isStopped) {\n\n let errors = this.errors;\n let retries: any = this.retries;\n let retriesSubscription = this.retriesSubscription;\n\n if (!retries) {\n errors = new Subject();\n try {\n const { notifier } = this;\n retries = notifier(errors);\n } catch (e) {\n return super.error(e);\n }\n retriesSubscription = innerSubscribe(retries, new SimpleInnerSubscriber(this));\n } else {\n this.errors = undefined;\n this.retriesSubscription = undefined;\n }\n\n this._unsubscribeAndRecycle();\n\n this.errors = errors;\n this.retries = retries;\n this.retriesSubscription = retriesSubscription;\n\n errors!.next(err);\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { errors, retriesSubscription } = this;\n if (errors) {\n errors.unsubscribe();\n this.errors = undefined;\n }\n if (retriesSubscription) {\n retriesSubscription.unsubscribe();\n this.retriesSubscription = undefined;\n }\n this.retries = undefined;\n }\n\n notifyNext(): void {\n const { _unsubscribe } = this;\n\n this._unsubscribe = null!;\n this._unsubscribeAndRecycle();\n this._unsubscribe = _unsubscribe;\n\n this.source.subscribe(this);\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Emits the most recently emitted value from the source Observable whenever\n * another Observable, the `notifier`, emits.\n *\n * It's like {@link sampleTime}, but samples whenever\n * the `notifier` Observable emits something.\n *\n * ![](sample.png)\n *\n * Whenever the `notifier` Observable emits a value or completes, `sample`\n * looks at the source Observable and emits whichever value it has most recently\n * emitted since the previous sampling, unless the source has not emitted\n * anything since the previous sampling. The `notifier` is subscribed to as soon\n * as the output Observable is subscribed.\n *\n * ## Example\n * On every click, sample the most recent \"seconds\" timer\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { sample } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = seconds.pipe(sample(clicks));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param {Observable} notifier The Observable to use for sampling the\n * source Observable.\n * @return {Observable} An Observable that emits the results of sampling the\n * values emitted by the source Observable whenever the notifier Observable\n * emits value or completes.\n * @method sample\n * @owner Observable\n */\nexport function sample(notifier: Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SampleOperator(notifier));\n}\n\nclass SampleOperator implements Operator {\n constructor(private notifier: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n const sampleSubscriber = new SampleSubscriber(subscriber);\n const subscription = source.subscribe(sampleSubscriber);\n subscription.add(innerSubscribe(this.notifier, new SimpleInnerSubscriber(sampleSubscriber)));\n return subscription;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SampleSubscriber extends SimpleOuterSubscriber {\n private value?: T;\n private hasValue: boolean = false;\n\n protected _next(value: T) {\n this.value = value;\n this.hasValue = true;\n }\n\n notifyNext(): void {\n this.emitValue();\n }\n\n notifyComplete(): void {\n this.emitValue();\n }\n\n emitValue() {\n if (this.hasValue) {\n this.hasValue = false;\n this.destination.next!(this.value!);\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Emits the most recently emitted value from the source Observable within\n * periodic time intervals.\n *\n * Samples the source Observable at periodic time\n * intervals, emitting what it samples.\n *\n * ![](sampleTime.png)\n *\n * `sampleTime` periodically looks at the source Observable and emits whichever\n * value it has most recently emitted since the previous sampling, unless the\n * source has not emitted anything since the previous sampling. The sampling\n * happens periodically in time every `period` milliseconds (or the time unit\n * defined by the optional `scheduler` argument). The sampling starts as soon as\n * the output Observable is subscribed.\n *\n * ## Example\n * Every second, emit the most recent click at most once\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { sampleTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(sampleTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param {number} period The sampling period expressed in milliseconds or the\n * time unit determined internally by the optional `scheduler`.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the sampling.\n * @return {Observable} An Observable that emits the results of sampling the\n * values emitted by the source Observable at the specified time interval.\n * @method sampleTime\n * @owner Observable\n */\nexport function sampleTime(period: number, scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SampleTimeOperator(period, scheduler));\n}\n\nclass SampleTimeOperator implements Operator {\n constructor(private period: number,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SampleTimeSubscriber(subscriber, this.period, this.scheduler));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SampleTimeSubscriber extends Subscriber {\n lastValue: T;\n hasValue: boolean = false;\n\n constructor(destination: Subscriber,\n private period: number,\n private scheduler: SchedulerLike) {\n super(destination);\n this.add(scheduler.schedule(dispatchNotification, period, { subscriber: this, period }));\n }\n\n protected _next(value: T) {\n this.lastValue = value;\n this.hasValue = true;\n }\n\n notifyNext() {\n if (this.hasValue) {\n this.hasValue = false;\n this.destination.next(this.lastValue);\n }\n }\n}\n\nfunction dispatchNotification(this: SchedulerAction, state: any) {\n let { subscriber, period } = state;\n subscriber.notifyNext();\n this.schedule(state, period);\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\n\nimport { Observer, OperatorFunction } from '../types';\n\n/**\n * Compares all values of two observables in sequence using an optional comparator function\n * and returns an observable of a single boolean value representing whether or not the two sequences\n * are equal.\n *\n * Checks to see of all values emitted by both observables are equal, in order.\n *\n * ![](sequenceEqual.png)\n *\n * `sequenceEqual` subscribes to two observables and buffers incoming values from each observable. Whenever either\n * observable emits a value, the value is buffered and the buffers are shifted and compared from the bottom\n * up; If any value pair doesn't match, the returned observable will emit `false` and complete. If one of the\n * observables completes, the operator will wait for the other observable to complete; If the other\n * observable emits before completing, the returned observable will emit `false` and complete. If one observable never\n * completes or emits after the other complets, the returned observable will never complete.\n *\n * ## Example\n * figure out if the Konami code matches\n * ```ts\n * import { from, fromEvent } from 'rxjs';\n * import { sequenceEqual, bufferCount, mergeMap, map } from 'rxjs/operators';\n *\n * const codes = from([\n * 'ArrowUp',\n * 'ArrowUp',\n * 'ArrowDown',\n * 'ArrowDown',\n * 'ArrowLeft',\n * 'ArrowRight',\n * 'ArrowLeft',\n * 'ArrowRight',\n * 'KeyB',\n * 'KeyA',\n * 'Enter', // no start key, clearly.\n * ]);\n *\n * const keys = fromEvent(document, 'keyup').pipe(map(e => e.code));\n * const matches = keys.pipe(\n * bufferCount(11, 1),\n * mergeMap(\n * last11 => from(last11).pipe(sequenceEqual(codes)),\n * ),\n * );\n * matches.subscribe(matched => console.log('Successful cheat at Contra? ', matched));\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n * @see {@link withLatestFrom}\n *\n * @param {Observable} compareTo The observable sequence to compare the source sequence to.\n * @param {function} [comparator] An optional function to compare each value pair\n * @return {Observable} An Observable of a single boolean value representing whether or not\n * the values emitted by both observables were equal in sequence.\n * @method sequenceEqual\n * @owner Observable\n */\nexport function sequenceEqual(compareTo: Observable,\n comparator?: (a: T, b: T) => boolean): OperatorFunction {\n return (source: Observable) => source.lift(new SequenceEqualOperator(compareTo, comparator));\n}\n\nexport class SequenceEqualOperator implements Operator {\n constructor(private compareTo: Observable,\n private comparator: (a: T, b: T) => boolean) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new SequenceEqualSubscriber(subscriber, this.compareTo, this.comparator));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SequenceEqualSubscriber extends Subscriber {\n private _a: T[] = [];\n private _b: T[] = [];\n private _oneComplete = false;\n\n constructor(destination: Observer,\n private compareTo: Observable,\n private comparator: (a: T, b: T) => boolean) {\n super(destination);\n (this.destination as Subscription).add(compareTo.subscribe(new SequenceEqualCompareToSubscriber(destination, this)));\n }\n\n protected _next(value: T): void {\n if (this._oneComplete && this._b.length === 0) {\n this.emit(false);\n } else {\n this._a.push(value);\n this.checkValues();\n }\n }\n\n public _complete(): void {\n if (this._oneComplete) {\n this.emit(this._a.length === 0 && this._b.length === 0);\n } else {\n this._oneComplete = true;\n }\n this.unsubscribe();\n }\n\n checkValues() {\n const { _a, _b, comparator } = this;\n while (_a.length > 0 && _b.length > 0) {\n let a = _a.shift();\n let b = _b.shift();\n let areEqual = false;\n try {\n areEqual = comparator ? comparator(a, b) : a === b;\n } catch (e) {\n this.destination.error(e);\n }\n if (!areEqual) {\n this.emit(false);\n }\n }\n }\n\n emit(value: boolean) {\n const { destination } = this;\n destination.next(value);\n destination.complete();\n }\n\n nextB(value: T) {\n if (this._oneComplete && this._a.length === 0) {\n this.emit(false);\n } else {\n this._b.push(value);\n this.checkValues();\n }\n }\n\n completeB() {\n if (this._oneComplete) {\n this.emit(this._a.length === 0 && this._b.length === 0);\n } else {\n this._oneComplete = true;\n }\n }\n}\n\nclass SequenceEqualCompareToSubscriber extends Subscriber {\n constructor(destination: Observer, private parent: SequenceEqualSubscriber) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.parent.nextB(value);\n }\n\n protected _error(err: any): void {\n this.parent.error(err);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.completeB();\n this.unsubscribe();\n }\n}\n","import { Observable } from '../Observable';\nimport { multicast } from './multicast';\nimport { refCount } from './refCount';\nimport { Subject } from '../Subject';\n\nimport { MonoTypeOperatorFunction } from '../types';\n\nfunction shareSubjectFactory() {\n return new Subject();\n}\n\n/**\n * Returns a new Observable that multicasts (shares) the original Observable. As long as there is at least one\n * Subscriber this Observable will be subscribed and emitting data. When all subscribers have unsubscribed it will\n * unsubscribe from the source Observable. Because the Observable is multicasting it makes the stream `hot`.\n * This is an alias for `multicast(() => new Subject()), refCount()`.\n *\n * ![](share.png)\n *\n * @return {Observable} An Observable that upon connection causes the source Observable to emit items to its Observers.\n * @method share\n * @owner Observable\n */\nexport function share(): MonoTypeOperatorFunction {\n return (source: Observable) => refCount()(multicast(shareSubjectFactory)(source)) as Observable;\n}\n","import { Observable } from '../Observable';\nimport { ReplaySubject } from '../ReplaySubject';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { Subscriber } from '../Subscriber';\n\nexport interface ShareReplayConfig {\n bufferSize?: number;\n windowTime?: number;\n refCount: boolean;\n scheduler?: SchedulerLike;\n}\n\n/**\n * Share source and replay specified number of emissions on subscription.\n *\n * This operator is a specialization of `replay` that connects to a source observable\n * and multicasts through a `ReplaySubject` constructed with the specified arguments.\n * A successfully completed source will stay cached in the `shareReplayed observable` forever,\n * but an errored source can be retried.\n *\n * ## Why use shareReplay?\n * You generally want to use `shareReplay` when you have side-effects or taxing computations\n * that you do not wish to be executed amongst multiple subscribers.\n * It may also be valuable in situations where you know you will have late subscribers to\n * a stream that need access to previously emitted values.\n * This ability to replay values on subscription is what differentiates {@link share} and `shareReplay`.\n *\n * ![](shareReplay.png)\n *\n * ## Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { shareReplay, take } from 'rxjs/operators';\n *\n * const obs$ = interval(1000);\n * const shared$ = obs$.pipe(\n * take(4),\n * shareReplay(3)\n * );\n * shared$.subscribe(x => console.log('source A: ', x));\n * shared$.subscribe(y => console.log('source B: ', y));\n *\n * ```\n *\n * @see {@link publish}\n * @see {@link share}\n * @see {@link publishReplay}\n *\n * @param {Number} [bufferSize=Number.POSITIVE_INFINITY] Maximum element count of the replay buffer.\n * @param {Number} [windowTime=Number.POSITIVE_INFINITY] Maximum time length of the replay buffer in milliseconds.\n * @param {Scheduler} [scheduler] Scheduler where connected observers within the selector function\n * will be invoked on.\n * @return {Observable} An observable sequence that contains the elements of a sequence produced\n * by multicasting the source sequence within a selector function.\n * @method shareReplay\n * @owner Observable\n */\nexport function shareReplay(\n config: ShareReplayConfig\n): MonoTypeOperatorFunction;\nexport function shareReplay(\n bufferSize?: number,\n windowTime?: number,\n scheduler?: SchedulerLike\n): MonoTypeOperatorFunction;\nexport function shareReplay(\n configOrBufferSize?: ShareReplayConfig | number,\n windowTime?: number,\n scheduler?: SchedulerLike\n): MonoTypeOperatorFunction {\n let config: ShareReplayConfig;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n config = configOrBufferSize as ShareReplayConfig;\n } else {\n config = {\n bufferSize: configOrBufferSize as number | undefined,\n windowTime,\n refCount: false,\n scheduler,\n };\n }\n return (source: Observable) => source.lift(shareReplayOperator(config));\n}\n\nfunction shareReplayOperator({\n bufferSize = Number.POSITIVE_INFINITY,\n windowTime = Number.POSITIVE_INFINITY,\n refCount: useRefCount,\n scheduler,\n}: ShareReplayConfig) {\n let subject: ReplaySubject | undefined;\n let refCount = 0;\n let subscription: Subscription | undefined;\n let hasError = false;\n let isComplete = false;\n\n return function shareReplayOperation(\n this: Subscriber,\n source: Observable\n ) {\n refCount++;\n let innerSub: Subscription;\n if (!subject || hasError) {\n hasError = false;\n subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n innerSub = subject.subscribe(this);\n subscription = source.subscribe({\n next(value) {\n subject.next(value);\n },\n error(err) {\n hasError = true;\n subject.error(err);\n },\n complete() {\n isComplete = true;\n subscription = undefined;\n subject.complete();\n },\n });\n\n // Here we need to check to see if the source synchronously completed. Although\n // we're setting `subscription = undefined` in the completion handler, if the source\n // is synchronous, that will happen *before* subscription is set by the return of\n // the `subscribe` call.\n if (isComplete) {\n subscription = undefined;\n }\n } else {\n innerSub = subject.subscribe(this);\n }\n\n this.add(() => {\n refCount--;\n innerSub.unsubscribe();\n innerSub = undefined;\n if (subscription && !isComplete && useRefCount && refCount === 0) {\n subscription.unsubscribe();\n subscription = undefined;\n subject = undefined;\n }\n });\n };\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { EmptyError } from '../util/EmptyError';\n\nimport { Observer, MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that emits the single item emitted by the source Observable that matches a specified\n * predicate, if that Observable emits one such item. If the source Observable emits more than one such item or no\n * items, notify of an IllegalArgumentException or NoSuchElementException respectively. If the source Observable\n * emits items but none match the specified predicate then `undefined` is emitted.\n *\n * Like {@link first}, but emit with error notification if there is more than one value.\n * ![](single.png)\n *\n * ## Example\n * emits 'error'\n * ```ts\n * import { range } from 'rxjs';\n * import { single } from 'rxjs/operators';\n *\n * const numbers = range(1,5).pipe(single());\n * numbers.subscribe(x => console.log('never get called'), e => console.log('error'));\n * // result\n * // 'error'\n * ```\n *\n * emits 'undefined'\n * ```ts\n * import { range } from 'rxjs';\n * import { single } from 'rxjs/operators';\n *\n * const numbers = range(1,5).pipe(single(x => x === 10));\n * numbers.subscribe(x => console.log(x));\n * // result\n * // 'undefined'\n * ```\n *\n * @see {@link first}\n * @see {@link find}\n * @see {@link findIndex}\n * @see {@link elementAt}\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * @param {Function} predicate - A predicate function to evaluate items emitted by the source Observable.\n * @return {Observable} An Observable that emits the single item emitted by the source Observable that matches\n * the predicate or `undefined` when no items match.\n *\n * @method single\n * @owner Observable\n */\nexport function single(predicate?: (value: T, index: number, source: Observable) => boolean): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SingleOperator(predicate, source));\n}\n\nclass SingleOperator implements Operator {\n constructor(private predicate?: (value: T, index: number, source: Observable) => boolean,\n private source?: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SingleSubscriber(subscriber, this.predicate, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SingleSubscriber extends Subscriber {\n private seenValue: boolean = false;\n private singleValue: T;\n private index: number = 0;\n\n constructor(destination: Observer,\n private predicate?: (value: T, index: number, source: Observable) => boolean,\n private source?: Observable) {\n super(destination);\n }\n\n private applySingleValue(value: T): void {\n if (this.seenValue) {\n this.destination.error('Sequence contains more than one element');\n } else {\n this.seenValue = true;\n this.singleValue = value;\n }\n }\n\n protected _next(value: T): void {\n const index = this.index++;\n\n if (this.predicate) {\n this.tryNext(value, index);\n } else {\n this.applySingleValue(value);\n }\n }\n\n private tryNext(value: T, index: number): void {\n try {\n if (this.predicate(value, index, this.source)) {\n this.applySingleValue(value);\n }\n } catch (err) {\n this.destination.error(err);\n }\n }\n\n protected _complete(): void {\n const destination = this.destination;\n\n if (this.index > 0) {\n destination.next(this.seenValue ? this.singleValue : undefined);\n destination.complete();\n } else {\n destination.error(new EmptyError);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that skips the first `count` items emitted by the source Observable.\n *\n * ![](skip.png)\n *\n * @param {Number} count - The number of times, items emitted by source Observable should be skipped.\n * @return {Observable} An Observable that skips values emitted by the source Observable.\n *\n * @method skip\n * @owner Observable\n */\nexport function skip(count: number): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SkipOperator(count));\n}\n\nclass SkipOperator implements Operator {\n constructor(private total: number) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SkipSubscriber(subscriber, this.total));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SkipSubscriber extends Subscriber {\n count: number = 0;\n\n constructor(destination: Subscriber, private total: number) {\n super(destination);\n }\n\n protected _next(x: T) {\n if (++this.count > this.total) {\n this.destination.next(x);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Skip the last `count` values emitted by the source Observable.\n *\n * ![](skipLast.png)\n *\n * `skipLast` returns an Observable that accumulates a queue with a length\n * enough to store the first `count` values. As more values are received,\n * values are taken from the front of the queue and produced on the result\n * sequence. This causes values to be delayed.\n *\n * ## Example\n * Skip the last 2 values of an Observable with many values\n * ```ts\n * import { range } from 'rxjs';\n * import { skipLast } from 'rxjs/operators';\n *\n * const many = range(1, 5);\n * const skipLastTwo = many.pipe(skipLast(2));\n * skipLastTwo.subscribe(x => console.log(x));\n *\n * // Results in:\n * // 1 2 3\n * ```\n *\n * @see {@link skip}\n * @see {@link skipUntil}\n * @see {@link skipWhile}\n * @see {@link take}\n *\n * @throws {ArgumentOutOfRangeError} When using `skipLast(i)`, it throws\n * ArgumentOutOrRangeError if `i < 0`.\n *\n * @param {number} count Number of elements to skip from the end of the source Observable.\n * @returns {Observable} An Observable that skips the last count values\n * emitted by the source Observable.\n * @method skipLast\n * @owner Observable\n */\nexport function skipLast(count: number): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SkipLastOperator(count));\n}\n\nclass SkipLastOperator implements Operator {\n constructor(private _skipCount: number) {\n if (this._skipCount < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n if (this._skipCount === 0) {\n // If we don't want to skip any values then just subscribe\n // to Subscriber without any further logic.\n return source.subscribe(new Subscriber(subscriber));\n } else {\n return source.subscribe(new SkipLastSubscriber(subscriber, this._skipCount));\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SkipLastSubscriber extends Subscriber {\n private _ring: T[];\n private _count: number = 0;\n\n constructor(destination: Subscriber, private _skipCount: number) {\n super(destination);\n this._ring = new Array(_skipCount);\n }\n\n protected _next(value: T): void {\n const skipCount = this._skipCount;\n const count = this._count++;\n\n if (count < skipCount) {\n this._ring[count] = value;\n } else {\n const currentIndex = count % skipCount;\n const ring = this._ring;\n const oldValue = ring[currentIndex];\n\n ring[currentIndex] = value;\n this.destination.next(oldValue);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic, ObservableInput } from '../types';\nimport { Subscription } from '../Subscription';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/**\n * Returns an Observable that skips items emitted by the source Observable until a second Observable emits an item.\n *\n * The `skipUntil` operator causes the observable stream to skip the emission of values ​​until the passed in observable emits the first value.\n * This can be particularly useful in combination with user interactions, responses of http requests or waiting for specific times to pass by.\n *\n * ![](skipUntil.png)\n *\n * Internally the `skipUntil` operator subscribes to the passed in observable (in the following called *notifier*) in order to recognize the emission\n * of its first value. When this happens, the operator unsubscribes from the *notifier* and starts emitting the values of the *source*\n * observable. It will never let the *source* observable emit any values if the *notifier* completes or throws an error without emitting\n * a value before.\n *\n * ## Example\n *\n * In the following example, all emitted values ​​of the interval observable are skipped until the user clicks anywhere within the page.\n *\n * ```ts\n * import { interval, fromEvent } from 'rxjs';\n * import { skipUntil } from 'rxjs/operators';\n *\n * const intervalObservable = interval(1000);\n * const click = fromEvent(document, 'click');\n *\n * const emitAfterClick = intervalObservable.pipe(\n * skipUntil(click)\n * );\n * // clicked at 4.6s. output: 5...6...7...8........ or\n * // clicked at 7.3s. output: 8...9...10..11.......\n * const subscribe = emitAfterClick.subscribe(value => console.log(value));\n * ```\n *\n * @param {Observable} notifier - The second Observable that has to emit an item before the source Observable's elements begin to\n * be mirrored by the resulting Observable.\n * @return {Observable} An Observable that skips items from the source Observable until the second Observable emits\n * an item, then emits the remaining items.\n * @method skipUntil\n * @owner Observable\n */\nexport function skipUntil(notifier: Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SkipUntilOperator(notifier));\n}\n\nclass SkipUntilOperator implements Operator {\n constructor(private notifier: Observable) {\n }\n\n call(destination: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SkipUntilSubscriber(destination, this.notifier));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SkipUntilSubscriber extends SimpleOuterSubscriber {\n\n private hasValue: boolean = false;\n private innerSubscription?: Subscription;\n\n constructor(destination: Subscriber, notifier: ObservableInput) {\n super(destination);\n const innerSubscriber = new SimpleInnerSubscriber(this);\n this.add(innerSubscriber);\n this.innerSubscription = innerSubscriber;\n const innerSubscription = innerSubscribe(notifier, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n this.add(innerSubscription);\n this.innerSubscription = innerSubscription;\n }\n }\n\n protected _next(value: T) {\n if (this.hasValue) {\n super._next(value);\n }\n }\n\n notifyNext(): void {\n this.hasValue = true;\n if (this.innerSubscription) {\n this.innerSubscription.unsubscribe();\n }\n }\n\n notifyComplete() {\n /* do nothing */\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that skips all items emitted by the source Observable as long as a specified condition holds\n * true, but emits all further source items as soon as the condition becomes false.\n *\n * ![](skipWhile.png)\n *\n * @param {Function} predicate - A function to test each item emitted from the source Observable.\n * @return {Observable} An Observable that begins emitting items emitted by the source Observable when the\n * specified predicate becomes false.\n * @method skipWhile\n * @owner Observable\n */\nexport function skipWhile(predicate: (value: T, index: number) => boolean): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SkipWhileOperator(predicate));\n}\n\nclass SkipWhileOperator implements Operator {\n constructor(private predicate: (value: T, index: number) => boolean) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SkipWhileSubscriber(subscriber, this.predicate));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SkipWhileSubscriber extends Subscriber {\n private skipping: boolean = true;\n private index: number = 0;\n\n constructor(destination: Subscriber,\n private predicate: (value: T, index: number) => boolean) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const destination = this.destination;\n if (this.skipping) {\n this.tryCallPredicate(value);\n }\n\n if (!this.skipping) {\n destination.next(value);\n }\n }\n\n private tryCallPredicate(value: T): void {\n try {\n const result = this.predicate(value, this.index++);\n this.skipping = Boolean(result);\n } catch (err) {\n this.destination.error(err);\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { concat } from '../observable/concat';\nimport { isScheduler } from '../util/isScheduler';\nimport { MonoTypeOperatorFunction, OperatorFunction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(scheduler: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, v4: G, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H, v6: I, scheduler: SchedulerLike): OperatorFunction;\n\nexport function startWith(v1: D): OperatorFunction;\nexport function startWith(v1: D, v2: E): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F, v4: G): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H, v6: I): OperatorFunction;\nexport function startWith(...array: D[]): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(...array: Array): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits the items you specify as arguments before it begins to emit\n * items emitted by the source Observable.\n *\n * First emits its arguments in order, and then any\n * emissions from the source.\n *\n * ![](startWith.png)\n *\n * ## Examples\n *\n * Start the chain of emissions with `\"first\"`, `\"second\"`\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * of(\"from source\")\n * .pipe(startWith(\"first\", \"second\"))\n * .subscribe(x => console.log(x));\n *\n * // results:\n * // \"first\"\n * // \"second\"\n * // \"from source\"\n * ```\n *\n * @param {...T} values - Items you want the modified Observable to emit first.\n * @param {SchedulerLike} [scheduler] - A {@link SchedulerLike} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items in the specified Iterable and then emits the items\n * emitted by the source Observable.\n * @method startWith\n * @owner Observable\n */\nexport function startWith(...array: Array): OperatorFunction {\n const scheduler = array[array.length - 1] as SchedulerLike;\n if (isScheduler(scheduler)) {\n // deprecated path\n array.pop();\n return (source: Observable) => concat(array as T[], source, scheduler);\n } else {\n return (source: Observable) => concat(array as T[], source);\n }\n}\n","import { SchedulerLike, SchedulerAction } from '../types';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { asap } from '../scheduler/asap';\nimport { isNumeric } from '../util/isNumeric';\n\nexport interface DispatchArg {\n source: Observable;\n subscriber: Subscriber;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport class SubscribeOnObservable extends Observable {\n /** @nocollapse */\n static create(source: Observable, delay: number = 0, scheduler: SchedulerLike = asap): Observable {\n return new SubscribeOnObservable(source, delay, scheduler);\n }\n\n /** @nocollapse */\n static dispatch(this: SchedulerAction, arg: DispatchArg): Subscription {\n const { source, subscriber } = arg;\n return this.add(source.subscribe(subscriber));\n }\n\n constructor(public source: Observable,\n private delayTime: number = 0,\n private scheduler: SchedulerLike = asap) {\n super();\n if (!isNumeric(delayTime) || delayTime < 0) {\n this.delayTime = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n this.scheduler = asap;\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n const delay = this.delayTime;\n const source = this.source;\n const scheduler = this.scheduler;\n\n return scheduler.schedule>(SubscribeOnObservable.dispatch, delay, {\n source, subscriber\n });\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { SubscribeOnObservable } from '../observable/SubscribeOnObservable';\nimport { MonoTypeOperatorFunction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Asynchronously subscribes Observers to this Observable on the specified {@link SchedulerLike}.\n *\n * With `subscribeOn` you can decide what type of scheduler a specific Observable will be using when it is subscribed to.\n *\n * Schedulers control the speed and order of emissions to observers from an Observable stream.\n *\n * ![](subscribeOn.png)\n *\n * ## Example\n * Given the following code:\n * ```javascript\n * import { of, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3, 4);\n * const b = of(5, 6, 7, 8, 9);\n * merge(a, b).subscribe(console.log);\n * ```\n *\n * Both Observable `a` and `b` will emit their values directly and synchronously once they are subscribed to.\n * This will result in the output of `1 2 3 4 5 6 7 8 9`.\n *\n * But if we instead us the `subscribeOn` operator declaring that we want to use the {@link asyncScheduler} for values emited by Observable `a`:\n * ```javascript\n * import { of, merge, asyncScheduler } from 'rxjs';\n * import { subscribeOn } from 'rxjs/operators';\n *\n * const a = of(1, 2, 3, 4).pipe(subscribeOn(asyncScheduler));\n * const b = of(5, 6, 7, 8, 9);\n * merge(a, b).subscribe(console.log);\n * ```\n *\n * The output will instead be `5 6 7 8 9 1 2 3 4`.\n * The reason for this is that Observable `b` emits its values directly and synchronously like before\n * but the emissions from `a` are scheduled on the event loop because we are now using the {@link asyncScheduler} for that specific Observable.\n *\n * @param {SchedulerLike} scheduler - The {@link SchedulerLike} to perform subscription actions on.\n * @return {Observable} The source Observable modified so that its subscriptions happen on the specified {@link SchedulerLike}.\n .\n * @method subscribeOn\n * @owner Observable\n */\nexport function subscribeOn(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction {\n return function subscribeOnOperatorFunction(source: Observable): Observable {\n return source.lift(new SubscribeOnOperator(scheduler, delay));\n };\n}\n\nclass SubscribeOnOperator implements Operator {\n constructor(private scheduler: SchedulerLike,\n private delay: number) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return new SubscribeOnObservable(\n source, this.delay, this.scheduler\n ).subscribe(subscriber);\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function switchMap>(project: (value: T, index: number) => O): OperatorFunction>;\n/** @deprecated resultSelector is no longer supported, use inner map instead */\nexport function switchMap>(project: (value: T, index: number) => O, resultSelector: undefined): OperatorFunction>;\n/** @deprecated resultSelector is no longer supported, use inner map instead */\nexport function switchMap>(project: (value: T, index: number) => O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables.\n *\n * ![](switchMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * ## Example\n * Generate new Observable according to source Observable values\n * ```typescript\n * import { of } from 'rxjs';\n * import { switchMap } from 'rxjs/operators';\n *\n * const switched = of(1, 2, 3).pipe(switchMap((x: number) => of(x, x ** 2, x ** 3)));\n * switched.subscribe(x => console.log(x));\n * // outputs\n * // 1\n * // 1\n * // 1\n * // 2\n * // 4\n * // 8\n * // ... and so on\n * ```\n *\n * Rerun an interval Observable on every click event\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { switchMap } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(switchMap((ev) => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchAll}\n * @see {@link switchMapTo}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional deprecated `resultSelector`) to each item\n * emitted by the source Observable and taking only the values from the most recently\n * projected inner Observable.\n * @method switchMap\n * @owner Observable\n */\nexport function switchMap>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R,\n): OperatorFunction|R> {\n if (typeof resultSelector === 'function') {\n return (source: Observable) => source.pipe(\n switchMap((a, i) => from(project(a, i)).pipe(\n map((b, ii) => resultSelector(a, b, i, ii))\n ))\n );\n }\n return (source: Observable) => source.lift(new SwitchMapOperator(project));\n}\n\nclass SwitchMapOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SwitchMapSubscriber extends SimpleOuterSubscriber {\n private index = 0;\n private innerSubscription?: Subscription;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput) {\n super(destination);\n }\n\n protected _next(value: T) {\n let result: ObservableInput;\n const index = this.index++;\n try {\n result = this.project(value, index);\n } catch (error) {\n this.destination.error!(error);\n return;\n }\n this._innerSub(result);\n }\n\n private _innerSub(result: ObservableInput) {\n const innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n this.innerSubscription = innerSubscribe(result, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (this.innerSubscription !== innerSubscriber) {\n destination.add(this.innerSubscription);\n }\n }\n\n protected _complete(): void {\n const {innerSubscription} = this;\n if (!innerSubscription || innerSubscription.closed) {\n super._complete();\n }\n this.unsubscribe();\n }\n\n protected _unsubscribe() {\n this.innerSubscription = undefined;\n }\n\n notifyComplete(): void {\n this.innerSubscription = undefined;\n if (this.isStopped) {\n super._complete();\n }\n }\n\n notifyNext(innerValue: R): void {\n this.destination.next!(innerValue);\n }\n}\n","import {OperatorFunction, ObservableInput} from '../types';\nimport { switchMap } from './switchMap';\nimport { identity } from '../util/identity';\n\nexport function switchAll(): OperatorFunction, T>;\nexport function switchAll(): OperatorFunction;\n\n/**\n * Converts a higher-order Observable into a first-order Observable\n * producing values only from the most recent observable sequence\n *\n * Flattens an Observable-of-Observables.\n *\n * ![](switchAll.png)\n *\n * `switchAll` subscribes to a source that is an observable of observables, also known as a\n * \"higher-order observable\" (or `Observable>`). It subscribes to the most recently\n * provided \"inner observable\" emitted by the source, unsubscribing from any previously subscribed\n * to inner observable, such that only the most recent inner observable may be subscribed to at\n * any point in time. The resulting observable returned by `switchAll` will only complete if the\n * source observable completes, *and* any currently subscribed to inner observable also has completed,\n * if there are any.\n *\n * ## Examples\n * Spawn a new interval observable for each click event, but for every new\n * click, cancel the previous interval and subscribe to the new one.\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { switchAll, map, tap } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click').pipe(tap(() => console.log('click')));\n * const source = clicks.pipe(map((ev) => interval(1000)));\n *\n * source.pipe(\n * switchAll()\n * ).subscribe(x => console.log(x));\n *\n * // Output\n * // click\n * // 1\n * // 2\n * // 3\n * // 4\n * // ...\n * // click\n * // 1\n * // 2\n * // 3\n * // ...\n * // click\n * // ...\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link switchMap}\n * @see {@link switchMapTo}\n * @see {@link mergeAll}\n */\n\nexport function switchAll(): OperatorFunction, T> {\n return switchMap(identity);\n}\n","import { ObservableInput, OperatorFunction } from '../types';\nimport { switchMap } from './switchMap';\n\n/* tslint:disable:max-line-length */\nexport function switchMapTo(observable: ObservableInput): OperatorFunction;\n/** @deprecated resultSelector is no longer supported. Switch to using switchMap with an inner map */\nexport function switchMapTo(observable: ObservableInput, resultSelector: undefined): OperatorFunction;\n/** @deprecated resultSelector is no longer supported. Switch to using switchMap with an inner map */\nexport function switchMapTo(observable: ObservableInput, resultSelector: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to the same Observable which is flattened multiple\n * times with {@link switchMap} in the output Observable.\n *\n * It's like {@link switchMap}, but maps each value\n * always to the same inner Observable.\n *\n * ![](switchMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then flattens those resulting Observables into one\n * single Observable, which is the output Observable. The output Observables\n * emits values only from the most recently emitted instance of\n * `innerObservable`.\n *\n * ## Example\n * Rerun an interval Observable on every click event\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { switchMapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(switchMapTo(interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMapTo}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link mergeMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @return {Observable} An Observable that emits items from the given\n * `innerObservable` (and optionally transformed through the deprecated `resultSelector`)\n * every time a value is emitted on the source Observable, and taking only the values\n * from the most recently projected inner Observable.\n * @method switchMapTo\n * @owner Observable\n */\nexport function switchMapTo(\n innerObservable: ObservableInput,\n resultSelector?: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R\n): OperatorFunction {\n return resultSelector ? switchMap(() => innerObservable, resultSelector) : switchMap(() => innerObservable);\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { innerSubscribe, SimpleInnerSubscriber, SimpleOuterSubscriber } from '../innerSubscribe';\n\n/**\n * Emits the values emitted by the source Observable until a `notifier`\n * Observable emits a value.\n *\n * Lets values pass until a second Observable,\n * `notifier`, emits a value. Then, it completes.\n *\n * ![](takeUntil.png)\n *\n * `takeUntil` subscribes and begins mirroring the source Observable. It also\n * monitors a second Observable, `notifier` that you provide. If the `notifier`\n * emits a value, the output Observable stops mirroring the source Observable\n * and completes. If the `notifier` doesn't emit any value and completes\n * then `takeUntil` will pass all values.\n *\n * ## Example\n * Tick every second until the first click happens\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { takeUntil } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = source.pipe(takeUntil(clicks));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param {Observable} notifier The Observable whose first emitted value will\n * cause the output Observable of `takeUntil` to stop emitting values from the\n * source Observable.\n * @return {Observable} An Observable that emits the values from the source\n * Observable until such time as `notifier` emits its first value.\n * @method takeUntil\n * @owner Observable\n */\nexport function takeUntil(notifier: Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new TakeUntilOperator(notifier));\n}\n\nclass TakeUntilOperator implements Operator {\n constructor(private notifier: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n const takeUntilSubscriber = new TakeUntilSubscriber(subscriber);\n const notifierSubscription = innerSubscribe(this.notifier, new SimpleInnerSubscriber(takeUntilSubscriber));\n if (notifierSubscription && !takeUntilSubscriber.seenValue) {\n takeUntilSubscriber.add(notifierSubscription);\n return source.subscribe(takeUntilSubscriber);\n }\n return takeUntilSubscriber;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeUntilSubscriber extends SimpleOuterSubscriber {\n seenValue = false;\n\n constructor(destination: Subscriber, ) {\n super(destination);\n }\n\n notifyNext(): void {\n this.seenValue = true;\n this.complete();\n }\n\n notifyComplete(): void {\n // noop\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction, MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\nexport function takeWhile(predicate: (value: T, index: number) => value is S): OperatorFunction;\nexport function takeWhile(predicate: (value: T, index: number) => value is S, inclusive: false): OperatorFunction;\nexport function takeWhile(predicate: (value: T, index: number) => boolean, inclusive?: boolean): MonoTypeOperatorFunction;\n\n/**\n * Emits values emitted by the source Observable so long as each value satisfies\n * the given `predicate`, and then completes as soon as this `predicate` is not\n * satisfied.\n *\n * Takes values from the source only while they pass the\n * condition given. When the first value does not satisfy, it completes.\n *\n * ![](takeWhile.png)\n *\n * `takeWhile` subscribes and begins mirroring the source Observable. Each value\n * emitted on the source is given to the `predicate` function which returns a\n * boolean, representing a condition to be satisfied by the source values. The\n * output Observable emits the source values until such time as the `predicate`\n * returns false, at which point `takeWhile` stops mirroring the source\n * Observable and completes the output Observable.\n *\n * ## Example\n * Emit click events only while the clientX property is greater than 200\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { takeWhile } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(takeWhile(ev => ev.clientX > 200));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates a value emitted by the source Observable and returns a boolean.\n * Also takes the (zero-based) index as the second argument.\n * @param {boolean} inclusive When set to `true` the value that caused\n * `predicate` to return `false` will also be emitted.\n * @return {Observable} An Observable that emits the values from the source\n * Observable so long as each value satisfies the condition defined by the\n * `predicate`, then completes.\n * @method takeWhile\n * @owner Observable\n */\nexport function takeWhile(\n predicate: (value: T, index: number) => boolean,\n inclusive = false): MonoTypeOperatorFunction {\n return (source: Observable) =>\n source.lift(new TakeWhileOperator(predicate, inclusive));\n}\n\nclass TakeWhileOperator implements Operator {\n constructor(\n private predicate: (value: T, index: number) => boolean,\n private inclusive: boolean) {}\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(\n new TakeWhileSubscriber(subscriber, this.predicate, this.inclusive));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeWhileSubscriber extends Subscriber {\n private index: number = 0;\n\n constructor(\n destination: Subscriber,\n private predicate: (value: T, index: number) => boolean,\n private inclusive: boolean) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const destination = this.destination;\n let result: boolean;\n try {\n result = this.predicate(value, this.index++);\n } catch (err) {\n destination.error(err);\n return;\n }\n this.nextOrComplete(value, result);\n }\n\n private nextOrComplete(value: T, predicateResult: boolean): void {\n const destination = this.destination;\n if (Boolean(predicateResult)) {\n destination.next(value);\n } else {\n if (this.inclusive) {\n destination.next(value);\n }\n destination.complete();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, PartialObserver, TeardownLogic } from '../types';\nimport { noop } from '../util/noop';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Use an observer instead of a complete callback */\nexport function tap(next: null | undefined, error: null | undefined, complete: () => void): MonoTypeOperatorFunction;\n/** @deprecated Use an observer instead of an error callback */\nexport function tap(next: null | undefined, error: (error: any) => void, complete?: () => void): MonoTypeOperatorFunction;\n/** @deprecated Use an observer instead of a complete callback */\nexport function tap(next: (value: T) => void, error: null | undefined, complete: () => void): MonoTypeOperatorFunction;\nexport function tap(next?: (x: T) => void, error?: (e: any) => void, complete?: () => void): MonoTypeOperatorFunction;\nexport function tap(observer: PartialObserver): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Perform a side effect for every emission on the source Observable, but return\n * an Observable that is identical to the source.\n *\n * Intercepts each emission on the source and runs a\n * function, but returns an output which is identical to the source as long as errors don't occur.\n *\n * ![](do.png)\n *\n * Returns a mirrored Observable of the source Observable, but modified so that\n * the provided Observer is called to perform a side effect for every value,\n * error, and completion emitted by the source. Any errors that are thrown in\n * the aforementioned Observer or handlers are safely sent down the error path\n * of the output Observable.\n *\n * This operator is useful for debugging your Observables for the correct values\n * or performing other side effects.\n *\n * Note: this is different to a `subscribe` on the Observable. If the Observable\n * returned by `tap` is not subscribed, the side effects specified by the\n * Observer will never happen. `tap` therefore simply spies on existing\n * execution, it does not trigger an execution to happen like `subscribe` does.\n *\n * ## Example\n * Map every click to the clientX position of that click, while also logging the click event\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { tap, map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const positions = clicks.pipe(\n * tap(ev => console.log(ev)),\n * map(ev => ev.clientX),\n * );\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n * @see {@link Observable#subscribe}\n *\n * @param {Observer|function} [nextOrObserver] A normal Observer object or a\n * callback for `next`.\n * @param {function} [error] Callback for errors in the source.\n * @param {function} [complete] Callback for the completion of the source.\n * @return {Observable} An Observable identical to the source, but runs the\n * specified Observer or callback(s) for each item.\n * @name tap\n */\nexport function tap(nextOrObserver?: PartialObserver | ((x: T) => void),\n error?: (e: any) => void,\n complete?: () => void): MonoTypeOperatorFunction {\n return function tapOperatorFunction(source: Observable): Observable {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\n\nclass DoOperator implements Operator {\n constructor(private nextOrObserver?: PartialObserver | ((x: T) => void),\n private error?: (e: any) => void,\n private complete?: () => void) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\n\nclass TapSubscriber extends Subscriber {\n private _context: any;\n\n private _tapNext: ((value: T) => void) = noop;\n\n private _tapError: ((err: any) => void) = noop;\n\n private _tapComplete: (() => void) = noop;\n\n constructor(destination: Subscriber,\n observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super(destination);\n this._tapError = error || noop;\n this._tapComplete = complete || noop;\n if (isFunction(observerOrNext)) {\n this._context = this;\n this._tapNext = observerOrNext;\n } else if (observerOrNext) {\n this._context = observerOrNext;\n this._tapNext = observerOrNext.next || noop;\n this._tapError = observerOrNext.error || noop;\n this._tapComplete = observerOrNext.complete || noop;\n }\n }\n\n _next(value: T) {\n try {\n this._tapNext.call(this._context, value);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(value);\n }\n\n _error(err: any) {\n try {\n this._tapError.call(this._context, err);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.error(err);\n }\n\n _complete() {\n try {\n this._tapComplete.call(this._context, );\n } catch (err) {\n this.destination.error(err);\n return;\n }\n return this.destination.complete();\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction, SubscribableOrPromise, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\nexport interface ThrottleConfig {\n leading?: boolean;\n trailing?: boolean;\n}\n\nexport const defaultThrottleConfig: ThrottleConfig = {\n leading: true,\n trailing: false\n};\n\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for a duration determined by another Observable, then repeats this\n * process.\n *\n * It's like {@link throttleTime}, but the silencing\n * duration is determined by a second Observable.\n *\n * ![](throttle.png)\n *\n * `throttle` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled by calling the `durationSelector` function with the source value,\n * which returns the \"duration\" Observable. When the duration Observable emits a\n * value or completes, the timer is disabled, and this process repeats for the\n * next source value.\n *\n * ## Example\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { throttle } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(throttle(ev => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration for each source value, returned as an Observable or a Promise.\n * @param {Object} config a configuration object to define `leading` and `trailing` behavior. Defaults\n * to `{ leading: true, trailing: false }`.\n * @return {Observable} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttle\n * @owner Observable\n */\nexport function throttle(durationSelector: (value: T) => SubscribableOrPromise,\n config: ThrottleConfig = defaultThrottleConfig): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new ThrottleOperator(durationSelector, !!config.leading, !!config.trailing));\n}\n\nclass ThrottleOperator implements Operator {\n constructor(private durationSelector: (value: T) => SubscribableOrPromise,\n private leading: boolean,\n private trailing: boolean) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(\n new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing)\n );\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc\n * @ignore\n * @extends {Ignored}\n */\nclass ThrottleSubscriber extends SimpleOuterSubscriber {\n private _throttled?: Subscription;\n private _sendValue?: T;\n private _hasValue = false;\n\n constructor(protected destination: Subscriber,\n private durationSelector: (value: T) => SubscribableOrPromise,\n private _leading: boolean,\n private _trailing: boolean) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this._hasValue = true;\n this._sendValue = value;\n\n if (!this._throttled) {\n if (this._leading) {\n this.send();\n } else {\n this.throttle(value);\n }\n }\n }\n\n private send() {\n const { _hasValue, _sendValue } = this;\n if (_hasValue) {\n this.destination.next(_sendValue);\n this.throttle(_sendValue!);\n }\n this._hasValue = false;\n this._sendValue = undefined;\n }\n\n private throttle(value: T): void {\n const duration = this.tryDurationSelector(value);\n if (!!duration) {\n this.add(this._throttled = innerSubscribe(duration, new SimpleInnerSubscriber(this)));\n }\n }\n\n private tryDurationSelector(value: T): SubscribableOrPromise | null {\n try {\n return this.durationSelector(value);\n } catch (err) {\n this.destination.error(err);\n return null;\n }\n }\n\n private throttlingDone() {\n const { _throttled, _trailing } = this;\n if (_throttled) {\n _throttled.unsubscribe();\n }\n this._throttled = undefined;\n\n if (_trailing) {\n this.send();\n }\n }\n\n notifyNext(): void {\n this.throttlingDone();\n }\n\n notifyComplete(): void {\n this.throttlingDone();\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { async } from '../scheduler/async';\nimport { Observable } from '../Observable';\nimport { ThrottleConfig, defaultThrottleConfig } from './throttle';\nimport { MonoTypeOperatorFunction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for `duration` milliseconds, then repeats this process.\n *\n * Lets a value pass, then ignores source values for the\n * next `duration` milliseconds.\n *\n * ![](throttleTime.png)\n *\n * `throttleTime` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled. After `duration` milliseconds (or the time unit determined\n * internally by the optional `scheduler`) has passed, the timer is disabled,\n * and this process repeats for the next source value. Optionally takes a\n * {@link SchedulerLike} for managing timers.\n *\n * ## Examples\n *\n * #### Limit click rate\n *\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { throttleTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(throttleTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * #### Double Click\n *\n * The following example only emits clicks which happen within a subsequent\n * delay of 400ms of the previous click. This for example can emulate a double\n * click. It makes use of the `trailing` parameter of the throttle configuration.\n *\n * ```ts\n * import { fromEvent, asyncScheduler } from 'rxjs';\n * import { throttleTime, withLatestFrom } from 'rxjs/operators';\n *\n * // defaultThottleConfig = { leading: true, trailing: false }\n * const throttleConfig = {\n * leading: false,\n * trailing: true\n * }\n *\n * const click = fromEvent(document, 'click');\n * const doubleClick = click.pipe(\n * throttleTime(400, asyncScheduler, throttleConfig)\n * );\n *\n * doubleClick.subscribe((throttleValue: Event) => {\n * console.log(`Double-clicked! Timestamp: ${throttleValue.timeStamp}`);\n * });\n * ```\n *\n * If you enable the `leading` parameter in this example, the output would be the primary click and\n * the double click, but restricts additional clicks within 400ms.\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param {number} duration Time to wait before emitting another value after\n * emitting the last value, measured in milliseconds or the time unit determined\n * internally by the optional `scheduler`.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the throttling.\n * @param {Object} config a configuration object to define `leading` and\n * `trailing` behavior. Defaults to `{ leading: true, trailing: false }`.\n * @return {Observable} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttleTime\n * @owner Observable\n */\nexport function throttleTime(duration: number,\n scheduler: SchedulerLike = async,\n config: ThrottleConfig = defaultThrottleConfig): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing));\n}\n\nclass ThrottleTimeOperator implements Operator {\n constructor(private duration: number,\n private scheduler: SchedulerLike,\n private leading: boolean,\n private trailing: boolean) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(\n new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing)\n );\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass ThrottleTimeSubscriber extends Subscriber {\n private throttled: Subscription;\n private _hasTrailingValue: boolean = false;\n private _trailingValue: T = null;\n\n constructor(destination: Subscriber,\n private duration: number,\n private scheduler: SchedulerLike,\n private leading: boolean,\n private trailing: boolean) {\n super(destination);\n }\n\n protected _next(value: T) {\n if (this.throttled) {\n if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n } else {\n this.add(this.throttled = this.scheduler.schedule>(dispatchNext, this.duration, { subscriber: this }));\n if (this.leading) {\n this.destination.next(value);\n } else if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n }\n\n protected _complete() {\n if (this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this.destination.complete();\n } else {\n this.destination.complete();\n }\n }\n\n clearThrottle() {\n const throttled = this.throttled;\n if (throttled) {\n if (this.trailing && this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this._trailingValue = null;\n this._hasTrailingValue = false;\n }\n throttled.unsubscribe();\n this.remove(throttled);\n this.throttled = null;\n }\n }\n}\n\ninterface DispatchArg {\n subscriber: ThrottleTimeSubscriber;\n}\n\nfunction dispatchNext(arg: DispatchArg) {\n const { subscriber } = arg;\n subscriber.clearThrottle();\n}\n","\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { SchedulerLike, OperatorFunction } from '../types';\nimport { scan } from './scan';\nimport { defer } from '../observable/defer';\nimport { map } from './map';\n\n/**\n *\n * Emits an object containing the current value, and the time that has\n * passed between emitting the current value and the previous value, which is\n * calculated by using the provided `scheduler`'s `now()` method to retrieve\n * the current time at each emission, then calculating the difference. The `scheduler`\n * defaults to {@link asyncScheduler}, so by default, the `interval` will be in\n * milliseconds.\n *\n * Convert an Observable that emits items into one that\n * emits indications of the amount of time elapsed between those emissions.\n *\n * ![](timeinterval.png)\n *\n * ## Examples\n * Emit inteval between current value with the last value\n *\n * ```ts\n * const seconds = interval(1000);\n *\n * seconds.pipe(timeInterval())\n * .subscribe(\n * value => console.log(value),\n * err => console.log(err),\n * );\n *\n * seconds.pipe(timeout(900))\n * .subscribe(\n * value => console.log(value),\n * err => console.log(err),\n * );\n *\n * // NOTE: The values will never be this precise,\n * // intervals created with `interval` or `setInterval`\n * // are non-deterministic.\n *\n * // {value: 0, interval: 1000}\n * // {value: 1, interval: 1000}\n * // {value: 2, interval: 1000}\n * ```\n *\n * @param {SchedulerLike} [scheduler] Scheduler used to get the current time.\n * @return {Observable<{ interval: number, value: T }>} Observable that emit infomation about value and interval\n * @method timeInterval\n */\nexport function timeInterval(scheduler: SchedulerLike = async): OperatorFunction> {\n return (source: Observable) => defer(() => {\n return source.pipe(\n // TODO(benlesh): correct these typings.\n scan(\n ({ current }, value) => ({ value, current: scheduler.now(), last: current }),\n { current: scheduler.now(), value: undefined, last: undefined }\n ) as any,\n map>(({ current, last, value }) => new TimeInterval(value, current - last)),\n );\n });\n}\n\n// TODO(benlesh): make this an interface, export the interface, but not the implemented class,\n// there's no reason users should be manually creating this type.\n\n/**\n * @deprecated exposed API, use as interface only.\n */\nexport class TimeInterval {\n constructor(public value: T, public interval: number) {}\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nimport { Observable } from '../Observable';\nimport { isDate } from '../util/isDate';\nimport { ObservableInput, OperatorFunction, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function timeoutWith(due: number | Date, withObservable: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n *\n * Errors if Observable does not emit a value in given time span, in case of which\n * subscribes to the second Observable.\n *\n * It's a version of `timeout` operator that let's you specify fallback Observable.\n *\n * ![](timeoutWith.png)\n *\n * `timeoutWith` is a variation of `timeout` operator. It behaves exactly the same,\n * still accepting as a first argument either a number or a Date, which control - respectively -\n * when values of source Observable should be emitted or when it should complete.\n *\n * The only difference is that it accepts a second, required parameter. This parameter\n * should be an Observable which will be subscribed when source Observable fails any timeout check.\n * So whenever regular `timeout` would emit an error, `timeoutWith` will instead start re-emitting\n * values from second Observable. Note that this fallback Observable is not checked for timeouts\n * itself, so it can emit values and complete at arbitrary points in time. From the moment of a second\n * subscription, Observable returned from `timeoutWith` simply mirrors fallback stream. When that\n * stream completes, it completes as well.\n *\n * Scheduler, which in case of `timeout` is provided as as second argument, can be still provided\n * here - as a third, optional parameter. It still is used to schedule timeout checks and -\n * as a consequence - when second Observable will be subscribed, since subscription happens\n * immediately after failing check.\n *\n * ## Example\n * Add fallback observable\n * ```ts\n * import { interval } from 'rxjs';\n * import { timeoutWith } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n * const minutes = interval(60 * 1000);\n *\n * seconds.pipe(timeoutWith(900, minutes))\n * .subscribe(\n * value => console.log(value), // After 900ms, will start emitting `minutes`,\n * // since first value of `seconds` will not arrive fast enough.\n * err => console.log(err), // Would be called after 900ms in case of `timeout`,\n * // but here will never be called.\n * );\n * ```\n *\n * @param {number|Date} due Number specifying period within which Observable must emit values\n * or Date specifying before when Observable should complete\n * @param {Observable} withObservable Observable which will be subscribed if source fails timeout check.\n * @param {SchedulerLike} [scheduler] Scheduler controlling when timeout checks occur.\n * @return {Observable} Observable that mirrors behaviour of source or, when timeout check fails, of an Observable\n * passed as a second parameter.\n * @method timeoutWith\n * @owner Observable\n */\nexport function timeoutWith(due: number | Date,\n withObservable: ObservableInput,\n scheduler: SchedulerLike = async): OperatorFunction {\n return (source: Observable) => {\n let absoluteTimeout = isDate(due);\n let waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due);\n return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler));\n };\n}\n\nclass TimeoutWithOperator implements Operator {\n constructor(private waitFor: number,\n private absoluteTimeout: boolean,\n private withObservable: ObservableInput,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new TimeoutWithSubscriber(\n subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TimeoutWithSubscriber extends SimpleOuterSubscriber {\n\n private action?: SchedulerAction>;\n\n constructor(destination: Subscriber,\n private absoluteTimeout: boolean,\n private waitFor: number,\n private withObservable: ObservableInput,\n private scheduler: SchedulerLike) {\n super(destination);\n this.scheduleTimeout();\n }\n\n private static dispatchTimeout(subscriber: TimeoutWithSubscriber): void {\n const { withObservable } = subscriber;\n subscriber._unsubscribeAndRecycle();\n subscriber.add(innerSubscribe(withObservable, new SimpleInnerSubscriber(subscriber)));\n }\n\n private scheduleTimeout(): void {\n const { action } = this;\n if (action) {\n // Recycle the action if we've already scheduled one. All the production\n // Scheduler Actions mutate their state/delay time and return themeselves.\n // VirtualActions are immutable, so they create and return a clone. In this\n // case, we need to set the action reference to the most recent VirtualAction,\n // to ensure that's the one we clone from next time.\n this.action = (>> action.schedule(this, this.waitFor));\n } else {\n this.add(this.action = (>> this.scheduler.schedule>(\n TimeoutWithSubscriber.dispatchTimeout as any, this.waitFor, this\n )));\n }\n }\n\n protected _next(value: T): void {\n if (!this.absoluteTimeout) {\n this.scheduleTimeout();\n }\n super._next(value);\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n this.action = undefined;\n this.scheduler = null!;\n this.withObservable = null!;\n }\n}\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { TimeoutError } from '../util/TimeoutError';\nimport { MonoTypeOperatorFunction, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\nimport { timeoutWith } from './timeoutWith';\nimport { throwError } from '../observable/throwError';\n\n/**\n *\n * Errors if Observable does not emit a value in given time span.\n *\n * Timeouts on Observable that doesn't emit values fast enough.\n *\n * ![](timeout.png)\n *\n * `timeout` operator accepts as an argument either a number or a Date.\n *\n * If number was provided, it returns an Observable that behaves like a source\n * Observable, unless there is a period of time where there is no value emitted.\n * So if you provide `100` as argument and first value comes after 50ms from\n * the moment of subscription, this value will be simply re-emitted by the resulting\n * Observable. If however after that 100ms passes without a second value being emitted,\n * stream will end with an error and source Observable will be unsubscribed.\n * These checks are performed throughout whole lifecycle of Observable - from the moment\n * it was subscribed to, until it completes or errors itself. Thus every value must be\n * emitted within specified period since previous value.\n *\n * If provided argument was Date, returned Observable behaves differently. It throws\n * if Observable did not complete before provided Date. This means that periods between\n * emission of particular values do not matter in this case. If Observable did not complete\n * before provided Date, source Observable will be unsubscribed. Other than that, resulting\n * stream behaves just as source Observable.\n *\n * `timeout` accepts also a Scheduler as a second parameter. It is used to schedule moment (or moments)\n * when returned Observable will check if source stream emitted value or completed.\n *\n * ## Examples\n * Check if ticks are emitted within certain timespan\n * ```ts\n * import { interval } from 'rxjs';\n * import { timeout } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n *\n * seconds.pipe(timeout(1100)) // Let's use bigger timespan to be safe,\n * // since `interval` might fire a bit later then scheduled.\n * .subscribe(\n * value => console.log(value), // Will emit numbers just as regular `interval` would.\n * err => console.log(err), // Will never be called.\n * );\n *\n * seconds.pipe(timeout(900))\n * .subscribe(\n * value => console.log(value), // Will never be called.\n * err => console.log(err), // Will emit error before even first value is emitted,\n * // since it did not arrive within 900ms period.\n * );\n * ```\n *\n * Use Date to check if Observable completed\n * ```ts\n * import { interval } from 'rxjs';\n * import { timeout } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n *\n * seconds.pipe(\n * timeout(new Date(\"December 17, 2020 03:24:00\")),\n * )\n * .subscribe(\n * value => console.log(value), // Will emit values as regular `interval` would\n * // until December 17, 2020 at 03:24:00.\n * err => console.log(err) // On December 17, 2020 at 03:24:00 it will emit an error,\n * // since Observable did not complete by then.\n * );\n * ```\n * @see {@link timeoutWith}\n *\n * @param {number|Date} due Number specifying period within which Observable must emit values\n * or Date specifying before when Observable should complete\n * @param {SchedulerLike} [scheduler] Scheduler controlling when timeout checks occur.\n * @return {Observable} Observable that mirrors behaviour of source, unless timeout checks fail.\n * @method timeout\n * @owner Observable\n */\nexport function timeout(due: number | Date,\n scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return timeoutWith(due, throwError(new TimeoutError()), scheduler);\n}\n","\nimport { async } from '../scheduler/async';\nimport { OperatorFunction, SchedulerLike, Timestamp as TimestampInterface } from '../types';\nimport { map } from './map';\n\n/**\n * Attaches a timestamp to each item emitted by an observable indicating when it was emitted\n *\n * The `timestamp` operator maps the *source* observable stream to an object of type\n * `{value: T, timestamp: R}`. The properties are generically typed. The `value` property contains the value\n * and type of the *source* observable. The `timestamp` is generated by the schedulers `now` function. By\n * default it uses the *async* scheduler which simply returns `Date.now()` (milliseconds since 1970/01/01\n * 00:00:00:000) and therefore is of type `number`.\n *\n * ![](timestamp.png)\n *\n * ## Example\n *\n * In this example there is a timestamp attached to the documents click event.\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { timestamp } from 'rxjs/operators';\n *\n * const clickWithTimestamp = fromEvent(document, 'click').pipe(\n * timestamp()\n * );\n *\n * // Emits data of type {value: MouseEvent, timestamp: number}\n * clickWithTimestamp.subscribe(data => {\n * console.log(data);\n * });\n * ```\n *\n * @param scheduler\n * @return {Observable>|WebSocketSubject|Observable}\n * @method timestamp\n * @owner Observable\n */\nexport function timestamp(scheduler: SchedulerLike = async): OperatorFunction> {\n return map((value: T) => new Timestamp(value, scheduler.now()));\n // return (source: Observable) => source.lift(new TimestampOperator(scheduler));\n}\n\nexport class Timestamp implements TimestampInterface {\n constructor(public value: T, public timestamp: number) {\n }\n}\n","import { reduce } from './reduce';\nimport { OperatorFunction } from '../types';\n\nfunction toArrayReducer(arr: T[], item: T, index: number) {\n if (index === 0) {\n return [item];\n }\n arr.push(item);\n return arr;\n}\n\n/**\n * Collects all source emissions and emits them as an array when the source completes.\n *\n * Get all values inside an array when the source completes\n *\n * ![](toArray.png)\n *\n * `toArray` will wait until the source Observable completes before emitting\n * the array containing all emissions. When the source Observable errors no\n * array will be emitted.\n *\n * ## Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { toArray, take } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const example = source.pipe(\n * take(10),\n * toArray()\n * );\n *\n * const subscribe = example.subscribe(val => console.log(val));\n *\n * // output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n *\n * ```\n* @return An array from an observable sequence.\n* @method toArray\n* @owner Observable\n*/\nexport function toArray(): OperatorFunction {\n return reduce(toArrayReducer, [] as T[]);\n}\n","import { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\nimport { Subject } from '../Subject';\nimport { Subscriber } from '../Subscriber';\nimport { Operator } from '../Operator';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Branch out the source Observable values as a nested Observable whenever\n * `windowBoundaries` emits.\n *\n * It's like {@link buffer}, but emits a nested Observable\n * instead of an array.\n *\n * ![](window.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits connected, non-overlapping\n * windows. It emits the current window and opens a new one whenever the\n * Observable `windowBoundaries` emits an item. Because each window is an\n * Observable, the output is a higher-order Observable.\n *\n * ## Example\n * In every window of 1 second each, emit at most 2 click events\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { window, mergeAll, map, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const sec = interval(1000);\n * const result = clicks.pipe(\n * window(sec),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link buffer}\n *\n * @param {Observable} windowBoundaries An Observable that completes the\n * previous window and starts a new window.\n * @return {Observable>} An Observable of windows, which are\n * Observables emitting values of the source Observable.\n * @method window\n * @owner Observable\n */\nexport function window(windowBoundaries: Observable): OperatorFunction> {\n return function windowOperatorFunction(source: Observable) {\n return source.lift(new WindowOperator(windowBoundaries));\n };\n}\n\nclass WindowOperator implements Operator> {\n\n constructor(private windowBoundaries: Observable) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n const windowSubscriber = new WindowSubscriber(subscriber);\n const sourceSubscription = source.subscribe(windowSubscriber);\n if (!sourceSubscription.closed) {\n windowSubscriber.add(innerSubscribe(this.windowBoundaries, new SimpleInnerSubscriber(windowSubscriber)));\n }\n return sourceSubscription;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowSubscriber extends SimpleOuterSubscriber {\n\n private window: Subject = new Subject();\n\n constructor(destination: Subscriber>) {\n super(destination);\n destination.next(this.window);\n }\n\n notifyNext(): void {\n this.openWindow();\n }\n\n notifyError(error: any): void {\n this._error(error);\n }\n\n notifyComplete(): void {\n this._complete();\n }\n\n protected _next(value: T): void {\n this.window.next(value);\n }\n\n protected _error(err: any): void {\n this.window.error(err);\n this.destination.error!(err);\n }\n\n protected _complete(): void {\n this.window.complete();\n this.destination.complete!();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n this.window = null!;\n }\n\n private openWindow(): void {\n const prevWindow = this.window;\n if (prevWindow) {\n prevWindow.complete();\n }\n const destination = this.destination;\n const newWindow = this.window = new Subject();\n destination.next!(newWindow);\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { OperatorFunction } from '../types';\n\n/**\n * Branch out the source Observable values as a nested Observable with each\n * nested Observable emitting at most `windowSize` values.\n *\n * It's like {@link bufferCount}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowCount.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits windows every `startWindowEvery`\n * items, each containing no more than `windowSize` items. When the source\n * Observable completes or encounters an error, the output Observable emits\n * the current window and propagates the notification from the source\n * Observable. If `startWindowEvery` is not provided, then new windows are\n * started immediately at the start of the source and when each window completes\n * with size `windowSize`.\n *\n * ## Examples\n * Ignore every 3rd click event, starting from the first one\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowCount, map, mergeAll, skip } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowCount(3),\n * map(win => win.pipe(skip(1))), // skip first of every 3 clicks\n * mergeAll() // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Ignore every 3rd click event, starting from the third one\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowCount, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowCount(2, 3),\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link bufferCount}\n *\n * @param {number} windowSize The maximum number of values emitted by each\n * window.\n * @param {number} [startWindowEvery] Interval at which to start a new window.\n * For example if `startWindowEvery` is `2`, then a new window will be started\n * on every other value from the source. A new window is started at the\n * beginning of the source by default.\n * @return {Observable>} An Observable of windows, which in turn\n * are Observable of values.\n * @method windowCount\n * @owner Observable\n */\nexport function windowCount(windowSize: number,\n startWindowEvery: number = 0): OperatorFunction> {\n return function windowCountOperatorFunction(source: Observable) {\n return source.lift(new WindowCountOperator(windowSize, startWindowEvery));\n };\n}\n\nclass WindowCountOperator implements Operator> {\n\n constructor(private windowSize: number,\n private startWindowEvery: number) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new WindowCountSubscriber(subscriber, this.windowSize, this.startWindowEvery));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowCountSubscriber extends Subscriber {\n private windows: Subject[] = [ new Subject() ];\n private count: number = 0;\n\n constructor(protected destination: Subscriber>,\n private windowSize: number,\n private startWindowEvery: number) {\n super(destination);\n destination.next(this.windows[0]);\n }\n\n protected _next(value: T) {\n const startWindowEvery = (this.startWindowEvery > 0) ? this.startWindowEvery : this.windowSize;\n const destination = this.destination;\n const windowSize = this.windowSize;\n const windows = this.windows;\n const len = windows.length;\n\n for (let i = 0; i < len && !this.closed; i++) {\n windows[i].next(value);\n }\n const c = this.count - windowSize + 1;\n if (c >= 0 && c % startWindowEvery === 0 && !this.closed) {\n windows.shift().complete();\n }\n if (++this.count % startWindowEvery === 0 && !this.closed) {\n const window = new Subject();\n windows.push(window);\n destination.next(window);\n }\n }\n\n protected _error(err: any) {\n const windows = this.windows;\n if (windows) {\n while (windows.length > 0 && !this.closed) {\n windows.shift().error(err);\n }\n }\n this.destination.error(err);\n }\n\n protected _complete() {\n const windows = this.windows;\n if (windows) {\n while (windows.length > 0 && !this.closed) {\n windows.shift().complete();\n }\n }\n this.destination.complete();\n }\n\n protected _unsubscribe() {\n this.count = 0;\n this.windows = null;\n }\n}\n","import { Subject } from '../Subject';\nimport { Operator } from '../Operator';\nimport { async } from '../scheduler/async';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nimport { OperatorFunction, SchedulerLike, SchedulerAction } from '../types';\n\n/**\n * Branch out the source Observable values as a nested Observable periodically\n * in time.\n *\n * It's like {@link bufferTime}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowTime.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable starts a new window periodically, as\n * determined by the `windowCreationInterval` argument. It emits each window\n * after a fixed timespan, specified by the `windowTimeSpan` argument. When the\n * source Observable completes or encounters an error, the output Observable\n * emits the current window and propagates the notification from the source\n * Observable. If `windowCreationInterval` is not provided, the output\n * Observable starts a new window when the previous window of duration\n * `windowTimeSpan` completes. If `maxWindowCount` is provided, each window\n * will emit at most fixed number of values. Window will complete immediately\n * after emitting last value and next one still will open as specified by\n * `windowTimeSpan` and `windowCreationInterval` arguments.\n *\n * ## Examples\n * In every window of 1 second each, emit at most 2 click events\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowTime, map, mergeAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowTime(1000),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Every 5 seconds start a window 1 second long, and emit at most 2 click events per window\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowTime, map, mergeAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowTime(1000, 5000),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Same as example above but with maxWindowCount instead of take\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowTime, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowTime(1000, 5000, 2), // each window has still at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link bufferTime}\n *\n * @param {number} windowTimeSpan The amount of time to fill each window.\n * @param {number} [windowCreationInterval] The interval at which to start new\n * windows.\n * @param {number} [maxWindowSize=Number.POSITIVE_INFINITY] Max number of\n * values each window can emit before completion.\n * @param {SchedulerLike} [scheduler=async] The scheduler on which to schedule the\n * intervals that determine window boundaries.\n * @return {Observable>} An observable of windows, which in turn\n * are Observables.\n * @method windowTime\n * @owner Observable\n */\nexport function windowTime(windowTimeSpan: number,\n scheduler?: SchedulerLike): OperatorFunction>;\nexport function windowTime(windowTimeSpan: number,\n windowCreationInterval: number,\n scheduler?: SchedulerLike): OperatorFunction>;\nexport function windowTime(windowTimeSpan: number,\n windowCreationInterval: number,\n maxWindowSize: number,\n scheduler?: SchedulerLike): OperatorFunction>;\n\nexport function windowTime(windowTimeSpan: number): OperatorFunction> {\n let scheduler: SchedulerLike = async;\n let windowCreationInterval: number = null;\n let maxWindowSize: number = Number.POSITIVE_INFINITY;\n\n if (isScheduler(arguments[3])) {\n scheduler = arguments[3];\n }\n\n if (isScheduler(arguments[2])) {\n scheduler = arguments[2];\n } else if (isNumeric(arguments[2])) {\n maxWindowSize = Number(arguments[2]);\n }\n\n if (isScheduler(arguments[1])) {\n scheduler = arguments[1];\n } else if (isNumeric(arguments[1])) {\n windowCreationInterval = Number(arguments[1]);\n }\n\n return function windowTimeOperatorFunction(source: Observable) {\n return source.lift(new WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler));\n };\n}\n\nclass WindowTimeOperator implements Operator> {\n\n constructor(private windowTimeSpan: number,\n private windowCreationInterval: number | null,\n private maxWindowSize: number,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new WindowTimeSubscriber(\n subscriber, this.windowTimeSpan, this.windowCreationInterval, this.maxWindowSize, this.scheduler\n ));\n }\n}\n\ninterface CreationState {\n windowTimeSpan: number;\n windowCreationInterval: number;\n subscriber: WindowTimeSubscriber;\n scheduler: SchedulerLike;\n}\n\ninterface TimeSpanOnlyState {\n window: CountedSubject;\n windowTimeSpan: number;\n subscriber: WindowTimeSubscriber;\n }\n\ninterface CloseWindowContext {\n action: SchedulerAction>;\n subscription: Subscription;\n}\n\ninterface CloseState {\n subscriber: WindowTimeSubscriber;\n window: CountedSubject;\n context: CloseWindowContext;\n}\n\nclass CountedSubject extends Subject {\n private _numberOfNextedValues: number = 0;\n\n next(value?: T): void {\n this._numberOfNextedValues++;\n super.next(value);\n }\n\n get numberOfNextedValues(): number {\n return this._numberOfNextedValues;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowTimeSubscriber extends Subscriber {\n private windows: CountedSubject[] = [];\n\n constructor(protected destination: Subscriber>,\n private windowTimeSpan: number,\n private windowCreationInterval: number | null,\n private maxWindowSize: number,\n private scheduler: SchedulerLike) {\n super(destination);\n\n const window = this.openWindow();\n if (windowCreationInterval !== null && windowCreationInterval >= 0) {\n const closeState: CloseState = { subscriber: this, window, context: null };\n const creationState: CreationState = { windowTimeSpan, windowCreationInterval, subscriber: this, scheduler };\n this.add(scheduler.schedule>(dispatchWindowClose, windowTimeSpan, closeState));\n this.add(scheduler.schedule>(dispatchWindowCreation, windowCreationInterval, creationState));\n } else {\n const timeSpanOnlyState: TimeSpanOnlyState = { subscriber: this, window, windowTimeSpan };\n this.add(scheduler.schedule>(dispatchWindowTimeSpanOnly, windowTimeSpan, timeSpanOnlyState));\n }\n }\n\n protected _next(value: T): void {\n const windows = this.windows;\n const len = windows.length;\n for (let i = 0; i < len; i++) {\n const window = windows[i];\n if (!window.closed) {\n window.next(value);\n if (window.numberOfNextedValues >= this.maxWindowSize) {\n this.closeWindow(window);\n }\n }\n }\n }\n\n protected _error(err: any): void {\n const windows = this.windows;\n while (windows.length > 0) {\n windows.shift().error(err);\n }\n this.destination.error(err);\n }\n\n protected _complete(): void {\n const windows = this.windows;\n while (windows.length > 0) {\n const window = windows.shift();\n if (!window.closed) {\n window.complete();\n }\n }\n this.destination.complete();\n }\n\n public openWindow(): CountedSubject {\n const window = new CountedSubject();\n this.windows.push(window);\n const destination = this.destination;\n destination.next(window);\n return window;\n }\n\n public closeWindow(window: CountedSubject): void {\n window.complete();\n const windows = this.windows;\n windows.splice(windows.indexOf(window), 1);\n }\n}\n\nfunction dispatchWindowTimeSpanOnly(this: SchedulerAction>, state: TimeSpanOnlyState): void {\n const { subscriber, windowTimeSpan, window } = state;\n if (window) {\n subscriber.closeWindow(window);\n }\n state.window = subscriber.openWindow();\n this.schedule(state, windowTimeSpan);\n}\n\nfunction dispatchWindowCreation(this: SchedulerAction>, state: CreationState): void {\n const { windowTimeSpan, subscriber, scheduler, windowCreationInterval } = state;\n const window = subscriber.openWindow();\n const action = this;\n let context: CloseWindowContext = { action, subscription: null };\n const timeSpanState: CloseState = { subscriber, window, context };\n context.subscription = scheduler.schedule>(dispatchWindowClose, windowTimeSpan, timeSpanState);\n action.add(context.subscription);\n action.schedule(state, windowCreationInterval);\n}\n\nfunction dispatchWindowClose(state: CloseState): void {\n const { subscriber, window, context } = state;\n if (context && context.action && context.subscription) {\n context.action.remove(context.subscription);\n }\n subscriber.closeWindow(window);\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OperatorFunction } from '../types';\n\n/**\n * Branch out the source Observable values as a nested Observable starting from\n * an emission from `openings` and ending when the output of `closingSelector`\n * emits.\n *\n * It's like {@link bufferToggle}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowToggle.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits windows that contain those items\n * emitted by the source Observable between the time when the `openings`\n * Observable emits an item and when the Observable returned by\n * `closingSelector` emits an item.\n *\n * ## Example\n * Every other second, emit the click events from the next 500ms\n * ```ts\n * import { fromEvent, interval, EMPTY } from 'rxjs';\n * import { windowToggle, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const openings = interval(1000);\n * const result = clicks.pipe(\n * windowToggle(openings, i => i % 2 ? interval(500) : EMPTY),\n * mergeAll()\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowWhen}\n * @see {@link bufferToggle}\n *\n * @param {Observable} openings An observable of notifications to start new\n * windows.\n * @param {function(value: O): Observable} closingSelector A function that takes\n * the value emitted by the `openings` observable and returns an Observable,\n * which, when it emits (either `next` or `complete`), signals that the\n * associated window should complete.\n * @return {Observable>} An observable of windows, which in turn\n * are Observables.\n * @method windowToggle\n * @owner Observable\n */\nexport function windowToggle(openings: Observable,\n closingSelector: (openValue: O) => Observable): OperatorFunction> {\n return (source: Observable) => source.lift(new WindowToggleOperator(openings, closingSelector));\n}\n\nclass WindowToggleOperator implements Operator> {\n\n constructor(private openings: Observable,\n private closingSelector: (openValue: O) => Observable) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new WindowToggleSubscriber(\n subscriber, this.openings, this.closingSelector\n ));\n }\n}\n\ninterface WindowContext {\n window: Subject;\n subscription: Subscription;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowToggleSubscriber extends OuterSubscriber {\n private contexts: WindowContext[] = [];\n private openSubscription: Subscription;\n\n constructor(destination: Subscriber>,\n private openings: Observable,\n private closingSelector: (openValue: O) => Observable) {\n super(destination);\n this.add(this.openSubscription = subscribeToResult(this, openings, openings as any));\n }\n\n protected _next(value: T) {\n const { contexts } = this;\n if (contexts) {\n const len = contexts.length;\n for (let i = 0; i < len; i++) {\n contexts[i].window.next(value);\n }\n }\n }\n\n protected _error(err: any) {\n\n const { contexts } = this;\n this.contexts = null;\n\n if (contexts) {\n const len = contexts.length;\n let index = -1;\n\n while (++index < len) {\n const context = contexts[index];\n context.window.error(err);\n context.subscription.unsubscribe();\n }\n }\n\n super._error(err);\n }\n\n protected _complete() {\n const { contexts } = this;\n this.contexts = null;\n if (contexts) {\n const len = contexts.length;\n let index = -1;\n while (++index < len) {\n const context = contexts[index];\n context.window.complete();\n context.subscription.unsubscribe();\n }\n }\n super._complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { contexts } = this;\n this.contexts = null;\n if (contexts) {\n const len = contexts.length;\n let index = -1;\n while (++index < len) {\n const context = contexts[index];\n context.window.unsubscribe();\n context.subscription.unsubscribe();\n }\n }\n }\n\n notifyNext(outerValue: any, innerValue: any,\n outerIndex: number, innerIndex: number,\n innerSub: InnerSubscriber): void {\n\n if (outerValue === this.openings) {\n let closingNotifier;\n try {\n const { closingSelector } = this;\n closingNotifier = closingSelector(innerValue);\n } catch (e) {\n return this.error(e);\n }\n\n const window = new Subject();\n const subscription = new Subscription();\n const context = { window, subscription };\n this.contexts.push(context);\n const innerSubscription = subscribeToResult(this, closingNotifier, context as any);\n\n if (innerSubscription.closed) {\n this.closeWindow(this.contexts.length - 1);\n } else {\n (innerSubscription).context = context;\n subscription.add(innerSubscription);\n }\n\n this.destination.next(window);\n } else {\n this.closeWindow(this.contexts.indexOf(outerValue));\n }\n }\n\n notifyError(err: any): void {\n this.error(err);\n }\n\n notifyComplete(inner: Subscription): void {\n if (inner !== this.openSubscription) {\n this.closeWindow(this.contexts.indexOf(( inner).context));\n }\n }\n\n private closeWindow(index: number): void {\n if (index === -1) {\n return;\n }\n\n const { contexts } = this;\n const context = contexts[index];\n const { window, subscription } = context;\n contexts.splice(index, 1);\n window.complete();\n subscription.unsubscribe();\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OperatorFunction } from '../types';\n\n/**\n * Branch out the source Observable values as a nested Observable using a\n * factory function of closing Observables to determine when to start a new\n * window.\n *\n * It's like {@link bufferWhen}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowWhen.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits connected, non-overlapping windows.\n * It emits the current window and opens a new one whenever the Observable\n * produced by the specified `closingSelector` function emits an item. The first\n * window is opened immediately when subscribing to the output Observable.\n *\n * ## Example\n * Emit only the first two clicks events in every window of [1-5] random seconds\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { windowWhen, map, mergeAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowWhen(() => interval(1000 + Math.random() * 4000)),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll() // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link bufferWhen}\n *\n * @param {function(): Observable} closingSelector A function that takes no\n * arguments and returns an Observable that signals (on either `next` or\n * `complete`) when to close the previous window and start a new one.\n * @return {Observable>} An observable of windows, which in turn\n * are Observables.\n * @method windowWhen\n * @owner Observable\n */\nexport function windowWhen(closingSelector: () => Observable): OperatorFunction> {\n return function windowWhenOperatorFunction(source: Observable) {\n return source.lift(new WindowOperator(closingSelector));\n };\n}\n\nclass WindowOperator implements Operator> {\n constructor(private closingSelector: () => Observable) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new WindowSubscriber(subscriber, this.closingSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowSubscriber extends OuterSubscriber {\n private window?: Subject;\n private closingNotification?: Subscription;\n\n constructor(protected destination: Subscriber>,\n private closingSelector: () => Observable) {\n super(destination);\n this.openWindow();\n }\n\n notifyNext(_outerValue: T, _innerValue: any,\n _outerIndex: number, _innerIndex: number,\n innerSub: InnerSubscriber): void {\n this.openWindow(innerSub);\n }\n\n notifyError(error: any): void {\n this._error(error);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n this.openWindow(innerSub);\n }\n\n protected _next(value: T): void {\n this.window!.next(value);\n }\n\n protected _error(err: any): void {\n this.window!.error(err);\n this.destination.error(err);\n this.unsubscribeClosingNotification();\n }\n\n protected _complete(): void {\n this.window!.complete();\n this.destination.complete();\n this.unsubscribeClosingNotification();\n }\n\n private unsubscribeClosingNotification(): void {\n if (this.closingNotification) {\n this.closingNotification.unsubscribe();\n }\n }\n\n private openWindow(innerSub: InnerSubscriber | null = null): void {\n if (innerSub) {\n this.remove(innerSub);\n innerSub.unsubscribe();\n }\n\n const prevWindow = this.window;\n if (prevWindow) {\n prevWindow.complete();\n }\n\n const window = this.window = new Subject();\n this.destination.next(window);\n\n let closingNotifier;\n try {\n const { closingSelector } = this;\n closingNotifier = closingSelector();\n } catch (e) {\n this.destination.error(e);\n this.window.error(e);\n return;\n }\n this.add(this.closingNotification = subscribeToResult(this, closingNotifier));\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function withLatestFrom(project: (v1: T) => R): OperatorFunction;\nexport function withLatestFrom, R>(source2: O2, project: (v1: T, v2: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, R>(v2: O2, v3: O3, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, R>(v2: O2, v3: O3, v4: O4, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(v2: O2, v3: O3, v4: O4, v5: O5, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom>(source2: O2): OperatorFunction]>;\nexport function withLatestFrom, O3 extends ObservableInput>(v2: O2, v3: O3): OperatorFunction, ObservedValueOf]>;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput>(v2: O2, v3: O3, v4: O4): OperatorFunction, ObservedValueOf, ObservedValueOf]>;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v2: O2, v3: O3, v4: O4, v5: O5): OperatorFunction, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v2: O2, v3: O3, v4: O4, v5: O5, v6: O6): OperatorFunction, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function withLatestFrom(...observables: Array | ((...values: Array) => R)>): OperatorFunction;\nexport function withLatestFrom(array: ObservableInput[]): OperatorFunction;\nexport function withLatestFrom(array: ObservableInput[], project: (...values: Array) => R): OperatorFunction;\n\n/* tslint:enable:max-line-length */\n\n/**\n * Combines the source Observable with other Observables to create an Observable\n * whose values are calculated from the latest values of each, only when the\n * source emits.\n *\n * Whenever the source Observable emits a value, it\n * computes a formula using that value plus the latest values from other input\n * Observables, then emits the output of that formula.\n *\n * ![](withLatestFrom.png)\n *\n * `withLatestFrom` combines each value from the source Observable (the\n * instance) with the latest values from the other input Observables only when\n * the source emits a value, optionally using a `project` function to determine\n * the value to be emitted on the output Observable. All input Observables must\n * emit at least one value before the output Observable will emit a value.\n *\n * ## Example\n * On every click event, emit an array with the latest timer event plus the click event\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { withLatestFrom } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const result = clicks.pipe(withLatestFrom(timer));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatest}\n *\n * @param {ObservableInput} other An input Observable to combine with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {Function} [project] Projection function for combining values\n * together. Receives all values in order of the Observables passed, where the\n * first parameter is a value from the source Observable. (e.g.\n * `a.pipe(withLatestFrom(b, c), map(([a1, b1, c1]) => a1 + b1 + c1))`). If this is not\n * passed, arrays will be emitted on the output Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n * @method withLatestFrom\n * @owner Observable\n */\nexport function withLatestFrom(...args: Array | ((...values: Array) => R)>): OperatorFunction {\n return (source: Observable) => {\n let project: any;\n if (typeof args[args.length - 1] === 'function') {\n project = args.pop();\n }\n const observables = []>args;\n return source.lift(new WithLatestFromOperator(observables, project));\n };\n}\n\nclass WithLatestFromOperator implements Operator {\n constructor(private observables: Observable[],\n private project?: (...values: any[]) => Observable) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WithLatestFromSubscriber extends OuterSubscriber {\n private values: any[];\n private toRespond: number[] = [];\n\n constructor(destination: Subscriber,\n private observables: Observable[],\n private project?: (...values: any[]) => Observable) {\n super(destination);\n const len = observables.length;\n this.values = new Array(len);\n\n for (let i = 0; i < len; i++) {\n this.toRespond.push(i);\n }\n\n for (let i = 0; i < len; i++) {\n let observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n\n notifyNext(_outerValue: T, innerValue: R,\n outerIndex: number): void {\n this.values[outerIndex] = innerValue;\n const toRespond = this.toRespond;\n if (toRespond.length > 0) {\n const found = toRespond.indexOf(outerIndex);\n if (found !== -1) {\n toRespond.splice(found, 1);\n }\n }\n }\n\n notifyComplete() {\n // noop\n }\n\n protected _next(value: T) {\n if (this.toRespond.length === 0) {\n const args = [value, ...this.values];\n if (this.project) {\n this._tryProject(args);\n } else {\n this.destination.next!(args);\n }\n }\n }\n\n private _tryProject(args: any[]) {\n let result: any;\n try {\n result = this.project!.apply(this, args);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.destination.next!(result);\n }\n}\n","import { zip as zipStatic } from '../observable/zip';\nimport { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(project: (v1: T) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, project: (v1: T, v2: T2) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, project: (v1: T, v2: T2, v3: T3) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => R): OperatorFunction ;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): OperatorFunction ;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(...observables: Array | ((...values: Array) => R)>): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(array: Array>): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(array: Array>, project: (v1: T, ...values: Array) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * @deprecated Deprecated in favor of static {@link zip}.\n */\nexport function zip(...observables: Array | ((...values: Array) => R)>): OperatorFunction {\n return function zipOperatorFunction(source: Observable) {\n return source.lift.call(zipStatic(source, ...observables));\n };\n}","import { ZipOperator } from '../observable/zip';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, ObservableInput } from '../types';\n\nexport function zipAll(): OperatorFunction, T[]>;\nexport function zipAll(): OperatorFunction;\nexport function zipAll(project: (...values: T[]) => R): OperatorFunction, R>;\nexport function zipAll(project: (...values: Array) => R): OperatorFunction;\n\nexport function zipAll(project?: (...values: Array) => R): OperatorFunction {\n return (source: Observable) => source.lift(new ZipOperator(project));\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","const util = require('util')\nconst EventEmitter = require('events/')\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n}\n\nmodule.exports = SafeEventEmitter\n\n\nfunction SafeEventEmitter() {\n EventEmitter.call(this)\n}\n\nutil.inherits(SafeEventEmitter, EventEmitter)\n\nSafeEventEmitter.prototype.emit = function (type) {\n // copied from https://github.com/Gozala/events/blob/master/events.js\n // modified lines are commented with \"edited:\"\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n // edited: using safeApply\n safeApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n // edited: using safeApply\n safeApply(listeners[i], this, args);\n }\n\n return true;\n}\n\nfunction safeApply(handler, context, args) {\n try {\n ReflectApply(handler, context, args)\n } catch (err) {\n // throw error after timeout so as not to interupt the stack\n setTimeout(() => {\n throw err\n })\n }\n}\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","\"use strict\";\n\n(function(root) {\n const MAX_VALUE = 0x7fffffff;\n\n // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n // See: https://github.com/dchest/scrypt-async-js\n function SHA256(m) {\n const K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ]);\n\n let h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n let h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n const w = new Uint32Array(64);\n\n function blocks(p) {\n let off = 0, len = p.length;\n while (len >= 64) {\n let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n for (i = 0; i < 16; i++) {\n j = off + i*4;\n w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n }\n\n for (i = 16; i < 64; i++) {\n u = w[i-2];\n t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n u = w[i-15];\n t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n }\n\n for (i = 0; i < 64; i++) {\n t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n\n off += 64;\n len -= 64;\n }\n }\n\n blocks(m);\n\n let i, bytesLeft = m.length % 64,\n bitLenHi = (m.length / 0x20000000) | 0,\n bitLenLo = m.length << 3,\n numZeros = (bytesLeft < 56) ? 56 : 120,\n p = m.slice(m.length - bytesLeft, m.length);\n\n p.push(0x80);\n for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n p.push((bitLenHi >>> 24) & 0xff);\n p.push((bitLenHi >>> 16) & 0xff);\n p.push((bitLenHi >>> 8) & 0xff);\n p.push((bitLenHi >>> 0) & 0xff);\n p.push((bitLenLo >>> 24) & 0xff);\n p.push((bitLenLo >>> 16) & 0xff);\n p.push((bitLenLo >>> 8) & 0xff);\n p.push((bitLenLo >>> 0) & 0xff);\n\n blocks(p);\n\n return [\n (h0 >>> 24) & 0xff, (h0 >>> 16) & 0xff, (h0 >>> 8) & 0xff, (h0 >>> 0) & 0xff,\n (h1 >>> 24) & 0xff, (h1 >>> 16) & 0xff, (h1 >>> 8) & 0xff, (h1 >>> 0) & 0xff,\n (h2 >>> 24) & 0xff, (h2 >>> 16) & 0xff, (h2 >>> 8) & 0xff, (h2 >>> 0) & 0xff,\n (h3 >>> 24) & 0xff, (h3 >>> 16) & 0xff, (h3 >>> 8) & 0xff, (h3 >>> 0) & 0xff,\n (h4 >>> 24) & 0xff, (h4 >>> 16) & 0xff, (h4 >>> 8) & 0xff, (h4 >>> 0) & 0xff,\n (h5 >>> 24) & 0xff, (h5 >>> 16) & 0xff, (h5 >>> 8) & 0xff, (h5 >>> 0) & 0xff,\n (h6 >>> 24) & 0xff, (h6 >>> 16) & 0xff, (h6 >>> 8) & 0xff, (h6 >>> 0) & 0xff,\n (h7 >>> 24) & 0xff, (h7 >>> 16) & 0xff, (h7 >>> 8) & 0xff, (h7 >>> 0) & 0xff\n ];\n }\n\n function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n // compress password if it's longer than hash block length\n password = (password.length <= 64) ? password : SHA256(password);\n\n const innerLen = 64 + salt.length + 4;\n const inner = new Array(innerLen);\n const outerKey = new Array(64);\n\n let i;\n let dk = [];\n\n // inner = (password ^ ipad) || salt || counter\n for (i = 0; i < 64; i++) { inner[i] = 0x36; }\n for (i = 0; i < password.length; i++) { inner[i] ^= password[i]; }\n for (i = 0; i < salt.length; i++) { inner[64 + i] = salt[i]; }\n for (i = innerLen - 4; i < innerLen; i++) { inner[i] = 0; }\n\n // outerKey = password ^ opad\n for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n // increments counter inside inner\n function incrementCounter() {\n for (let i = innerLen - 1; i >= innerLen - 4; i--) {\n inner[i]++;\n if (inner[i] <= 0xff) return;\n inner[i] = 0;\n }\n }\n\n // output blocks = SHA256(outerKey || SHA256(inner)) ...\n while (dkLen >= 32) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n dkLen -= 32;\n }\n if (dkLen > 0) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n }\n\n return dk;\n }\n\n // The following is an adaptation of scryptsy\n // See: https://www.npmjs.com/package/scryptsy\n function blockmix_salsa8(BY, Yi, r, x, _X) {\n let i;\n\n arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n for (i = 0; i < 2 * r; i++) {\n blockxor(BY, i * 16, _X, 16);\n salsa20_8(_X, x);\n arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n }\n }\n\n function R(a, b) {\n return (a << b) | (a >>> (32 - b));\n }\n\n function salsa20_8(B, x) {\n arraycopy(B, 0, x, 0, 16);\n\n for (let i = 8; i > 0; i -= 2) {\n x[ 4] ^= R(x[ 0] + x[12], 7);\n x[ 8] ^= R(x[ 4] + x[ 0], 9);\n x[12] ^= R(x[ 8] + x[ 4], 13);\n x[ 0] ^= R(x[12] + x[ 8], 18);\n x[ 9] ^= R(x[ 5] + x[ 1], 7);\n x[13] ^= R(x[ 9] + x[ 5], 9);\n x[ 1] ^= R(x[13] + x[ 9], 13);\n x[ 5] ^= R(x[ 1] + x[13], 18);\n x[14] ^= R(x[10] + x[ 6], 7);\n x[ 2] ^= R(x[14] + x[10], 9);\n x[ 6] ^= R(x[ 2] + x[14], 13);\n x[10] ^= R(x[ 6] + x[ 2], 18);\n x[ 3] ^= R(x[15] + x[11], 7);\n x[ 7] ^= R(x[ 3] + x[15], 9);\n x[11] ^= R(x[ 7] + x[ 3], 13);\n x[15] ^= R(x[11] + x[ 7], 18);\n x[ 1] ^= R(x[ 0] + x[ 3], 7);\n x[ 2] ^= R(x[ 1] + x[ 0], 9);\n x[ 3] ^= R(x[ 2] + x[ 1], 13);\n x[ 0] ^= R(x[ 3] + x[ 2], 18);\n x[ 6] ^= R(x[ 5] + x[ 4], 7);\n x[ 7] ^= R(x[ 6] + x[ 5], 9);\n x[ 4] ^= R(x[ 7] + x[ 6], 13);\n x[ 5] ^= R(x[ 4] + x[ 7], 18);\n x[11] ^= R(x[10] + x[ 9], 7);\n x[ 8] ^= R(x[11] + x[10], 9);\n x[ 9] ^= R(x[ 8] + x[11], 13);\n x[10] ^= R(x[ 9] + x[ 8], 18);\n x[12] ^= R(x[15] + x[14], 7);\n x[13] ^= R(x[12] + x[15], 9);\n x[14] ^= R(x[13] + x[12], 13);\n x[15] ^= R(x[14] + x[13], 18);\n }\n\n for (let i = 0; i < 16; ++i) {\n B[i] += x[i];\n }\n }\n\n // naive approach... going back to loop unrolling may yield additional performance\n function blockxor(S, Si, D, len) {\n for (let i = 0; i < len; i++) {\n D[i] ^= S[Si + i]\n }\n }\n\n function arraycopy(src, srcPos, dest, destPos, length) {\n while (length--) {\n dest[destPos++] = src[srcPos++];\n }\n }\n\n function checkBufferish(o) {\n if (!o || typeof(o.length) !== 'number') { return false; }\n\n for (let i = 0; i < o.length; i++) {\n const v = o[i];\n if (typeof(v) !== 'number' || v % 1 || v < 0 || v >= 256) {\n return false;\n }\n }\n\n return true;\n }\n\n function ensureInteger(value, name) {\n if (typeof(value) !== \"number\" || (value % 1)) { throw new Error('invalid ' + name); }\n return value;\n }\n\n // N = Cpu cost, r = Memory cost, p = parallelization cost\n // callback(error, progress, key)\n function _scrypt(password, salt, N, r, p, dkLen, callback) {\n\n N = ensureInteger(N, 'N');\n r = ensureInteger(r, 'r');\n p = ensureInteger(p, 'p');\n\n dkLen = ensureInteger(dkLen, 'dkLen');\n\n if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n if (!checkBufferish(password)) {\n throw new Error('password must be an array or buffer');\n }\n password = Array.prototype.slice.call(password);\n\n if (!checkBufferish(salt)) {\n throw new Error('salt must be an array or buffer');\n }\n salt = Array.prototype.slice.call(salt);\n\n let b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n const B = new Uint32Array(p * 32 * r)\n for (let i = 0; i < B.length; i++) {\n const j = i * 4;\n B[i] = ((b[j + 3] & 0xff) << 24) |\n ((b[j + 2] & 0xff) << 16) |\n ((b[j + 1] & 0xff) << 8) |\n ((b[j + 0] & 0xff) << 0);\n }\n\n const XY = new Uint32Array(64 * r);\n const V = new Uint32Array(32 * r * N);\n\n const Yi = 32 * r;\n\n // scratch space\n const x = new Uint32Array(16); // salsa20_8\n const _X = new Uint32Array(16); // blockmix_salsa8\n\n const totalOps = p * N * 2;\n let currentOp = 0;\n let lastPercent10 = null;\n\n // Set this to true to abandon the scrypt on the next step\n let stop = false;\n\n // State information\n let state = 0;\n let i0 = 0, i1;\n let Bi;\n\n // How many blockmix_salsa8 can we do per step?\n const limit = callback ? parseInt(1000 / r): 0xffffffff;\n\n // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n const nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n // This is really all I changed; making scryptsy a state machine so we occasionally\n // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n const incrementalSMix = function() {\n if (stop) {\n return callback(new Error('cancelled'), currentOp / totalOps);\n }\n\n let steps;\n\n switch (state) {\n case 0:\n // for (var i = 0; i < p; i++)...\n Bi = i0 * 32 * r;\n\n arraycopy(B, Bi, XY, 0, Yi); // ROMix - 1\n\n state = 1; // Move to ROMix 2\n i1 = 0;\n\n // Fall through\n\n case 1:\n\n // Run up to 1000 steps of the first inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 2\n arraycopy(XY, 0, V, (i1 + i) * Yi, Yi) // ROMix - 3\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 4\n }\n\n // for (var i = 0; i < N; i++)\n i1 += steps;\n currentOp += steps;\n\n if (callback) {\n // Call the callback with the progress (optionally stopping us)\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n i1 = 0; // Move to ROMix 6\n state = 2;\n\n // Fall through\n\n case 2:\n\n // Run up to 1000 steps of the second inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 6\n const offset = (2 * r - 1) * 16; // ROMix - 7\n const j = XY[offset] & (N - 1);\n blockxor(V, j * Yi, XY, Yi); // ROMix - 8 (inner)\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 9 (outer)\n }\n\n // for (var i = 0; i < N; i++)...\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n if (callback) {\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n arraycopy(XY, 0, B, Bi, Yi); // ROMix - 10\n\n // for (var i = 0; i < p; i++)...\n i0++;\n if (i0 < p) {\n state = 0;\n break;\n }\n\n b = [];\n for (let i = 0; i < B.length; i++) {\n b.push((B[i] >> 0) & 0xff);\n b.push((B[i] >> 8) & 0xff);\n b.push((B[i] >> 16) & 0xff);\n b.push((B[i] >> 24) & 0xff);\n }\n\n const derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n // Send the result to the callback\n if (callback) { callback(null, 1.0, derivedKey); }\n\n // Done; don't break (which would reschedule)\n return derivedKey;\n }\n\n // Schedule the next steps\n if (callback) { nextTick(incrementalSMix); }\n }\n\n // Run the smix state machine until completion\n if (!callback) {\n while (true) {\n const derivedKey = incrementalSMix();\n if (derivedKey != undefined) { return derivedKey; }\n }\n }\n\n // Bootstrap the async incremental smix\n incrementalSMix();\n }\n\n const lib = {\n scrypt: function(password, salt, N, r, p, dkLen, progressCallback) {\n return new Promise(function(resolve, reject) {\n let lastProgress = 0;\n if (progressCallback) { progressCallback(0); }\n _scrypt(password, salt, N, r, p, dkLen, function(error, progress, key) {\n if (error) {\n reject(error);\n } else if (key) {\n if (progressCallback && lastProgress !== 1) {\n progressCallback(1);\n }\n resolve(new Uint8Array(key));\n } else if (progressCallback && progress !== lastProgress) {\n lastProgress = progress;\n return progressCallback(progress);\n }\n });\n });\n },\n syncScrypt: function(password, salt, N, r, p, dkLen) {\n return new Uint8Array(_scrypt(password, salt, N, r, p, dkLen));\n }\n };\n\n // node.js\n if (typeof(exports) !== 'undefined') {\n module.exports = lib;\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(lib);\n\n // Web Browsers\n } else if (root) {\n\n // If there was an existing library \"scrypt\", make sure it is still available\n if (root.scrypt) {\n root._scrypt = root.scrypt;\n }\n\n root.scrypt = lib;\n }\n\n})(this);\n","module.exports = require('./lib')(require('./lib/elliptic'))\n","const EC = require('elliptic').ec\n\nconst ec = new EC('secp256k1')\nconst ecparams = ec.curve\n\n// Hack, we can not use bn.js@5, while elliptic uses bn.js@4\n// See https://github.com/indutny/elliptic/issues/191#issuecomment-569888758\nconst BN = ecparams.n.constructor\n\nfunction loadCompressedPublicKey (first, xbuf) {\n let x = new BN(xbuf)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0) return null\n x = x.toRed(ecparams.red)\n\n // compute corresponding Y\n let y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()\n if ((first === 0x03) !== y.isOdd()) y = y.redNeg()\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadUncompressedPublicKey (first, xbuf, ybuf) {\n let x = new BN(xbuf)\n let y = new BN(ybuf)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null\n\n x = x.toRed(ecparams.red)\n y = y.toRed(ecparams.red)\n\n // is odd flag\n if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null\n\n // x*x*x + b = y*y\n const x3 = x.redSqr().redIMul(x)\n if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadPublicKey (pubkey) {\n // length should be validated in interface\n const first = pubkey[0]\n switch (first) {\n case 0x02:\n case 0x03:\n if (pubkey.length !== 33) return null\n return loadCompressedPublicKey(first, pubkey.subarray(1, 33))\n case 0x04:\n case 0x06:\n case 0x07:\n if (pubkey.length !== 65) return null\n return loadUncompressedPublicKey(first, pubkey.subarray(1, 33), pubkey.subarray(33, 65))\n default:\n return null\n }\n}\n\nfunction savePublicKey (output, point) {\n const pubkey = point.encode(null, output.length === 33)\n // Loop should be faster because we do not need create extra Uint8Array\n // output.set(new Uint8Array(pubkey))\n for (let i = 0; i < output.length; ++i) output[i] = pubkey[i]\n}\n\nmodule.exports = {\n contextRandomize () {\n return 0\n },\n\n privateKeyVerify (seckey) {\n const bn = new BN(seckey)\n return bn.cmp(ecparams.n) < 0 && !bn.isZero() ? 0 : 1\n },\n\n privateKeyNegate (seckey) {\n const bn = new BN(seckey)\n const negate = ecparams.n.sub(bn).umod(ecparams.n).toArrayLike(Uint8Array, 'be', 32)\n seckey.set(negate)\n return 0\n },\n\n privateKeyTweakAdd (seckey, tweak) {\n const bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0) return 1\n\n bn.iadd(new BN(seckey))\n if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)\n if (bn.isZero()) return 1\n\n const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n seckey.set(tweaked)\n\n return 0\n },\n\n privateKeyTweakMul (seckey, tweak) {\n let bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n bn.imul(new BN(seckey))\n if (bn.cmp(ecparams.n) >= 0) bn = bn.umod(ecparams.n)\n\n const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n seckey.set(tweaked)\n\n return 0\n },\n\n publicKeyVerify (pubkey) {\n const pair = loadPublicKey(pubkey)\n return pair === null ? 1 : 0\n },\n\n publicKeyCreate (output, seckey) {\n const bn = new BN(seckey)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n const point = ec.keyFromPrivate(seckey).getPublic()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyConvert (output, pubkey) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const point = pair.getPublic()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyNegate (output, pubkey) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const point = pair.getPublic()\n point.y = point.y.redNeg()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyCombine (output, pubkeys) {\n const pairs = new Array(pubkeys.length)\n for (let i = 0; i < pubkeys.length; ++i) {\n pairs[i] = loadPublicKey(pubkeys[i])\n if (pairs[i] === null) return 1\n }\n\n let point = pairs[0].getPublic()\n for (let i = 1; i < pairs.length; ++i) point = point.add(pairs[i].pub)\n if (point.isInfinity()) return 2\n\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyTweakAdd (output, pubkey, tweak) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0) return 2\n\n const point = pair.getPublic().add(ecparams.g.mul(tweak))\n if (point.isInfinity()) return 2\n\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyTweakMul (output, pubkey, tweak) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) return 2\n\n const point = pair.getPublic().mul(tweak)\n savePublicKey(output, point)\n\n return 0\n },\n\n signatureNormalize (sig) {\n const r = new BN(sig.subarray(0, 32))\n const s = new BN(sig.subarray(32, 64))\n if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) return 1\n\n if (s.cmp(ec.nh) === 1) {\n sig.set(ecparams.n.sub(s).toArrayLike(Uint8Array, 'be', 32), 32)\n }\n\n return 0\n },\n\n // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n // Adapted for Uint8Array instead Buffer\n signatureExport (obj, sig) {\n const sigR = sig.subarray(0, 32)\n const sigS = sig.subarray(32, 64)\n if (new BN(sigR).cmp(ecparams.n) >= 0) return 1\n if (new BN(sigS).cmp(ecparams.n) >= 0) return 1\n\n const { output } = obj\n\n // Prepare R\n let r = output.subarray(4, 4 + 33)\n r[0] = 0x00\n r.set(sigR, 1)\n\n let lenR = 33\n let posR = 0\n for (; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);\n\n r = r.subarray(posR)\n if (r[0] & 0x80) return 1\n if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) return 1\n\n // Prepare S\n let s = output.subarray(6 + 33, 6 + 33 + 33)\n s[0] = 0x00\n s.set(sigS, 1)\n\n let lenS = 33\n let posS = 0\n for (; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);\n\n s = s.subarray(posS)\n if (s[0] & 0x80) return 1\n if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) return 1\n\n // Set output length for return\n obj.outputlen = 6 + lenR + lenS\n\n // Output in specified format\n // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n output[0] = 0x30\n output[1] = obj.outputlen - 2\n output[2] = 0x02\n output[3] = r.length\n output.set(r, 4)\n output[4 + lenR] = 0x02\n output[5 + lenR] = s.length\n output.set(s, 6 + lenR)\n\n return 0\n },\n\n // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n // Adapted for Uint8Array instead Buffer\n signatureImport (output, sig) {\n if (sig.length < 8) return 1\n if (sig.length > 72) return 1\n if (sig[0] !== 0x30) return 1\n if (sig[1] !== sig.length - 2) return 1\n if (sig[2] !== 0x02) return 1\n\n const lenR = sig[3]\n if (lenR === 0) return 1\n if (5 + lenR >= sig.length) return 1\n if (sig[4 + lenR] !== 0x02) return 1\n\n const lenS = sig[5 + lenR]\n if (lenS === 0) return 1\n if ((6 + lenR + lenS) !== sig.length) return 1\n\n if (sig[4] & 0x80) return 1\n if (lenR > 1 && (sig[4] === 0x00) && !(sig[5] & 0x80)) return 1\n\n if (sig[lenR + 6] & 0x80) return 1\n if (lenS > 1 && (sig[lenR + 6] === 0x00) && !(sig[lenR + 7] & 0x80)) return 1\n\n let sigR = sig.subarray(4, 4 + lenR)\n if (sigR.length === 33 && sigR[0] === 0x00) sigR = sigR.subarray(1)\n if (sigR.length > 32) return 1\n\n let sigS = sig.subarray(6 + lenR)\n if (sigS.length === 33 && sigS[0] === 0x00) sigS = sigS.slice(1)\n if (sigS.length > 32) throw new Error('S length is too long')\n\n let r = new BN(sigR)\n if (r.cmp(ecparams.n) >= 0) r = new BN(0)\n\n let s = new BN(sig.subarray(6 + lenR))\n if (s.cmp(ecparams.n) >= 0) s = new BN(0)\n\n output.set(r.toArrayLike(Uint8Array, 'be', 32), 0)\n output.set(s.toArrayLike(Uint8Array, 'be', 32), 32)\n\n return 0\n },\n\n ecdsaSign (obj, message, seckey, data, noncefn) {\n if (noncefn) {\n const _noncefn = noncefn\n noncefn = (counter) => {\n const nonce = _noncefn(message, seckey, null, data, counter)\n\n const isValid = nonce instanceof Uint8Array && nonce.length === 32\n if (!isValid) throw new Error('This is the way')\n\n return new BN(nonce)\n }\n }\n\n const d = new BN(seckey)\n if (d.cmp(ecparams.n) >= 0 || d.isZero()) return 1\n\n let sig\n try {\n sig = ec.sign(message, seckey, { canonical: true, k: noncefn, pers: data })\n } catch (err) {\n return 1\n }\n\n obj.signature.set(sig.r.toArrayLike(Uint8Array, 'be', 32), 0)\n obj.signature.set(sig.s.toArrayLike(Uint8Array, 'be', 32), 32)\n obj.recid = sig.recoveryParam\n\n return 0\n },\n\n ecdsaVerify (sig, msg32, pubkey) {\n const sigObj = { r: sig.subarray(0, 32), s: sig.subarray(32, 64) }\n\n const sigr = new BN(sigObj.r)\n const sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return 3\n\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 2\n\n const point = pair.getPublic()\n const isValid = ec.verify(msg32, sigObj, point)\n return isValid ? 0 : 3\n },\n\n ecdsaRecover (output, sig, recid, msg32) {\n const sigObj = { r: sig.slice(0, 32), s: sig.slice(32, 64) }\n\n const sigr = new BN(sigObj.r)\n const sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n\n if (sigr.isZero() || sigs.isZero()) return 2\n\n // Can throw `throw new Error('Unable to find sencond key candinate');`\n let point\n try {\n point = ec.recoverPubKey(msg32, sigObj, recid)\n } catch (err) {\n return 2\n }\n\n savePublicKey(output, point)\n\n return 0\n },\n\n ecdh (output, pubkey, seckey, data, hashfn, xbuf, ybuf) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const scalar = new BN(seckey)\n if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) return 2\n\n const point = pair.getPublic().mul(scalar)\n\n if (hashfn === undefined) {\n const data = point.encode(null, true)\n const sha256 = ec.hash().update(data).digest()\n for (let i = 0; i < 32; ++i) output[i] = sha256[i]\n } else {\n if (!xbuf) xbuf = new Uint8Array(32)\n const x = point.getX().toArray('be', 32)\n for (let i = 0; i < 32; ++i) xbuf[i] = x[i]\n\n if (!ybuf) ybuf = new Uint8Array(32)\n const y = point.getY().toArray('be', 32)\n for (let i = 0; i < 32; ++i) ybuf[i] = y[i]\n\n const hash = hashfn(xbuf, ybuf, data)\n\n const isValid = hash instanceof Uint8Array && hash.length === output.length\n if (!isValid) return 2\n\n output.set(hash)\n }\n\n return 0\n }\n}\n","const errors = {\n IMPOSSIBLE_CASE: 'Impossible case. Please create issue.',\n TWEAK_ADD:\n 'The tweak was out of range or the resulted private key is invalid',\n TWEAK_MUL: 'The tweak was out of range or equal to zero',\n CONTEXT_RANDOMIZE_UNKNOW: 'Unknow error on context randomization',\n SECKEY_INVALID: 'Private Key is invalid',\n PUBKEY_PARSE: 'Public Key could not be parsed',\n PUBKEY_SERIALIZE: 'Public Key serialization error',\n PUBKEY_COMBINE: 'The sum of the public keys is not valid',\n SIG_PARSE: 'Signature could not be parsed',\n SIGN: 'The nonce generation function failed, or the private key was invalid',\n RECOVER: 'Public key could not be recover',\n ECDH: 'Scalar was invalid (zero or overflow)'\n}\n\nfunction assert (cond, msg) {\n if (!cond) throw new Error(msg)\n}\n\nfunction isUint8Array (name, value, length) {\n assert(value instanceof Uint8Array, `Expected ${name} to be an Uint8Array`)\n\n if (length !== undefined) {\n if (Array.isArray(length)) {\n const numbers = length.join(', ')\n const msg = `Expected ${name} to be an Uint8Array with length [${numbers}]`\n assert(length.includes(value.length), msg)\n } else {\n const msg = `Expected ${name} to be an Uint8Array with length ${length}`\n assert(value.length === length, msg)\n }\n }\n}\n\nfunction isCompressed (value) {\n assert(toTypeString(value) === 'Boolean', 'Expected compressed to be a Boolean')\n}\n\nfunction getAssertedOutput (output = (len) => new Uint8Array(len), length) {\n if (typeof output === 'function') output = output(length)\n isUint8Array('output', output, length)\n return output\n}\n\nfunction toTypeString (value) {\n return Object.prototype.toString.call(value).slice(8, -1)\n}\n\nmodule.exports = (secp256k1) => {\n return {\n contextRandomize (seed) {\n assert(\n seed === null || seed instanceof Uint8Array,\n 'Expected seed to be an Uint8Array or null'\n )\n if (seed !== null) isUint8Array('seed', seed, 32)\n\n switch (secp256k1.contextRandomize(seed)) {\n case 1:\n throw new Error(errors.CONTEXT_RANDOMIZE_UNKNOW)\n }\n },\n\n privateKeyVerify (seckey) {\n isUint8Array('private key', seckey, 32)\n\n return secp256k1.privateKeyVerify(seckey) === 0\n },\n\n privateKeyNegate (seckey) {\n isUint8Array('private key', seckey, 32)\n\n switch (secp256k1.privateKeyNegate(seckey)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n privateKeyTweakAdd (seckey, tweak) {\n isUint8Array('private key', seckey, 32)\n isUint8Array('tweak', tweak, 32)\n\n switch (secp256k1.privateKeyTweakAdd(seckey, tweak)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.TWEAK_ADD)\n }\n },\n\n privateKeyTweakMul (seckey, tweak) {\n isUint8Array('private key', seckey, 32)\n isUint8Array('tweak', tweak, 32)\n\n switch (secp256k1.privateKeyTweakMul(seckey, tweak)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.TWEAK_MUL)\n }\n },\n\n publicKeyVerify (pubkey) {\n isUint8Array('public key', pubkey, [33, 65])\n\n return secp256k1.publicKeyVerify(pubkey) === 0\n },\n\n publicKeyCreate (seckey, compressed = true, output) {\n isUint8Array('private key', seckey, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyCreate(output, seckey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SECKEY_INVALID)\n case 2:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyConvert (pubkey, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyConvert(output, pubkey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyNegate (pubkey, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyNegate(output, pubkey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n case 3:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyCombine (pubkeys, compressed = true, output) {\n assert(Array.isArray(pubkeys), 'Expected public keys to be an Array')\n assert(pubkeys.length > 0, 'Expected public keys array will have more than zero items')\n for (const pubkey of pubkeys) {\n isUint8Array('public key', pubkey, [33, 65])\n }\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyCombine(output, pubkeys)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_COMBINE)\n case 3:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyTweakAdd (pubkey, tweak, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('tweak', tweak, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyTweakAdd(output, pubkey, tweak)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.TWEAK_ADD)\n }\n },\n\n publicKeyTweakMul (pubkey, tweak, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('tweak', tweak, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyTweakMul(output, pubkey, tweak)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.TWEAK_MUL)\n }\n },\n\n signatureNormalize (sig) {\n isUint8Array('signature', sig, 64)\n\n switch (secp256k1.signatureNormalize(sig)) {\n case 0:\n return sig\n case 1:\n throw new Error(errors.SIG_PARSE)\n }\n },\n\n signatureExport (sig, output) {\n isUint8Array('signature', sig, 64)\n output = getAssertedOutput(output, 72)\n\n const obj = { output, outputlen: 72 }\n switch (secp256k1.signatureExport(obj, sig)) {\n case 0:\n return output.slice(0, obj.outputlen)\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n signatureImport (sig, output) {\n isUint8Array('signature', sig)\n output = getAssertedOutput(output, 64)\n\n switch (secp256k1.signatureImport(output, sig)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdsaSign (msg32, seckey, options = {}, output) {\n isUint8Array('message', msg32, 32)\n isUint8Array('private key', seckey, 32)\n assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n if (options.data !== undefined) isUint8Array('options.data', options.data)\n if (options.noncefn !== undefined) assert(toTypeString(options.noncefn) === 'Function', 'Expected options.noncefn to be a Function')\n output = getAssertedOutput(output, 64)\n\n const obj = { signature: output, recid: null }\n switch (secp256k1.ecdsaSign(obj, msg32, seckey, options.data, options.noncefn)) {\n case 0:\n return obj\n case 1:\n throw new Error(errors.SIGN)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdsaVerify (sig, msg32, pubkey) {\n isUint8Array('signature', sig, 64)\n isUint8Array('message', msg32, 32)\n isUint8Array('public key', pubkey, [33, 65])\n\n switch (secp256k1.ecdsaVerify(sig, msg32, pubkey)) {\n case 0:\n return true\n case 3:\n return false\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_PARSE)\n }\n },\n\n ecdsaRecover (sig, recid, msg32, compressed = true, output) {\n isUint8Array('signature', sig, 64)\n assert(\n toTypeString(recid) === 'Number' &&\n recid >= 0 &&\n recid <= 3,\n 'Expected recovery id to be a Number within interval [0, 3]'\n )\n isUint8Array('message', msg32, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.ecdsaRecover(output, sig, recid, msg32)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.RECOVER)\n case 3:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdh (pubkey, seckey, options = {}, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('private key', seckey, 32)\n assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n if (options.data !== undefined) isUint8Array('options.data', options.data)\n if (options.hashfn !== undefined) {\n assert(toTypeString(options.hashfn) === 'Function', 'Expected options.hashfn to be a Function')\n if (options.xbuf !== undefined) isUint8Array('options.xbuf', options.xbuf, 32)\n if (options.ybuf !== undefined) isUint8Array('options.ybuf', options.ybuf, 32)\n isUint8Array('output', output)\n } else {\n output = getAssertedOutput(output, 32)\n }\n\n switch (secp256k1.ecdh(output, pubkey, seckey, options.data, options.hashfn, options.xbuf, options.ybuf)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.ECDH)\n }\n }\n }\n}\n",";(function(global) {\n\n'use strict';\n\nvar nextTick = function (fn) { setTimeout(fn, 0); }\nif (typeof process != 'undefined' && process && typeof process.nextTick == 'function') {\n\t// node.js and the like\n\tnextTick = process.nextTick;\n}\n\nfunction semaphore(capacity) {\n\tvar semaphore = {\n\t\tcapacity: capacity || 1,\n\t\tcurrent: 0,\n\t\tqueue: [],\n\t\tfirstHere: false,\n\n\t\ttake: function() {\n\t\t\tif (semaphore.firstHere === false) {\n \t\t\tsemaphore.current++;\n \t\t\tsemaphore.firstHere = true;\n \t\t\tvar isFirst = 1;\n \t\t\t} else {\n \t\t\tvar isFirst = 0;\n \t\t\t}\n\t\t\tvar item = { n: 1 };\n\n\t\t\tif (typeof arguments[0] == 'function') {\n\t\t\t\titem.task = arguments[0];\n\t\t\t} else {\n\t\t\t\titem.n = arguments[0];\n\t\t\t}\n\n\t\t\tif (arguments.length >= 2) {\n\t\t\t\tif (typeof arguments[1] == 'function') item.task = arguments[1];\n\t\t\t\telse item.n = arguments[1];\n\t\t\t}\n\n\t\t\tvar task = item.task;\n\t\t\titem.task = function() { task(semaphore.leave); };\n\n\t\t\tif (semaphore.current + item.n - isFirst > semaphore.capacity) {\n \t\t\tif (isFirst === 1) {\n \t\t\t\tsemaphore.current--;\n \t\t\t\tsemaphore.firstHere = false;\n \t\t\t}\n\t\t\t\treturn semaphore.queue.push(item);\n\t\t\t}\n\n\t\t\tsemaphore.current += item.n - isFirst;\n\t\t\titem.task(semaphore.leave);\n \t\t\tif (isFirst === 1) semaphore.firstHere = false;\n\t\t},\n\n\t\tleave: function(n) {\n\t\t\tn = n || 1;\n\n\t\t\tsemaphore.current -= n;\n\n\t\t\tif (!semaphore.queue.length) {\n\t\t\t\tif (semaphore.current < 0) {\n\t\t\t\t\tthrow new Error('leave called too many times.');\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar item = semaphore.queue[0];\n\n\t\t\tif (item.n + semaphore.current > semaphore.capacity) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsemaphore.queue.shift();\n\t\t\tsemaphore.current += item.n;\n\n\t\t\tnextTick(item.task);\n\t\t},\n\n\t\tavailable: function(n) {\n\t\t\tn = n || 1;\n\t\t\treturn(semaphore.current + n <= semaphore.capacity);\n\t\t}\n\t};\n\n\treturn semaphore;\n};\n\nif (typeof exports === 'object') {\n // node export\n module.exports = semaphore;\n} else if (typeof define === 'function' && define.amd) {\n // amd export\n define(function () {\n return semaphore;\n });\n} else {\n // browser global\n global.semaphore = semaphore;\n}\n}(this));\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || checkTypeSupport('arraybuffer')\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && checkTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + Buffer.from(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\tself._socketTimeout = null\n\tself._socketTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tif ('timeout' in opts && opts.timeout !== 0) {\n\t\tself.setTimeout(opts.timeout)\n\t}\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n body = new Blob(self._body, {\n type: (headersObj['content-type'] || {}).value || ''\n });\n }\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._resetTimers(false)\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself._resetTimers(true)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself._resetTimers(true)\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tself._resetTimers(false)\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress(self._resetTimers.bind(self))\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._resetTimers.bind(self))\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype._resetTimers = function (done) {\n\tvar self = this\n\n\tglobal.clearTimeout(self._socketTimer)\n\tself._socketTimer = null\n\n\tif (done) {\n\t\tglobal.clearTimeout(self._fetchTimer)\n\t\tself._fetchTimer = null\n\t} else if (self._socketTimeout) {\n\t\tself._socketTimer = global.setTimeout(function () {\n\t\t\tself.emit('timeout')\n\t\t}, self._socketTimeout)\n\t}\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function (err) {\n\tvar self = this\n\tself._destroyed = true\n\tself._resetTimers(true)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n\n\tif (err)\n\t\tself.emit('error', err)\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.setTimeout = function (timeout, cb) {\n\tvar self = this\n\n\tif (cb)\n\t\tself.once('timeout', cb)\n\n\tself._socketTimeout = timeout\n\tself._resetTimers(false)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, resetTimers) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\tresetTimers(false)\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(Buffer.from(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tresetTimers(result.done)\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(Buffer.from(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tresetTimers(true)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function (resetTimers) {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text':\n\t\t\tresponse = xhr.responseText\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = Buffer.alloc(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tresetTimers(true)\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tresetTimers(true)\n\t\tself.push(null)\n\t}\n}\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar Buffer = require('buffer').Buffer;\n\nvar isBufferEncoding = Buffer.isEncoding\n || function(encoding) {\n switch (encoding && encoding.toLowerCase()) {\n case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;\n default: return false;\n }\n }\n\n\nfunction assertEncoding(encoding) {\n if (encoding && !isBufferEncoding(encoding)) {\n throw new Error('Unknown encoding: ' + encoding);\n }\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters. CESU-8 is handled as part of the UTF-8 encoding.\n//\n// @TODO Handling all encodings inside a single object makes it very difficult\n// to reason about this code, so it should be split up in the future.\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n// points as used by CESU-8.\nvar StringDecoder = exports.StringDecoder = function(encoding) {\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n assertEncoding(encoding);\n switch (this.encoding) {\n case 'utf8':\n // CESU-8 represents each of Surrogate Pair by 3-bytes\n this.surrogateSize = 3;\n break;\n case 'ucs2':\n case 'utf16le':\n // UTF-16 represents each of Surrogate Pair by 2-bytes\n this.surrogateSize = 2;\n this.detectIncompleteChar = utf16DetectIncompleteChar;\n break;\n case 'base64':\n // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n this.surrogateSize = 3;\n this.detectIncompleteChar = base64DetectIncompleteChar;\n break;\n default:\n this.write = passThroughWrite;\n return;\n }\n\n // Enough space to store all bytes of a single character. UTF-8 needs 4\n // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n this.charBuffer = new Buffer(6);\n // Number of bytes received for the current incomplete multi-byte character.\n this.charReceived = 0;\n // Number of bytes expected for the current incomplete multi-byte character.\n this.charLength = 0;\n};\n\n\n// write decodes the given buffer and returns it as JS string that is\n// guaranteed to not contain any partial multi-byte characters. Any partial\n// character found at the end of the buffer is buffered up, and will be\n// returned when calling write again with the remaining bytes.\n//\n// Note: Converting a Buffer containing an orphan surrogate to a String\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\n// Buffer#write) will replace incomplete surrogates with the unicode\n// replacement character. See https://codereview.chromium.org/121173009/ .\nStringDecoder.prototype.write = function(buffer) {\n var charStr = '';\n // if our last write ended with an incomplete multibyte character\n while (this.charLength) {\n // determine how many remaining bytes this buffer has to offer for this char\n var available = (buffer.length >= this.charLength - this.charReceived) ?\n this.charLength - this.charReceived :\n buffer.length;\n\n // add the new bytes to the char buffer\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\n this.charReceived += available;\n\n if (this.charReceived < this.charLength) {\n // still not enough chars in this buffer? wait for more ...\n return '';\n }\n\n // remove bytes belonging to the current character from the buffer\n buffer = buffer.slice(available, buffer.length);\n\n // get the character that was split\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n var charCode = charStr.charCodeAt(charStr.length - 1);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n this.charLength += this.surrogateSize;\n charStr = '';\n continue;\n }\n this.charReceived = this.charLength = 0;\n\n // if there are no more bytes in this buffer, just emit our char\n if (buffer.length === 0) {\n return charStr;\n }\n break;\n }\n\n // determine and set charLength / charReceived\n this.detectIncompleteChar(buffer);\n\n var end = buffer.length;\n if (this.charLength) {\n // buffer the incomplete character bytes we got\n buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n end -= this.charReceived;\n }\n\n charStr += buffer.toString(this.encoding, 0, end);\n\n var end = charStr.length - 1;\n var charCode = charStr.charCodeAt(end);\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n var size = this.surrogateSize;\n this.charLength += size;\n this.charReceived += size;\n this.charBuffer.copy(this.charBuffer, size, 0, size);\n buffer.copy(this.charBuffer, 0, 0, size);\n return charStr.substring(0, end);\n }\n\n // or just emit the charStr\n return charStr;\n};\n\n// detectIncompleteChar determines if there is an incomplete UTF-8 character at\n// the end of the given buffer. If so, it sets this.charLength to the byte\n// length that character, and sets this.charReceived to the number of bytes\n// that are available for this character.\nStringDecoder.prototype.detectIncompleteChar = function(buffer) {\n // determine how many bytes we have to check at the end of this buffer\n var i = (buffer.length >= 3) ? 3 : buffer.length;\n\n // Figure out if one of the last i bytes of our buffer announces an\n // incomplete char.\n for (; i > 0; i--) {\n var c = buffer[buffer.length - i];\n\n // See http://en.wikipedia.org/wiki/UTF-8#Description\n\n // 110XXXXX\n if (i == 1 && c >> 5 == 0x06) {\n this.charLength = 2;\n break;\n }\n\n // 1110XXXX\n if (i <= 2 && c >> 4 == 0x0E) {\n this.charLength = 3;\n break;\n }\n\n // 11110XXX\n if (i <= 3 && c >> 3 == 0x1E) {\n this.charLength = 4;\n break;\n }\n }\n this.charReceived = i;\n};\n\nStringDecoder.prototype.end = function(buffer) {\n var res = '';\n if (buffer && buffer.length)\n res = this.write(buffer);\n\n if (this.charReceived) {\n var cr = this.charReceived;\n var buf = this.charBuffer;\n var enc = this.encoding;\n res += buf.slice(0, cr).toString(enc);\n }\n\n return res;\n};\n\nfunction passThroughWrite(buffer) {\n return buffer.toString(this.encoding);\n}\n\nfunction utf16DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 2;\n this.charLength = this.charReceived ? 2 : 0;\n}\n\nfunction base64DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 3;\n this.charLength = this.charReceived ? 3 : 0;\n}\n","var isHexPrefixed = require('is-hex-prefixed');\n\n/**\n * Removes '0x' from a given `String` is present\n * @param {String} str the string value\n * @return {String|Optional} a string by pass if necessary\n */\nmodule.exports = function stripHexPrefix(str) {\n if (typeof str !== 'string') {\n return str;\n }\n\n return isHexPrefixed(str) ? str.slice(2) : str;\n}\n","var unavailable = function unavailable() {\n throw \"This swarm.js function isn't available on the browser.\";\n};\n\nvar fs = {\n readFile: unavailable\n};\nvar files = {\n download: unavailable,\n safeDownloadArchived: unavailable,\n directoryTree: unavailable\n};\nvar os = {\n platform: unavailable,\n arch: unavailable\n};\nvar path = {\n join: unavailable,\n slice: unavailable\n};\nvar child_process = {\n spawn: unavailable\n};\nvar mimetype = {\n lookup: unavailable\n};\nvar defaultArchives = {};\nvar downloadUrl = null;\n\nvar request = require(\"xhr-request\");\n\nvar bytes = require(\"eth-lib/lib/bytes\");\n\nvar hash = require(\"./swarm-hash.js\");\n\nvar pick = require(\"./pick.js\");\n\nvar swarm = require(\"./swarm\");\n\nmodule.exports = swarm({\n fs: fs,\n files: files,\n os: os,\n path: path,\n child_process: child_process,\n defaultArchives: defaultArchives,\n mimetype: mimetype,\n request: request,\n downloadUrl: downloadUrl,\n bytes: bytes,\n hash: hash,\n pick: pick\n});","var picker = function picker(type) {\n return function () {\n return new Promise(function (resolve, reject) {\n var fileLoader = function fileLoader(e) {\n var directory = {};\n var totalFiles = e.target.files.length;\n var loadedFiles = 0;\n [].map.call(e.target.files, function (file) {\n var reader = new FileReader();\n\n reader.onload = function (e) {\n var data = new Uint8Array(e.target.result);\n\n if (type === \"directory\") {\n var path = file.webkitRelativePath;\n directory[path.slice(path.indexOf(\"/\") + 1)] = {\n type: \"text/plain\",\n data: data\n };\n if (++loadedFiles === totalFiles) resolve(directory);\n } else if (type === \"file\") {\n var _path = file.webkitRelativePath;\n resolve({\n \"type\": mimetype.lookup(_path),\n \"data\": data\n });\n } else {\n resolve(data);\n }\n };\n\n reader.readAsArrayBuffer(file);\n });\n };\n\n var fileInput;\n\n if (type === \"directory\") {\n fileInput = document.createElement(\"input\");\n fileInput.addEventListener(\"change\", fileLoader);\n fileInput.type = \"file\";\n fileInput.webkitdirectory = true;\n fileInput.mozdirectory = true;\n fileInput.msdirectory = true;\n fileInput.odirectory = true;\n fileInput.directory = true;\n } else {\n fileInput = document.createElement(\"input\");\n fileInput.addEventListener(\"change\", fileLoader);\n fileInput.type = \"file\";\n }\n\n ;\n var mouseEvent = document.createEvent(\"MouseEvents\");\n mouseEvent.initEvent(\"click\", true, false);\n fileInput.dispatchEvent(mouseEvent);\n });\n };\n};\n\nmodule.exports = {\n data: picker(\"data\"),\n file: picker(\"file\"),\n directory: picker(\"directory\")\n};","// Thanks https://github.com/axic/swarmhash\nvar keccak = require(\"eth-lib/lib/hash\").keccak256;\n\nvar Bytes = require(\"eth-lib/lib/bytes\");\n\nvar swarmHashBlock = function swarmHashBlock(length, data) {\n var lengthEncoded = Bytes.reverse(Bytes.pad(6, Bytes.fromNumber(length)));\n var bytes = Bytes.flatten([lengthEncoded, \"0x0000\", data]);\n return keccak(bytes).slice(2);\n}; // (Bytes | Uint8Array | String) -> String\n\n\nvar swarmHash = function swarmHash(data) {\n if (typeof data === \"string\" && data.slice(0, 2) !== \"0x\") {\n data = Bytes.fromString(data);\n } else if (typeof data !== \"string\" && data.length !== undefined) {\n data = Bytes.fromUint8Array(data);\n }\n\n var length = Bytes.length(data);\n\n if (length <= 4096) {\n return swarmHashBlock(length, data);\n }\n\n var maxSize = 4096;\n\n while (maxSize * (4096 / 32) < length) {\n maxSize *= 4096 / 32;\n }\n\n var innerNodes = [];\n\n for (var i = 0; i < length; i += maxSize) {\n var size = maxSize < length - i ? maxSize : length - i;\n innerNodes.push(swarmHash(Bytes.slice(data, i, i + size)));\n }\n\n return swarmHashBlock(length, Bytes.flatten(innerNodes));\n};\n\nmodule.exports = swarmHash;","// TODO: this is a temporary fix to hide those libraries from the browser. A\n// slightly better long-term solution would be to split this file into two,\n// separating the functions that are used on Node.js from the functions that\n// are used only on the browser.\nmodule.exports = function (_ref) {\n var fs = _ref.fs,\n files = _ref.files,\n os = _ref.os,\n path = _ref.path,\n child_process = _ref.child_process,\n mimetype = _ref.mimetype,\n defaultArchives = _ref.defaultArchives,\n request = _ref.request,\n downloadUrl = _ref.downloadUrl,\n bytes = _ref.bytes,\n hash = _ref.hash,\n pick = _ref.pick;\n\n // ∀ a . String -> JSON -> Map String a -o Map String a\n // Inserts a key/val pair in an object impurely.\n var impureInsert = function impureInsert(key) {\n return function (val) {\n return function (map) {\n return map[key] = val, map;\n };\n };\n }; // String -> JSON -> Map String JSON\n // Merges an array of keys and an array of vals into an object.\n\n\n var toMap = function toMap(keys) {\n return function (vals) {\n var map = {};\n\n for (var i = 0, l = keys.length; i < l; ++i) {\n map[keys[i]] = vals[i];\n }\n\n return map;\n };\n }; // ∀ a . Map String a -> Map String a -> Map String a\n // Merges two maps into one.\n\n\n var merge = function merge(a) {\n return function (b) {\n var map = {};\n\n for (var key in a) {\n map[key] = a[key];\n }\n\n for (var _key in b) {\n map[_key] = b[_key];\n }\n\n return map;\n };\n }; // ∀ a . [a] -> [a] -> Bool\n\n\n var equals = function equals(a) {\n return function (b) {\n if (a.length !== b.length) {\n return false;\n } else {\n for (var i = 0, l = a.length; i < l; ++i) {\n if (a[i] !== b[i]) return false;\n }\n }\n\n return true;\n };\n }; // String -> String -> String\n\n\n var rawUrl = function rawUrl(swarmUrl) {\n return function (hash) {\n return \"\".concat(swarmUrl, \"/bzz-raw:/\").concat(hash);\n };\n }; // String -> String -> Promise Uint8Array\n // Gets the raw contents of a Swarm hash address.\n\n\n var downloadData = function downloadData(swarmUrl) {\n return function (hash) {\n return new Promise(function (resolve, reject) {\n request(rawUrl(swarmUrl)(hash), {\n responseType: \"arraybuffer\"\n }, function (err, arrayBuffer, response) {\n if (err) {\n return reject(err);\n }\n\n if (response.statusCode >= 400) {\n return reject(new Error(\"Error \".concat(response.statusCode, \".\")));\n }\n\n return resolve(new Uint8Array(arrayBuffer));\n });\n });\n };\n }; // type Entry = {\"type\": String, \"hash\": String}\n // type File = {\"type\": String, \"data\": Uint8Array}\n // String -> String -> Promise (Map String Entry)\n // Solves the manifest of a Swarm address recursively.\n // Returns a map from full paths to entries.\n\n\n var downloadEntries = function downloadEntries(swarmUrl) {\n return function (hash) {\n var search = function search(hash) {\n return function (path) {\n return function (routes) {\n // Formats an entry to the Swarm.js type.\n var format = function format(entry) {\n return {\n type: entry.contentType,\n hash: entry.hash\n };\n }; // To download a single entry:\n // if type is bzz-manifest, go deeper\n // if not, add it to the routing table\n\n\n var downloadEntry = function downloadEntry(entry) {\n if (entry.path === undefined) {\n return Promise.resolve();\n } else {\n return entry.contentType === \"application/bzz-manifest+json\" ? search(entry.hash)(path + entry.path)(routes) : Promise.resolve(impureInsert(path + entry.path)(format(entry))(routes));\n }\n }; // Downloads the initial manifest and then each entry.\n\n\n return downloadData(swarmUrl)(hash).then(function (text) {\n return JSON.parse(toString(text)).entries;\n }).then(function (entries) {\n return Promise.all(entries.map(downloadEntry));\n }).then(function () {\n return routes;\n });\n };\n };\n };\n\n return search(hash)(\"\")({});\n };\n }; // String -> String -> Promise (Map String String)\n // Same as `downloadEntries`, but returns only hashes (no types).\n\n\n var downloadRoutes = function downloadRoutes(swarmUrl) {\n return function (hash) {\n return downloadEntries(swarmUrl)(hash).then(function (entries) {\n return toMap(Object.keys(entries))(Object.keys(entries).map(function (route) {\n return entries[route].hash;\n }));\n });\n };\n }; // String -> String -> Promise (Map String File)\n // Gets the entire directory tree in a Swarm address.\n // Returns a promise mapping paths to file contents.\n\n\n var downloadDirectory = function downloadDirectory(swarmUrl) {\n return function (hash) {\n return downloadEntries(swarmUrl)(hash).then(function (entries) {\n var paths = Object.keys(entries);\n var hashs = paths.map(function (path) {\n return entries[path].hash;\n });\n var types = paths.map(function (path) {\n return entries[path].type;\n });\n var datas = hashs.map(downloadData(swarmUrl));\n\n var files = function files(datas) {\n return datas.map(function (data, i) {\n return {\n type: types[i],\n data: data\n };\n });\n };\n\n return Promise.all(datas).then(function (datas) {\n return toMap(paths)(files(datas));\n });\n });\n };\n }; // String -> String -> String -> Promise String\n // Gets the raw contents of a Swarm hash address.\n // Returns a promise with the downloaded file path.\n\n\n var downloadDataToDisk = function downloadDataToDisk(swarmUrl) {\n return function (hash) {\n return function (filePath) {\n return files.download(rawUrl(swarmUrl)(hash))(filePath);\n };\n };\n }; // String -> String -> String -> Promise (Map String String)\n // Gets the entire directory tree in a Swarm address.\n // Returns a promise mapping paths to file contents.\n\n\n var downloadDirectoryToDisk = function downloadDirectoryToDisk(swarmUrl) {\n return function (hash) {\n return function (dirPath) {\n return downloadRoutes(swarmUrl)(hash).then(function (routingTable) {\n var downloads = [];\n\n for (var route in routingTable) {\n if (route.length > 0) {\n var filePath = path.join(dirPath, route);\n downloads.push(downloadDataToDisk(swarmUrl)(routingTable[route])(filePath));\n }\n\n ;\n }\n\n ;\n return Promise.all(downloads).then(function () {\n return dirPath;\n });\n });\n };\n };\n }; // String -> Uint8Array -> Promise String\n // Uploads raw data to Swarm.\n // Returns a promise with the uploaded hash.\n\n\n var uploadData = function uploadData(swarmUrl) {\n return function (data) {\n return new Promise(function (resolve, reject) {\n var params = {\n body: typeof data === \"string\" ? fromString(data) : data,\n method: \"POST\"\n };\n request(\"\".concat(swarmUrl, \"/bzz-raw:/\"), params, function (err, data) {\n if (err) {\n return reject(err);\n }\n\n return resolve(data);\n });\n });\n };\n }; // String -> String -> String -> File -> Promise String\n // Uploads a file to the Swarm manifest at a given hash, under a specific\n // route. Returns a promise containing the uploaded hash.\n // FIXME: for some reasons Swarm-Gateways is sometimes returning\n // error 404 (bad request), so we retry up to 3 times. Why?\n\n\n var uploadToManifest = function uploadToManifest(swarmUrl) {\n return function (hash) {\n return function (route) {\n return function (file) {\n var attempt = function attempt(n) {\n var slashRoute = route[0] === \"/\" ? route : \"/\" + route;\n var url = \"\".concat(swarmUrl, \"/bzz:/\").concat(hash).concat(slashRoute);\n var opt = {\n method: \"PUT\",\n headers: {\n \"Content-Type\": file.type\n },\n body: file.data\n };\n return new Promise(function (resolve, reject) {\n request(url, opt, function (err, data) {\n if (err) {\n return reject(err);\n }\n\n if (data.indexOf(\"error\") !== -1) {\n return reject(data);\n }\n\n return resolve(data);\n });\n })[\"catch\"](function (e) {\n return n > 0 && attempt(n - 1);\n });\n };\n\n return attempt(3);\n };\n };\n };\n }; // String -> {type: String, data: Uint8Array} -> Promise String\n\n\n var uploadFile = function uploadFile(swarmUrl) {\n return function (file) {\n return uploadDirectory(swarmUrl)({\n \"\": file\n });\n };\n }; // String -> String -> Promise String\n\n\n var uploadFileFromDisk = function uploadFileFromDisk(swarmUrl) {\n return function (filePath) {\n return fs.readFile(filePath).then(function (data) {\n return uploadFile(swarmUrl)({\n type: mimetype.lookup(filePath),\n data: data\n });\n });\n };\n }; // String -> Map String File -> Promise String\n // Uploads a directory to Swarm. The directory is\n // represented as a map of routes and files.\n // A default path is encoded by having a \"\" route.\n\n\n var uploadDirectory = function uploadDirectory(swarmUrl) {\n return function (directory) {\n return uploadData(swarmUrl)(\"{}\").then(function (hash) {\n var uploadRoute = function uploadRoute(route) {\n return function (hash) {\n return uploadToManifest(swarmUrl)(hash)(route)(directory[route]);\n };\n };\n\n var uploadToHash = function uploadToHash(hash, route) {\n return hash.then(uploadRoute(route));\n };\n\n return Object.keys(directory).reduce(uploadToHash, Promise.resolve(hash));\n });\n };\n }; // String -> Promise String\n\n\n var uploadDataFromDisk = function uploadDataFromDisk(swarmUrl) {\n return function (filePath) {\n return fs.readFile(filePath).then(uploadData(swarmUrl));\n };\n }; // String -> Nullable String -> String -> Promise String\n\n\n var uploadDirectoryFromDisk = function uploadDirectoryFromDisk(swarmUrl) {\n return function (defaultPath) {\n return function (dirPath) {\n return files.directoryTree(dirPath).then(function (fullPaths) {\n return Promise.all(fullPaths.map(function (path) {\n return fs.readFile(path);\n })).then(function (datas) {\n var paths = fullPaths.map(function (path) {\n return path.slice(dirPath.length);\n });\n var types = fullPaths.map(function (path) {\n return mimetype.lookup(path) || \"text/plain\";\n });\n return toMap(paths)(datas.map(function (data, i) {\n return {\n type: types[i],\n data: data\n };\n }));\n });\n }).then(function (directory) {\n return merge(defaultPath ? {\n \"\": directory[defaultPath]\n } : {})(directory);\n }).then(uploadDirectory(swarmUrl));\n };\n };\n }; // String -> UploadInfo -> Promise String\n // Simplified multi-type upload which calls the correct\n // one based on the type of the argument given.\n\n\n var _upload = function upload(swarmUrl) {\n return function (arg) {\n // Upload raw data from browser\n if (arg.pick === \"data\") {\n return pick.data().then(uploadData(swarmUrl)); // Upload a file from browser\n } else if (arg.pick === \"file\") {\n return pick.file().then(uploadFile(swarmUrl)); // Upload a directory from browser\n } else if (arg.pick === \"directory\") {\n return pick.directory().then(uploadDirectory(swarmUrl)); // Upload directory/file from disk\n } else if (arg.path) {\n switch (arg.kind) {\n case \"data\":\n return uploadDataFromDisk(swarmUrl)(arg.path);\n\n case \"file\":\n return uploadFileFromDisk(swarmUrl)(arg.path);\n\n case \"directory\":\n return uploadDirectoryFromDisk(swarmUrl)(arg.defaultFile)(arg.path);\n }\n\n ; // Upload UTF-8 string or raw data (buffer)\n } else if (arg.length || typeof arg === \"string\") {\n return uploadData(swarmUrl)(arg); // Upload directory with JSON\n } else if (arg instanceof Object) {\n return uploadDirectory(swarmUrl)(arg);\n }\n\n return Promise.reject(new Error(\"Bad arguments\"));\n };\n }; // String -> String -> Nullable String -> Promise (String | Uint8Array | Map String Uint8Array)\n // Simplified multi-type download which calls the correct function based on\n // the type of the argument given, and on whether the Swwarm address has a\n // directory or a file.\n\n\n var _download = function download(swarmUrl) {\n return function (hash) {\n return function (path) {\n return isDirectory(swarmUrl)(hash).then(function (isDir) {\n if (isDir) {\n return path ? downloadDirectoryToDisk(swarmUrl)(hash)(path) : downloadDirectory(swarmUrl)(hash);\n } else {\n return path ? downloadDataToDisk(swarmUrl)(hash)(path) : downloadData(swarmUrl)(hash);\n }\n });\n };\n };\n }; // String -> Promise String\n // Downloads the Swarm binaries into a path. Returns a promise that only\n // resolves when the exact Swarm file is there, and verified to be correct.\n // If it was already there to begin with, skips the download.\n\n\n var downloadBinary = function downloadBinary(path, archives) {\n var system = os.platform().replace(\"win32\", \"windows\") + \"-\" + (os.arch() === \"x64\" ? \"amd64\" : \"386\");\n var archive = (archives || defaultArchives)[system];\n var archiveUrl = downloadUrl + archive.archive + \".tar.gz\";\n var archiveMD5 = archive.archiveMD5;\n var binaryMD5 = archive.binaryMD5;\n return files.safeDownloadArchived(archiveUrl)(archiveMD5)(binaryMD5)(path);\n }; // type SwarmSetup = {\n // account : String,\n // password : String,\n // dataDir : String,\n // binPath : String,\n // ensApi : String,\n // onDownloadProgress : Number ~> (),\n // archives : [{\n // archive: String,\n // binaryMD5: String,\n // archiveMD5: String\n // }]\n // }\n // SwarmSetup ~> Promise Process\n // Starts the Swarm process.\n\n\n var startProcess = function startProcess(swarmSetup) {\n return new Promise(function (resolve, reject) {\n var spawn = child_process.spawn;\n\n var hasString = function hasString(str) {\n return function (buffer) {\n return ('' + buffer).indexOf(str) !== -1;\n };\n };\n\n var account = swarmSetup.account,\n password = swarmSetup.password,\n dataDir = swarmSetup.dataDir,\n ensApi = swarmSetup.ensApi,\n privateKey = swarmSetup.privateKey;\n var STARTUP_TIMEOUT_SECS = 3;\n var WAITING_PASSWORD = 0;\n var STARTING = 1;\n var LISTENING = 2;\n var PASSWORD_PROMPT_HOOK = \"Passphrase\";\n var LISTENING_HOOK = \"Swarm http proxy started\";\n var state = WAITING_PASSWORD;\n var swarmProcess = spawn(swarmSetup.binPath, ['--bzzaccount', account || privateKey, '--datadir', dataDir, '--ens-api', ensApi]);\n\n var handleProcessOutput = function handleProcessOutput(data) {\n if (state === WAITING_PASSWORD && hasString(PASSWORD_PROMPT_HOOK)(data)) {\n setTimeout(function () {\n state = STARTING;\n swarmProcess.stdin.write(password + '\\n');\n }, 500);\n } else if (hasString(LISTENING_HOOK)(data)) {\n state = LISTENING;\n clearTimeout(timeout);\n resolve(swarmProcess);\n }\n };\n\n swarmProcess.stdout.on('data', handleProcessOutput);\n swarmProcess.stderr.on('data', handleProcessOutput); //swarmProcess.on('close', () => setTimeout(restart, 2000));\n\n var restart = function restart() {\n return startProcess(swarmSetup).then(resolve)[\"catch\"](reject);\n };\n\n var error = function error() {\n return reject(new Error(\"Couldn't start swarm process.\"));\n };\n\n var timeout = setTimeout(error, 20000);\n });\n }; // Process ~> Promise ()\n // Stops the Swarm process.\n\n\n var stopProcess = function stopProcess(process) {\n return new Promise(function (resolve, reject) {\n process.stderr.removeAllListeners('data');\n process.stdout.removeAllListeners('data');\n process.stdin.removeAllListeners('error');\n process.removeAllListeners('error');\n process.removeAllListeners('exit');\n process.kill('SIGINT');\n var killTimeout = setTimeout(function () {\n return process.kill('SIGKILL');\n }, 8000);\n process.once('close', function () {\n clearTimeout(killTimeout);\n resolve();\n });\n });\n }; // SwarmSetup -> (SwarmAPI -> Promise ()) -> Promise ()\n // Receives a Swarm configuration object and a callback function. It then\n // checks if a local Swarm node is running. If no local Swarm is found, it\n // downloads the Swarm binaries to the dataDir (if not there), checksums,\n // starts the Swarm process and calls the callback function with an API\n // object using the local node. That callback must return a promise which\n // will resolve when it is done using the API, so that this function can\n // close the Swarm process properly. Returns a promise that resolves when the\n // user is done with the API and the Swarm process is closed.\n // TODO: check if Swarm process is already running (improve `isAvailable`)\n\n\n var local = function local(swarmSetup) {\n return function (useAPI) {\n return _isAvailable(\"http://localhost:8500\").then(function (isAvailable) {\n return isAvailable ? useAPI(at(\"http://localhost:8500\")).then(function () {}) : downloadBinary(swarmSetup.binPath, swarmSetup.archives).onData(function (data) {\n return (swarmSetup.onProgress || function () {})(data.length);\n }).then(function () {\n return startProcess(swarmSetup);\n }).then(function (process) {\n return useAPI(at(\"http://localhost:8500\")).then(function () {\n return process;\n });\n }).then(stopProcess);\n });\n };\n }; // String ~> Promise Bool\n // Returns true if Swarm is available on `url`.\n // Perfoms a test upload to determine that.\n // TODO: improve this?\n\n\n var _isAvailable = function isAvailable(swarmUrl) {\n var testFile = \"test\";\n var testHash = \"c9a99c7d326dcc6316f32fe2625b311f6dc49a175e6877681ded93137d3569e7\";\n return uploadData(swarmUrl)(testFile).then(function (hash) {\n return hash === testHash;\n })[\"catch\"](function () {\n return false;\n });\n }; // String -> String ~> Promise Bool\n // Returns a Promise which is true if that Swarm address is a directory.\n // Determines that by checking that it (i) is a JSON, (ii) has a .entries.\n // TODO: improve this?\n\n\n var isDirectory = function isDirectory(swarmUrl) {\n return function (hash) {\n return downloadData(swarmUrl)(hash).then(function (data) {\n try {\n return !!JSON.parse(toString(data)).entries;\n } catch (e) {\n return false;\n }\n });\n };\n }; // Uncurries a function; used to allow the f(x,y,z) style on exports.\n\n\n var uncurry = function uncurry(f) {\n return function (a, b, c, d, e) {\n var p; // Hardcoded because efficiency (`arguments` is very slow).\n\n if (typeof a !== \"undefined\") p = f(a);\n if (typeof b !== \"undefined\") p = f(b);\n if (typeof c !== \"undefined\") p = f(c);\n if (typeof d !== \"undefined\") p = f(d);\n if (typeof e !== \"undefined\") p = f(e);\n return p;\n };\n }; // () -> Promise Bool\n // Not sure how to mock Swarm to test it properly. Ideas?\n\n\n var test = function test() {\n return Promise.resolve(true);\n }; // Uint8Array -> String\n\n\n var toString = function toString(uint8Array) {\n return bytes.toString(bytes.fromUint8Array(uint8Array));\n }; // String -> Uint8Array\n\n\n var fromString = function fromString(string) {\n return bytes.toUint8Array(bytes.fromString(string));\n }; // String -> SwarmAPI\n // Fixes the `swarmUrl`, returning an API where you don't have to pass it.\n\n\n var at = function at(swarmUrl) {\n return {\n download: function download(hash, path) {\n return _download(swarmUrl)(hash)(path);\n },\n downloadData: uncurry(downloadData(swarmUrl)),\n downloadDataToDisk: uncurry(downloadDataToDisk(swarmUrl)),\n downloadDirectory: uncurry(downloadDirectory(swarmUrl)),\n downloadDirectoryToDisk: uncurry(downloadDirectoryToDisk(swarmUrl)),\n downloadEntries: uncurry(downloadEntries(swarmUrl)),\n downloadRoutes: uncurry(downloadRoutes(swarmUrl)),\n isAvailable: function isAvailable() {\n return _isAvailable(swarmUrl);\n },\n upload: function upload(arg) {\n return _upload(swarmUrl)(arg);\n },\n uploadData: uncurry(uploadData(swarmUrl)),\n uploadFile: uncurry(uploadFile(swarmUrl)),\n uploadFileFromDisk: uncurry(uploadFile(swarmUrl)),\n uploadDataFromDisk: uncurry(uploadDataFromDisk(swarmUrl)),\n uploadDirectory: uncurry(uploadDirectory(swarmUrl)),\n uploadDirectoryFromDisk: uncurry(uploadDirectoryFromDisk(swarmUrl)),\n uploadToManifest: uncurry(uploadToManifest(swarmUrl)),\n pick: pick,\n hash: hash,\n fromString: fromString,\n toString: toString\n };\n };\n\n return {\n at: at,\n local: local,\n download: _download,\n downloadBinary: downloadBinary,\n downloadData: downloadData,\n downloadDataToDisk: downloadDataToDisk,\n downloadDirectory: downloadDirectory,\n downloadDirectoryToDisk: downloadDirectoryToDisk,\n downloadEntries: downloadEntries,\n downloadRoutes: downloadRoutes,\n isAvailable: _isAvailable,\n startProcess: startProcess,\n stopProcess: stopProcess,\n upload: _upload,\n uploadData: uploadData,\n uploadDataFromDisk: uploadDataFromDisk,\n uploadFile: uploadFile,\n uploadFileFromDisk: uploadFileFromDisk,\n uploadDirectory: uploadDirectory,\n uploadDirectoryFromDisk: uploadDirectoryFromDisk,\n uploadToManifest: uploadToManifest,\n pick: pick,\n hash: hash,\n fromString: fromString,\n toString: toString\n };\n};","var generate = function generate(num, fn) {\n var a = [];\n for (var i = 0; i < num; ++i) {\n a.push(fn(i));\n }return a;\n};\n\nvar replicate = function replicate(num, val) {\n return generate(num, function () {\n return val;\n });\n};\n\nvar concat = function concat(a, b) {\n return a.concat(b);\n};\n\nvar flatten = function flatten(a) {\n var r = [];\n for (var j = 0, J = a.length; j < J; ++j) {\n for (var i = 0, I = a[j].length; i < I; ++i) {\n r.push(a[j][i]);\n }\n }return r;\n};\n\nvar chunksOf = function chunksOf(n, a) {\n var b = [];\n for (var i = 0, l = a.length; i < l; i += n) {\n b.push(a.slice(i, i + n));\n }return b;\n};\n\nmodule.exports = {\n generate: generate,\n replicate: replicate,\n concat: concat,\n flatten: flatten,\n chunksOf: chunksOf\n};","var A = require(\"./array.js\");\n\nvar at = function at(bytes, index) {\n return parseInt(bytes.slice(index * 2 + 2, index * 2 + 4), 16);\n};\n\nvar random = function random(bytes) {\n var rnd = void 0;\n if (typeof window !== \"undefined\" && window.crypto && window.crypto.getRandomValues) rnd = window.crypto.getRandomValues(new Uint8Array(bytes));else if (typeof require !== \"undefined\") rnd = require(\"c\" + \"rypto\").randomBytes(bytes);else throw \"Safe random numbers not available.\";\n var hex = \"0x\";\n for (var i = 0; i < bytes; ++i) {\n hex += (\"00\" + rnd[i].toString(16)).slice(-2);\n }return hex;\n};\n\nvar length = function length(a) {\n return (a.length - 2) / 2;\n};\n\nvar flatten = function flatten(a) {\n return \"0x\" + a.reduce(function (r, s) {\n return r + s.slice(2);\n }, \"\");\n};\n\nvar slice = function slice(i, j, bs) {\n return \"0x\" + bs.slice(i * 2 + 2, j * 2 + 2);\n};\n\nvar reverse = function reverse(hex) {\n var rev = \"0x\";\n for (var i = 0, l = length(hex); i < l; ++i) {\n rev += hex.slice((l - i) * 2, (l - i + 1) * 2);\n }\n return rev;\n};\n\nvar pad = function pad(l, hex) {\n return hex.length === l * 2 + 2 ? hex : pad(l, \"0x\" + \"0\" + hex.slice(2));\n};\n\nvar padRight = function padRight(l, hex) {\n return hex.length === l * 2 + 2 ? hex : padRight(l, hex + \"0\");\n};\n\nvar toArray = function toArray(hex) {\n var arr = [];\n for (var i = 2, l = hex.length; i < l; i += 2) {\n arr.push(parseInt(hex.slice(i, i + 2), 16));\n }return arr;\n};\n\nvar fromArray = function fromArray(arr) {\n var hex = \"0x\";\n for (var i = 0, l = arr.length; i < l; ++i) {\n var b = arr[i];\n hex += (b < 16 ? \"0\" : \"\") + b.toString(16);\n }\n return hex;\n};\n\nvar toUint8Array = function toUint8Array(hex) {\n return new Uint8Array(toArray(hex));\n};\n\nvar fromUint8Array = function fromUint8Array(arr) {\n return fromArray([].slice.call(arr, 0));\n};\n\nvar fromNumber = function fromNumber(num) {\n var hex = num.toString(16);\n return hex.length % 2 === 0 ? \"0x\" + hex : \"0x0\" + hex;\n};\n\nvar toNumber = function toNumber(hex) {\n return parseInt(hex.slice(2), 16);\n};\n\nvar concat = function concat(a, b) {\n return a.concat(b.slice(2));\n};\n\nvar fromNat = function fromNat(bn) {\n return bn === \"0x0\" ? \"0x\" : bn.length % 2 === 0 ? bn : \"0x0\" + bn.slice(2);\n};\n\nvar toNat = function toNat(bn) {\n return bn[2] === \"0\" ? \"0x\" + bn.slice(3) : bn;\n};\n\nvar fromAscii = function fromAscii(ascii) {\n var hex = \"0x\";\n for (var i = 0; i < ascii.length; ++i) {\n hex += (\"00\" + ascii.charCodeAt(i).toString(16)).slice(-2);\n }return hex;\n};\n\nvar toAscii = function toAscii(hex) {\n var ascii = \"\";\n for (var i = 2; i < hex.length; i += 2) {\n ascii += String.fromCharCode(parseInt(hex.slice(i, i + 2), 16));\n }return ascii;\n};\n\n// From https://gist.github.com/pascaldekloe/62546103a1576803dade9269ccf76330\nvar fromString = function fromString(s) {\n var makeByte = function makeByte(uint8) {\n var b = uint8.toString(16);\n return b.length < 2 ? \"0\" + b : b;\n };\n var bytes = \"0x\";\n for (var ci = 0; ci != s.length; ci++) {\n var c = s.charCodeAt(ci);\n if (c < 128) {\n bytes += makeByte(c);\n continue;\n }\n if (c < 2048) {\n bytes += makeByte(c >> 6 | 192);\n } else {\n if (c > 0xd7ff && c < 0xdc00) {\n if (++ci == s.length) return null;\n var c2 = s.charCodeAt(ci);\n if (c2 < 0xdc00 || c2 > 0xdfff) return null;\n c = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n bytes += makeByte(c >> 18 | 240);\n bytes += makeByte(c >> 12 & 63 | 128);\n } else {\n // c <= 0xffff\n bytes += makeByte(c >> 12 | 224);\n }\n bytes += makeByte(c >> 6 & 63 | 128);\n }\n bytes += makeByte(c & 63 | 128);\n }\n return bytes;\n};\n\nvar toString = function toString(bytes) {\n var s = '';\n var i = 0;\n var l = length(bytes);\n while (i < l) {\n var c = at(bytes, i++);\n if (c > 127) {\n if (c > 191 && c < 224) {\n if (i >= l) return null;\n c = (c & 31) << 6 | at(bytes, i) & 63;\n } else if (c > 223 && c < 240) {\n if (i + 1 >= l) return null;\n c = (c & 15) << 12 | (at(bytes, i) & 63) << 6 | at(bytes, ++i) & 63;\n } else if (c > 239 && c < 248) {\n if (i + 2 >= l) return null;\n c = (c & 7) << 18 | (at(bytes, i) & 63) << 12 | (at(bytes, ++i) & 63) << 6 | at(bytes, ++i) & 63;\n } else return null;\n ++i;\n }\n if (c <= 0xffff) s += String.fromCharCode(c);else if (c <= 0x10ffff) {\n c -= 0x10000;\n s += String.fromCharCode(c >> 10 | 0xd800);\n s += String.fromCharCode(c & 0x3FF | 0xdc00);\n } else return null;\n }\n return s;\n};\n\nmodule.exports = {\n random: random,\n length: length,\n concat: concat,\n flatten: flatten,\n slice: slice,\n reverse: reverse,\n pad: pad,\n padRight: padRight,\n fromAscii: fromAscii,\n toAscii: toAscii,\n fromString: fromString,\n toString: toString,\n fromNumber: fromNumber,\n toNumber: toNumber,\n fromNat: fromNat,\n toNat: toNat,\n fromArray: fromArray,\n toArray: toArray,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array\n};","// This was ported from https://github.com/emn178/js-sha3, with some minor\n// modifications and pruning. It is licensed under MIT:\n//\n// Copyright 2015-2016 Chen, Yi-Cyuan\n// \n// Permission is hereby granted, free of charge, to any person obtaining\n// a copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to\n// the following conditions:\n// \n// The above copyright notice and this permission notice shall be\n// included in all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar HEX_CHARS = '0123456789abcdef'.split('');\nvar KECCAK_PADDING = [1, 256, 65536, 16777216];\nvar SHIFT = [0, 8, 16, 24];\nvar RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n\nvar Keccak = function Keccak(bits) {\n return {\n blocks: [],\n reset: true,\n block: 0,\n start: 0,\n blockCount: 1600 - (bits << 1) >> 5,\n outputBlocks: bits >> 5,\n s: function (s) {\n return [].concat(s, s, s, s, s);\n }([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n };\n};\n\nvar update = function update(state, message) {\n var length = message.length,\n blocks = state.blocks,\n byteCount = state.blockCount << 2,\n blockCount = state.blockCount,\n outputBlocks = state.outputBlocks,\n s = state.s,\n index = 0,\n i,\n code;\n\n // update\n while (index < length) {\n if (state.reset) {\n state.reset = false;\n blocks[0] = state.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (typeof message !== \"string\") {\n for (i = state.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = state.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | code >> 6) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | code >> 12) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + ((code & 0x3ff) << 10 | message.charCodeAt(++index) & 0x3ff);\n blocks[i >> 2] |= (0xf0 | code >> 18) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 12 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n }\n }\n }\n state.lastByteIndex = i;\n if (i >= byteCount) {\n state.start = i - byteCount;\n state.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n state.reset = true;\n } else {\n state.start = i;\n }\n }\n\n // finalize\n i = state.lastByteIndex;\n blocks[i >> 2] |= KECCAK_PADDING[i & 3];\n if (state.lastByteIndex === byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n\n // toString\n var hex = '',\n i = 0,\n j = 0,\n block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[block >> 4 & 0x0F] + HEX_CHARS[block & 0x0F] + HEX_CHARS[block >> 12 & 0x0F] + HEX_CHARS[block >> 8 & 0x0F] + HEX_CHARS[block >> 20 & 0x0F] + HEX_CHARS[block >> 16 & 0x0F] + HEX_CHARS[block >> 28 & 0x0F] + HEX_CHARS[block >> 24 & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n return \"0x\" + hex;\n};\n\nvar f = function f(s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ (c2 << 1 | c3 >>> 31);\n l = c9 ^ (c3 << 1 | c2 >>> 31);\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ (c4 << 1 | c5 >>> 31);\n l = c1 ^ (c5 << 1 | c4 >>> 31);\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ (c6 << 1 | c7 >>> 31);\n l = c3 ^ (c7 << 1 | c6 >>> 31);\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ (c8 << 1 | c9 >>> 31);\n l = c5 ^ (c9 << 1 | c8 >>> 31);\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ (c0 << 1 | c1 >>> 31);\n l = c7 ^ (c1 << 1 | c0 >>> 31);\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = s[11] << 4 | s[10] >>> 28;\n b33 = s[10] << 4 | s[11] >>> 28;\n b14 = s[20] << 3 | s[21] >>> 29;\n b15 = s[21] << 3 | s[20] >>> 29;\n b46 = s[31] << 9 | s[30] >>> 23;\n b47 = s[30] << 9 | s[31] >>> 23;\n b28 = s[40] << 18 | s[41] >>> 14;\n b29 = s[41] << 18 | s[40] >>> 14;\n b20 = s[2] << 1 | s[3] >>> 31;\n b21 = s[3] << 1 | s[2] >>> 31;\n b2 = s[13] << 12 | s[12] >>> 20;\n b3 = s[12] << 12 | s[13] >>> 20;\n b34 = s[22] << 10 | s[23] >>> 22;\n b35 = s[23] << 10 | s[22] >>> 22;\n b16 = s[33] << 13 | s[32] >>> 19;\n b17 = s[32] << 13 | s[33] >>> 19;\n b48 = s[42] << 2 | s[43] >>> 30;\n b49 = s[43] << 2 | s[42] >>> 30;\n b40 = s[5] << 30 | s[4] >>> 2;\n b41 = s[4] << 30 | s[5] >>> 2;\n b22 = s[14] << 6 | s[15] >>> 26;\n b23 = s[15] << 6 | s[14] >>> 26;\n b4 = s[25] << 11 | s[24] >>> 21;\n b5 = s[24] << 11 | s[25] >>> 21;\n b36 = s[34] << 15 | s[35] >>> 17;\n b37 = s[35] << 15 | s[34] >>> 17;\n b18 = s[45] << 29 | s[44] >>> 3;\n b19 = s[44] << 29 | s[45] >>> 3;\n b10 = s[6] << 28 | s[7] >>> 4;\n b11 = s[7] << 28 | s[6] >>> 4;\n b42 = s[17] << 23 | s[16] >>> 9;\n b43 = s[16] << 23 | s[17] >>> 9;\n b24 = s[26] << 25 | s[27] >>> 7;\n b25 = s[27] << 25 | s[26] >>> 7;\n b6 = s[36] << 21 | s[37] >>> 11;\n b7 = s[37] << 21 | s[36] >>> 11;\n b38 = s[47] << 24 | s[46] >>> 8;\n b39 = s[46] << 24 | s[47] >>> 8;\n b30 = s[8] << 27 | s[9] >>> 5;\n b31 = s[9] << 27 | s[8] >>> 5;\n b12 = s[18] << 20 | s[19] >>> 12;\n b13 = s[19] << 20 | s[18] >>> 12;\n b44 = s[29] << 7 | s[28] >>> 25;\n b45 = s[28] << 7 | s[29] >>> 25;\n b26 = s[38] << 8 | s[39] >>> 24;\n b27 = s[39] << 8 | s[38] >>> 24;\n b8 = s[48] << 14 | s[49] >>> 18;\n b9 = s[49] << 14 | s[48] >>> 18;\n\n s[0] = b0 ^ ~b2 & b4;\n s[1] = b1 ^ ~b3 & b5;\n s[10] = b10 ^ ~b12 & b14;\n s[11] = b11 ^ ~b13 & b15;\n s[20] = b20 ^ ~b22 & b24;\n s[21] = b21 ^ ~b23 & b25;\n s[30] = b30 ^ ~b32 & b34;\n s[31] = b31 ^ ~b33 & b35;\n s[40] = b40 ^ ~b42 & b44;\n s[41] = b41 ^ ~b43 & b45;\n s[2] = b2 ^ ~b4 & b6;\n s[3] = b3 ^ ~b5 & b7;\n s[12] = b12 ^ ~b14 & b16;\n s[13] = b13 ^ ~b15 & b17;\n s[22] = b22 ^ ~b24 & b26;\n s[23] = b23 ^ ~b25 & b27;\n s[32] = b32 ^ ~b34 & b36;\n s[33] = b33 ^ ~b35 & b37;\n s[42] = b42 ^ ~b44 & b46;\n s[43] = b43 ^ ~b45 & b47;\n s[4] = b4 ^ ~b6 & b8;\n s[5] = b5 ^ ~b7 & b9;\n s[14] = b14 ^ ~b16 & b18;\n s[15] = b15 ^ ~b17 & b19;\n s[24] = b24 ^ ~b26 & b28;\n s[25] = b25 ^ ~b27 & b29;\n s[34] = b34 ^ ~b36 & b38;\n s[35] = b35 ^ ~b37 & b39;\n s[44] = b44 ^ ~b46 & b48;\n s[45] = b45 ^ ~b47 & b49;\n s[6] = b6 ^ ~b8 & b0;\n s[7] = b7 ^ ~b9 & b1;\n s[16] = b16 ^ ~b18 & b10;\n s[17] = b17 ^ ~b19 & b11;\n s[26] = b26 ^ ~b28 & b20;\n s[27] = b27 ^ ~b29 & b21;\n s[36] = b36 ^ ~b38 & b30;\n s[37] = b37 ^ ~b39 & b31;\n s[46] = b46 ^ ~b48 & b40;\n s[47] = b47 ^ ~b49 & b41;\n s[8] = b8 ^ ~b0 & b2;\n s[9] = b9 ^ ~b1 & b3;\n s[18] = b18 ^ ~b10 & b12;\n s[19] = b19 ^ ~b11 & b13;\n s[28] = b28 ^ ~b20 & b22;\n s[29] = b29 ^ ~b21 & b23;\n s[38] = b38 ^ ~b30 & b32;\n s[39] = b39 ^ ~b31 & b33;\n s[48] = b48 ^ ~b40 & b42;\n s[49] = b49 ^ ~b41 & b43;\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n};\n\nvar keccak = function keccak(bits) {\n return function (str) {\n var msg;\n if (str.slice(0, 2) === \"0x\") {\n msg = [];\n for (var i = 2, l = str.length; i < l; i += 2) {\n msg.push(parseInt(str.slice(i, i + 2), 16));\n }\n } else {\n msg = str;\n }\n return update(Keccak(bits, bits), msg);\n };\n};\n\nmodule.exports = {\n keccak256: keccak(256),\n keccak512: keccak(512),\n keccak256s: keccak(256),\n keccak512s: keccak(512)\n};","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","var Transform = require('readable-stream').Transform\n , inherits = require('util').inherits\n , xtend = require('xtend')\n\nfunction DestroyableTransform(opts) {\n Transform.call(this, opts)\n this._destroyed = false\n}\n\ninherits(DestroyableTransform, Transform)\n\nDestroyableTransform.prototype.destroy = function(err) {\n if (this._destroyed) return\n this._destroyed = true\n \n var self = this\n process.nextTick(function() {\n if (err)\n self.emit('error', err)\n self.emit('close')\n })\n}\n\n// a noop _transform function\nfunction noop (chunk, enc, callback) {\n callback(null, chunk)\n}\n\n\n// create a new export function, used by both the main export and\n// the .ctor export, contains common logic for dealing with arguments\nfunction through2 (construct) {\n return function (options, transform, flush) {\n if (typeof options == 'function') {\n flush = transform\n transform = options\n options = {}\n }\n\n if (typeof transform != 'function')\n transform = noop\n\n if (typeof flush != 'function')\n flush = null\n\n return construct(options, transform, flush)\n }\n}\n\n\n// main export, just make me a transform stream!\nmodule.exports = through2(function (options, transform, flush) {\n var t2 = new DestroyableTransform(options)\n\n t2._transform = transform\n\n if (flush)\n t2._flush = flush\n\n return t2\n})\n\n\n// make me a reusable prototype that I can `new`, or implicitly `new`\n// with a constructor call\nmodule.exports.ctor = through2(function (options, transform, flush) {\n function Through2 (override) {\n if (!(this instanceof Through2))\n return new Through2(override)\n\n this.options = xtend(options, override)\n\n DestroyableTransform.call(this, this.options)\n }\n\n inherits(Through2, DestroyableTransform)\n\n Through2.prototype._transform = transform\n\n if (flush)\n Through2.prototype._flush = flush\n\n return Through2\n})\n\n\nmodule.exports.obj = through2(function (options, transform, flush) {\n var t2 = new DestroyableTransform(xtend({ objectMode: true, highWaterMark: 16 }, options))\n\n t2._transform = transform\n\n if (flush)\n t2._flush = flush\n\n return t2\n})\n","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/**\n * Convert a typed array to a Buffer without a copy\n *\n * Author: Feross Aboukhadijeh \n * License: MIT\n *\n * `npm install typedarray-to-buffer`\n */\n\nvar isTypedArray = require('is-typedarray').strict\n\nmodule.exports = function typedarrayToBuffer (arr) {\n if (isTypedArray(arr)) {\n // To avoid a copy, use the typed array's underlying ArrayBuffer to back new Buffer\n var buf = Buffer.from(arr.buffer)\n if (arr.byteLength !== arr.buffer.byteLength) {\n // Respect the \"view\", i.e. byteOffset and byteLength, without doing a copy\n buf = buf.slice(arr.byteOffset, arr.byteOffset + arr.byteLength)\n }\n return buf\n } else {\n // Pass through all other types to `Buffer.from`\n return Buffer.from(arr)\n }\n}\n","module.exports = urlSetQuery\nfunction urlSetQuery (url, query) {\n if (query) {\n // remove optional leading symbols\n query = query.trim().replace(/^(\\?|#|&)/, '')\n\n // don't append empty query\n query = query ? ('?' + query) : query\n\n var parts = url.split(/[\\?\\#]/)\n var start = parts[0]\n if (query && /\\:\\/\\/[^\\/]*$/.test(start)) {\n // e.g. http://foo.com -> http://foo.com/\n start = start + '/'\n }\n var match = url.match(/(\\#.*)$/)\n url = start + query\n if (match) { // add hash back in\n url = url + match[0]\n }\n }\n return url\n}\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","/*! https://mths.be/utf8js v3.0.0 by @mathias */\n;(function(root) {\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tthrow Error(\n\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t' is not a scalar value'\n\t\t\t);\n\t\t}\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tcheckScalarValue(codePoint);\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string) {\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol() {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\tcheckScalarValue(codePoint);\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString) {\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol()) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\troot.version = '3.0.0';\n\troot.encode = utf8encode;\n\troot.decode = utf8decode;\n\n}(typeof exports === 'undefined' ? this.utf8 = {} : exports));\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n","module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n","module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n","\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar swarm = require(\"swarm-js\");\nvar Bzz = function Bzz(provider) {\n this.givenProvider = Bzz.givenProvider;\n if (provider && provider._requestManager) {\n provider = provider.currentProvider;\n }\n // only allow file picker when in browser\n if (typeof document !== 'undefined') {\n this.pick = swarm.pick;\n }\n this.setProvider(provider);\n};\n// set default ethereum provider\n/* jshint ignore:start */\nBzz.givenProvider = null;\nif (typeof ethereum !== 'undefined' && ethereum.bzz) {\n Bzz.givenProvider = ethereum.bzz;\n}\n/* jshint ignore:end */\nBzz.prototype.setProvider = function (provider) {\n // is ethereum provider\n if (!!provider && typeof provider === 'object' && typeof provider.bzz === 'string') {\n provider = provider.bzz;\n // is no string, set default\n }\n // else if(!_.isString(provider)) {\n // provider = 'http://swarm-gateways.net'; // default to gateway\n // }\n if (typeof provider === 'string') {\n this.currentProvider = provider;\n }\n else {\n this.currentProvider = null;\n var noProviderError = new Error('No provider set, please set one using bzz.setProvider().');\n this.download = this.upload = this.isAvailable = function () {\n throw noProviderError;\n };\n return false;\n }\n // add functions\n this.download = swarm.at(provider).download;\n this.upload = swarm.at(provider).upload;\n this.isAvailable = swarm.at(provider).isAvailable;\n return true;\n};\nmodule.exports = Bzz;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file errors.js\n * @author Fabian Vogelsteller \n * @author Marek Kotewicz \n * @date 2017\n */\n\"use strict\";\nmodule.exports = {\n ErrorResponse: function (result) {\n var message = !!result && !!result.error && !!result.error.message ? result.error.message : JSON.stringify(result);\n var data = (!!result.error && !!result.error.data) ? result.error.data : null;\n var err = new Error('Returned error: ' + message);\n err.data = data;\n return err;\n },\n InvalidNumberOfParams: function (got, expected, method) {\n return new Error('Invalid number of parameters for \"' + method + '\". Got ' + got + ' expected ' + expected + '!');\n },\n InvalidConnection: function (host, event) {\n return this.ConnectionError('CONNECTION ERROR: Couldn\\'t connect to node ' + host + '.', event);\n },\n InvalidProvider: function () {\n return new Error('Provider not set or invalid');\n },\n InvalidResponse: function (result) {\n var message = !!result && !!result.error && !!result.error.message ? result.error.message : 'Invalid JSON RPC response: ' + JSON.stringify(result);\n return new Error(message);\n },\n ConnectionTimeout: function (ms) {\n return new Error('CONNECTION TIMEOUT: timeout of ' + ms + ' ms achived');\n },\n ConnectionNotOpenError: function (event) {\n return this.ConnectionError('connection not open on send()', event);\n },\n ConnectionCloseError: function (event) {\n if (typeof event === 'object' && event.code && event.reason) {\n return this.ConnectionError('CONNECTION ERROR: The connection got closed with ' +\n 'the close code `' + event.code + '` and the following ' +\n 'reason string `' + event.reason + '`', event);\n }\n return new Error('CONNECTION ERROR: The connection closed unexpectedly');\n },\n MaxAttemptsReachedOnReconnectingError: function () {\n return new Error('Maximum number of reconnect attempts reached!');\n },\n PendingRequestsOnReconnectingError: function () {\n return new Error('CONNECTION ERROR: Provider started to reconnect before the response got received!');\n },\n ConnectionError: function (msg, event) {\n const error = new Error(msg);\n if (event) {\n error.code = event.code;\n error.reason = event.reason;\n }\n return error;\n },\n RevertInstructionError: function (reason, signature) {\n var error = new Error('Your request got reverted with the following reason string: ' + reason);\n error.reason = reason;\n error.signature = signature;\n return error;\n },\n TransactionRevertInstructionError: function (reason, signature, receipt) {\n var error = new Error('Transaction has been reverted by the EVM:\\n' + JSON.stringify(receipt, null, 2));\n error.reason = reason;\n error.signature = signature;\n error.receipt = receipt;\n return error;\n },\n TransactionError: function (message, receipt) {\n var error = new Error(message);\n error.receipt = receipt;\n return error;\n },\n NoContractAddressFoundError: function (receipt) {\n return this.TransactionError('The transaction receipt didn\\'t contain a contract address.', receipt);\n },\n ContractCodeNotStoredError: function (receipt) {\n return this.TransactionError('The contract code couldn\\'t be stored, please check your gas limit.', receipt);\n },\n TransactionRevertedWithoutReasonError: function (receipt) {\n return this.TransactionError('Transaction has been reverted by the EVM:\\n' + JSON.stringify(receipt, null, 2), receipt);\n },\n TransactionOutOfGasError: function (receipt) {\n return this.TransactionError('Transaction ran out of gas. Please provide more gas:\\n' + JSON.stringify(receipt, null, 2), receipt);\n },\n ResolverMethodMissingError: function (address, name) {\n return new Error('The resolver at ' + address + 'does not implement requested method: \"' + name + '\".');\n },\n ContractMissingABIError: function () {\n return new Error('You must provide the json interface of the contract when instantiating a contract object.');\n },\n ContractOnceRequiresCallbackError: function () {\n return new Error('Once requires a callback as the second parameter.');\n },\n ContractEventDoesNotExistError: function (eventName) {\n return new Error('Event \"' + eventName + '\" doesn\\'t exist in this contract.');\n },\n ContractReservedEventError: function (type) {\n return new Error('The event \"' + type + '\" is a reserved event name, you can\\'t use it.');\n },\n ContractMissingDeployDataError: function () {\n return new Error('No \"data\" specified in neither the given options, nor the default options.');\n },\n ContractNoAddressDefinedError: function () {\n return new Error('This contract object doesn\\'t have address set yet, please set an address first.');\n },\n ContractNoFromAddressDefinedError: function () {\n return new Error('No \"from\" address specified in neither the given options, nor the default options.');\n }\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file formatters.js\n * @author Fabian Vogelsteller \n * @author Marek Kotewicz \n * @date 2017\n */\n\"use strict\";\nvar utils = require('web3-utils');\nvar Iban = require('web3-eth-iban');\n/**\n * Will format the given storage key array values to hex strings.\n *\n * @method inputStorageKeysFormatter\n *\n * @param {Array} keys\n *\n * @returns {Array}\n */\nvar inputStorageKeysFormatter = function (keys) {\n return keys.map(utils.numberToHex);\n};\n/**\n * Will format the given proof response from the node.\n *\n * @method outputProofFormatter\n *\n * @param {object} proof\n *\n * @returns {object}\n */\nvar outputProofFormatter = function (proof) {\n proof.address = utils.toChecksumAddress(proof.address);\n proof.nonce = utils.hexToNumberString(proof.nonce);\n proof.balance = utils.hexToNumberString(proof.balance);\n return proof;\n};\n/**\n * Should the format output to a big number\n *\n * @method outputBigNumberFormatter\n *\n * @param {String|Number|BigNumber|BN} number\n *\n * @returns {BN} object\n */\nvar outputBigNumberFormatter = function (number) {\n return utils.toBN(number).toString(10);\n};\n/**\n * Returns true if the given blockNumber is 'latest', 'pending', or 'earliest.\n *\n * @method isPredefinedBlockNumber\n *\n * @param {String} blockNumber\n *\n * @returns {Boolean}\n */\nvar isPredefinedBlockNumber = function (blockNumber) {\n return blockNumber === 'latest' || blockNumber === 'pending' || blockNumber === 'earliest';\n};\n/**\n * Returns the given block number as hex string or does return the defaultBlock property of the current module\n *\n * @method inputDefaultBlockNumberFormatter\n *\n * @param {String|Number|BN|BigNumber} blockNumber\n *\n * @returns {String}\n */\nvar inputDefaultBlockNumberFormatter = function (blockNumber) {\n if (this && (blockNumber === undefined || blockNumber === null)) {\n return inputBlockNumberFormatter(this.defaultBlock);\n }\n return inputBlockNumberFormatter(blockNumber);\n};\n/**\n * Returns the given block number as hex string or the predefined block number 'latest', 'pending', 'earliest', 'genesis'\n *\n * @param {String|Number|BN|BigNumber} blockNumber\n *\n * @returns {String}\n */\nvar inputBlockNumberFormatter = function (blockNumber) {\n if (blockNumber === undefined) {\n return undefined;\n }\n if (isPredefinedBlockNumber(blockNumber)) {\n return blockNumber;\n }\n if (blockNumber === 'genesis') {\n return '0x0';\n }\n return (utils.isHexStrict(blockNumber)) ? ((typeof blockNumber === 'string') ? blockNumber.toLowerCase() : blockNumber) : utils.numberToHex(blockNumber);\n};\n/**\n * Formats the input of a transaction and converts all values to HEX\n *\n * @method _txInputFormatter\n * @param {Object} transaction options\n * @returns object\n */\nvar _txInputFormatter = function (options) {\n if (options.to) { // it might be contract creation\n options.to = inputAddressFormatter(options.to);\n }\n if (options.data && options.input) {\n throw new Error('You can\\'t have \"data\" and \"input\" as properties of transactions at the same time, please use either \"data\" or \"input\" instead.');\n }\n if (!options.data && options.input) {\n options.data = options.input;\n delete options.input;\n }\n if (options.data && !options.data.startsWith('0x')) {\n options.data = '0x' + options.data;\n }\n if (options.data && !utils.isHex(options.data)) {\n throw new Error('The data field must be HEX encoded data.');\n }\n // allow both\n if (options.gas || options.gasLimit) {\n options.gas = options.gas || options.gasLimit;\n }\n if (options.maxPriorityFeePerGas || options.maxFeePerGas) {\n delete options.gasPrice;\n }\n ['gasPrice', 'gas', 'value', 'maxPriorityFeePerGas', 'maxFeePerGas', 'nonce'].filter(function (key) {\n return options[key] !== undefined;\n }).forEach(function (key) {\n options[key] = utils.numberToHex(options[key]);\n });\n return options;\n};\n/**\n * Formats the input of a transaction and converts all values to HEX\n *\n * @method inputCallFormatter\n * @param {Object} transaction options\n * @returns object\n */\nvar inputCallFormatter = function (options) {\n options = _txInputFormatter(options);\n var from = options.from || (this ? this.defaultAccount : null);\n if (from) {\n options.from = inputAddressFormatter(from);\n }\n return options;\n};\n/**\n * Formats the input of a transaction and converts all values to HEX\n *\n * @method inputTransactionFormatter\n * @param {Object} options\n * @returns object\n */\nvar inputTransactionFormatter = function (options) {\n options = _txInputFormatter(options);\n // check from, only if not number, or object\n if (!(typeof options.from === 'number') && !(!!options.from && typeof options.from === 'object')) {\n options.from = options.from || (this ? this.defaultAccount : null);\n if (!options.from && !(typeof options.from === 'number')) {\n throw new Error('The send transactions \"from\" field must be defined!');\n }\n options.from = inputAddressFormatter(options.from);\n }\n return options;\n};\n/**\n * Hex encodes the data passed to eth_sign and personal_sign\n *\n * @method inputSignFormatter\n * @param {String} data\n * @returns {String}\n */\nvar inputSignFormatter = function (data) {\n return (utils.isHexStrict(data)) ? data : utils.utf8ToHex(data);\n};\n/**\n * Formats the output of a transaction to its proper values\n *\n * @method outputTransactionFormatter\n * @param {Object} tx\n * @returns {Object}\n */\nvar outputTransactionFormatter = function (tx) {\n if (tx.blockNumber !== null)\n tx.blockNumber = utils.hexToNumber(tx.blockNumber);\n if (tx.transactionIndex !== null)\n tx.transactionIndex = utils.hexToNumber(tx.transactionIndex);\n tx.nonce = utils.hexToNumber(tx.nonce);\n tx.gas = utils.hexToNumber(tx.gas);\n if (tx.gasPrice)\n tx.gasPrice = outputBigNumberFormatter(tx.gasPrice);\n if (tx.maxFeePerGas)\n tx.maxFeePerGas = outputBigNumberFormatter(tx.maxFeePerGas);\n if (tx.maxPriorityFeePerGas)\n tx.maxPriorityFeePerGas = outputBigNumberFormatter(tx.maxPriorityFeePerGas);\n if (tx.type)\n tx.type = utils.hexToNumber(tx.type);\n tx.value = outputBigNumberFormatter(tx.value);\n if (tx.to && utils.isAddress(tx.to)) { // tx.to could be `0x0` or `null` while contract creation\n tx.to = utils.toChecksumAddress(tx.to);\n }\n else {\n tx.to = null; // set to `null` if invalid address\n }\n if (tx.from) {\n tx.from = utils.toChecksumAddress(tx.from);\n }\n return tx;\n};\n/**\n * Formats the output of a transaction receipt to its proper values\n *\n * @method outputTransactionReceiptFormatter\n * @param {Object} receipt\n * @returns {Object}\n */\nvar outputTransactionReceiptFormatter = function (receipt) {\n if (typeof receipt !== 'object') {\n throw new Error('Received receipt is invalid: ' + receipt);\n }\n if (receipt.blockNumber !== null)\n receipt.blockNumber = utils.hexToNumber(receipt.blockNumber);\n if (receipt.transactionIndex !== null)\n receipt.transactionIndex = utils.hexToNumber(receipt.transactionIndex);\n receipt.cumulativeGasUsed = utils.hexToNumber(receipt.cumulativeGasUsed);\n receipt.gasUsed = utils.hexToNumber(receipt.gasUsed);\n if (Array.isArray(receipt.logs)) {\n receipt.logs = receipt.logs.map(outputLogFormatter);\n }\n if (receipt.effectiveGasPrice) {\n receipt.effectiveGasPrice = utils.hexToNumber(receipt.effectiveGasPrice);\n }\n if (receipt.contractAddress) {\n receipt.contractAddress = utils.toChecksumAddress(receipt.contractAddress);\n }\n if (typeof receipt.status !== 'undefined' && receipt.status !== null) {\n receipt.status = Boolean(parseInt(receipt.status));\n }\n return receipt;\n};\n/**\n * Formats the output of a block to its proper values\n *\n * @method outputBlockFormatter\n * @param {Object} block\n * @returns {Object}\n */\nvar outputBlockFormatter = function (block) {\n // transform to number\n block.gasLimit = utils.hexToNumber(block.gasLimit);\n block.gasUsed = utils.hexToNumber(block.gasUsed);\n block.size = utils.hexToNumber(block.size);\n block.timestamp = utils.hexToNumber(block.timestamp);\n if (block.number !== null)\n block.number = utils.hexToNumber(block.number);\n if (block.difficulty)\n block.difficulty = outputBigNumberFormatter(block.difficulty);\n if (block.totalDifficulty)\n block.totalDifficulty = outputBigNumberFormatter(block.totalDifficulty);\n if (Array.isArray(block.transactions)) {\n block.transactions.forEach(function (item) {\n if (!(typeof item === 'string'))\n return outputTransactionFormatter(item);\n });\n }\n if (block.miner)\n block.miner = utils.toChecksumAddress(block.miner);\n if (block.baseFeePerGas)\n block.baseFeePerGas = utils.hexToNumber(block.baseFeePerGas);\n return block;\n};\n/**\n * Formats the input of a log\n *\n * @method inputLogFormatter\n * @param {Object} log object\n * @returns {Object} log\n */\nvar inputLogFormatter = function (options) {\n var toTopic = function (value) {\n if (value === null || typeof value === 'undefined')\n return null;\n value = String(value);\n if (value.indexOf('0x') === 0)\n return value;\n else\n return utils.fromUtf8(value);\n };\n if (options === undefined)\n options = {};\n // If options !== undefined, don't blow out existing data\n if (options.fromBlock === undefined)\n options = { ...options, fromBlock: 'latest' };\n if (options.fromBlock || options.fromBlock === 0)\n options.fromBlock = inputBlockNumberFormatter(options.fromBlock);\n if (options.toBlock || options.toBlock === 0)\n options.toBlock = inputBlockNumberFormatter(options.toBlock);\n // make sure topics, get converted to hex\n options.topics = options.topics || [];\n options.topics = options.topics.map(function (topic) {\n return (Array.isArray(topic)) ? topic.map(toTopic) : toTopic(topic);\n });\n toTopic = null;\n if (options.address) {\n options.address = (Array.isArray(options.address)) ? options.address.map(function (addr) {\n return inputAddressFormatter(addr);\n }) : inputAddressFormatter(options.address);\n }\n return options;\n};\n/**\n * Formats the output of a log\n *\n * @method outputLogFormatter\n * @param {Object} log object\n * @returns {Object} log\n */\nvar outputLogFormatter = function (log) {\n // generate a custom log id\n if (typeof log.blockHash === 'string' &&\n typeof log.transactionHash === 'string' &&\n typeof log.logIndex === 'string') {\n var shaId = utils.sha3(log.blockHash.replace('0x', '') + log.transactionHash.replace('0x', '') + log.logIndex.replace('0x', ''));\n log.id = 'log_' + shaId.replace('0x', '').slice(0, 8);\n }\n else if (!log.id) {\n log.id = null;\n }\n if (log.blockNumber !== null)\n log.blockNumber = utils.hexToNumber(log.blockNumber);\n if (log.transactionIndex !== null)\n log.transactionIndex = utils.hexToNumber(log.transactionIndex);\n if (log.logIndex !== null)\n log.logIndex = utils.hexToNumber(log.logIndex);\n if (log.address) {\n log.address = utils.toChecksumAddress(log.address);\n }\n return log;\n};\n/**\n * Formats the input of a whisper post and converts all values to HEX\n *\n * @method inputPostFormatter\n * @param {Object} transaction object\n * @returns {Object}\n */\nvar inputPostFormatter = function (post) {\n // post.payload = utils.toHex(post.payload);\n if (post.ttl)\n post.ttl = utils.numberToHex(post.ttl);\n if (post.workToProve)\n post.workToProve = utils.numberToHex(post.workToProve);\n if (post.priority)\n post.priority = utils.numberToHex(post.priority);\n // fallback\n if (!Array.isArray(post.topics)) {\n post.topics = post.topics ? [post.topics] : [];\n }\n // format the following options\n post.topics = post.topics.map(function (topic) {\n // convert only if not hex\n return (topic.indexOf('0x') === 0) ? topic : utils.fromUtf8(topic);\n });\n return post;\n};\n/**\n * Formats the output of a received post message\n *\n * @method outputPostFormatter\n * @param {Object}\n * @returns {Object}\n */\nvar outputPostFormatter = function (post) {\n post.expiry = utils.hexToNumber(post.expiry);\n post.sent = utils.hexToNumber(post.sent);\n post.ttl = utils.hexToNumber(post.ttl);\n post.workProved = utils.hexToNumber(post.workProved);\n // post.payloadRaw = post.payload;\n // post.payload = utils.hexToAscii(post.payload);\n // if (utils.isJson(post.payload)) {\n // post.payload = JSON.parse(post.payload);\n // }\n // format the following options\n if (!post.topics) {\n post.topics = [];\n }\n post.topics = post.topics.map(function (topic) {\n return utils.toUtf8(topic);\n });\n return post;\n};\nvar inputAddressFormatter = function (address) {\n var iban = new Iban(address);\n if (iban.isValid() && iban.isDirect()) {\n return iban.toAddress().toLowerCase();\n }\n else if (utils.isAddress(address)) {\n return '0x' + address.toLowerCase().replace('0x', '');\n }\n throw new Error(`Provided address ${address} is invalid, the capitalization checksum test failed, or it's an indirect IBAN address which can't be converted.`);\n};\nvar outputSyncingFormatter = function (result) {\n result.startingBlock = utils.hexToNumber(result.startingBlock);\n result.currentBlock = utils.hexToNumber(result.currentBlock);\n result.highestBlock = utils.hexToNumber(result.highestBlock);\n if (result.knownStates) {\n result.knownStates = utils.hexToNumber(result.knownStates);\n result.pulledStates = utils.hexToNumber(result.pulledStates);\n }\n return result;\n};\nmodule.exports = {\n inputDefaultBlockNumberFormatter: inputDefaultBlockNumberFormatter,\n inputBlockNumberFormatter: inputBlockNumberFormatter,\n inputCallFormatter: inputCallFormatter,\n inputTransactionFormatter: inputTransactionFormatter,\n inputAddressFormatter: inputAddressFormatter,\n inputPostFormatter: inputPostFormatter,\n inputLogFormatter: inputLogFormatter,\n inputSignFormatter: inputSignFormatter,\n inputStorageKeysFormatter: inputStorageKeysFormatter,\n outputProofFormatter: outputProofFormatter,\n outputBigNumberFormatter: outputBigNumberFormatter,\n outputTransactionFormatter: outputTransactionFormatter,\n outputTransactionReceiptFormatter: outputTransactionReceiptFormatter,\n outputBlockFormatter: outputBlockFormatter,\n outputLogFormatter: outputLogFormatter,\n outputPostFormatter: outputPostFormatter,\n outputSyncingFormatter: outputSyncingFormatter\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar errors = require('./errors');\nvar formatters = require('./formatters');\nmodule.exports = {\n errors: errors,\n formatters: formatters\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @author Marek Kotewicz \n * @date 2017\n */\n'use strict';\nvar errors = require('web3-core-helpers').errors;\nvar formatters = require('web3-core-helpers').formatters;\nvar utils = require('web3-utils');\nvar promiEvent = require('web3-core-promievent');\nvar Subscriptions = require('web3-core-subscriptions').subscriptions;\nvar EthersTransactionUtils = require('@ethersproject/transactions');\nvar Method = function Method(options) {\n if (!options.call || !options.name) {\n throw new Error('When creating a method you need to provide at least the \"name\" and \"call\" property.');\n }\n this.name = options.name;\n this.call = options.call;\n this.params = options.params || 0;\n this.inputFormatter = options.inputFormatter;\n this.outputFormatter = options.outputFormatter;\n this.transformPayload = options.transformPayload;\n this.extraFormatters = options.extraFormatters;\n this.abiCoder = options.abiCoder; // Will be used to encode the revert reason string\n this.requestManager = options.requestManager;\n // reference to eth.accounts\n this.accounts = options.accounts;\n this.defaultBlock = options.defaultBlock || 'latest';\n this.defaultAccount = options.defaultAccount || null;\n this.transactionBlockTimeout = options.transactionBlockTimeout || 50;\n this.transactionConfirmationBlocks = options.transactionConfirmationBlocks || 24;\n this.transactionPollingTimeout = options.transactionPollingTimeout || 750;\n this.transactionPollingInterval = options.transactionPollingInterval || 1000;\n this.blockHeaderTimeout = options.blockHeaderTimeout || 10; // 10 seconds\n this.defaultCommon = options.defaultCommon;\n this.defaultChain = options.defaultChain;\n this.defaultHardfork = options.defaultHardfork;\n this.handleRevert = options.handleRevert;\n};\nMethod.prototype.setRequestManager = function (requestManager, accounts) {\n this.requestManager = requestManager;\n // reference to eth.accounts\n if (accounts) {\n this.accounts = accounts;\n }\n};\nMethod.prototype.createFunction = function (requestManager, accounts) {\n var func = this.buildCall();\n Object.defineProperty(func, 'call', { configurable: true, writable: true, value: this.call });\n this.setRequestManager(requestManager || this.requestManager, accounts || this.accounts);\n return func;\n};\nMethod.prototype.attachToObject = function (obj) {\n var func = this.buildCall();\n Object.defineProperty(func, 'call', { configurable: true, writable: true, value: this.call });\n var name = this.name.split('.');\n if (name.length > 1) {\n obj[name[0]] = obj[name[0]] || {};\n obj[name[0]][name[1]] = func;\n }\n else {\n obj[name[0]] = func;\n }\n};\n/**\n * Should be used to determine name of the jsonrpc method based on arguments\n *\n * @method getCall\n * @param {Array} arguments\n * @return {String} name of jsonrpc method\n */\nMethod.prototype.getCall = function (args) {\n return typeof this.call === 'function' ? this.call(args) : this.call;\n};\n/**\n * Should be used to extract callback from array of arguments. Modifies input param\n *\n * @method extractCallback\n * @param {Array} arguments\n * @return {Function|Null} callback, if exists\n */\nMethod.prototype.extractCallback = function (args) {\n if (typeof (args[args.length - 1]) === 'function') {\n return args.pop(); // modify the args array!\n }\n};\n/**\n * Should be called to check if the number of arguments is correct\n *\n * @method validateArgs\n * @param {Array} arguments\n * @throws {Error} if it is not\n */\nMethod.prototype.validateArgs = function (args) {\n if (args.length !== this.params) {\n throw errors.InvalidNumberOfParams(args.length, this.params, this.name);\n }\n};\n/**\n * Should be called to format input args of method\n *\n * @method formatInput\n * @param {Array}\n * @return {Array}\n */\nMethod.prototype.formatInput = function (args) {\n var _this = this;\n if (!this.inputFormatter) {\n return args;\n }\n return this.inputFormatter.map(function (formatter, index) {\n // bind this for defaultBlock, and defaultAccount\n return formatter ? formatter.call(_this, args[index]) : args[index];\n });\n};\n/**\n * Should be called to format output(result) of method\n *\n * @method formatOutput\n * @param {Object}\n * @return {Object}\n */\nMethod.prototype.formatOutput = function (result) {\n var _this = this;\n if (Array.isArray(result)) {\n return result.map(function (res) {\n return _this.outputFormatter && res ? _this.outputFormatter(res) : res;\n });\n }\n else {\n return this.outputFormatter && result ? this.outputFormatter(result) : result;\n }\n};\n/**\n * Should create payload from given input args\n *\n * @method toPayload\n * @param {Array} args\n * @return {Object}\n */\nMethod.prototype.toPayload = function (args) {\n var call = this.getCall(args);\n var callback = this.extractCallback(args);\n var params = this.formatInput(args);\n this.validateArgs(params);\n var payload = {\n method: call,\n params: params,\n callback: callback\n };\n if (this.transformPayload) {\n payload = this.transformPayload(payload);\n }\n return payload;\n};\nMethod.prototype._confirmTransaction = function (defer, result, payload) {\n var method = this, promiseResolved = false, canUnsubscribe = true, timeoutCount = 0, confirmationCount = 0, intervalId = null, blockHeaderTimeoutId = null, lastBlock = null, receiptJSON = '', gasProvided = ((!!payload.params[0] && typeof payload.params[0] === 'object') && payload.params[0].gas) ? payload.params[0].gas : null, isContractDeployment = (!!payload.params[0] && typeof payload.params[0] === 'object') &&\n payload.params[0].data &&\n payload.params[0].from &&\n !payload.params[0].to, hasBytecode = isContractDeployment && payload.params[0].data.length > 2;\n // add custom send Methods\n var _ethereumCalls = [\n new Method({\n name: 'getBlockByNumber',\n call: 'eth_getBlockByNumber',\n params: 2,\n inputFormatter: [formatters.inputBlockNumberFormatter, function (val) {\n return !!val;\n }],\n outputFormatter: formatters.outputBlockFormatter\n }),\n new Method({\n name: 'getTransactionReceipt',\n call: 'eth_getTransactionReceipt',\n params: 1,\n inputFormatter: [null],\n outputFormatter: formatters.outputTransactionReceiptFormatter\n }),\n new Method({\n name: 'getCode',\n call: 'eth_getCode',\n params: 2,\n inputFormatter: [formatters.inputAddressFormatter, formatters.inputDefaultBlockNumberFormatter]\n }),\n new Method({\n name: 'getTransactionByHash',\n call: 'eth_getTransactionByHash',\n params: 1,\n inputFormatter: [null],\n outputFormatter: formatters.outputTransactionFormatter\n }),\n new Subscriptions({\n name: 'subscribe',\n type: 'eth',\n subscriptions: {\n 'newBlockHeaders': {\n subscriptionName: 'newHeads',\n params: 0,\n outputFormatter: formatters.outputBlockFormatter\n }\n }\n })\n ];\n // attach methods to this._ethereumCall\n var _ethereumCall = {};\n _ethereumCalls.forEach(mthd => {\n mthd.attachToObject(_ethereumCall);\n mthd.requestManager = method.requestManager; // assign rather than call setRequestManager()\n });\n // fire \"receipt\" and confirmation events and resolve after\n var checkConfirmation = function (existingReceipt, isPolling, err, blockHeader, sub) {\n if (!err) {\n // create fake unsubscribe\n if (!sub) {\n sub = {\n unsubscribe: function () {\n clearInterval(intervalId);\n clearTimeout(blockHeaderTimeoutId);\n }\n };\n }\n // if we have a valid receipt we don't need to send a request\n return (existingReceipt ? promiEvent.resolve(existingReceipt) : _ethereumCall.getTransactionReceipt(result))\n // catch error from requesting receipt\n .catch(function (err) {\n sub.unsubscribe();\n promiseResolved = true;\n utils._fireError({\n message: 'Failed to check for transaction receipt:',\n data: err\n }, defer.eventEmitter, defer.reject);\n })\n // if CONFIRMATION listener exists check for confirmations, by setting canUnsubscribe = false\n .then(async function (receipt) {\n if (!receipt || !receipt.blockHash) {\n throw new Error('Receipt missing or blockHash null');\n }\n // apply extra formatters\n if (method.extraFormatters && method.extraFormatters.receiptFormatter) {\n receipt = method.extraFormatters.receiptFormatter(receipt);\n }\n // check if confirmation listener exists\n if (defer.eventEmitter.listeners('confirmation').length > 0) {\n var block;\n // If there was an immediately retrieved receipt, it's already\n // been confirmed by the direct call to checkConfirmation needed\n // for parity instant-seal\n if (existingReceipt === undefined || confirmationCount !== 0) {\n // Get latest block to emit with confirmation\n var latestBlock = await _ethereumCall.getBlockByNumber('latest');\n var latestBlockHash = latestBlock ? latestBlock.hash : null;\n if (isPolling) { // Check if actually a new block is existing on polling\n if (lastBlock) {\n block = await _ethereumCall.getBlockByNumber(lastBlock.number + 1);\n if (block) {\n lastBlock = block;\n defer.eventEmitter.emit('confirmation', confirmationCount, receipt, latestBlockHash);\n }\n }\n else {\n block = await _ethereumCall.getBlockByNumber(receipt.blockNumber);\n lastBlock = block;\n defer.eventEmitter.emit('confirmation', confirmationCount, receipt, latestBlockHash);\n }\n }\n else {\n defer.eventEmitter.emit('confirmation', confirmationCount, receipt, latestBlockHash);\n }\n }\n if ((isPolling && block) || !isPolling) {\n confirmationCount++;\n }\n canUnsubscribe = false;\n if (confirmationCount === method.transactionConfirmationBlocks + 1) { // add 1 so we account for conf 0\n sub.unsubscribe();\n defer.eventEmitter.removeAllListeners();\n }\n }\n return receipt;\n })\n // CHECK for CONTRACT DEPLOYMENT\n .then(async function (receipt) {\n if (isContractDeployment && !promiseResolved) {\n if (!receipt.contractAddress) {\n if (canUnsubscribe) {\n sub.unsubscribe();\n promiseResolved = true;\n }\n utils._fireError(errors.NoContractAddressFoundError(receipt), defer.eventEmitter, defer.reject, null, receipt);\n return;\n }\n var code;\n try {\n code = await _ethereumCall.getCode(receipt.contractAddress);\n }\n catch (err) {\n // ignore;\n }\n if (!code) {\n return;\n }\n // If deployment is status.true and there was a real\n // bytecode string, assume it was successful.\n var deploymentSuccess = receipt.status === true && hasBytecode;\n if (deploymentSuccess || code.length > 2) {\n defer.eventEmitter.emit('receipt', receipt);\n // if contract, return instance instead of receipt\n if (method.extraFormatters && method.extraFormatters.contractDeployFormatter) {\n defer.resolve(method.extraFormatters.contractDeployFormatter(receipt));\n }\n else {\n defer.resolve(receipt);\n }\n // need to remove listeners, as they aren't removed automatically when succesfull\n if (canUnsubscribe) {\n defer.eventEmitter.removeAllListeners();\n }\n }\n else {\n utils._fireError(errors.ContractCodeNotStoredError(receipt), defer.eventEmitter, defer.reject, null, receipt);\n }\n if (canUnsubscribe) {\n sub.unsubscribe();\n }\n promiseResolved = true;\n }\n return receipt;\n })\n // CHECK for normal tx check for receipt only\n .then(async function (receipt) {\n if (!isContractDeployment && !promiseResolved) {\n if (!receipt.outOfGas &&\n (!gasProvided || gasProvided !== receipt.gasUsed) &&\n (receipt.status === true || receipt.status === '0x1' || typeof receipt.status === 'undefined')) {\n defer.eventEmitter.emit('receipt', receipt);\n defer.resolve(receipt);\n // need to remove listeners, as they aren't removed automatically when succesfull\n if (canUnsubscribe) {\n defer.eventEmitter.removeAllListeners();\n }\n }\n else {\n receiptJSON = JSON.stringify(receipt, null, 2);\n if (receipt.status === false || receipt.status === '0x0') {\n try {\n var revertMessage = null;\n if (method.handleRevert &&\n (method.call === 'eth_sendTransaction' || method.call === 'eth_sendRawTransaction')) {\n var txReplayOptions = payload.params[0];\n // If send was raw, fetch the transaction and reconstitute the\n // original params so they can be replayed with `eth_call`\n if (method.call === 'eth_sendRawTransaction') {\n var rawTransactionHex = payload.params[0];\n var parsedTx = EthersTransactionUtils.parse(rawTransactionHex);\n txReplayOptions = formatters.inputTransactionFormatter({\n data: parsedTx.data,\n to: parsedTx.to,\n from: parsedTx.from,\n gas: parsedTx.gasLimit.toHexString(),\n gasPrice: parsedTx.gasPrice ? parsedTx.gasPrice.toHexString() : undefined,\n value: parsedTx.value.toHexString()\n });\n }\n // Get revert reason string with eth_call\n revertMessage = await method.getRevertReason(txReplayOptions, receipt.blockNumber);\n if (revertMessage) { // Only throw a revert error if a revert reason is existing\n utils._fireError(errors.TransactionRevertInstructionError(revertMessage.reason, revertMessage.signature, receipt), defer.eventEmitter, defer.reject, null, receipt);\n }\n else {\n throw false; // Throw false and let the try/catch statement handle the error correctly after\n }\n }\n else {\n throw false; // Throw false and let the try/catch statement handle the error correctly after\n }\n }\n catch (error) {\n // Throw an normal revert error if no revert reason is given or the detection of it is disabled\n utils._fireError(errors.TransactionRevertedWithoutReasonError(receipt), defer.eventEmitter, defer.reject, null, receipt);\n }\n }\n else {\n // Throw OOG if status is not existing and provided gas and used gas are equal\n utils._fireError(errors.TransactionOutOfGasError(receipt), defer.eventEmitter, defer.reject, null, receipt);\n }\n }\n if (canUnsubscribe) {\n sub.unsubscribe();\n }\n promiseResolved = true;\n }\n })\n // time out the transaction if not mined after 50 blocks\n .catch(function () {\n timeoutCount++;\n // check to see if we are http polling\n if (!!isPolling) {\n // polling timeout is different than transactionBlockTimeout blocks since we are triggering every second\n if (timeoutCount - 1 >= method.transactionPollingTimeout) {\n sub.unsubscribe();\n promiseResolved = true;\n utils._fireError(errors.TransactionError('Transaction was not mined within ' + method.transactionPollingTimeout + ' seconds, please make sure your transaction was properly sent. Be aware that it might still be mined!'), defer.eventEmitter, defer.reject);\n }\n }\n else {\n if (timeoutCount - 1 >= method.transactionBlockTimeout) {\n sub.unsubscribe();\n promiseResolved = true;\n utils._fireError(errors.TransactionError('Transaction was not mined within ' + method.transactionBlockTimeout + ' blocks, please make sure your transaction was properly sent. Be aware that it might still be mined!'), defer.eventEmitter, defer.reject);\n }\n }\n });\n }\n else {\n sub.unsubscribe();\n promiseResolved = true;\n utils._fireError({\n message: 'Failed to subscribe to new newBlockHeaders to confirm the transaction receipts.',\n data: err\n }, defer.eventEmitter, defer.reject);\n }\n };\n // start watching for confirmation depending on the support features of the provider\n var startWatching = function (existingReceipt) {\n let blockHeaderArrived = false;\n const startInterval = () => {\n intervalId = setInterval(checkConfirmation.bind(null, existingReceipt, true), method.transactionPollingInterval);\n };\n // If provider do not support event subscription use polling\n if (!this.requestManager.provider.on) {\n return startInterval();\n }\n // Subscribe to new block headers to look for tx receipt\n _ethereumCall.subscribe('newBlockHeaders', function (err, blockHeader, sub) {\n blockHeaderArrived = true;\n if (err || !blockHeader) {\n // fall back to polling\n return startInterval();\n }\n checkConfirmation(existingReceipt, false, err, blockHeader, sub);\n });\n // Fallback to polling if tx receipt didn't arrived in \"blockHeaderTimeout\" [10 seconds]\n blockHeaderTimeoutId = setTimeout(() => {\n if (!blockHeaderArrived) {\n startInterval();\n }\n }, this.blockHeaderTimeout * 1000);\n }.bind(this);\n // first check if we already have a confirmed transaction\n _ethereumCall.getTransactionReceipt(result)\n .then(function (receipt) {\n if (receipt && receipt.blockHash) {\n if (defer.eventEmitter.listeners('confirmation').length > 0) {\n // We must keep on watching for new Blocks, if a confirmation listener is present\n startWatching(receipt);\n }\n checkConfirmation(receipt, false);\n }\n else if (!promiseResolved) {\n startWatching();\n }\n })\n .catch(function () {\n if (!promiseResolved)\n startWatching();\n });\n};\nvar getWallet = function (from, accounts) {\n var wallet = null;\n // is index given\n if (typeof from === 'number') {\n wallet = accounts.wallet[from];\n // is account given\n }\n else if (!!from && typeof from === 'object' && from.address && from.privateKey) {\n wallet = from;\n // search in wallet for address\n }\n else {\n wallet = accounts.wallet[from.toLowerCase()];\n }\n return wallet;\n};\nMethod.prototype.buildCall = function () {\n var method = this, isSendTx = (method.call === 'eth_sendTransaction' || method.call === 'eth_sendRawTransaction'), // || method.call === 'personal_sendTransaction'\n isCall = (method.call === 'eth_call');\n // actual send function\n var send = function () {\n var defer = promiEvent(!isSendTx), payload = method.toPayload(Array.prototype.slice.call(arguments));\n // CALLBACK function\n var sendTxCallback = function (err, result) {\n if (method.handleRevert && isCall && method.abiCoder) {\n var reasonData;\n // Ganache / Geth <= 1.9.13 return the reason data as a successful eth_call response\n // Geth >= 1.9.15 attaches the reason data to an error object.\n // Geth 1.9.14 is missing revert reason (https://github.com/ethereum/web3.js/issues/3520)\n if (!err && method.isRevertReasonString(result)) {\n reasonData = result.substring(10);\n }\n else if (err && err.data) {\n reasonData = err.data.substring(10);\n }\n if (reasonData) {\n var reason = method.abiCoder.decodeParameter('string', '0x' + reasonData);\n var signature = 'Error(String)';\n utils._fireError(errors.RevertInstructionError(reason, signature), defer.eventEmitter, defer.reject, payload.callback, {\n reason: reason,\n signature: signature\n });\n return;\n }\n }\n try {\n result = method.formatOutput(result);\n }\n catch (e) {\n err = e;\n }\n if (result instanceof Error) {\n err = result;\n }\n if (!err) {\n if (payload.callback) {\n payload.callback(null, result);\n }\n }\n else {\n if (err.error) {\n err = err.error;\n }\n return utils._fireError(err, defer.eventEmitter, defer.reject, payload.callback);\n }\n // return PROMISE\n if (!isSendTx) {\n if (!err) {\n defer.resolve(result);\n }\n // return PROMIEVENT\n }\n else {\n defer.eventEmitter.emit('transactionHash', result);\n method._confirmTransaction(defer, result, payload);\n }\n };\n // SENDS the SIGNED SIGNATURE\n var sendSignedTx = function (sign) {\n var signedPayload = { ...payload,\n method: 'eth_sendRawTransaction',\n params: [sign.rawTransaction]\n };\n method.requestManager.send(signedPayload, sendTxCallback);\n };\n var sendRequest = function (payload, method) {\n if (method && method.accounts && method.accounts.wallet && method.accounts.wallet.length) {\n var wallet;\n // ETH_SENDTRANSACTION\n if (payload.method === 'eth_sendTransaction') {\n var tx = payload.params[0];\n wallet = getWallet((!!tx && typeof tx === 'object') ? tx.from : null, method.accounts);\n // If wallet was found, sign tx, and send using sendRawTransaction\n if (wallet && wallet.privateKey) {\n var tx = JSON.parse(JSON.stringify(tx));\n delete tx.from;\n if (method.defaultChain && !tx.chain) {\n tx.chain = method.defaultChain;\n }\n if (method.defaultHardfork && !tx.hardfork) {\n tx.hardfork = method.defaultHardfork;\n }\n if (method.defaultCommon && !tx.common) {\n tx.common = method.defaultCommon;\n }\n method.accounts.signTransaction(tx, wallet.privateKey)\n .then(sendSignedTx)\n .catch(function (err) {\n if (typeof defer.eventEmitter.listeners === 'function' && defer.eventEmitter.listeners('error').length) {\n try {\n defer.eventEmitter.emit('error', err);\n }\n catch (err) {\n // Ignore userland error prevent it to bubble up within web3.\n }\n defer.eventEmitter.removeAllListeners();\n defer.eventEmitter.catch(function () {\n });\n }\n defer.reject(err);\n });\n return;\n }\n // ETH_SIGN\n }\n else if (payload.method === 'eth_sign') {\n var data = payload.params[1];\n wallet = getWallet(payload.params[0], method.accounts);\n // If wallet was found, sign tx, and send using sendRawTransaction\n if (wallet && wallet.privateKey) {\n var sign = method.accounts.sign(data, wallet.privateKey);\n if (payload.callback) {\n payload.callback(null, sign.signature);\n }\n defer.resolve(sign.signature);\n return;\n }\n }\n }\n return method.requestManager.send(payload, sendTxCallback);\n };\n // Send the actual transaction\n if (isSendTx\n && !!payload.params[0]\n && typeof payload.params[0] === 'object'\n && (typeof payload.params[0].gasPrice === 'undefined'\n && (typeof payload.params[0].maxPriorityFeePerGas === 'undefined'\n || typeof payload.params[0].maxFeePerGas === 'undefined'))) {\n _handleTxPricing(method, payload.params[0]).then(txPricing => {\n if (txPricing.gasPrice !== undefined) {\n payload.params[0].gasPrice = txPricing.gasPrice;\n }\n else if (txPricing.maxPriorityFeePerGas !== undefined\n && txPricing.maxFeePerGas !== undefined) {\n payload.params[0].maxPriorityFeePerGas = txPricing.maxPriorityFeePerGas;\n payload.params[0].maxFeePerGas = txPricing.maxFeePerGas;\n }\n if (isSendTx) {\n setTimeout(() => {\n defer.eventEmitter.emit('sending', payload);\n }, 0);\n }\n sendRequest(payload, method);\n });\n }\n else {\n if (isSendTx) {\n setTimeout(() => {\n defer.eventEmitter.emit('sending', payload);\n }, 0);\n }\n sendRequest(payload, method);\n }\n if (isSendTx) {\n setTimeout(() => {\n defer.eventEmitter.emit('sent', payload);\n }, 0);\n }\n return defer.eventEmitter;\n };\n // necessary to attach things to the method\n send.method = method;\n // necessary for batch requests\n send.request = this.request.bind(this);\n return send;\n};\nfunction _handleTxPricing(method, tx) {\n return new Promise((resolve, reject) => {\n try {\n var getBlockByNumber = (new Method({\n name: 'getBlockByNumber',\n call: 'eth_getBlockByNumber',\n params: 2,\n inputFormatter: [function (blockNumber) {\n return blockNumber ? utils.toHex(blockNumber) : 'latest';\n }, function () {\n return false;\n }]\n })).createFunction(method.requestManager);\n var getGasPrice = (new Method({\n name: 'getGasPrice',\n call: 'eth_gasPrice',\n params: 0\n })).createFunction(method.requestManager);\n Promise.all([\n getBlockByNumber(),\n getGasPrice()\n ]).then(responses => {\n const [block, gasPrice] = responses;\n if ((tx.type === '0x2' || tx.type === undefined) &&\n (block && block.baseFeePerGas)) {\n // The network supports EIP-1559\n // Taken from https://github.com/ethers-io/ethers.js/blob/ba6854bdd5a912fe873d5da494cb5c62c190adde/packages/abstract-provider/src.ts/index.ts#L230\n let maxPriorityFeePerGas, maxFeePerGas;\n if (tx.gasPrice) {\n // Using legacy gasPrice property on an eip-1559 network,\n // so use gasPrice as both fee properties\n maxPriorityFeePerGas = tx.gasPrice;\n maxFeePerGas = tx.gasPrice;\n delete tx.gasPrice;\n }\n else {\n maxPriorityFeePerGas = tx.maxPriorityFeePerGas || '0x9502F900'; // 2.5 Gwei\n maxFeePerGas = tx.maxFeePerGas ||\n utils.toHex(utils.toBN(block.baseFeePerGas)\n .mul(utils.toBN(2))\n .add(utils.toBN(maxPriorityFeePerGas)));\n }\n resolve({ maxFeePerGas, maxPriorityFeePerGas });\n }\n else {\n if (tx.maxPriorityFeePerGas || tx.maxFeePerGas)\n throw Error(\"Network doesn't support eip-1559\");\n resolve({ gasPrice });\n }\n });\n }\n catch (error) {\n reject(error);\n }\n });\n}\n/**\n * Returns the revert reason string if existing or otherwise false.\n *\n * @method getRevertReason\n *\n * @param {Object} txOptions\n * @param {Number} blockNumber\n *\n * @returns {Promise}\n */\nMethod.prototype.getRevertReason = function (txOptions, blockNumber) {\n var self = this;\n return new Promise(function (resolve, reject) {\n (new Method({\n name: 'call',\n call: 'eth_call',\n params: 2,\n abiCoder: self.abiCoder,\n handleRevert: true\n }))\n .createFunction(self.requestManager)(txOptions, utils.numberToHex(blockNumber))\n .then(function () {\n resolve(false);\n })\n .catch(function (error) {\n if (error.reason) {\n resolve({\n reason: error.reason,\n signature: error.signature\n });\n }\n else {\n reject(error);\n }\n });\n });\n};\n/**\n * Checks if the given hex string is a revert message from the EVM\n *\n * @method isRevertReasonString\n *\n * @param {String} data - Hex string prefixed with 0x\n *\n * @returns {Boolean}\n */\nMethod.prototype.isRevertReasonString = function (data) {\n return typeof data === 'string' && ((data.length - 2) / 2) % 32 === 4 && data.substring(0, 10) === '0x08c379a0';\n};\n/**\n * Should be called to create the pure JSONRPC request which can be used in a batch request\n *\n * @method request\n * @return {Object} jsonrpc request\n */\nMethod.prototype.request = function () {\n var payload = this.toPayload(Array.prototype.slice.call(arguments));\n payload.format = this.formatOutput.bind(this);\n return payload;\n};\nmodule.exports = Method;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2016\n */\n\"use strict\";\nvar EventEmitter = require('eventemitter3');\n/**\n * This function generates a defer promise and adds eventEmitter functionality to it\n *\n * @method eventifiedPromise\n */\nvar PromiEvent = function PromiEvent(justPromise) {\n var resolve, reject, eventEmitter = new Promise(function () {\n resolve = arguments[0];\n reject = arguments[1];\n });\n if (justPromise) {\n return {\n resolve: resolve,\n reject: reject,\n eventEmitter: eventEmitter\n };\n }\n // get eventEmitter\n var emitter = new EventEmitter();\n // add eventEmitter to the promise\n eventEmitter._events = emitter._events;\n eventEmitter.emit = emitter.emit;\n eventEmitter.on = emitter.on;\n eventEmitter.once = emitter.once;\n eventEmitter.off = emitter.off;\n eventEmitter.listeners = emitter.listeners;\n eventEmitter.addListener = emitter.addListener;\n eventEmitter.removeListener = emitter.removeListener;\n eventEmitter.removeAllListeners = emitter.removeAllListeners;\n return {\n resolve: resolve,\n reject: reject,\n eventEmitter: eventEmitter\n };\n};\nPromiEvent.resolve = function (value) {\n var promise = PromiEvent(true);\n promise.resolve(value);\n return promise.eventEmitter;\n};\nmodule.exports = PromiEvent;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file batch.js\n * @author Marek Kotewicz \n * @date 2015\n */\n\"use strict\";\nvar Jsonrpc = require('./jsonrpc');\nvar errors = require('web3-core-helpers').errors;\nvar Batch = function (requestManager) {\n this.requestManager = requestManager;\n this.requests = [];\n};\n/**\n * Should be called to add create new request to batch request\n *\n * @method add\n * @param {Object} jsonrpc requet object\n */\nBatch.prototype.add = function (request) {\n this.requests.push(request);\n};\n/**\n * Should be called to execute batch request\n *\n * @method execute\n */\nBatch.prototype.execute = function () {\n var requests = this.requests;\n var sortResponses = this._sortResponses.bind(this);\n this.requestManager.sendBatch(requests, function (err, results) {\n results = sortResponses(results);\n requests.map(function (request, index) {\n return results[index] || {};\n }).forEach(function (result, index) {\n if (requests[index].callback) {\n if (result && result.error) {\n return requests[index].callback(errors.ErrorResponse(result));\n }\n if (!Jsonrpc.isValidResponse(result)) {\n return requests[index].callback(errors.InvalidResponse(result));\n }\n try {\n requests[index].callback(null, requests[index].format ? requests[index].format(result.result) : result.result);\n }\n catch (err) {\n requests[index].callback(err);\n }\n }\n });\n });\n};\n// Sort responses\nBatch.prototype._sortResponses = function (responses) {\n return (responses || []).sort((a, b) => a.id - b.id);\n};\nmodule.exports = Batch;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file givenProvider.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar givenProvider = null;\n// ADD GIVEN PROVIDER\n/* jshint ignore:start */\nvar global = typeof globalThis === 'object' ? globalThis : undefined;\nif (!global) {\n try {\n global = Function('return this')();\n }\n catch (e) {\n global = self;\n }\n}\n// EIP-1193: window.ethereum\nif (typeof global.ethereum !== 'undefined') {\n givenProvider = global.ethereum;\n // Legacy web3.currentProvider\n}\nelse if (typeof global.web3 !== 'undefined' && global.web3.currentProvider) {\n if (global.web3.currentProvider.sendAsync) {\n global.web3.currentProvider.send = global.web3.currentProvider.sendAsync;\n delete global.web3.currentProvider.sendAsync;\n }\n // if connection is 'ipcProviderWrapper', add subscription support\n if (!global.web3.currentProvider.on &&\n global.web3.currentProvider.connection &&\n global.web3.currentProvider.connection.constructor.name === 'ipcProviderWrapper') {\n global.web3.currentProvider.on = function (type, callback) {\n if (typeof callback !== 'function')\n throw new Error('The second parameter callback must be a function.');\n switch (type) {\n case 'data':\n this.connection.on('data', function (data) {\n var result = '';\n data = data.toString();\n try {\n result = JSON.parse(data);\n }\n catch (e) {\n return callback(new Error('Couldn\\'t parse response data' + data));\n }\n // notification\n if (!result.id && result.method.indexOf('_subscription') !== -1) {\n callback(null, result);\n }\n });\n break;\n default:\n this.connection.on(type, callback);\n break;\n }\n };\n }\n givenProvider = global.web3.currentProvider;\n}\n/* jshint ignore:end */\nmodule.exports = givenProvider;\n","/*\n This file is part of web3.js.\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nconst { callbackify } = require('util');\nvar errors = require('web3-core-helpers').errors;\nvar Jsonrpc = require('./jsonrpc.js');\nvar BatchManager = require('./batch.js');\nvar givenProvider = require('./givenProvider.js');\n/**\n * It's responsible for passing messages to providers\n * It's also responsible for polling the ethereum node for incoming messages\n * Default poll timeout is 1 second\n * Singleton\n *\n * @param {string|Object}provider\n * @param {Net.Socket} net\n *\n * @constructor\n */\nvar RequestManager = function RequestManager(provider, net) {\n this.provider = null;\n this.providers = RequestManager.providers;\n this.setProvider(provider, net);\n this.subscriptions = new Map();\n};\nRequestManager.givenProvider = givenProvider;\nRequestManager.providers = {\n WebsocketProvider: require('web3-providers-ws'),\n HttpProvider: require('web3-providers-http'),\n IpcProvider: require('web3-providers-ipc')\n};\n/**\n * Should be used to set provider of request manager\n *\n * @method setProvider\n *\n * @param {Object} provider\n * @param {net.Socket} net\n *\n * @returns void\n */\nRequestManager.prototype.setProvider = function (provider, net) {\n var _this = this;\n // autodetect provider\n if (provider && typeof provider === 'string' && this.providers) {\n // HTTP\n if (/^http(s)?:\\/\\//i.test(provider)) {\n provider = new this.providers.HttpProvider(provider);\n // WS\n }\n else if (/^ws(s)?:\\/\\//i.test(provider)) {\n provider = new this.providers.WebsocketProvider(provider);\n // IPC\n }\n else if (provider && typeof net === 'object' && typeof net.connect === 'function') {\n provider = new this.providers.IpcProvider(provider, net);\n }\n else if (provider) {\n throw new Error('Can\\'t autodetect provider for \"' + provider + '\"');\n }\n }\n // reset the old one before changing, if still connected\n if (this.provider && this.provider.connected)\n this.clearSubscriptions();\n this.provider = provider || null;\n // listen to incoming notifications\n if (this.provider && this.provider.on) {\n if (typeof provider.request === 'function') { // EIP-1193 provider\n this.provider.on('message', function (payload) {\n if (payload && payload.type === 'eth_subscription' && payload.data) {\n const data = payload.data;\n if (data.subscription && _this.subscriptions.has(data.subscription)) {\n _this.subscriptions.get(data.subscription).callback(null, data.result);\n }\n }\n });\n }\n else { // legacy provider subscription event\n this.provider.on('data', function data(result, deprecatedResult) {\n result = result || deprecatedResult; // this is for possible old providers, which may had the error first handler\n // if result is a subscription, call callback for that subscription\n if (result.method && result.params && result.params.subscription && _this.subscriptions.has(result.params.subscription)) {\n _this.subscriptions.get(result.params.subscription).callback(null, result.params.result);\n }\n });\n }\n // resubscribe if the provider has reconnected\n this.provider.on('connect', function connect() {\n _this.subscriptions.forEach(function (subscription) {\n subscription.subscription.resubscribe();\n });\n });\n // notify all subscriptions about the error condition\n this.provider.on('error', function error(error) {\n _this.subscriptions.forEach(function (subscription) {\n subscription.callback(error);\n });\n });\n // notify all subscriptions about bad close conditions\n const disconnect = function disconnect(event) {\n if (!_this._isCleanCloseEvent(event) || _this._isIpcCloseError(event)) {\n _this.subscriptions.forEach(function (subscription) {\n subscription.callback(errors.ConnectionCloseError(event));\n _this.subscriptions.delete(subscription.subscription.id);\n });\n if (_this.provider && _this.provider.emit) {\n _this.provider.emit('error', errors.ConnectionCloseError(event));\n }\n }\n if (_this.provider && _this.provider.emit) {\n _this.provider.emit('end', event);\n }\n };\n this.provider.on('disconnect', disconnect);\n // TODO add end, timeout??\n }\n};\n/**\n * Asynchronously send request to provider.\n * Prefers to use the `request` method available on the provider as specified in [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193).\n * If `request` is not available, falls back to `sendAsync` and `send` respectively.\n * @method send\n * @param {Object} data\n * @param {Function} callback\n */\nRequestManager.prototype.send = function (data, callback) {\n callback = callback || function () { };\n if (!this.provider) {\n return callback(errors.InvalidProvider());\n }\n const { method, params } = data;\n const jsonrpcPayload = Jsonrpc.toPayload(method, params);\n const jsonrpcResultCallback = this._jsonrpcResultCallback(callback, jsonrpcPayload);\n if (this.provider.request) {\n const callbackRequest = callbackify(this.provider.request.bind(this.provider));\n const requestArgs = { method, params };\n callbackRequest(requestArgs, callback);\n }\n else if (this.provider.sendAsync) {\n this.provider.sendAsync(jsonrpcPayload, jsonrpcResultCallback);\n }\n else if (this.provider.send) {\n this.provider.send(jsonrpcPayload, jsonrpcResultCallback);\n }\n else {\n throw new Error('Provider does not have a request or send method to use.');\n }\n};\n/**\n * Asynchronously send batch request.\n * Only works if provider supports batch methods through `sendAsync` or `send`.\n * @method sendBatch\n * @param {Array} data - array of payload objects\n * @param {Function} callback\n */\nRequestManager.prototype.sendBatch = function (data, callback) {\n if (!this.provider) {\n return callback(errors.InvalidProvider());\n }\n var payload = Jsonrpc.toBatchPayload(data);\n this.provider[this.provider.sendAsync ? 'sendAsync' : 'send'](payload, function (err, results) {\n if (err) {\n return callback(err);\n }\n if (!Array.isArray(results)) {\n return callback(errors.InvalidResponse(results));\n }\n callback(null, results);\n });\n};\n/**\n * Waits for notifications\n *\n * @method addSubscription\n * @param {Subscription} subscription the subscription\n * @param {String} type the subscription namespace (eth, personal, etc)\n * @param {Function} callback the callback to call for incoming notifications\n */\nRequestManager.prototype.addSubscription = function (subscription, callback) {\n if (this.provider.on) {\n this.subscriptions.set(subscription.id, {\n callback: callback,\n subscription: subscription\n });\n }\n else {\n throw new Error('The provider doesn\\'t support subscriptions: ' + this.provider.constructor.name);\n }\n};\n/**\n * Waits for notifications\n *\n * @method removeSubscription\n * @param {String} id the subscription id\n * @param {Function} callback fired once the subscription is removed\n */\nRequestManager.prototype.removeSubscription = function (id, callback) {\n if (this.subscriptions.has(id)) {\n var type = this.subscriptions.get(id).subscription.options.type;\n // remove subscription first to avoid reentry\n this.subscriptions.delete(id);\n // then, try to actually unsubscribe\n this.send({\n method: type + '_unsubscribe',\n params: [id]\n }, callback);\n return;\n }\n if (typeof callback === 'function') {\n // call the callback if the subscription was already removed\n callback(null);\n }\n};\n/**\n * Should be called to reset the subscriptions\n *\n * @method reset\n *\n * @returns {boolean}\n */\nRequestManager.prototype.clearSubscriptions = function (keepIsSyncing) {\n try {\n var _this = this;\n // uninstall all subscriptions\n if (this.subscriptions.size > 0) {\n this.subscriptions.forEach(function (value, id) {\n if (!keepIsSyncing || value.name !== 'syncing')\n _this.removeSubscription(id);\n });\n }\n // reset notification callbacks etc.\n if (this.provider.reset)\n this.provider.reset();\n return true;\n }\n catch (e) {\n throw new Error(`Error while clearing subscriptions: ${e}`);\n }\n};\n/**\n * Evaluates WS close event\n *\n * @method _isCleanClose\n *\n * @param {CloseEvent | boolean} event WS close event or exception flag\n *\n * @returns {boolean}\n */\nRequestManager.prototype._isCleanCloseEvent = function (event) {\n return typeof event === 'object' && ([1000].includes(event.code) || event.wasClean === true);\n};\n/**\n * Detects Ipc close error. The node.net module emits ('close', isException)\n *\n * @method _isIpcCloseError\n *\n * @param {CloseEvent | boolean} event WS close event or exception flag\n *\n * @returns {boolean}\n */\nRequestManager.prototype._isIpcCloseError = function (event) {\n return typeof event === 'boolean' && event;\n};\n/**\n * The jsonrpc result callback for RequestManager.send\n *\n * @method _jsonrpcResultCallback\n *\n * @param {Function} callback the callback to use\n * @param {Object} payload the jsonrpc payload\n *\n * @returns {Function} return callback of form (err, result)\n *\n */\nRequestManager.prototype._jsonrpcResultCallback = function (callback, payload) {\n return function (err, result) {\n if (result && result.id && payload.id !== result.id) {\n return callback(new Error(`Wrong response id ${result.id} (expected: ${payload.id}) in ${JSON.stringify(payload)}`));\n }\n if (err) {\n return callback(err);\n }\n if (result && result.error) {\n return callback(errors.ErrorResponse(result));\n }\n if (!Jsonrpc.isValidResponse(result)) {\n return callback(errors.InvalidResponse(result));\n }\n callback(null, result.result);\n };\n};\nmodule.exports = {\n Manager: RequestManager,\n BatchManager: BatchManager\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/** @file jsonrpc.js\n * @authors:\n * Fabian Vogelsteller \n * Marek Kotewicz \n * Aaron Kumavis \n * @date 2015\n */\n\"use strict\";\n// Initialize Jsonrpc as a simple object with utility functions.\nvar Jsonrpc = {\n messageId: 0\n};\n/**\n * Should be called to valid json create payload object\n *\n * @method toPayload\n * @param {Function} method of jsonrpc call, required\n * @param {Array} params, an array of method params, optional\n * @returns {Object} valid jsonrpc payload object\n */\nJsonrpc.toPayload = function (method, params) {\n if (!method) {\n throw new Error('JSONRPC method should be specified for params: \"' + JSON.stringify(params) + '\"!');\n }\n // advance message ID\n Jsonrpc.messageId++;\n return {\n jsonrpc: '2.0',\n id: Jsonrpc.messageId,\n method: method,\n params: params || []\n };\n};\n/**\n * Should be called to check if jsonrpc response is valid\n *\n * @method isValidResponse\n * @param {Object}\n * @returns {Boolean} true if response is valid, otherwise false\n */\nJsonrpc.isValidResponse = function (response) {\n return Array.isArray(response) ? response.every(validateSingleMessage) : validateSingleMessage(response);\n function validateSingleMessage(message) {\n return !!message &&\n !message.error &&\n message.jsonrpc === '2.0' &&\n (typeof message.id === 'number' || typeof message.id === 'string') &&\n message.result !== undefined; // only undefined is not valid json object\n }\n};\n/**\n * Should be called to create batch payload object\n *\n * @method toBatchPayload\n * @param {Array} messages, an array of objects with method (required) and params (optional) fields\n * @returns {Array} batch payload\n */\nJsonrpc.toBatchPayload = function (messages) {\n return messages.map(function (message) {\n return Jsonrpc.toPayload(message.method, message.params);\n });\n};\nmodule.exports = Jsonrpc;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar Subscription = require('./subscription.js');\nvar Subscriptions = function Subscriptions(options) {\n this.name = options.name;\n this.type = options.type;\n this.subscriptions = options.subscriptions || {};\n this.requestManager = null;\n};\nSubscriptions.prototype.setRequestManager = function (rm) {\n this.requestManager = rm;\n};\nSubscriptions.prototype.attachToObject = function (obj) {\n var func = this.buildCall();\n var name = this.name.split('.');\n if (name.length > 1) {\n obj[name[0]] = obj[name[0]] || {};\n obj[name[0]][name[1]] = func;\n }\n else {\n obj[name[0]] = func;\n }\n};\nSubscriptions.prototype.buildCall = function () {\n var _this = this;\n return function () {\n if (!_this.subscriptions[arguments[0]]) {\n console.warn('Subscription ' + JSON.stringify(arguments[0]) + ' doesn\\'t exist. Subscribing anyway.');\n }\n var subscription = new Subscription({\n subscription: _this.subscriptions[arguments[0]] || {},\n requestManager: _this.requestManager,\n type: _this.type\n });\n return subscription.subscribe.apply(subscription, arguments);\n };\n};\nmodule.exports = {\n subscriptions: Subscriptions,\n subscription: Subscription\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file subscription.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar errors = require('web3-core-helpers').errors;\nvar EventEmitter = require('eventemitter3');\nvar formatters = require('web3-core-helpers').formatters;\nfunction identity(value) {\n return value;\n}\nfunction Subscription(options) {\n EventEmitter.call(this);\n this.id = null;\n this.callback = identity;\n this.arguments = null;\n this.lastBlock = null; // \"from\" block tracker for backfilling events on reconnection\n this.options = {\n subscription: options.subscription,\n type: options.type,\n requestManager: options.requestManager\n };\n}\n// INHERIT\nSubscription.prototype = Object.create(EventEmitter.prototype);\nSubscription.prototype.constructor = Subscription;\n/**\n * Should be used to extract callback from array of arguments. Modifies input param\n *\n * @method extractCallback\n * @param {Array} arguments\n * @return {Function|Null} callback, if exists\n */\nSubscription.prototype._extractCallback = function (args) {\n if (typeof args[args.length - 1] === 'function') {\n return args.pop(); // modify the args array!\n }\n};\n/**\n * Should be called to check if the number of arguments is correct\n *\n * @method validateArgs\n * @param {Array} arguments\n * @throws {Error} if it is not\n */\nSubscription.prototype._validateArgs = function (args) {\n var subscription = this.options.subscription;\n if (!subscription)\n subscription = {};\n if (!subscription.params)\n subscription.params = 0;\n if (args.length !== subscription.params) {\n throw errors.InvalidNumberOfParams(args.length, subscription.params, subscription.subscriptionName);\n }\n};\n/**\n * Should be called to format input args of method\n *\n * @method formatInput\n * @param {Array}\n * @return {Array}\n */\nSubscription.prototype._formatInput = function (args) {\n var subscription = this.options.subscription;\n if (!subscription) {\n return args;\n }\n if (!subscription.inputFormatter) {\n return args;\n }\n var formattedArgs = subscription.inputFormatter.map(function (formatter, index) {\n return formatter ? formatter(args[index]) : args[index];\n });\n return formattedArgs;\n};\n/**\n * Should be called to format output(result) of method\n *\n * @method formatOutput\n * @param result {Object}\n * @return {Object}\n */\nSubscription.prototype._formatOutput = function (result) {\n var subscription = this.options.subscription;\n return (subscription && subscription.outputFormatter && result) ? subscription.outputFormatter(result) : result;\n};\n/**\n * Should create payload from given input args\n *\n * @method toPayload\n * @param {Array} args\n * @return {Object}\n */\nSubscription.prototype._toPayload = function (args) {\n var params = [];\n this.callback = this._extractCallback(args) || identity;\n if (!this.subscriptionMethod) {\n this.subscriptionMethod = args.shift();\n // replace subscription with given name\n if (this.options.subscription.subscriptionName) {\n this.subscriptionMethod = this.options.subscription.subscriptionName;\n }\n }\n if (!this.arguments) {\n this.arguments = this._formatInput(args);\n this._validateArgs(this.arguments);\n args = []; // make empty after validation\n }\n // re-add subscriptionName\n params.push(this.subscriptionMethod);\n params = params.concat(this.arguments);\n if (args.length) {\n throw new Error('Only a callback is allowed as parameter on an already instantiated subscription.');\n }\n return {\n method: this.options.type + '_subscribe',\n params: params\n };\n};\n/**\n * Unsubscribes and clears callbacks\n *\n * @method unsubscribe\n * @return {Object}\n */\nSubscription.prototype.unsubscribe = function (callback) {\n this.options.requestManager.removeSubscription(this.id, callback);\n this.id = null;\n this.lastBlock = null;\n this.removeAllListeners();\n};\n/**\n * Subscribes and watches for changes\n *\n * @method subscribe\n * @param {String} subscription the subscription\n * @param {Object} options the options object with address topics and fromBlock\n * @return {Object}\n */\nSubscription.prototype.subscribe = function () {\n var _this = this;\n var args = Array.prototype.slice.call(arguments);\n var payload = this._toPayload(args);\n if (!payload) {\n return this;\n }\n // throw error, if provider is not set\n if (!this.options.requestManager.provider) {\n setTimeout(function () {\n var err1 = new Error('No provider set.');\n _this.callback(err1, null, _this);\n _this.emit('error', err1);\n }, 0);\n return this;\n }\n // throw error, if provider doesnt support subscriptions\n if (!this.options.requestManager.provider.on) {\n setTimeout(function () {\n var err2 = new Error('The current provider doesn\\'t support subscriptions: ' +\n _this.options.requestManager.provider.constructor.name);\n _this.callback(err2, null, _this);\n _this.emit('error', err2);\n }, 0);\n return this;\n }\n // Re-subscription only: continue fetching from the last block we received.\n // a dropped connection may have resulted in gaps in the logs...\n if (this.lastBlock && !!this.options.params && typeof this.options.params === 'object') {\n payload.params[1] = this.options.params;\n payload.params[1].fromBlock = formatters.inputBlockNumberFormatter(this.lastBlock + 1);\n }\n // if id is there unsubscribe first\n if (this.id) {\n this.unsubscribe();\n }\n // store the params in the options object\n this.options.params = payload.params[1];\n // get past logs, if fromBlock is available\n if (payload.params[0] === 'logs' && !!payload.params[1] && typeof payload.params[1] === 'object' && payload.params[1].hasOwnProperty('fromBlock') && isFinite(payload.params[1].fromBlock)) {\n // send the subscription request\n // copy the params to avoid race-condition with deletion below this block\n var blockParams = Object.assign({}, payload.params[1]);\n this.options.requestManager.send({\n method: 'eth_getLogs',\n params: [blockParams]\n }, function (err, logs) {\n if (!err) {\n logs.forEach(function (log) {\n var output = _this._formatOutput(log);\n _this.callback(null, output, _this);\n _this.emit('data', output);\n });\n // TODO subscribe here? after the past logs?\n }\n else {\n setTimeout(function () {\n _this.callback(err, null, _this);\n _this.emit('error', err);\n }, 0);\n }\n });\n }\n // create subscription\n // TODO move to separate function? so that past logs can go first?\n if (typeof payload.params[1] === 'object')\n delete payload.params[1].fromBlock;\n this.options.requestManager.send(payload, function (err, result) {\n if (!err && result) {\n _this.id = result;\n _this.method = payload.params[0];\n // call callback on notifications\n _this.options.requestManager.addSubscription(_this, function (error, result) {\n if (!error) {\n if (!Array.isArray(result)) {\n result = [result];\n }\n result.forEach(function (resultItem) {\n var output = _this._formatOutput(resultItem);\n // Track current block (for gaps introduced by dropped connections)\n _this.lastBlock = !!output && typeof output === 'object' ? output.blockNumber : null;\n if (typeof _this.options.subscription.subscriptionHandler === 'function') {\n return _this.options.subscription.subscriptionHandler.call(_this, output);\n }\n else {\n _this.emit('data', output);\n }\n // call the callback, last so that unsubscribe there won't affect the emit above\n _this.callback(null, output, _this);\n });\n }\n else {\n _this.callback(error, false, _this);\n _this.emit('error', error);\n }\n });\n _this.emit('connected', result);\n }\n else {\n setTimeout(function () {\n _this.callback(err, false, _this);\n _this.emit('error', err);\n }, 0);\n }\n });\n // return an object to cancel the subscription\n return this;\n};\n/**\n * Resubscribe\n *\n * @method resubscribe\n *\n * @returns {void}\n */\nSubscription.prototype.resubscribe = function () {\n this.options.requestManager.removeSubscription(this.id); // unsubscribe\n this.id = null;\n this.subscribe(this.callback);\n};\nmodule.exports = Subscription;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file extend.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar formatters = require('web3-core-helpers').formatters;\nvar Method = require('web3-core-method');\nvar utils = require('web3-utils');\nvar extend = function (pckg) {\n /* jshint maxcomplexity:5 */\n var ex = function (extension) {\n var extendedObject;\n if (extension.property) {\n if (!pckg[extension.property]) {\n pckg[extension.property] = {};\n }\n extendedObject = pckg[extension.property];\n }\n else {\n extendedObject = pckg;\n }\n if (extension.methods) {\n extension.methods.forEach(function (method) {\n if (!(method instanceof Method)) {\n method = new Method(method);\n }\n method.attachToObject(extendedObject);\n method.setRequestManager(pckg._requestManager);\n });\n }\n return pckg;\n };\n ex.formatters = formatters;\n ex.utils = utils;\n ex.Method = Method;\n return ex;\n};\nmodule.exports = extend;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\nconst requestManager = require(\"web3-core-requestmanager\");\nconst extend = require(\"./extend\");\nconst packageInit = (pkg, args) => {\n args = Array.prototype.slice.call(args);\n if (!pkg) {\n throw new Error('You need to instantiate using the \"new\" keyword.');\n }\n // make property of pkg._provider, which can properly set providers\n Object.defineProperty(pkg, 'currentProvider', {\n get: () => {\n return pkg._provider;\n },\n set: (value) => {\n return pkg.setProvider(value);\n },\n enumerable: true,\n configurable: true\n });\n // inherit from parent package or create a new RequestManager\n if (args[0] && args[0]._requestManager) {\n pkg._requestManager = args[0]._requestManager;\n }\n else {\n pkg._requestManager = new requestManager.Manager(args[0], args[1]);\n }\n // add givenProvider\n pkg.givenProvider = requestManager.Manager.givenProvider;\n pkg.providers = requestManager.Manager.providers;\n pkg._provider = pkg._requestManager.provider;\n // add SETPROVIDER function (don't overwrite if already existing)\n if (!pkg.setProvider) {\n pkg.setProvider = (provider, net) => {\n pkg._requestManager.setProvider(provider, net);\n pkg._provider = pkg._requestManager.provider;\n return true;\n };\n }\n pkg.setRequestManager = (manager) => {\n pkg._requestManager = manager;\n pkg._provider = manager.provider;\n };\n // attach batch request creation\n pkg.BatchRequest = requestManager.BatchManager.bind(null, pkg._requestManager);\n // attach extend function\n pkg.extend = extend(pkg);\n};\nconst addProviders = (pkg) => {\n pkg.givenProvider = requestManager.Manager.givenProvider;\n pkg.providers = requestManager.Manager.providers;\n};\nmodule.exports = {\n packageInit,\n addProviders\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file index.js\n * @author Marek Kotewicz \n * @author Fabian Vogelsteller \n * @date 2018\n */\nvar Buffer = require('buffer').Buffer;\nvar utils = require('web3-utils');\nvar EthersAbiCoder = require('@ethersproject/abi').AbiCoder;\nvar ParamType = require('@ethersproject/abi').ParamType;\nvar ethersAbiCoder = new EthersAbiCoder(function (type, value) {\n if (type.match(/^u?int/) && !Array.isArray(value) && (!(!!value && typeof value === 'object') || value.constructor.name !== 'BN')) {\n return value.toString();\n }\n return value;\n});\n// result method\nfunction Result() {\n}\n/**\n * ABICoder prototype should be used to encode/decode solidity params of any type\n */\nvar ABICoder = function () {\n};\n/**\n * Encodes the function name to its ABI representation, which are the first 4 bytes of the sha3 of the function name including types.\n *\n * @method encodeFunctionSignature\n * @param {String|Object} functionName\n * @return {String} encoded function name\n */\nABICoder.prototype.encodeFunctionSignature = function (functionName) {\n if (typeof functionName === 'function' || typeof functionName === 'object' && functionName) {\n functionName = utils._jsonInterfaceMethodToString(functionName);\n }\n return utils.sha3(functionName).slice(0, 10);\n};\n/**\n * Encodes the function name to its ABI representation, which are the first 4 bytes of the sha3 of the function name including types.\n *\n * @method encodeEventSignature\n * @param {String|Object} functionName\n * @return {String} encoded function name\n */\nABICoder.prototype.encodeEventSignature = function (functionName) {\n if (typeof functionName === 'function' || typeof functionName === 'object' && functionName) {\n functionName = utils._jsonInterfaceMethodToString(functionName);\n }\n return utils.sha3(functionName);\n};\n/**\n * Should be used to encode plain param\n *\n * @method encodeParameter\n *\n * @param {String|Object} type\n * @param {any} param\n *\n * @return {String} encoded plain param\n */\nABICoder.prototype.encodeParameter = function (type, param) {\n return this.encodeParameters([type], [param]);\n};\n/**\n * Should be used to encode list of params\n *\n * @method encodeParameters\n *\n * @param {Array} types\n * @param {Array} params\n *\n * @return {String} encoded list of params\n */\nABICoder.prototype.encodeParameters = function (types, params) {\n var self = this;\n types = self.mapTypes(types);\n params = params.map(function (param, index) {\n let type = types[index];\n if (typeof type === 'object' && type.type) {\n // We may get a named type of shape {name, type}\n type = type.type;\n }\n param = self.formatParam(type, param);\n // Format params for tuples\n if (typeof type === 'string' && type.includes('tuple')) {\n const coder = ethersAbiCoder._getCoder(ParamType.from(type));\n const modifyParams = (coder, param) => {\n if (coder.name === 'array') {\n if (!coder.type.match(/\\[(\\d+)\\]/)) {\n return param.map(p => modifyParams(ethersAbiCoder._getCoder(ParamType.from(coder.type.replace('[]', ''))), p));\n }\n const arrayLength = parseInt(coder.type.match(/\\[(\\d+)\\]/)[1]);\n if (param.length !== arrayLength) {\n throw new Error('Array length does not matches with the given input');\n }\n return param.map(p => modifyParams(ethersAbiCoder._getCoder(ParamType.from(coder.type.replace(/\\[\\d+\\]/, ''))), p));\n }\n coder.coders.forEach((c, i) => {\n if (c.name === 'tuple') {\n modifyParams(c, param[i]);\n }\n else {\n param[i] = self.formatParam(c.name, param[i]);\n }\n });\n };\n modifyParams(coder, param);\n }\n return param;\n });\n return ethersAbiCoder.encode(types, params);\n};\n/**\n * Map types if simplified format is used\n *\n * @method mapTypes\n * @param {Array} types\n * @return {Array}\n */\nABICoder.prototype.mapTypes = function (types) {\n var self = this;\n var mappedTypes = [];\n types.forEach(function (type) {\n // Remap `function` type params to bytes24 since Ethers does not\n // recognize former type. Solidity docs say `Function` is a bytes24\n // encoding the contract address followed by the function selector hash.\n if (typeof type === 'object' && type.type === 'function') {\n type = Object.assign({}, type, { type: \"bytes24\" });\n }\n if (self.isSimplifiedStructFormat(type)) {\n var structName = Object.keys(type)[0];\n mappedTypes.push(Object.assign(self.mapStructNameAndType(structName), {\n components: self.mapStructToCoderFormat(type[structName])\n }));\n return;\n }\n mappedTypes.push(type);\n });\n return mappedTypes;\n};\n/**\n * Check if type is simplified struct format\n *\n * @method isSimplifiedStructFormat\n * @param {string | Object} type\n * @returns {boolean}\n */\nABICoder.prototype.isSimplifiedStructFormat = function (type) {\n return typeof type === 'object' && typeof type.components === 'undefined' && typeof type.name === 'undefined';\n};\n/**\n * Maps the correct tuple type and name when the simplified format in encode/decodeParameter is used\n *\n * @method mapStructNameAndType\n * @param {string} structName\n * @return {{type: string, name: *}}\n */\nABICoder.prototype.mapStructNameAndType = function (structName) {\n var type = 'tuple';\n if (structName.indexOf('[]') > -1) {\n type = 'tuple[]';\n structName = structName.slice(0, -2);\n }\n return { type: type, name: structName };\n};\n/**\n * Maps the simplified format in to the expected format of the ABICoder\n *\n * @method mapStructToCoderFormat\n * @param {Object} struct\n * @return {Array}\n */\nABICoder.prototype.mapStructToCoderFormat = function (struct) {\n var self = this;\n var components = [];\n Object.keys(struct).forEach(function (key) {\n if (typeof struct[key] === 'object') {\n components.push(Object.assign(self.mapStructNameAndType(key), {\n components: self.mapStructToCoderFormat(struct[key])\n }));\n return;\n }\n components.push({\n name: key,\n type: struct[key]\n });\n });\n return components;\n};\n/**\n * Handle some formatting of params for backwards compatability with Ethers V4\n *\n * @method formatParam\n * @param {String} - type\n * @param {any} - param\n * @return {any} - The formatted param\n */\nABICoder.prototype.formatParam = function (type, param) {\n const paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\n const paramTypeBytesArray = new RegExp(/^bytes([0-9]*)\\[\\]$/);\n const paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\n const paramTypeNumberArray = new RegExp(/^(u?int)([0-9]*)\\[\\]$/);\n // Format BN to string\n if (utils.isBN(param) || utils.isBigNumber(param)) {\n return param.toString(10);\n }\n if (type.match(paramTypeBytesArray) || type.match(paramTypeNumberArray)) {\n return param.map(p => this.formatParam(type.replace('[]', ''), p));\n }\n // Format correct width for u?int[0-9]*\n let match = type.match(paramTypeNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if (size / 8 < param.length) {\n // pad to correct bit width\n param = utils.leftPad(param, size);\n }\n }\n // Format correct length for bytes[0-9]+\n match = type.match(paramTypeBytes);\n if (match) {\n if (Buffer.isBuffer(param)) {\n param = utils.toHex(param);\n }\n // format to correct length\n let size = parseInt(match[1]);\n if (size) {\n let maxSize = size * 2;\n if (param.substring(0, 2) === '0x') {\n maxSize += 2;\n }\n if (param.length < maxSize) {\n // pad to correct length\n param = utils.rightPad(param, size * 2);\n }\n }\n // format odd-length bytes to even-length\n if (param.length % 2 === 1) {\n param = '0x0' + param.substring(2);\n }\n }\n return param;\n};\n/**\n * Encodes a function call from its json interface and parameters.\n *\n * @method encodeFunctionCall\n * @param {Array} jsonInterface\n * @param {Array} params\n * @return {String} The encoded ABI for this function call\n */\nABICoder.prototype.encodeFunctionCall = function (jsonInterface, params) {\n return this.encodeFunctionSignature(jsonInterface) + this.encodeParameters(jsonInterface.inputs, params).replace('0x', '');\n};\n/**\n * Should be used to decode bytes to plain param\n *\n * @method decodeParameter\n * @param {String} type\n * @param {String} bytes\n * @return {Object} plain param\n */\nABICoder.prototype.decodeParameter = function (type, bytes) {\n return this.decodeParameters([type], bytes)[0];\n};\n/**\n * Should be used to decode list of params\n *\n * @method decodeParameter\n * @param {Array} outputs\n * @param {String} bytes\n * @return {Array} array of plain params\n */\nABICoder.prototype.decodeParameters = function (outputs, bytes) {\n return this.decodeParametersWith(outputs, bytes, false);\n};\n/**\n * Should be used to decode list of params\n *\n * @method decodeParameter\n * @param {Array} outputs\n * @param {String} bytes\n * @param {Boolean} loose\n * @return {Array} array of plain params\n */\nABICoder.prototype.decodeParametersWith = function (outputs, bytes, loose) {\n if (outputs.length > 0 && (!bytes || bytes === '0x' || bytes === '0X')) {\n throw new Error('Returned values aren\\'t valid, did it run Out of Gas? ' +\n 'You might also see this error if you are not using the ' +\n 'correct ABI for the contract you are retrieving data from, ' +\n 'requesting data from a block number that does not exist, ' +\n 'or querying a node which is not fully synced.');\n }\n var res = ethersAbiCoder.decode(this.mapTypes(outputs), '0x' + bytes.replace(/0x/i, ''), loose);\n var returnValue = new Result();\n returnValue.__length__ = 0;\n outputs.forEach(function (output, i) {\n var decodedValue = res[returnValue.__length__];\n const isStringObject = typeof output === 'object' && output.type && output.type === 'string';\n const isStringType = typeof output === 'string' && output === 'string';\n // only convert `0x` to null if it's not string value\n decodedValue = (decodedValue === '0x' && !isStringObject && !isStringType) ? null : decodedValue;\n returnValue[i] = decodedValue;\n if ((typeof output === 'function' || !!output && typeof output === 'object') && output.name) {\n returnValue[output.name] = decodedValue;\n }\n returnValue.__length__++;\n });\n return returnValue;\n};\n/**\n * Decodes events non- and indexed parameters.\n *\n * @method decodeLog\n * @param {Object} inputs\n * @param {String} data\n * @param {Array} topics\n * @return {Array} array of plain params\n */\nABICoder.prototype.decodeLog = function (inputs, data, topics) {\n var _this = this;\n topics = Array.isArray(topics) ? topics : [topics];\n data = data || '';\n var notIndexedInputs = [];\n var indexedParams = [];\n var topicCount = 0;\n // TODO check for anonymous logs?\n inputs.forEach(function (input, i) {\n if (input.indexed) {\n indexedParams[i] = (['bool', 'int', 'uint', 'address', 'fixed', 'ufixed'].find(function (staticType) {\n return input.type.indexOf(staticType) !== -1;\n })) ? _this.decodeParameter(input.type, topics[topicCount]) : topics[topicCount];\n topicCount++;\n }\n else {\n notIndexedInputs[i] = input;\n }\n });\n var nonIndexedData = data;\n var notIndexedParams = (nonIndexedData) ? this.decodeParametersWith(notIndexedInputs, nonIndexedData, true) : [];\n var returnValue = new Result();\n returnValue.__length__ = 0;\n inputs.forEach(function (res, i) {\n returnValue[i] = (res.type === 'string') ? '' : null;\n if (typeof notIndexedParams[i] !== 'undefined') {\n returnValue[i] = notIndexedParams[i];\n }\n if (typeof indexedParams[i] !== 'undefined') {\n returnValue[i] = indexedParams[i];\n }\n if (res.name) {\n returnValue[res.name] = returnValue[i];\n }\n returnValue.__length__++;\n });\n return returnValue;\n};\nvar coder = new ABICoder();\nmodule.exports = coder;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file accounts.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n'use strict';\nvar core = require('web3-core');\nvar Method = require('web3-core-method');\nvar Account = require('eth-lib/lib/account');\nvar cryp = (typeof global === 'undefined') ? require('crypto-browserify') : require('crypto');\nvar scrypt = require('scrypt-js');\nvar uuid = require('uuid');\nvar utils = require('web3-utils');\nvar helpers = require('web3-core-helpers');\nvar { TransactionFactory } = require('@ethereumjs/tx');\nvar Common = require('@ethereumjs/common').default;\nvar HardForks = require('@ethereumjs/common').Hardfork;\nvar ethereumjsUtil = require('ethereumjs-util');\nvar isNot = function (value) {\n return (typeof value === 'undefined') || value === null;\n};\nvar isExist = function (value) {\n return (typeof value !== 'undefined') && value !== null;\n};\nvar Accounts = function Accounts() {\n var _this = this;\n // sets _requestmanager\n core.packageInit(this, arguments);\n // remove unecessary core functions\n delete this.BatchRequest;\n delete this.extend;\n var _ethereumCall = [\n new Method({\n name: 'getNetworkId',\n call: 'net_version',\n params: 0,\n outputFormatter: parseInt\n }),\n new Method({\n name: 'getChainId',\n call: 'eth_chainId',\n params: 0,\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'getGasPrice',\n call: 'eth_gasPrice',\n params: 0\n }),\n new Method({\n name: 'getTransactionCount',\n call: 'eth_getTransactionCount',\n params: 2,\n inputFormatter: [function (address) {\n if (utils.isAddress(address)) {\n return address;\n }\n else {\n throw new Error('Address ' + address + ' is not a valid address to get the \"transactionCount\".');\n }\n }, function () {\n return 'latest';\n }]\n }),\n new Method({\n name: 'getBlockByNumber',\n call: 'eth_getBlockByNumber',\n params: 2,\n inputFormatter: [function (blockNumber) {\n return blockNumber ? utils.toHex(blockNumber) : 'latest';\n }, function () {\n return false;\n }]\n }),\n ];\n // attach methods to this._ethereumCall\n this._ethereumCall = {};\n _ethereumCall.forEach((method) => {\n method.attachToObject(_this._ethereumCall);\n method.setRequestManager(_this._requestManager);\n });\n this.wallet = new Wallet(this);\n};\nAccounts.prototype._addAccountFunctions = function (account) {\n var _this = this;\n // add sign functions\n account.signTransaction = function signTransaction(tx, callback) {\n return _this.signTransaction(tx, account.privateKey, callback);\n };\n account.sign = function sign(data) {\n return _this.sign(data, account.privateKey);\n };\n account.encrypt = function encrypt(password, options) {\n return _this.encrypt(account.privateKey, password, options);\n };\n return account;\n};\nAccounts.prototype.create = function create(entropy) {\n return this._addAccountFunctions(Account.create(entropy || utils.randomHex(32)));\n};\nAccounts.prototype.privateKeyToAccount = function privateKeyToAccount(privateKey, ignoreLength) {\n if (!privateKey.startsWith('0x')) {\n privateKey = '0x' + privateKey;\n }\n // 64 hex characters + hex-prefix\n if (!ignoreLength && privateKey.length !== 66) {\n throw new Error(\"Private key must be 32 bytes long\");\n }\n return this._addAccountFunctions(Account.fromPrivate(privateKey));\n};\nAccounts.prototype.signTransaction = function signTransaction(tx, privateKey, callback) {\n var _this = this, error = false, transactionOptions = {}, hasTxSigningOptions = !!(tx && ((tx.chain && tx.hardfork) || tx.common));\n callback = callback || function () { };\n if (!tx) {\n error = new Error('No transaction object given!');\n callback(error);\n return Promise.reject(error);\n }\n if (isExist(tx.common) && isNot(tx.common.customChain)) {\n error = new Error('If tx.common is provided it must have tx.common.customChain');\n callback(error);\n return Promise.reject(error);\n }\n if (isExist(tx.common) && isNot(tx.common.customChain.chainId)) {\n error = new Error('If tx.common is provided it must have tx.common.customChain and tx.common.customChain.chainId');\n callback(error);\n return Promise.reject(error);\n }\n if (isExist(tx.common) && isExist(tx.common.customChain.chainId) && isExist(tx.chainId) && tx.chainId !== tx.common.customChain.chainId) {\n error = new Error('Chain Id doesnt match in tx.chainId tx.common.customChain.chainId');\n callback(error);\n return Promise.reject(error);\n }\n function signed(tx) {\n const error = _validateTransactionForSigning(tx);\n if (error) {\n callback(error);\n return Promise.reject(error);\n }\n try {\n var transaction = helpers.formatters.inputCallFormatter(Object.assign({}, tx));\n transaction.data = transaction.data || '0x';\n transaction.value = transaction.value || '0x';\n transaction.gasLimit = transaction.gasLimit || transaction.gas;\n if (transaction.type === '0x1' && transaction.accessList === undefined)\n transaction.accessList = [];\n // Because tx has no @ethereumjs/tx signing options we use fetched vals.\n if (!hasTxSigningOptions) {\n transactionOptions.common = Common.forCustomChain('mainnet', {\n name: 'custom-network',\n networkId: transaction.networkId,\n chainId: transaction.chainId\n }, transaction.hardfork || HardForks.London);\n delete transaction.networkId;\n }\n else {\n if (transaction.common) {\n transactionOptions.common = Common.forCustomChain(transaction.common.baseChain || 'mainnet', {\n name: transaction.common.customChain.name || 'custom-network',\n networkId: transaction.common.customChain.networkId,\n chainId: transaction.common.customChain.chainId\n }, transaction.common.hardfork || HardForks.London);\n delete transaction.common;\n }\n if (transaction.chain) {\n transactionOptions.chain = transaction.chain;\n delete transaction.chain;\n }\n if (transaction.hardfork) {\n transactionOptions.hardfork = transaction.hardfork;\n delete transaction.hardfork;\n }\n }\n if (privateKey.startsWith('0x')) {\n privateKey = privateKey.substring(2);\n }\n var ethTx = TransactionFactory.fromTxData(transaction, transactionOptions);\n var signedTx = ethTx.sign(Buffer.from(privateKey, 'hex'));\n var validationErrors = signedTx.validate(true);\n if (validationErrors.length > 0) {\n let errorString = 'Signer Error: ';\n for (const validationError of validationErrors) {\n errorString += `${errorString} ${validationError}.`;\n }\n throw new Error(errorString);\n }\n var rlpEncoded = signedTx.serialize().toString('hex');\n var rawTransaction = '0x' + rlpEncoded;\n var transactionHash = utils.keccak256(rawTransaction);\n var result = {\n messageHash: '0x' + Buffer.from(signedTx.getMessageToSign(true)).toString('hex'),\n v: '0x' + signedTx.v.toString('hex'),\n r: '0x' + signedTx.r.toString('hex'),\n s: '0x' + signedTx.s.toString('hex'),\n rawTransaction: rawTransaction,\n transactionHash: transactionHash\n };\n callback(null, result);\n return result;\n }\n catch (e) {\n callback(e);\n return Promise.reject(e);\n }\n }\n tx.type = _handleTxType(tx);\n // Resolve immediately if nonce, chainId, price and signing options are provided\n if (tx.nonce !== undefined &&\n tx.chainId !== undefined &&\n (tx.gasPrice !== undefined ||\n (tx.maxFeePerGas !== undefined &&\n tx.maxPriorityFeePerGas !== undefined)) &&\n hasTxSigningOptions) {\n return Promise.resolve(signed(tx));\n }\n // Otherwise, get the missing info from the Ethereum Node\n return Promise.all([\n ((isNot(tx.common) || isNot(tx.common.customChain.chainId)) ? //tx.common.customChain.chainId is not optional inside tx.common if tx.common is provided\n (isNot(tx.chainId) ? _this._ethereumCall.getChainId() : tx.chainId)\n : undefined),\n isNot(tx.nonce) ? _this._ethereumCall.getTransactionCount(_this.privateKeyToAccount(privateKey).address) : tx.nonce,\n isNot(hasTxSigningOptions) ? _this._ethereumCall.getNetworkId() : 1,\n _handleTxPricing(_this, tx)\n ]).then(function (args) {\n const [txchainId, txnonce, txnetworkId, txgasInfo] = args;\n if ((isNot(txchainId) && isNot(tx.common) && isNot(tx.common.customChain.chainId)) || isNot(txnonce) || isNot(txnetworkId) || isNot(txgasInfo)) {\n throw new Error('One of the values \"chainId\", \"networkId\", \"gasPrice\", or \"nonce\" couldn\\'t be fetched: ' + JSON.stringify(args));\n }\n return signed({\n ...tx,\n ...((isNot(tx.common) || isNot(tx.common.customChain.chainId)) ? { chainId: txchainId } : {}),\n nonce: txnonce,\n networkId: txnetworkId,\n ...txgasInfo // Will either be gasPrice or maxFeePerGas and maxPriorityFeePerGas\n });\n });\n};\nfunction _validateTransactionForSigning(tx) {\n if (tx.common && (tx.chain && tx.hardfork)) {\n return new Error('Please provide the @ethereumjs/common object or the chain and hardfork property but not all together.');\n }\n if ((tx.chain && !tx.hardfork) || (tx.hardfork && !tx.chain)) {\n return new Error('When specifying chain and hardfork, both values must be defined. ' +\n 'Received \"chain\": ' + tx.chain + ', \"hardfork\": ' + tx.hardfork);\n }\n if ((!tx.gas && !tx.gasLimit) &&\n (!tx.maxPriorityFeePerGas && !tx.maxFeePerGas)) {\n return new Error('\"gas\" is missing');\n }\n if (tx.gas && tx.gasPrice) {\n if (tx.gas < 0 || tx.gasPrice < 0) {\n return new Error('Gas or gasPrice is lower than 0');\n }\n }\n else {\n if (tx.maxPriorityFeePerGas < 0 || tx.maxFeePerGas < 0) {\n return new Error('maxPriorityFeePerGas or maxFeePerGas is lower than 0');\n }\n }\n if (tx.nonce < 0 || tx.chainId < 0) {\n return new Error('Nonce or chainId is lower than 0');\n }\n return;\n}\nfunction _handleTxType(tx) {\n // Taken from https://github.com/ethers-io/ethers.js/blob/2a7ce0e72a1e0c9469e10392b0329e75e341cf18/packages/abstract-signer/src.ts/index.ts#L215\n const hasEip1559 = (tx.maxFeePerGas !== undefined || tx.maxPriorityFeePerGas !== undefined);\n let txType;\n if (tx.type !== undefined) {\n txType = utils.toHex(tx.type);\n }\n else if (tx.type === undefined && hasEip1559) {\n txType = '0x2';\n }\n if (tx.gasPrice !== undefined && (txType === '0x2' || hasEip1559))\n throw Error(\"eip-1559 transactions don't support gasPrice\");\n if ((txType === '0x1' || txType === '0x0') && hasEip1559)\n throw Error(\"pre-eip-1559 transaction don't support maxFeePerGas/maxPriorityFeePerGas\");\n if (hasEip1559 ||\n ((tx.common && tx.common.hardfork && tx.common.hardfork.toLowerCase() === HardForks.London) ||\n (tx.hardfork && tx.hardfork.toLowerCase() === HardForks.London))) {\n txType = '0x2';\n }\n else if (tx.accessList ||\n ((tx.common && tx.common.hardfork && tx.common.hardfork.toLowerCase() === HardForks.Berlin) ||\n (tx.hardfork && tx.hardfork.toLowerCase() === HardForks.Berlin))) {\n txType = '0x1';\n }\n return txType;\n}\nfunction _handleTxPricing(_this, tx) {\n return new Promise((resolve, reject) => {\n try {\n if ((tx.type === undefined || tx.type < '0x2')\n && tx.gasPrice !== undefined) {\n // Legacy transaction, return provided gasPrice\n resolve({ gasPrice: tx.gasPrice });\n }\n else {\n Promise.all([\n _this._ethereumCall.getBlockByNumber(),\n _this._ethereumCall.getGasPrice()\n ]).then(responses => {\n const [block, gasPrice] = responses;\n if ((tx.type === '0x2') &&\n block && block.baseFeePerGas) {\n // The network supports EIP-1559\n // Taken from https://github.com/ethers-io/ethers.js/blob/ba6854bdd5a912fe873d5da494cb5c62c190adde/packages/abstract-provider/src.ts/index.ts#L230\n let maxPriorityFeePerGas, maxFeePerGas;\n if (tx.gasPrice) {\n // Using legacy gasPrice property on an eip-1559 network,\n // so use gasPrice as both fee properties\n maxPriorityFeePerGas = tx.gasPrice;\n maxFeePerGas = tx.gasPrice;\n delete tx.gasPrice;\n }\n else {\n maxPriorityFeePerGas = tx.maxPriorityFeePerGas || '0x9502F900'; // 2.5 Gwei\n maxFeePerGas = tx.maxFeePerGas ||\n utils.toHex(utils.toBN(block.baseFeePerGas)\n .mul(utils.toBN(2))\n .add(utils.toBN(maxPriorityFeePerGas)));\n }\n resolve({ maxFeePerGas, maxPriorityFeePerGas });\n }\n else {\n if (tx.maxPriorityFeePerGas || tx.maxFeePerGas)\n throw Error(\"Network doesn't support eip-1559\");\n resolve({ gasPrice });\n }\n });\n }\n }\n catch (error) {\n reject(error);\n }\n });\n}\n/* jshint ignore:start */\nAccounts.prototype.recoverTransaction = function recoverTransaction(rawTx, txOptions = {}) {\n // Rely on EthereumJs/tx to determine the type of transaction\n const data = Buffer.from(rawTx.slice(2), \"hex\");\n const tx = TransactionFactory.fromSerializedData(data);\n //update checksum\n return utils.toChecksumAddress(tx.getSenderAddress().toString(\"hex\"));\n};\n/* jshint ignore:end */\nAccounts.prototype.hashMessage = function hashMessage(data) {\n var messageHex = utils.isHexStrict(data) ? data : utils.utf8ToHex(data);\n var messageBytes = utils.hexToBytes(messageHex);\n var messageBuffer = Buffer.from(messageBytes);\n var preamble = '\\x19Ethereum Signed Message:\\n' + messageBytes.length;\n var preambleBuffer = Buffer.from(preamble);\n var ethMessage = Buffer.concat([preambleBuffer, messageBuffer]);\n return ethereumjsUtil.bufferToHex(ethereumjsUtil.keccak256(ethMessage));\n};\nAccounts.prototype.sign = function sign(data, privateKey) {\n if (!privateKey.startsWith('0x')) {\n privateKey = '0x' + privateKey;\n }\n // 64 hex characters + hex-prefix\n if (privateKey.length !== 66) {\n throw new Error(\"Private key must be 32 bytes long\");\n }\n var hash = this.hashMessage(data);\n var signature = Account.sign(hash, privateKey);\n var vrs = Account.decodeSignature(signature);\n return {\n message: data,\n messageHash: hash,\n v: vrs[0],\n r: vrs[1],\n s: vrs[2],\n signature: signature\n };\n};\nAccounts.prototype.recover = function recover(message, signature, preFixed) {\n var args = [].slice.apply(arguments);\n if (!!message && typeof message === 'object') {\n return this.recover(message.messageHash, Account.encodeSignature([message.v, message.r, message.s]), true);\n }\n if (!preFixed) {\n message = this.hashMessage(message);\n }\n if (args.length >= 4) {\n preFixed = args.slice(-1)[0];\n preFixed = typeof preFixed === 'boolean' ? !!preFixed : false;\n return this.recover(message, Account.encodeSignature(args.slice(1, 4)), preFixed); // v, r, s\n }\n return Account.recover(message, signature);\n};\n// Taken from https://github.com/ethereumjs/ethereumjs-wallet\nAccounts.prototype.decrypt = function (v3Keystore, password, nonStrict) {\n /* jshint maxcomplexity: 10 */\n if (!(typeof password === 'string')) {\n throw new Error('No password given.');\n }\n var json = (!!v3Keystore && typeof v3Keystore === 'object') ? v3Keystore : JSON.parse(nonStrict ? v3Keystore.toLowerCase() : v3Keystore);\n if (json.version !== 3) {\n throw new Error('Not a valid V3 wallet');\n }\n var derivedKey;\n var kdfparams;\n if (json.crypto.kdf === 'scrypt') {\n kdfparams = json.crypto.kdfparams;\n // FIXME: support progress reporting callback\n derivedKey = scrypt.syncScrypt(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen);\n }\n else if (json.crypto.kdf === 'pbkdf2') {\n kdfparams = json.crypto.kdfparams;\n if (kdfparams.prf !== 'hmac-sha256') {\n throw new Error('Unsupported parameters to PBKDF2');\n }\n derivedKey = cryp.pbkdf2Sync(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.c, kdfparams.dklen, 'sha256');\n }\n else {\n throw new Error('Unsupported key derivation scheme');\n }\n var ciphertext = Buffer.from(json.crypto.ciphertext, 'hex');\n var mac = utils.sha3(Buffer.from([...derivedKey.slice(16, 32), ...ciphertext])).replace('0x', '');\n if (mac !== json.crypto.mac) {\n throw new Error('Key derivation failed - possibly wrong password');\n }\n var decipher = cryp.createDecipheriv(json.crypto.cipher, derivedKey.slice(0, 16), Buffer.from(json.crypto.cipherparams.iv, 'hex'));\n var seed = '0x' + Buffer.from([...decipher.update(ciphertext), ...decipher.final()]).toString('hex');\n return this.privateKeyToAccount(seed, true);\n};\nAccounts.prototype.encrypt = function (privateKey, password, options) {\n /* jshint maxcomplexity: 20 */\n var account = this.privateKeyToAccount(privateKey, true);\n options = options || {};\n var salt = options.salt || cryp.randomBytes(32);\n var iv = options.iv || cryp.randomBytes(16);\n var derivedKey;\n var kdf = options.kdf || 'scrypt';\n var kdfparams = {\n dklen: options.dklen || 32,\n salt: salt.toString('hex')\n };\n if (kdf === 'pbkdf2') {\n kdfparams.c = options.c || 262144;\n kdfparams.prf = 'hmac-sha256';\n derivedKey = cryp.pbkdf2Sync(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.c, kdfparams.dklen, 'sha256');\n }\n else if (kdf === 'scrypt') {\n // FIXME: support progress reporting callback\n kdfparams.n = options.n || 8192; // 2048 4096 8192 16384\n kdfparams.r = options.r || 8;\n kdfparams.p = options.p || 1;\n derivedKey = scrypt.syncScrypt(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen);\n }\n else {\n throw new Error('Unsupported kdf');\n }\n var cipher = cryp.createCipheriv(options.cipher || 'aes-128-ctr', derivedKey.slice(0, 16), iv);\n if (!cipher) {\n throw new Error('Unsupported cipher');\n }\n var ciphertext = Buffer.from([\n ...cipher.update(Buffer.from(account.privateKey.replace('0x', ''), 'hex')),\n ...cipher.final()\n ]);\n var mac = utils.sha3(Buffer.from([...derivedKey.slice(16, 32), ...ciphertext])).replace('0x', '');\n return {\n version: 3,\n id: uuid.v4({ random: options.uuid || cryp.randomBytes(16) }),\n address: account.address.toLowerCase().replace('0x', ''),\n crypto: {\n ciphertext: ciphertext.toString('hex'),\n cipherparams: {\n iv: iv.toString('hex')\n },\n cipher: options.cipher || 'aes-128-ctr',\n kdf: kdf,\n kdfparams: kdfparams,\n mac: mac.toString('hex')\n }\n };\n};\n// Note: this is trying to follow closely the specs on\n// http://web3js.readthedocs.io/en/1.0/web3-eth-accounts.html\nfunction Wallet(accounts) {\n this._accounts = accounts;\n this.length = 0;\n this.defaultKeyName = 'web3js_wallet';\n}\nWallet.prototype._findSafeIndex = function (pointer) {\n pointer = pointer || 0;\n if (this.hasOwnProperty(pointer)) {\n return this._findSafeIndex(pointer + 1);\n }\n else {\n return pointer;\n }\n};\nWallet.prototype._currentIndexes = function () {\n var keys = Object.keys(this);\n var indexes = keys\n .map(function (key) {\n return parseInt(key);\n })\n .filter(function (n) {\n return (n < 9e20);\n });\n return indexes;\n};\nWallet.prototype.create = function (numberOfAccounts, entropy) {\n for (var i = 0; i < numberOfAccounts; ++i) {\n this.add(this._accounts.create(entropy).privateKey);\n }\n return this;\n};\nWallet.prototype.add = function (account) {\n if (typeof account === 'string') {\n account = this._accounts.privateKeyToAccount(account);\n }\n if (!this[account.address]) {\n account = this._accounts.privateKeyToAccount(account.privateKey);\n account.index = this._findSafeIndex();\n this[account.index] = account;\n this[account.address] = account;\n this[account.address.toLowerCase()] = account;\n this.length++;\n return account;\n }\n else {\n return this[account.address];\n }\n};\nWallet.prototype.remove = function (addressOrIndex) {\n var account = this[addressOrIndex];\n if (account && account.address) {\n // address\n this[account.address].privateKey = null;\n delete this[account.address];\n // address lowercase\n this[account.address.toLowerCase()].privateKey = null;\n delete this[account.address.toLowerCase()];\n // index\n this[account.index].privateKey = null;\n delete this[account.index];\n this.length--;\n return true;\n }\n else {\n return false;\n }\n};\nWallet.prototype.clear = function () {\n var _this = this;\n var indexes = this._currentIndexes();\n indexes.forEach(function (index) {\n _this.remove(index);\n });\n return this;\n};\nWallet.prototype.encrypt = function (password, options) {\n var _this = this;\n var indexes = this._currentIndexes();\n var accounts = indexes.map(function (index) {\n return _this[index].encrypt(password, options);\n });\n return accounts;\n};\nWallet.prototype.decrypt = function (encryptedWallet, password) {\n var _this = this;\n encryptedWallet.forEach(function (keystore) {\n var account = _this._accounts.decrypt(keystore, password);\n if (account) {\n _this.add(account);\n }\n else {\n throw new Error('Couldn\\'t decrypt accounts. Password wrong?');\n }\n });\n return this;\n};\nWallet.prototype.save = function (password, keyName) {\n localStorage.setItem(keyName || this.defaultKeyName, JSON.stringify(this.encrypt(password)));\n return true;\n};\nWallet.prototype.load = function (password, keyName) {\n var keystore = localStorage.getItem(keyName || this.defaultKeyName);\n if (keystore) {\n try {\n keystore = JSON.parse(keystore);\n }\n catch (e) {\n }\n }\n return this.decrypt(keystore || [], password);\n};\nif (!storageAvailable('localStorage')) {\n delete Wallet.prototype.save;\n delete Wallet.prototype.load;\n}\n/**\n * Checks whether a storage type is available or not\n * For more info on how this works, please refer to MDN documentation\n * https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API#Feature-detecting_localStorage\n *\n * @method storageAvailable\n * @param {String} type the type of storage ('localStorage', 'sessionStorage')\n * @returns {Boolean} a boolean indicating whether the specified storage is available or not\n */\nfunction storageAvailable(type) {\n var storage;\n try {\n storage = self[type];\n var x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return true;\n }\n catch (e) {\n return e && (\n // everything except Firefox\n e.code === 22 ||\n // Firefox\n e.code === 1014 ||\n // test name field too, because code might not be present\n // everything except Firefox\n e.name === 'QuotaExceededError' ||\n // Firefox\n e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&\n // acknowledge QuotaExceededError only if there's something already stored\n (storage && storage.length !== 0);\n }\n}\nmodule.exports = Accounts;\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","import assert from 'assert'\nimport { BN, rlp } from './externals'\nimport {\n privateKeyVerify,\n publicKeyCreate,\n publicKeyVerify,\n publicKeyConvert,\n} from 'ethereum-cryptography/secp256k1'\nimport { stripHexPrefix } from './internal'\nimport { KECCAK256_RLP, KECCAK256_NULL } from './constants'\nimport { zeros, bufferToHex, toBuffer } from './bytes'\nimport { keccak, keccak256, keccakFromString, rlphash } from './hash'\nimport { assertIsString, assertIsHexString, assertIsBuffer } from './helpers'\nimport { BNLike, BufferLike, bnToUnpaddedBuffer, toType, TypeOutput } from './types'\n\nexport interface AccountData {\n nonce?: BNLike\n balance?: BNLike\n stateRoot?: BufferLike\n codeHash?: BufferLike\n}\n\nexport class Account {\n nonce: BN\n balance: BN\n stateRoot: Buffer\n codeHash: Buffer\n\n static fromAccountData(accountData: AccountData) {\n const { nonce, balance, stateRoot, codeHash } = accountData\n\n return new Account(\n nonce ? new BN(toBuffer(nonce)) : undefined,\n balance ? new BN(toBuffer(balance)) : undefined,\n stateRoot ? toBuffer(stateRoot) : undefined,\n codeHash ? toBuffer(codeHash) : undefined\n )\n }\n\n public static fromRlpSerializedAccount(serialized: Buffer) {\n const values = rlp.decode(serialized)\n\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized account input. Must be array')\n }\n\n return this.fromValuesArray(values)\n }\n\n public static fromValuesArray(values: Buffer[]) {\n const [nonce, balance, stateRoot, codeHash] = values\n\n return new Account(new BN(nonce), new BN(balance), stateRoot, codeHash)\n }\n\n /**\n * This constructor assigns and validates the values.\n * Use the static factory methods to assist in creating an Account from varying data types.\n */\n constructor(\n nonce = new BN(0),\n balance = new BN(0),\n stateRoot = KECCAK256_RLP,\n codeHash = KECCAK256_NULL\n ) {\n this.nonce = nonce\n this.balance = balance\n this.stateRoot = stateRoot\n this.codeHash = codeHash\n\n this._validate()\n }\n\n private _validate() {\n if (this.nonce.lt(new BN(0))) {\n throw new Error('nonce must be greater than zero')\n }\n if (this.balance.lt(new BN(0))) {\n throw new Error('balance must be greater than zero')\n }\n if (this.stateRoot.length !== 32) {\n throw new Error('stateRoot must have a length of 32')\n }\n if (this.codeHash.length !== 32) {\n throw new Error('codeHash must have a length of 32')\n }\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers for the account, in order.\n */\n raw(): Buffer[] {\n return [\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.balance),\n this.stateRoot,\n this.codeHash,\n ]\n }\n\n /**\n * Returns the RLP serialization of the account as a `Buffer`.\n */\n serialize(): Buffer {\n return rlp.encode(this.raw())\n }\n\n /**\n * Returns a `Boolean` determining if the account is a contract.\n */\n isContract(): boolean {\n return !this.codeHash.equals(KECCAK256_NULL)\n }\n\n /**\n * Returns a `Boolean` determining if the account is empty complying to the definition of\n * account emptiness in [EIP-161](https://eips.ethereum.org/EIPS/eip-161):\n * \"An account is considered empty when it has no code and zero nonce and zero balance.\"\n */\n isEmpty(): boolean {\n return this.balance.isZero() && this.nonce.isZero() && this.codeHash.equals(KECCAK256_NULL)\n }\n}\n\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too.\n */\nexport const isValidAddress = function (hexAddress: string): boolean {\n try {\n assertIsString(hexAddress)\n } catch (e: any) {\n return false\n }\n\n return /^0x[0-9a-fA-F]{40}$/.test(hexAddress)\n}\n\n/**\n * Returns a checksummed address.\n *\n * If an eip1191ChainId is provided, the chainId will be included in the checksum calculation. This\n * has the effect of checksummed addresses for one chain having invalid checksums for others.\n * For more details see [EIP-1191](https://eips.ethereum.org/EIPS/eip-1191).\n *\n * WARNING: Checksums with and without the chainId will differ and the EIP-1191 checksum is not\n * backwards compatible to the original widely adopted checksum format standard introduced in\n * [EIP-55](https://eips.ethereum.org/EIPS/eip-55), so this will break in existing applications.\n * Usage of this EIP is therefore discouraged unless you have a very targeted use case.\n */\nexport const toChecksumAddress = function (hexAddress: string, eip1191ChainId?: BNLike): string {\n assertIsHexString(hexAddress)\n const address = stripHexPrefix(hexAddress).toLowerCase()\n\n let prefix = ''\n if (eip1191ChainId) {\n const chainId = toType(eip1191ChainId, TypeOutput.BN)\n prefix = chainId.toString() + '0x'\n }\n\n const hash = keccakFromString(prefix + address).toString('hex')\n let ret = '0x'\n\n for (let i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase()\n } else {\n ret += address[i]\n }\n }\n\n return ret\n}\n\n/**\n * Checks if the address is a valid checksummed address.\n *\n * See toChecksumAddress' documentation for details about the eip1191ChainId parameter.\n */\nexport const isValidChecksumAddress = function (\n hexAddress: string,\n eip1191ChainId?: BNLike\n): boolean {\n return isValidAddress(hexAddress) && toChecksumAddress(hexAddress, eip1191ChainId) === hexAddress\n}\n\n/**\n * Generates an address of a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\nexport const generateAddress = function (from: Buffer, nonce: Buffer): Buffer {\n assertIsBuffer(from)\n assertIsBuffer(nonce)\n const nonceBN = new BN(nonce)\n\n if (nonceBN.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n return rlphash([from, null]).slice(-20)\n }\n\n // Only take the lower 160bits of the hash\n return rlphash([from, Buffer.from(nonceBN.toArray())]).slice(-20)\n}\n\n/**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\nexport const generateAddress2 = function (from: Buffer, salt: Buffer, initCode: Buffer): Buffer {\n assertIsBuffer(from)\n assertIsBuffer(salt)\n assertIsBuffer(initCode)\n\n assert(from.length === 20)\n assert(salt.length === 32)\n\n const address = keccak256(\n Buffer.concat([Buffer.from('ff', 'hex'), from, salt, keccak256(initCode)])\n )\n\n return address.slice(-20)\n}\n\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n */\nexport const isValidPrivate = function (privateKey: Buffer): boolean {\n return privateKeyVerify(privateKey)\n}\n\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexport const isValidPublic = function (publicKey: Buffer, sanitize: boolean = false): boolean {\n assertIsBuffer(publicKey)\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]))\n }\n\n if (!sanitize) {\n return false\n }\n\n return publicKeyVerify(publicKey)\n}\n\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexport const pubToAddress = function (pubKey: Buffer, sanitize: boolean = false): Buffer {\n assertIsBuffer(pubKey)\n if (sanitize && pubKey.length !== 64) {\n pubKey = Buffer.from(publicKeyConvert(pubKey, false).slice(1))\n }\n assert(pubKey.length === 64)\n // Only take the lower 160bits of the hash\n return keccak(pubKey).slice(-20)\n}\nexport const publicToAddress = pubToAddress\n\n/**\n * Returns the ethereum public key of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexport const privateToPublic = function (privateKey: Buffer): Buffer {\n assertIsBuffer(privateKey)\n // skip the type flag and use the X, Y points\n return Buffer.from(publicKeyCreate(privateKey, false)).slice(1)\n}\n\n/**\n * Returns the ethereum address of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexport const privateToAddress = function (privateKey: Buffer): Buffer {\n return publicToAddress(privateToPublic(privateKey))\n}\n\n/**\n * Converts a public key to the Ethereum format.\n */\nexport const importPublic = function (publicKey: Buffer): Buffer {\n assertIsBuffer(publicKey)\n if (publicKey.length !== 64) {\n publicKey = Buffer.from(publicKeyConvert(publicKey, false).slice(1))\n }\n return publicKey\n}\n\n/**\n * Returns the zero address.\n */\nexport const zeroAddress = function (): string {\n const addressLength = 20\n const addr = zeros(addressLength)\n return bufferToHex(addr)\n}\n\n/**\n * Checks if a given address is the zero address.\n */\nexport const isZeroAddress = function (hexAddress: string): boolean {\n try {\n assertIsString(hexAddress)\n } catch (e: any) {\n return false\n }\n\n const zeroAddr = zeroAddress()\n return zeroAddr === hexAddress\n}\n","import assert from 'assert'\nimport { BN } from './externals'\nimport { toBuffer, zeros } from './bytes'\nimport {\n isValidAddress,\n pubToAddress,\n privateToAddress,\n generateAddress,\n generateAddress2,\n} from './account'\n\nexport class Address {\n public readonly buf: Buffer\n\n constructor(buf: Buffer) {\n assert(buf.length === 20, 'Invalid address length')\n this.buf = buf\n }\n\n /**\n * Returns the zero address.\n */\n static zero(): Address {\n return new Address(zeros(20))\n }\n\n /**\n * Returns an Address object from a hex-encoded string.\n * @param str - Hex-encoded address\n */\n static fromString(str: string): Address {\n assert(isValidAddress(str), 'Invalid address')\n return new Address(toBuffer(str))\n }\n\n /**\n * Returns an address for a given public key.\n * @param pubKey The two points of an uncompressed key\n */\n static fromPublicKey(pubKey: Buffer): Address {\n assert(Buffer.isBuffer(pubKey), 'Public key should be Buffer')\n const buf = pubToAddress(pubKey)\n return new Address(buf)\n }\n\n /**\n * Returns an address for a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\n static fromPrivateKey(privateKey: Buffer): Address {\n assert(Buffer.isBuffer(privateKey), 'Private key should be Buffer')\n const buf = privateToAddress(privateKey)\n return new Address(buf)\n }\n\n /**\n * Generates an address for a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\n static generate(from: Address, nonce: BN): Address {\n assert(BN.isBN(nonce))\n return new Address(generateAddress(from.buf, nonce.toArrayLike(Buffer)))\n }\n\n /**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\n static generate2(from: Address, salt: Buffer, initCode: Buffer): Address {\n assert(Buffer.isBuffer(salt))\n assert(Buffer.isBuffer(initCode))\n return new Address(generateAddress2(from.buf, salt, initCode))\n }\n\n /**\n * Is address equal to another.\n */\n equals(address: Address): boolean {\n return this.buf.equals(address.buf)\n }\n\n /**\n * Is address zero.\n */\n isZero(): boolean {\n return this.equals(Address.zero())\n }\n\n /**\n * True if address is in the address range defined\n * by EIP-1352\n */\n isPrecompileOrSystemAddress(): boolean {\n const addressBN = new BN(this.buf)\n const rangeMin = new BN(0)\n const rangeMax = new BN('ffff', 'hex')\n\n return addressBN.gte(rangeMin) && addressBN.lte(rangeMax)\n }\n\n /**\n * Returns hex encoding of address.\n */\n toString(): string {\n return '0x' + this.buf.toString('hex')\n }\n\n /**\n * Returns Buffer representation of address.\n */\n toBuffer(): Buffer {\n return Buffer.from(this.buf)\n }\n}\n","import { BN } from './externals'\nimport { stripHexPrefix, padToEven, isHexString, isHexPrefixed } from './internal'\nimport {\n PrefixedHexString,\n TransformableToArray,\n TransformableToBuffer,\n NestedBufferArray,\n NestedUint8Array,\n} from './types'\nimport { assertIsBuffer, assertIsArray, assertIsHexString } from './helpers'\n\n/**\n * Converts a `Number` into a hex `String`\n * @param {Number} i\n * @return {String}\n */\nexport const intToHex = function (i: number) {\n if (!Number.isSafeInteger(i) || i < 0) {\n throw new Error(`Received an invalid integer type: ${i}`)\n }\n return `0x${i.toString(16)}`\n}\n\n/**\n * Converts an `Number` to a `Buffer`\n * @param {Number} i\n * @return {Buffer}\n */\nexport const intToBuffer = function (i: number) {\n const hex = intToHex(i)\n return Buffer.from(padToEven(hex.slice(2)), 'hex')\n}\n\n/**\n * Returns a buffer filled with 0s.\n * @param bytes the number of bytes the buffer should be\n */\nexport const zeros = function (bytes: number): Buffer {\n return Buffer.allocUnsafe(bytes).fill(0)\n}\n\n/**\n * Pads a `Buffer` with zeros till it has `length` bytes.\n * Truncates the beginning or end of input if its length exceeds `length`.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @param right whether to start padding form the left or right\n * @return (Buffer)\n */\nconst setLength = function (msg: Buffer, length: number, right: boolean) {\n const buf = zeros(length)\n if (right) {\n if (msg.length < length) {\n msg.copy(buf)\n return buf\n }\n return msg.slice(0, length)\n } else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length)\n return buf\n }\n return msg.slice(-length)\n }\n}\n\n/**\n * Left Pads a `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexport const setLengthLeft = function (msg: Buffer, length: number) {\n assertIsBuffer(msg)\n return setLength(msg, length, false)\n}\n\n/**\n * Right Pads a `Buffer` with trailing zeros till it has `length` bytes.\n * it truncates the end if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexport const setLengthRight = function (msg: Buffer, length: number) {\n assertIsBuffer(msg)\n return setLength(msg, length, true)\n}\n\n/**\n * Trims leading zeros from a `Buffer`, `String` or `Number[]`.\n * @param a (Buffer|Array|String)\n * @return (Buffer|Array|String)\n */\nconst stripZeros = function (a: any): Buffer | number[] | string {\n let first = a[0]\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1)\n first = a[0]\n }\n return a\n}\n\n/**\n * Trims leading zeros from a `Buffer`.\n * @param a (Buffer)\n * @return (Buffer)\n */\nexport const unpadBuffer = function (a: Buffer): Buffer {\n assertIsBuffer(a)\n return stripZeros(a) as Buffer\n}\n\n/**\n * Trims leading zeros from an `Array` (of numbers).\n * @param a (number[])\n * @return (number[])\n */\nexport const unpadArray = function (a: number[]): number[] {\n assertIsArray(a)\n return stripZeros(a) as number[]\n}\n\n/**\n * Trims leading zeros from a hex-prefixed `String`.\n * @param a (String)\n * @return (String)\n */\nexport const unpadHexString = function (a: string): string {\n assertIsHexString(a)\n a = stripHexPrefix(a)\n return stripZeros(a) as string\n}\n\nexport type ToBufferInputTypes =\n | PrefixedHexString\n | number\n | BN\n | Buffer\n | Uint8Array\n | number[]\n | TransformableToArray\n | TransformableToBuffer\n | null\n | undefined\n\n/**\n * Attempts to turn a value into a `Buffer`.\n * Inputs supported: `Buffer`, `String` (hex-prefixed), `Number`, null/undefined, `BN` and other objects\n * with a `toArray()` or `toBuffer()` method.\n * @param v the value\n */\nexport const toBuffer = function (v: ToBufferInputTypes): Buffer {\n if (v === null || v === undefined) {\n return Buffer.allocUnsafe(0)\n }\n\n if (Buffer.isBuffer(v)) {\n return Buffer.from(v)\n }\n\n if (Array.isArray(v) || v instanceof Uint8Array) {\n return Buffer.from(v as Uint8Array)\n }\n\n if (typeof v === 'string') {\n if (!isHexString(v)) {\n throw new Error(\n `Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: ${v}`\n )\n }\n return Buffer.from(padToEven(stripHexPrefix(v)), 'hex')\n }\n\n if (typeof v === 'number') {\n return intToBuffer(v)\n }\n\n if (BN.isBN(v)) {\n if (v.isNeg()) {\n throw new Error(`Cannot convert negative BN to buffer. Given: ${v}`)\n }\n return v.toArrayLike(Buffer)\n }\n\n if (v.toArray) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray())\n }\n\n if (v.toBuffer) {\n return Buffer.from(v.toBuffer())\n }\n\n throw new Error('invalid type')\n}\n\n/**\n * Converts a `Buffer` to a `Number`.\n * @param buf `Buffer` object to convert\n * @throws If the input number exceeds 53 bits.\n */\nexport const bufferToInt = function (buf: Buffer): number {\n return new BN(toBuffer(buf)).toNumber()\n}\n\n/**\n * Converts a `Buffer` into a `0x`-prefixed hex `String`.\n * @param buf `Buffer` object to convert\n */\nexport const bufferToHex = function (buf: Buffer): string {\n buf = toBuffer(buf)\n return '0x' + buf.toString('hex')\n}\n\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param num Signed integer value\n */\nexport const fromSigned = function (num: Buffer): BN {\n return new BN(num).fromTwos(256)\n}\n\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param num\n */\nexport const toUnsigned = function (num: BN): Buffer {\n return Buffer.from(num.toTwos(256).toArray())\n}\n\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\".\n */\nexport const addHexPrefix = function (str: string): string {\n if (typeof str !== 'string') {\n return str\n }\n\n return isHexPrefixed(str) ? str : '0x' + str\n}\n\n/**\n * Returns the utf8 string representation from a hex string.\n *\n * Examples:\n *\n * Input 1: '657468657265756d000000000000000000000000000000000000000000000000'\n * Input 2: '657468657265756d'\n * Input 3: '000000000000000000000000000000000000000000000000657468657265756d'\n *\n * Output (all 3 input variants): 'ethereum'\n *\n * Note that this method is not intended to be used with hex strings\n * representing quantities in both big endian or little endian notation.\n *\n * @param string Hex string, should be `0x` prefixed\n * @return Utf8 string\n */\nexport const toUtf8 = function (hex: string): string {\n const zerosRegexp = /^(00)+|(00)+$/g\n hex = stripHexPrefix(hex)\n if (hex.length % 2 !== 0) {\n throw new Error('Invalid non-even hex string input for toUtf8() provided')\n }\n const bufferVal = Buffer.from(hex.replace(zerosRegexp, ''), 'hex')\n\n return bufferVal.toString('utf8')\n}\n\n/**\n * Converts a `Buffer` or `Array` to JSON.\n * @param ba (Buffer|Array)\n * @return (Array|String|null)\n */\nexport const baToJSON = function (ba: any): any {\n if (Buffer.isBuffer(ba)) {\n return `0x${ba.toString('hex')}`\n } else if (ba instanceof Array) {\n const array = []\n for (let i = 0; i < ba.length; i++) {\n array.push(baToJSON(ba[i]))\n }\n return array\n }\n}\n\n/**\n * Checks provided Buffers for leading zeroes and throws if found.\n *\n * Examples:\n *\n * Valid values: 0x1, 0x, 0x01, 0x1234\n * Invalid values: 0x0, 0x00, 0x001, 0x0001\n *\n * Note: This method is useful for validating that RLP encoded integers comply with the rule that all\n * integer values encoded to RLP must be in the most compact form and contain no leading zero bytes\n * @param values An object containing string keys and Buffer values\n * @throws if any provided value is found to have leading zero bytes\n */\nexport const validateNoLeadingZeroes = function (values: { [key: string]: Buffer | undefined }) {\n for (const [k, v] of Object.entries(values)) {\n if (v !== undefined && v.length > 0 && v[0] === 0) {\n throw new Error(`${k} cannot have leading zeroes, received: ${v.toString('hex')}`)\n }\n }\n}\n\n/**\n * Converts a {@link Uint8Array} or {@link NestedUint8Array} to {@link Buffer} or {@link NestedBufferArray}\n */\nexport function arrToBufArr(arr: Uint8Array): Buffer\nexport function arrToBufArr(arr: NestedUint8Array): NestedBufferArray\nexport function arrToBufArr(arr: Uint8Array | NestedUint8Array): Buffer | NestedBufferArray\nexport function arrToBufArr(arr: Uint8Array | NestedUint8Array): Buffer | NestedBufferArray {\n if (!Array.isArray(arr)) {\n return Buffer.from(arr)\n }\n return arr.map((a) => arrToBufArr(a))\n}\n\n/**\n * Converts a {@link Buffer} or {@link NestedBufferArray} to {@link Uint8Array} or {@link NestedUint8Array}\n */\nexport function bufArrToArr(arr: Buffer): Uint8Array\nexport function bufArrToArr(arr: NestedBufferArray): NestedUint8Array\nexport function bufArrToArr(arr: Buffer | NestedBufferArray): Uint8Array | NestedUint8Array\nexport function bufArrToArr(arr: Buffer | NestedBufferArray): Uint8Array | NestedUint8Array {\n if (!Array.isArray(arr)) {\n return Uint8Array.from(arr ?? [])\n }\n return arr.map((a) => bufArrToArr(a))\n}\n","import { Buffer } from 'buffer'\nimport { BN } from './externals'\n\n/**\n * 2^64-1\n */\nexport const MAX_UINT64 = new BN('ffffffffffffffff', 16)\n\n/**\n * The max integer that the evm can handle (2^256-1)\n */\nexport const MAX_INTEGER = new BN(\n 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',\n 16\n)\n\n/**\n * 2^256\n */\nexport const TWO_POW256 = new BN(\n '10000000000000000000000000000000000000000000000000000000000000000',\n 16\n)\n\n/**\n * Keccak-256 hash of null\n */\nexport const KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'\n\n/**\n * Keccak-256 hash of null\n */\nexport const KECCAK256_NULL = Buffer.from(KECCAK256_NULL_S, 'hex')\n\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexport const KECCAK256_RLP_ARRAY_S =\n '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'\n\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexport const KECCAK256_RLP_ARRAY = Buffer.from(KECCAK256_RLP_ARRAY_S, 'hex')\n\n/**\n * Keccak-256 hash of the RLP of null\n */\nexport const KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'\n\n/**\n * Keccak-256 hash of the RLP of null\n */\nexport const KECCAK256_RLP = Buffer.from(KECCAK256_RLP_S, 'hex')\n","/**\n * Re-exports commonly used modules:\n * * Exports [`BN`](https://github.com/indutny/bn.js), [`rlp`](https://github.com/ethereumjs/rlp).\n * @packageDocumentation\n */\n\nimport BN from 'bn.js'\nimport * as rlp from 'rlp'\n\n/**\n * [`BN`](https://github.com/indutny/bn.js)\n */\nexport { BN }\n\n/**\n * [`rlp`](https://github.com/ethereumjs/rlp)\n */\nexport { rlp }\n","import { keccak224, keccak384, keccak256 as k256, keccak512 } from 'ethereum-cryptography/keccak'\nconst createHash = require('create-hash')\nimport { rlp } from './externals'\nimport { toBuffer, setLengthLeft } from './bytes'\nimport { assertIsString, assertIsBuffer, assertIsArray, assertIsHexString } from './helpers'\n\n/**\n * Creates Keccak hash of a Buffer input\n * @param a The input data (Buffer)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccak = function (a: Buffer, bits: number = 256): Buffer {\n assertIsBuffer(a)\n switch (bits) {\n case 224: {\n return keccak224(a)\n }\n case 256: {\n return k256(a)\n }\n case 384: {\n return keccak384(a)\n }\n case 512: {\n return keccak512(a)\n }\n default: {\n throw new Error(`Invald algorithm: keccak${bits}`)\n }\n }\n}\n\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256).\n * @param a The input data (Buffer)\n */\nexport const keccak256 = function (a: Buffer): Buffer {\n return keccak(a)\n}\n\n/**\n * Creates Keccak hash of a utf-8 string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromString = function (a: string, bits: number = 256) {\n assertIsString(a)\n const buf = Buffer.from(a, 'utf8')\n return keccak(buf, bits)\n}\n\n/**\n * Creates Keccak hash of an 0x-prefixed string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromHexString = function (a: string, bits: number = 256) {\n assertIsHexString(a)\n return keccak(toBuffer(a), bits)\n}\n\n/**\n * Creates Keccak hash of a number array input\n * @param a The input data (number[])\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromArray = function (a: number[], bits: number = 256) {\n assertIsArray(a)\n return keccak(toBuffer(a), bits)\n}\n\n/**\n * Creates SHA256 hash of an input.\n * @param a The input data (Buffer|Array|String)\n */\nconst _sha256 = function (a: any): Buffer {\n a = toBuffer(a)\n return createHash('sha256').update(a).digest()\n}\n\n/**\n * Creates SHA256 hash of a Buffer input.\n * @param a The input data (Buffer)\n */\nexport const sha256 = function (a: Buffer): Buffer {\n assertIsBuffer(a)\n return _sha256(a)\n}\n\n/**\n * Creates SHA256 hash of a string input.\n * @param a The input data (string)\n */\nexport const sha256FromString = function (a: string): Buffer {\n assertIsString(a)\n return _sha256(a)\n}\n\n/**\n * Creates SHA256 hash of a number[] input.\n * @param a The input data (number[])\n */\nexport const sha256FromArray = function (a: number[]): Buffer {\n assertIsArray(a)\n return _sha256(a)\n}\n\n/**\n * Creates RIPEMD160 hash of the input.\n * @param a The input data (Buffer|Array|String|Number)\n * @param padded Whether it should be padded to 256 bits or not\n */\nconst _ripemd160 = function (a: any, padded: boolean): Buffer {\n a = toBuffer(a)\n const hash = createHash('rmd160').update(a).digest()\n if (padded === true) {\n return setLengthLeft(hash, 32)\n } else {\n return hash\n }\n}\n\n/**\n * Creates RIPEMD160 hash of a Buffer input.\n * @param a The input data (Buffer)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160 = function (a: Buffer, padded: boolean): Buffer {\n assertIsBuffer(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates RIPEMD160 hash of a string input.\n * @param a The input data (String)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160FromString = function (a: string, padded: boolean): Buffer {\n assertIsString(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates RIPEMD160 hash of a number[] input.\n * @param a The input data (number[])\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160FromArray = function (a: number[], padded: boolean): Buffer {\n assertIsArray(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input.\n * @param a The input data\n */\nexport const rlphash = function (a: rlp.Input): Buffer {\n return keccak(rlp.encode(a))\n}\n","import { isHexString } from './internal'\n\n/**\n * Throws if a string is not hex prefixed\n * @param {string} input string to check hex prefix of\n */\nexport const assertIsHexString = function (input: string): void {\n if (!isHexString(input)) {\n const msg = `This method only supports 0x-prefixed hex strings but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not a buffer\n * @param {Buffer} input value to check\n */\nexport const assertIsBuffer = function (input: Buffer): void {\n if (!Buffer.isBuffer(input)) {\n const msg = `This method only supports Buffer but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not an array\n * @param {number[]} input value to check\n */\nexport const assertIsArray = function (input: number[]): void {\n if (!Array.isArray(input)) {\n const msg = `This method only supports number arrays but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not a string\n * @param {string} input value to check\n */\nexport const assertIsString = function (input: string): void {\n if (typeof input !== 'string') {\n const msg = `This method only supports strings but input was: ${input}`\n throw new Error(msg)\n }\n}\n","/**\n * Constants\n */\nexport * from './constants'\n\n/**\n * Account class and helper functions\n */\nexport * from './account'\n\n/**\n * Address type\n */\nexport * from './address'\n\n/**\n * Hash functions\n */\nexport * from './hash'\n\n/**\n * ECDSA signature\n */\nexport * from './signature'\n\n/**\n * Utilities for manipulating Buffers, byte arrays, etc.\n */\nexport * from './bytes'\n\n/**\n * Function for definining properties on an object\n */\nexport * from './object'\n\n/**\n * External exports (BN, rlp)\n */\nexport * from './externals'\n\n/**\n * Helpful TypeScript types\n */\nexport * from './types'\n\n/**\n * Export ethjs-util methods\n */\nexport {\n isHexPrefixed,\n stripHexPrefix,\n padToEven,\n getBinarySize,\n arrayContainsArray,\n toAscii,\n fromUtf8,\n fromAscii,\n getKeys,\n isHexString,\n} from './internal'\n","/*\nThe MIT License\n\nCopyright (c) 2016 Nick Dodson. nickdodson.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE\n */\n\n/**\n * Returns a `Boolean` on whether or not the a `String` starts with '0x'\n * @param str the string input value\n * @return a boolean if it is or is not hex prefixed\n * @throws if the str input is not a string\n */\nexport function isHexPrefixed(str: string): boolean {\n if (typeof str !== 'string') {\n throw new Error(`[isHexPrefixed] input must be type 'string', received type ${typeof str}`)\n }\n\n return str[0] === '0' && str[1] === 'x'\n}\n\n/**\n * Removes '0x' from a given `String` if present\n * @param str the string value\n * @returns the string without 0x prefix\n */\nexport const stripHexPrefix = (str: string): string => {\n if (typeof str !== 'string')\n throw new Error(`[stripHexPrefix] input must be type 'string', received ${typeof str}`)\n\n return isHexPrefixed(str) ? str.slice(2) : str\n}\n\n/**\n * Pads a `String` to have an even length\n * @param value\n * @return output\n */\nexport function padToEven(value: string): string {\n let a = value\n\n if (typeof a !== 'string') {\n throw new Error(`[padToEven] value must be type 'string', received ${typeof a}`)\n }\n\n if (a.length % 2) a = `0${a}`\n\n return a\n}\n\n/**\n * Get the binary size of a string\n * @param str\n * @returns the number of bytes contained within the string\n */\nexport function getBinarySize(str: string) {\n if (typeof str !== 'string') {\n throw new Error(`[getBinarySize] method requires input type 'string', recieved ${typeof str}`)\n }\n\n return Buffer.byteLength(str, 'utf8')\n}\n\n/**\n * Returns TRUE if the first specified array contains all elements\n * from the second one. FALSE otherwise.\n *\n * @param superset\n * @param subset\n *\n */\nexport function arrayContainsArray(\n superset: unknown[],\n subset: unknown[],\n some?: boolean\n): boolean {\n if (Array.isArray(superset) !== true) {\n throw new Error(\n `[arrayContainsArray] method requires input 'superset' to be an array, got type '${typeof superset}'`\n )\n }\n if (Array.isArray(subset) !== true) {\n throw new Error(\n `[arrayContainsArray] method requires input 'subset' to be an array, got type '${typeof subset}'`\n )\n }\n\n return subset[some ? 'some' : 'every']((value) => superset.indexOf(value) >= 0)\n}\n\n/**\n * Should be called to get ascii from its hex representation\n *\n * @param string in hex\n * @returns ascii string representation of hex value\n */\nexport function toAscii(hex: string): string {\n let str = ''\n let i = 0\n const l = hex.length\n\n if (hex.substring(0, 2) === '0x') i = 2\n\n for (; i < l; i += 2) {\n const code = parseInt(hex.substr(i, 2), 16)\n str += String.fromCharCode(code)\n }\n\n return str\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of utf8 string\n *\n * @param string\n * @param optional padding\n * @returns hex representation of input string\n */\nexport function fromUtf8(stringValue: string) {\n const str = Buffer.from(stringValue, 'utf8')\n\n return `0x${padToEven(str.toString('hex')).replace(/^0+|0+$/g, '')}`\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of ascii string\n *\n * @param string\n * @param optional padding\n * @returns hex representation of input string\n */\nexport function fromAscii(stringValue: string) {\n let hex = ''\n for (let i = 0; i < stringValue.length; i++) {\n const code = stringValue.charCodeAt(i)\n const n = code.toString(16)\n hex += n.length < 2 ? `0${n}` : n\n }\n\n return `0x${hex}`\n}\n\n/**\n * Returns the keys from an array of objects.\n * @example\n * ```js\n * getKeys([{a: '1', b: '2'}, {a: '3', b: '4'}], 'a') => ['1', '3']\n *````\n * @param params\n * @param key\n * @param allowEmpty\n * @returns output just a simple array of output keys\n */\nexport function getKeys(params: Record[], key: string, allowEmpty?: boolean) {\n if (!Array.isArray(params)) {\n throw new Error(`[getKeys] method expects input 'params' to be an array, got ${typeof params}`)\n }\n if (typeof key !== 'string') {\n throw new Error(\n `[getKeys] method expects input 'key' to be type 'string', got ${typeof params}`\n )\n }\n\n const result = []\n\n for (let i = 0; i < params.length; i++) {\n let value = params[i][key]\n if (allowEmpty && !value) {\n value = ''\n } else if (typeof value !== 'string') {\n throw new Error(`invalid abi - expected type 'string', received ${typeof value}`)\n }\n result.push(value)\n }\n\n return result\n}\n\n/**\n * Is the string a hex string.\n *\n * @param value\n * @param length\n * @returns output the string is a hex string\n */\nexport function isHexString(value: string, length?: number): boolean {\n if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) return false\n\n if (length && value.length !== 2 + 2 * length) return false\n\n return true\n}\n","import assert from 'assert'\nimport { stripHexPrefix } from './internal'\nimport { rlp } from './externals'\nimport { toBuffer, baToJSON, unpadBuffer } from './bytes'\n\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param self the `Object` to define properties on\n * @param fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param data data to be validated against the definitions\n * @deprecated\n */\nexport const defineProperties = function (self: any, fields: any, data?: any) {\n self.raw = []\n self._fields = []\n\n // attach the `toJSON`\n self.toJSON = function (label: boolean = false) {\n if (label) {\n type Dict = { [key: string]: string }\n const obj: Dict = {}\n self._fields.forEach((field: string) => {\n obj[field] = `0x${self[field].toString('hex')}`\n })\n return obj\n }\n return baToJSON(self.raw)\n }\n\n self.serialize = function serialize() {\n return rlp.encode(self.raw)\n }\n\n fields.forEach((field: any, i: number) => {\n self._fields.push(field.name)\n function getter() {\n return self.raw[i]\n }\n function setter(v: any) {\n v = toBuffer(v)\n\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0)\n }\n\n if (field.allowLess && field.length) {\n v = unpadBuffer(v)\n assert(\n field.length >= v.length,\n `The field ${field.name} must not have more ${field.length} bytes`\n )\n } else if (!(field.allowZero && v.length === 0) && field.length) {\n assert(\n field.length === v.length,\n `The field ${field.name} must have byte length of ${field.length}`\n )\n }\n\n self.raw[i] = v\n }\n\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter,\n })\n\n if (field.default) {\n self[field.name] = field.default\n }\n\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter,\n })\n }\n })\n\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(stripHexPrefix(data), 'hex')\n }\n\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data)\n }\n\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data')\n }\n\n // make sure all the items are buffers\n data.forEach((d, i) => {\n self[self._fields[i]] = toBuffer(d)\n })\n } else if (typeof data === 'object') {\n const keys = Object.keys(data)\n fields.forEach((field: any) => {\n if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]\n if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]\n })\n } else {\n throw new Error('invalid data')\n }\n }\n}\n","import { ecdsaSign, ecdsaRecover, publicKeyConvert } from 'ethereum-cryptography/secp256k1'\nimport { BN } from './externals'\nimport { toBuffer, setLengthLeft, bufferToHex, bufferToInt } from './bytes'\nimport { keccak } from './hash'\nimport { assertIsBuffer } from './helpers'\nimport { BNLike, toType, TypeOutput } from './types'\n\nexport interface ECDSASignature {\n v: number\n r: Buffer\n s: Buffer\n}\n\nexport interface ECDSASignatureBuffer {\n v: Buffer\n r: Buffer\n s: Buffer\n}\n\n/**\n * Returns the ECDSA signature of a message hash.\n */\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId?: number): ECDSASignature\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId: BNLike): ECDSASignatureBuffer\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId: any): any {\n const { signature, recid: recovery } = ecdsaSign(msgHash, privateKey)\n\n const r = Buffer.from(signature.slice(0, 32))\n const s = Buffer.from(signature.slice(32, 64))\n\n if (!chainId || typeof chainId === 'number') {\n // return legacy type ECDSASignature (deprecated in favor of ECDSASignatureBuffer to handle large chainIds)\n if (chainId && !Number.isSafeInteger(chainId)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)'\n )\n }\n const v = chainId ? recovery + (chainId * 2 + 35) : recovery + 27\n return { r, s, v }\n }\n\n const chainIdBN = toType(chainId as BNLike, TypeOutput.BN)\n const v = chainIdBN.muln(2).addn(35).addn(recovery).toArrayLike(Buffer)\n return { r, s, v }\n}\n\nfunction calculateSigRecovery(v: BNLike, chainId?: BNLike): BN {\n const vBN = toType(v, TypeOutput.BN)\n\n if (vBN.eqn(0) || vBN.eqn(1)) return toType(v, TypeOutput.BN)\n\n if (!chainId) {\n return vBN.subn(27)\n }\n const chainIdBN = toType(chainId, TypeOutput.BN)\n return vBN.sub(chainIdBN.muln(2).addn(35))\n}\n\nfunction isValidSigRecovery(recovery: number | BN): boolean {\n const rec = new BN(recovery)\n return rec.eqn(0) || rec.eqn(1)\n}\n\n/**\n * ECDSA public key recovery from signature.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Recovered public key\n */\nexport const ecrecover = function (\n msgHash: Buffer,\n v: BNLike,\n r: Buffer,\n s: Buffer,\n chainId?: BNLike\n): Buffer {\n const signature = Buffer.concat([setLengthLeft(r, 32), setLengthLeft(s, 32)], 64)\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n const senderPubKey = ecdsaRecover(signature, recovery.toNumber(), msgHash)\n return Buffer.from(publicKeyConvert(senderPubKey, false).slice(1))\n}\n\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Signature\n */\nexport const toRpcSig = function (v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike): string {\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n return bufferToHex(Buffer.concat([setLengthLeft(r, 32), setLengthLeft(s, 32), toBuffer(v)]))\n}\n\n/**\n * Convert signature parameters into the format of Compact Signature Representation (EIP-2098).\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Signature\n */\nexport const toCompactSig = function (v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike): string {\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n\n const vn = toType(v, TypeOutput.Number)\n let ss = s\n if ((vn > 28 && vn % 2 === 1) || vn === 1 || vn === 28) {\n ss = Buffer.from(s)\n ss[0] |= 0x80\n }\n\n return bufferToHex(Buffer.concat([setLengthLeft(r, 32), setLengthLeft(ss, 32)]))\n}\n\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n * NOTE: After EIP1559, `v` could be `0` or `1` but this function assumes\n * it's a signed message (EIP-191 or EIP-712) adding `27` at the end. Remove if needed.\n */\nexport const fromRpcSig = function (sig: string): ECDSASignature {\n const buf: Buffer = toBuffer(sig)\n\n let r: Buffer\n let s: Buffer\n let v: number\n if (buf.length >= 65) {\n r = buf.slice(0, 32)\n s = buf.slice(32, 64)\n v = bufferToInt(buf.slice(64))\n } else if (buf.length === 64) {\n // Compact Signature Representation (https://eips.ethereum.org/EIPS/eip-2098)\n r = buf.slice(0, 32)\n s = buf.slice(32, 64)\n v = bufferToInt(buf.slice(32, 33)) >> 7\n s[0] &= 0x7f\n } else {\n throw new Error('Invalid signature length')\n }\n\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27\n }\n\n return {\n v,\n r,\n s,\n }\n}\n\n/**\n * Validate a ECDSA signature.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @param homesteadOrLater Indicates whether this is being used on either the homestead hardfork or a later one\n */\nexport const isValidSignature = function (\n v: BNLike,\n r: Buffer,\n s: Buffer,\n homesteadOrLater: boolean = true,\n chainId?: BNLike\n): boolean {\n const SECP256K1_N_DIV_2 = new BN(\n '7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0',\n 16\n )\n const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)\n\n if (r.length !== 32 || s.length !== 32) {\n return false\n }\n\n if (!isValidSigRecovery(calculateSigRecovery(v, chainId))) {\n return false\n }\n\n const rBN = new BN(r)\n const sBN = new BN(s)\n\n if (rBN.isZero() || rBN.gt(SECP256K1_N) || sBN.isZero() || sBN.gt(SECP256K1_N)) {\n return false\n }\n\n if (homesteadOrLater && sBN.cmp(SECP256K1_N_DIV_2) === 1) {\n return false\n }\n\n return true\n}\n\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n */\nexport const hashPersonalMessage = function (message: Buffer): Buffer {\n assertIsBuffer(message)\n const prefix = Buffer.from(`\\u0019Ethereum Signed Message:\\n${message.length}`, 'utf-8')\n return keccak(Buffer.concat([prefix, message]))\n}\n","import { BN } from './externals'\nimport { isHexString } from './internal'\nimport { Address } from './address'\nimport { unpadBuffer, toBuffer, ToBufferInputTypes } from './bytes'\n\n/*\n * A type that represents a BNLike input that can be converted to a BN.\n */\nexport type BNLike = BN | PrefixedHexString | number | Buffer\n\n/*\n * A type that represents a BufferLike input that can be converted to a Buffer.\n */\nexport type BufferLike =\n | Buffer\n | Uint8Array\n | number[]\n | number\n | BN\n | TransformableToBuffer\n | PrefixedHexString\n\n/*\n * A type that represents a `0x`-prefixed hex string.\n */\nexport type PrefixedHexString = string\n\n/**\n * A type that represents an Address-like value.\n * To convert to address, use `new Address(toBuffer(value))`\n */\nexport type AddressLike = Address | Buffer | PrefixedHexString\n\n/*\n * A type that represents an object that has a `toArray()` method.\n */\nexport interface TransformableToArray {\n toArray(): Uint8Array\n toBuffer?(): Buffer\n}\n\n/*\n * A type that represents an object that has a `toBuffer()` method.\n */\nexport interface TransformableToBuffer {\n toBuffer(): Buffer\n toArray?(): Uint8Array\n}\n\nexport type NestedUint8Array = Array\nexport type NestedBufferArray = Array\n\n/**\n * Convert BN to 0x-prefixed hex string.\n */\nexport function bnToHex(value: BN): PrefixedHexString {\n return `0x${value.toString(16)}`\n}\n\n/**\n * Convert value from BN to an unpadded Buffer\n * (useful for RLP transport)\n * @param value value to convert\n */\nexport function bnToUnpaddedBuffer(value: BN): Buffer {\n // Using `bn.toArrayLike(Buffer)` instead of `bn.toBuffer()`\n // for compatibility with browserify and similar tools\n return unpadBuffer(value.toArrayLike(Buffer))\n}\n\n/**\n * Deprecated alias for {@link bnToUnpaddedBuffer}\n * @deprecated\n */\nexport function bnToRlp(value: BN): Buffer {\n return bnToUnpaddedBuffer(value)\n}\n\n/**\n * Type output options\n */\nexport enum TypeOutput {\n Number,\n BN,\n Buffer,\n PrefixedHexString,\n}\n\nexport type TypeOutputReturnType = {\n [TypeOutput.Number]: number\n [TypeOutput.BN]: BN\n [TypeOutput.Buffer]: Buffer\n [TypeOutput.PrefixedHexString]: PrefixedHexString\n}\n\n/**\n * Convert an input to a specified type.\n * Input of null/undefined returns null/undefined regardless of the output type.\n * @param input value to convert\n * @param outputType type to output\n */\nexport function toType(input: null, outputType: T): null\nexport function toType(input: undefined, outputType: T): undefined\nexport function toType(\n input: ToBufferInputTypes,\n outputType: T\n): TypeOutputReturnType[T]\nexport function toType(\n input: ToBufferInputTypes,\n outputType: T\n): TypeOutputReturnType[T] | undefined | null {\n if (input === null) {\n return null\n }\n if (input === undefined) {\n return undefined\n }\n\n if (typeof input === 'string' && !isHexString(input)) {\n throw new Error(`A string must be provided with a 0x-prefix, given: ${input}`)\n } else if (typeof input === 'number' && !Number.isSafeInteger(input)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)'\n )\n }\n\n const output = toBuffer(input)\n\n if (outputType === TypeOutput.Buffer) {\n return output as TypeOutputReturnType[T]\n } else if (outputType === TypeOutput.BN) {\n return new BN(output) as TypeOutputReturnType[T]\n } else if (outputType === TypeOutput.Number) {\n const bn = new BN(output)\n const max = new BN(Number.MAX_SAFE_INTEGER.toString())\n if (bn.gt(max)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative output type)'\n )\n }\n return bn.toNumber() as TypeOutputReturnType[T]\n } else {\n // outputType === TypeOutput.PrefixedHexString\n return `0x${output.toString('hex')}` as TypeOutputReturnType[T]\n }\n}\n","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([bth[buf[i++]], bth[buf[i++]], \n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]]]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/broofa/node-uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [\n seedBytes[0] | 0x01,\n seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n ];\n }\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n }\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file contract.js\n *\n * To initialize a contract use:\n *\n * var Contract = require('web3-eth-contract');\n * Contract.setProvider('ws://localhost:8546');\n * var contract = new Contract(abi, address, ...);\n *\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar core = require('web3-core');\nvar Method = require('web3-core-method');\nvar utils = require('web3-utils');\nvar Subscription = require('web3-core-subscriptions').subscription;\nvar formatters = require('web3-core-helpers').formatters;\nvar errors = require('web3-core-helpers').errors;\nvar promiEvent = require('web3-core-promievent');\nvar abi = require('web3-eth-abi');\n/**\n * Should be called to create new contract instance\n *\n * @method Contract\n * @constructor\n * @param {Array} jsonInterface\n * @param {String} address\n * @param {Object} options\n */\nvar Contract = function Contract(jsonInterface, address, options) {\n var _this = this, args = Array.prototype.slice.call(arguments);\n if (!(this instanceof Contract)) {\n throw new Error('Please use the \"new\" keyword to instantiate a web3.eth.Contract() object!');\n }\n this.setProvider = function () {\n core.packageInit(_this, arguments);\n _this.clearSubscriptions = _this._requestManager.clearSubscriptions;\n };\n // sets _requestmanager\n core.packageInit(this, [this.constructor]);\n this.clearSubscriptions = this._requestManager.clearSubscriptions;\n if (!jsonInterface || !(Array.isArray(jsonInterface))) {\n throw errors.ContractMissingABIError();\n }\n // create the options object\n this.options = {};\n var lastArg = args[args.length - 1];\n if (!!lastArg && typeof lastArg === 'object' && !Array.isArray(lastArg)) {\n options = lastArg;\n this.options = { ...this.options, ...this._getOrSetDefaultOptions(options) };\n if (!!address && typeof address === 'object') {\n address = null;\n }\n }\n // set address\n Object.defineProperty(this.options, 'address', {\n set: function (value) {\n if (value) {\n _this._address = utils.toChecksumAddress(formatters.inputAddressFormatter(value));\n }\n },\n get: function () {\n return _this._address;\n },\n enumerable: true\n });\n // add method and event signatures, when the jsonInterface gets set\n Object.defineProperty(this.options, 'jsonInterface', {\n set: function (value) {\n _this.methods = {};\n _this.events = {};\n _this._jsonInterface = value.map(function (method) {\n var func, funcName;\n // make constant and payable backwards compatible\n method.constant = (method.stateMutability === \"view\" || method.stateMutability === \"pure\" || method.constant);\n method.payable = (method.stateMutability === \"payable\" || method.payable);\n if (method.name) {\n funcName = utils._jsonInterfaceMethodToString(method);\n }\n // function\n if (method.type === 'function') {\n method.signature = abi.encodeFunctionSignature(funcName);\n func = _this._createTxObject.bind({\n method: method,\n parent: _this\n });\n // add method only if not one already exists\n if (!_this.methods[method.name]) {\n _this.methods[method.name] = func;\n }\n else {\n var cascadeFunc = _this._createTxObject.bind({\n method: method,\n parent: _this,\n nextMethod: _this.methods[method.name]\n });\n _this.methods[method.name] = cascadeFunc;\n }\n // definitely add the method based on its signature\n _this.methods[method.signature] = func;\n // add method by name\n _this.methods[funcName] = func;\n // event\n }\n else if (method.type === 'event') {\n method.signature = abi.encodeEventSignature(funcName);\n var event = _this._on.bind(_this, method.signature);\n // add method only if not already exists\n if (!_this.events[method.name] || _this.events[method.name].name === 'bound ')\n _this.events[method.name] = event;\n // definitely add the method based on its signature\n _this.events[method.signature] = event;\n // add event by name\n _this.events[funcName] = event;\n }\n return method;\n });\n // add allEvents\n _this.events.allEvents = _this._on.bind(_this, 'allevents');\n return _this._jsonInterface;\n },\n get: function () {\n return _this._jsonInterface;\n },\n enumerable: true\n });\n // get default account from the Class\n var defaultAccount = this.constructor.defaultAccount;\n var defaultBlock = this.constructor.defaultBlock || 'latest';\n Object.defineProperty(this, 'handleRevert', {\n get: function () {\n if (_this.options.handleRevert === false || _this.options.handleRevert === true) {\n return _this.options.handleRevert;\n }\n return this.constructor.handleRevert;\n },\n set: function (val) {\n _this.options.handleRevert = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultCommon', {\n get: function () {\n return _this.options.common || this.constructor.defaultCommon;\n },\n set: function (val) {\n _this.options.common = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultHardfork', {\n get: function () {\n return _this.options.hardfork || this.constructor.defaultHardfork;\n },\n set: function (val) {\n _this.options.hardfork = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultChain', {\n get: function () {\n return _this.options.chain || this.constructor.defaultChain;\n },\n set: function (val) {\n _this.options.chain = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionPollingTimeout', {\n get: function () {\n if (_this.options.transactionPollingTimeout === 0) {\n return _this.options.transactionPollingTimeout;\n }\n return _this.options.transactionPollingTimeout || this.constructor.transactionPollingTimeout;\n },\n set: function (val) {\n _this.options.transactionPollingTimeout = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionPollingInterval', {\n get: function () {\n if (_this.options.transactionPollingInterval === 0) {\n return _this.options.transactionPollingInterval;\n }\n return _this.options.transactionPollingInterval || this.constructor.transactionPollingInterval;\n },\n set: function (val) {\n _this.options.transactionPollingInterval = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionConfirmationBlocks', {\n get: function () {\n if (_this.options.transactionConfirmationBlocks === 0) {\n return _this.options.transactionConfirmationBlocks;\n }\n return _this.options.transactionConfirmationBlocks || this.constructor.transactionConfirmationBlocks;\n },\n set: function (val) {\n _this.options.transactionConfirmationBlocks = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionBlockTimeout', {\n get: function () {\n if (_this.options.transactionBlockTimeout === 0) {\n return _this.options.transactionBlockTimeout;\n }\n return _this.options.transactionBlockTimeout || this.constructor.transactionBlockTimeout;\n },\n set: function (val) {\n _this.options.transactionBlockTimeout = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'blockHeaderTimeout', {\n get: function () {\n if (_this.options.blockHeaderTimeout === 0) {\n return _this.options.blockHeaderTimeout;\n }\n return _this.options.blockHeaderTimeout || this.constructor.blockHeaderTimeout;\n },\n set: function (val) {\n _this.options.blockHeaderTimeout = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultAccount', {\n get: function () {\n return defaultAccount;\n },\n set: function (val) {\n if (val) {\n defaultAccount = utils.toChecksumAddress(formatters.inputAddressFormatter(val));\n }\n return val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultBlock', {\n get: function () {\n return defaultBlock;\n },\n set: function (val) {\n defaultBlock = val;\n return val;\n },\n enumerable: true\n });\n // properties\n this.methods = {};\n this.events = {};\n this._address = null;\n this._jsonInterface = [];\n // set getter/setter properties\n this.options.address = address;\n this.options.jsonInterface = jsonInterface;\n};\n/**\n * Sets the new provider, creates a new requestManager, registers the \"data\" listener on the provider and sets the\n * accounts module for the Contract class.\n *\n * @method setProvider\n *\n * @param {string|provider} provider\n * @param {Accounts} accounts\n *\n * @returns void\n */\nContract.setProvider = function (provider, accounts) {\n // Contract.currentProvider = provider;\n core.packageInit(this, [provider]);\n this._ethAccounts = accounts;\n};\n/**\n * Get the callback and modify the array if necessary\n *\n * @method _getCallback\n * @param {Array} args\n * @return {Function} the callback\n */\nContract.prototype._getCallback = function getCallback(args) {\n if (args && !!args[args.length - 1] && typeof args[args.length - 1] === 'function') {\n return args.pop(); // modify the args array!\n }\n};\n/**\n * Checks that no listener with name \"newListener\" or \"removeListener\" is added.\n *\n * @method _checkListener\n * @param {String} type\n * @param {String} event\n * @return {Object} the contract instance\n */\nContract.prototype._checkListener = function (type, event) {\n if (event === type) {\n throw errors.ContractReservedEventError(type);\n }\n};\n/**\n * Use default values, if options are not available\n *\n * @method _getOrSetDefaultOptions\n * @param {Object} options the options gived by the user\n * @return {Object} the options with gaps filled by defaults\n */\nContract.prototype._getOrSetDefaultOptions = function getOrSetDefaultOptions(options) {\n var gasPrice = options.gasPrice ? String(options.gasPrice) : null;\n var from = options.from ? utils.toChecksumAddress(formatters.inputAddressFormatter(options.from)) : null;\n options.data = options.data || this.options.data;\n options.from = from || this.options.from;\n options.gasPrice = gasPrice || this.options.gasPrice;\n options.gas = options.gas || options.gasLimit || this.options.gas;\n // TODO replace with only gasLimit?\n delete options.gasLimit;\n return options;\n};\n/**\n * Should be used to encode indexed params and options to one final object\n *\n * @method _encodeEventABI\n * @param {Object} event\n * @param {Object} options\n * @return {Object} everything combined together and encoded\n */\nContract.prototype._encodeEventABI = function (event, options) {\n options = options || {};\n var filter = options.filter || {}, result = {};\n ['fromBlock', 'toBlock'].filter(function (f) {\n return options[f] !== undefined;\n }).forEach(function (f) {\n result[f] = formatters.inputBlockNumberFormatter(options[f]);\n });\n // use given topics\n if (Array.isArray(options.topics)) {\n result.topics = options.topics;\n // create topics based on filter\n }\n else {\n result.topics = [];\n // add event signature\n if (event && !event.anonymous && event.name !== 'ALLEVENTS') {\n result.topics.push(event.signature);\n }\n // add event topics (indexed arguments)\n if (event.name !== 'ALLEVENTS') {\n var indexedTopics = event.inputs.filter(function (i) {\n return i.indexed === true;\n }).map(function (i) {\n var value = filter[i.name];\n if (!value) {\n return null;\n }\n // TODO: https://github.com/ethereum/web3.js/issues/344\n // TODO: deal properly with components\n if (Array.isArray(value)) {\n return value.map(function (v) {\n return abi.encodeParameter(i.type, v);\n });\n }\n return abi.encodeParameter(i.type, value);\n });\n result.topics = result.topics.concat(indexedTopics);\n }\n if (!result.topics.length)\n delete result.topics;\n }\n if (this.options.address) {\n result.address = this.options.address.toLowerCase();\n }\n return result;\n};\n/**\n * Should be used to decode indexed params and options\n *\n * @method _decodeEventABI\n * @param {Object} data\n * @return {Object} result object with decoded indexed && not indexed params\n */\nContract.prototype._decodeEventABI = function (data) {\n var event = this;\n data.data = data.data || '';\n data.topics = data.topics || [];\n var result = formatters.outputLogFormatter(data);\n // if allEvents get the right event\n if (event.name === 'ALLEVENTS') {\n event = event.jsonInterface.find(function (intf) {\n return (intf.signature === data.topics[0]);\n }) || { anonymous: true };\n }\n // create empty inputs if none are present (e.g. anonymous events on allEvents)\n event.inputs = event.inputs || [];\n // Handle case where an event signature shadows the current ABI with non-identical\n // arg indexing. If # of topics doesn't match, event is anon.\n if (!event.anonymous) {\n let indexedInputs = 0;\n event.inputs.forEach(input => input.indexed ? indexedInputs++ : null);\n if (indexedInputs > 0 && (data.topics.length !== indexedInputs + 1)) {\n event = {\n anonymous: true,\n inputs: []\n };\n }\n }\n var argTopics = event.anonymous ? data.topics : data.topics.slice(1);\n result.returnValues = abi.decodeLog(event.inputs, data.data, argTopics);\n delete result.returnValues.__length__;\n // add name\n result.event = event.name;\n // add signature\n result.signature = (event.anonymous || !data.topics[0]) ? null : data.topics[0];\n // move the data and topics to \"raw\"\n result.raw = {\n data: result.data,\n topics: result.topics\n };\n delete result.data;\n delete result.topics;\n return result;\n};\n/**\n * Encodes an ABI for a method, including signature or the method.\n * Or when constructor encodes only the constructor parameters.\n *\n * @method _encodeMethodABI\n * @param {Mixed} args the arguments to encode\n * @param {String} the encoded ABI\n */\nContract.prototype._encodeMethodABI = function _encodeMethodABI() {\n var methodSignature = this._method.signature, args = this.arguments || [];\n var signature = false, paramsABI = this._parent.options.jsonInterface.filter(function (json) {\n return ((methodSignature === 'constructor' && json.type === methodSignature) ||\n ((json.signature === methodSignature || json.signature === methodSignature.replace('0x', '') || json.name === methodSignature) && json.type === 'function'));\n }).map(function (json) {\n var inputLength = (Array.isArray(json.inputs)) ? json.inputs.length : 0;\n if (inputLength !== args.length) {\n throw new Error('The number of arguments is not matching the methods required number. You need to pass ' + inputLength + ' arguments.');\n }\n if (json.type === 'function') {\n signature = json.signature;\n }\n return Array.isArray(json.inputs) ? json.inputs : [];\n }).map(function (inputs) {\n return abi.encodeParameters(inputs, args).replace('0x', '');\n })[0] || '';\n // return constructor\n if (methodSignature === 'constructor') {\n if (!this._deployData)\n throw new Error('The contract has no contract data option set. This is necessary to append the constructor parameters.');\n if (!this._deployData.startsWith('0x')) {\n this._deployData = '0x' + this._deployData;\n }\n return this._deployData + paramsABI;\n }\n // return method\n var returnValue = (signature) ? signature + paramsABI : paramsABI;\n if (!returnValue) {\n throw new Error('Couldn\\'t find a matching contract method named \"' + this._method.name + '\".');\n }\n return returnValue;\n};\n/**\n * Decode method return values\n *\n * @method _decodeMethodReturn\n * @param {Array} outputs\n * @param {String} returnValues\n * @return {Object} decoded output return values\n */\nContract.prototype._decodeMethodReturn = function (outputs, returnValues) {\n if (!returnValues) {\n return null;\n }\n returnValues = returnValues.length >= 2 ? returnValues.slice(2) : returnValues;\n var result = abi.decodeParameters(outputs, returnValues);\n if (result.__length__ === 1) {\n return result[0];\n }\n delete result.__length__;\n return result;\n};\n/**\n * Deploys a contract and fire events based on its state: transactionHash, receipt\n *\n * All event listeners will be removed, once the last possible event is fired (\"error\", or \"receipt\")\n *\n * @method deploy\n * @param {Object} options\n * @param {Function} callback\n * @return {Object} EventEmitter possible events are \"error\", \"transactionHash\" and \"receipt\"\n */\nContract.prototype.deploy = function (options, callback) {\n options = options || {};\n options.arguments = options.arguments || [];\n options = this._getOrSetDefaultOptions(options);\n // throw error, if no \"data\" is specified\n if (!options.data) {\n if (typeof callback === 'function') {\n return callback(errors.ContractMissingDeployDataError());\n }\n throw errors.ContractMissingDeployDataError();\n }\n var constructor = this.options.jsonInterface.find((method) => {\n return (method.type === 'constructor');\n }) || {};\n constructor.signature = 'constructor';\n return this._createTxObject.apply({\n method: constructor,\n parent: this,\n deployData: options.data,\n _ethAccounts: this.constructor._ethAccounts\n }, options.arguments);\n};\n/**\n * Gets the event signature and outputFormatters\n *\n * @method _generateEventOptions\n * @param {Object} event\n * @param {Object} options\n * @param {Function} callback\n * @return {Object} the event options object\n */\nContract.prototype._generateEventOptions = function () {\n var args = Array.prototype.slice.call(arguments);\n // get the callback\n var callback = this._getCallback(args);\n // get the options\n var options = (!!args[args.length - 1] && typeof args[args.length - 1]) === 'object' ? args.pop() : {};\n var eventName = (typeof args[0] === 'string') ? args[0] : 'allevents';\n var event = (eventName.toLowerCase() === 'allevents') ? {\n name: 'ALLEVENTS',\n jsonInterface: this.options.jsonInterface\n } : this.options.jsonInterface.find(function (json) {\n return (json.type === 'event' && (json.name === eventName || json.signature === '0x' + eventName.replace('0x', '')));\n });\n if (!event) {\n throw errors.ContractEventDoesNotExistError(eventName);\n }\n if (!utils.isAddress(this.options.address)) {\n throw errors.ContractNoAddressDefinedError();\n }\n return {\n params: this._encodeEventABI(event, options),\n event: event,\n callback: callback\n };\n};\n/**\n * Adds event listeners and creates a subscription, and remove it once its fired.\n *\n * @method clone\n * @return {Object} the event subscription\n */\nContract.prototype.clone = function () {\n return new this.constructor(this.options.jsonInterface, this.options.address, this.options);\n};\n/**\n * Adds event listeners and creates a subscription, and remove it once its fired.\n *\n * @method once\n * @param {String} event\n * @param {Object} options\n * @param {Function} callback\n * @return {Object} the event subscription\n */\nContract.prototype.once = function (event, options, callback) {\n var args = Array.prototype.slice.call(arguments);\n // get the callback\n callback = this._getCallback(args);\n if (!callback) {\n throw errors.ContractOnceRequiresCallbackError();\n }\n // don't allow fromBlock\n if (options)\n delete options.fromBlock;\n // don't return as once shouldn't provide \"on\"\n this._on(event, options, function (err, res, sub) {\n sub.unsubscribe();\n if (typeof callback === 'function') {\n callback(err, res, sub);\n }\n });\n return undefined;\n};\n/**\n * Adds event listeners and creates a subscription.\n *\n * @method _on\n *\n * @param {String} event\n * @param {Object} options\n * @param {Function} callback\n *\n * @return {Object} the event subscription\n */\nContract.prototype._on = function () {\n var subOptions = this._generateEventOptions.apply(this, arguments);\n if (subOptions.params && subOptions.params.toBlock) {\n delete subOptions.params.toBlock;\n console.warn('Invalid option: toBlock. Use getPastEvents for specific range.');\n }\n // prevent the event \"newListener\" and \"removeListener\" from being overwritten\n this._checkListener('newListener', subOptions.event.name);\n this._checkListener('removeListener', subOptions.event.name);\n // TODO check if listener already exists? and reuse subscription if options are the same.\n // create new subscription\n var subscription = new Subscription({\n subscription: {\n params: 1,\n inputFormatter: [formatters.inputLogFormatter],\n outputFormatter: this._decodeEventABI.bind(subOptions.event),\n // DUBLICATE, also in web3-eth\n subscriptionHandler: function (output) {\n if (output.removed) {\n this.emit('changed', output);\n }\n else {\n this.emit('data', output);\n }\n if (typeof this.callback === 'function') {\n this.callback(null, output, this);\n }\n }\n },\n type: 'eth',\n requestManager: this._requestManager\n });\n subscription.subscribe('logs', subOptions.params, subOptions.callback || function () { });\n return subscription;\n};\n/**\n * Get past events from contracts\n *\n * @method getPastEvents\n * @param {String} event\n * @param {Object} options\n * @param {Function} callback\n * @return {Object} the promievent\n */\nContract.prototype.getPastEvents = function () {\n var subOptions = this._generateEventOptions.apply(this, arguments);\n var getPastLogs = new Method({\n name: 'getPastLogs',\n call: 'eth_getLogs',\n params: 1,\n inputFormatter: [formatters.inputLogFormatter],\n outputFormatter: this._decodeEventABI.bind(subOptions.event)\n });\n getPastLogs.setRequestManager(this._requestManager);\n var call = getPastLogs.buildCall();\n getPastLogs = null;\n return call(subOptions.params, subOptions.callback);\n};\n/**\n * returns the an object with call, send, estimate functions\n *\n * @method _createTxObject\n * @returns {Object} an object with functions to call the methods\n */\nContract.prototype._createTxObject = function _createTxObject() {\n var args = Array.prototype.slice.call(arguments);\n var txObject = {};\n if (this.method.type === 'function') {\n txObject.call = this.parent._executeMethod.bind(txObject, 'call');\n txObject.call.request = this.parent._executeMethod.bind(txObject, 'call', true); // to make batch requests\n }\n txObject.send = this.parent._executeMethod.bind(txObject, 'send');\n txObject.send.request = this.parent._executeMethod.bind(txObject, 'send', true); // to make batch requests\n txObject.encodeABI = this.parent._encodeMethodABI.bind(txObject);\n txObject.estimateGas = this.parent._executeMethod.bind(txObject, 'estimate');\n txObject.createAccessList = this.parent._executeMethod.bind(txObject, 'createAccessList');\n if (args && this.method.inputs && args.length !== this.method.inputs.length) {\n if (this.nextMethod) {\n return this.nextMethod.apply(null, args);\n }\n throw errors.InvalidNumberOfParams(args.length, this.method.inputs.length, this.method.name);\n }\n txObject.arguments = args || [];\n txObject._method = this.method;\n txObject._parent = this.parent;\n txObject._ethAccounts = this.parent.constructor._ethAccounts || this._ethAccounts;\n if (this.deployData) {\n txObject._deployData = this.deployData;\n }\n return txObject;\n};\n/**\n * Generates the options for the execute call\n *\n * @method _processExecuteArguments\n * @param {Array} args\n * @param {Promise} defer\n */\nContract.prototype._processExecuteArguments = function _processExecuteArguments(args, defer) {\n var processedArgs = {};\n processedArgs.type = args.shift();\n // get the callback\n processedArgs.callback = this._parent._getCallback(args);\n // get block number to use for call\n if (processedArgs.type === 'call' && args[args.length - 1] !== true && (typeof args[args.length - 1] === 'string' || isFinite(args[args.length - 1])))\n processedArgs.defaultBlock = args.pop();\n // get the options\n processedArgs.options = (!!args[args.length - 1] && typeof args[args.length - 1]) === 'object' ? args.pop() : {};\n // get the generateRequest argument for batch requests\n processedArgs.generateRequest = (args[args.length - 1] === true) ? args.pop() : false;\n processedArgs.options = this._parent._getOrSetDefaultOptions(processedArgs.options);\n processedArgs.options.data = this.encodeABI();\n // add contract address\n if (!this._deployData && !utils.isAddress(this._parent.options.address))\n throw errors.ContractNoAddressDefinedError();\n if (!this._deployData)\n processedArgs.options.to = this._parent.options.address;\n // return error, if no \"data\" is specified\n if (!processedArgs.options.data)\n return utils._fireError(new Error('Couldn\\'t find a matching contract method, or the number of parameters is wrong.'), defer.eventEmitter, defer.reject, processedArgs.callback);\n return processedArgs;\n};\n/**\n * Executes a call, transact or estimateGas on a contract function\n *\n * @method _executeMethod\n * @param {String} type the type this execute function should execute\n * @param {Boolean} makeRequest if true, it simply returns the request parameters, rather than executing it\n */\nContract.prototype._executeMethod = function _executeMethod() {\n var _this = this, args = this._parent._processExecuteArguments.call(this, Array.prototype.slice.call(arguments), defer), defer = promiEvent((args.type !== 'send')), ethAccounts = _this.constructor._ethAccounts || _this._ethAccounts;\n // simple return request for batch requests\n if (args.generateRequest) {\n var payload = {\n params: [formatters.inputCallFormatter.call(this._parent, args.options)],\n callback: args.callback\n };\n if (args.type === 'call') {\n payload.params.push(formatters.inputDefaultBlockNumberFormatter.call(this._parent, args.defaultBlock));\n payload.method = 'eth_call';\n payload.format = this._parent._decodeMethodReturn.bind(null, this._method.outputs);\n }\n else {\n payload.method = 'eth_sendTransaction';\n }\n return payload;\n }\n switch (args.type) {\n case 'createAccessList':\n // return error, if no \"from\" is specified\n if (!utils.isAddress(args.options.from)) {\n return utils._fireError(errors.ContractNoFromAddressDefinedError(), defer.eventEmitter, defer.reject, args.callback);\n }\n var createAccessList = (new Method({\n name: 'createAccessList',\n call: 'eth_createAccessList',\n params: 2,\n inputFormatter: [formatters.inputTransactionFormatter, formatters.inputDefaultBlockNumberFormatter],\n requestManager: _this._parent._requestManager,\n accounts: ethAccounts,\n defaultAccount: _this._parent.defaultAccount,\n defaultBlock: _this._parent.defaultBlock\n })).createFunction();\n return createAccessList(args.options, args.callback);\n case 'estimate':\n var estimateGas = (new Method({\n name: 'estimateGas',\n call: 'eth_estimateGas',\n params: 1,\n inputFormatter: [formatters.inputCallFormatter],\n outputFormatter: utils.hexToNumber,\n requestManager: _this._parent._requestManager,\n accounts: ethAccounts,\n defaultAccount: _this._parent.defaultAccount,\n defaultBlock: _this._parent.defaultBlock\n })).createFunction();\n return estimateGas(args.options, args.callback);\n case 'call':\n // TODO check errors: missing \"from\" should give error on deploy and send, call ?\n var call = (new Method({\n name: 'call',\n call: 'eth_call',\n params: 2,\n inputFormatter: [formatters.inputCallFormatter, formatters.inputDefaultBlockNumberFormatter],\n // add output formatter for decoding\n outputFormatter: function (result) {\n return _this._parent._decodeMethodReturn(_this._method.outputs, result);\n },\n requestManager: _this._parent._requestManager,\n accounts: ethAccounts,\n defaultAccount: _this._parent.defaultAccount,\n defaultBlock: _this._parent.defaultBlock,\n handleRevert: _this._parent.handleRevert,\n abiCoder: abi\n })).createFunction();\n return call(args.options, args.defaultBlock, args.callback);\n case 'send':\n // return error, if no \"from\" is specified\n if (!utils.isAddress(args.options.from)) {\n return utils._fireError(errors.ContractNoFromAddressDefinedError(), defer.eventEmitter, defer.reject, args.callback);\n }\n if (typeof this._method.payable === 'boolean' && !this._method.payable && args.options.value && args.options.value > 0) {\n return utils._fireError(new Error('Can not send value to non-payable contract method or constructor'), defer.eventEmitter, defer.reject, args.callback);\n }\n // make sure receipt logs are decoded\n var extraFormatters = {\n receiptFormatter: function (receipt) {\n if (Array.isArray(receipt.logs)) {\n // decode logs\n var events = receipt.logs.map((log) => {\n return _this._parent._decodeEventABI.call({\n name: 'ALLEVENTS',\n jsonInterface: _this._parent.options.jsonInterface\n }, log);\n });\n // make log names keys\n receipt.events = {};\n var count = 0;\n events.forEach(function (ev) {\n if (ev.event) {\n // if > 1 of the same event, don't overwrite any existing events\n if (receipt.events[ev.event]) {\n if (Array.isArray(receipt.events[ev.event])) {\n receipt.events[ev.event].push(ev);\n }\n else {\n receipt.events[ev.event] = [receipt.events[ev.event], ev];\n }\n }\n else {\n receipt.events[ev.event] = ev;\n }\n }\n else {\n receipt.events[count] = ev;\n count++;\n }\n });\n delete receipt.logs;\n }\n return receipt;\n },\n contractDeployFormatter: function (receipt) {\n var newContract = _this._parent.clone();\n newContract.options.address = receipt.contractAddress;\n return newContract;\n }\n };\n var sendTransaction = (new Method({\n name: 'sendTransaction',\n call: 'eth_sendTransaction',\n params: 1,\n inputFormatter: [formatters.inputTransactionFormatter],\n requestManager: _this._parent._requestManager,\n accounts: _this.constructor._ethAccounts || _this._ethAccounts,\n defaultAccount: _this._parent.defaultAccount,\n defaultBlock: _this._parent.defaultBlock,\n transactionBlockTimeout: _this._parent.transactionBlockTimeout,\n transactionConfirmationBlocks: _this._parent.transactionConfirmationBlocks,\n transactionPollingTimeout: _this._parent.transactionPollingTimeout,\n transactionPollingInterval: _this._parent.transactionPollingInterval,\n defaultCommon: _this._parent.defaultCommon,\n defaultChain: _this._parent.defaultChain,\n defaultHardfork: _this._parent.defaultHardfork,\n handleRevert: _this._parent.handleRevert,\n extraFormatters: extraFormatters,\n abiCoder: abi\n })).createFunction();\n return sendTransaction(args.options, args.callback);\n default:\n throw new Error('Method \"' + args.type + '\" not implemented.');\n }\n};\nmodule.exports = Contract;\n","/*\n This file is part of web3.js.\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file ENS.js\n *\n * @author Samuel Furter \n * @date 2018\n */\n\"use strict\";\nvar config = require('./config');\nvar formatters = require('web3-core-helpers').formatters;\nvar utils = require('web3-utils');\nvar Registry = require('./contracts/Registry');\nvar ResolverMethodHandler = require('./lib/ResolverMethodHandler');\nvar contenthash = require('./lib/contentHash');\n/**\n * Constructs a new instance of ENS\n *\n * @param {Eth} eth\n *\n * @constructor\n */\nfunction ENS(eth) {\n this.eth = eth;\n var registryAddress = null;\n this._detectedAddress = null;\n this._lastSyncCheck = null;\n Object.defineProperty(this, 'registry', {\n get: function () {\n return new Registry(this);\n },\n enumerable: true\n });\n Object.defineProperty(this, 'resolverMethodHandler', {\n get: function () {\n return new ResolverMethodHandler(this.registry);\n },\n enumerable: true\n });\n Object.defineProperty(this, 'registryAddress', {\n get: function () {\n return registryAddress;\n },\n set: function (value) {\n if (value === null) {\n registryAddress = value;\n return;\n }\n registryAddress = formatters.inputAddressFormatter(value);\n },\n enumerable: true\n });\n}\n/**\n * Returns true if the given interfaceId is supported and otherwise false.\n *\n * @method supportsInterface\n *\n * @param {string} name\n * @param {string} interfaceId\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nENS.prototype.supportsInterface = function (name, interfaceId, callback) {\n return this.getResolver(name).then(function (resolver) {\n if (!utils.isHexStrict(interfaceId)) {\n interfaceId = utils.sha3(interfaceId).slice(0, 10);\n }\n return resolver.methods.supportsInterface(interfaceId).call(callback);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n throw error;\n });\n};\n/**\n * Returns the Resolver by the given address\n *\n * @deprecated Please use the \"getResolver\" method instead of \"resolver\"\n *\n * @method resolver\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nENS.prototype.resolver = function (name, callback) {\n return this.registry.resolver(name, callback);\n};\n/**\n * Returns the Resolver by the given address\n *\n * @method getResolver\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nENS.prototype.getResolver = function (name, callback) {\n return this.registry.getResolver(name, callback);\n};\n/**\n * Does set the resolver of the given name\n *\n * @method setResolver\n *\n * @param {string} name\n * @param {string} address\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setResolver = function (name, address, txConfig, callback) {\n return this.registry.setResolver(name, address, txConfig, callback);\n};\n/**\n * Sets the owner, resolver, and TTL for an ENS record in a single operation.\n *\n * @method setRecord\n *\n * @param {string} name\n * @param {string} owner\n * @param {string} resolver\n * @param {string | number} ttl\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setRecord = function (name, owner, resolver, ttl, txConfig, callback) {\n return this.registry.setRecord(name, owner, resolver, ttl, txConfig, callback);\n};\n/**\n * Sets the owner, resolver and TTL for a subdomain, creating it if necessary.\n *\n * @method setSubnodeRecord\n *\n * @param {string} name\n * @param {string} label\n * @param {string} owner\n * @param {string} resolver\n * @param {string | number} ttl\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setSubnodeRecord = function (name, label, owner, resolver, ttl, txConfig, callback) {\n return this.registry.setSubnodeRecord(name, label, owner, resolver, ttl, txConfig, callback);\n};\n/**\n * Sets or clears an approval by the given operator.\n *\n * @method setApprovalForAll\n *\n * @param {string} operator\n * @param {boolean} approved\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setApprovalForAll = function (operator, approved, txConfig, callback) {\n return this.registry.setApprovalForAll(operator, approved, txConfig, callback);\n};\n/**\n * Returns true if the operator is approved\n *\n * @method isApprovedForAll\n *\n * @param {string} owner\n * @param {string} operator\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nENS.prototype.isApprovedForAll = function (owner, operator, callback) {\n return this.registry.isApprovedForAll(owner, operator, callback);\n};\n/**\n * Returns true if the record exists\n *\n * @method recordExists\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nENS.prototype.recordExists = function (name, callback) {\n return this.registry.recordExists(name, callback);\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method setSubnodeOwner\n *\n * @param {string} name\n * @param {string} label\n * @param {string} address\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setSubnodeOwner = function (name, label, address, txConfig, callback) {\n return this.registry.setSubnodeOwner(name, label, address, txConfig, callback);\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method getTTL\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.getTTL = function (name, callback) {\n return this.registry.getTTL(name, callback);\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method setTTL\n *\n * @param {string} name\n * @param {number} ttl\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setTTL = function (name, ttl, txConfig, callback) {\n return this.registry.setTTL(name, ttl, txConfig, callback);\n};\n/**\n * Returns the owner by the given name and current configured or detected Registry\n *\n * @method getOwner\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.getOwner = function (name, callback) {\n return this.registry.getOwner(name, callback);\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method setOwner\n *\n * @param {string} name\n * @param {string} address\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setOwner = function (name, address, txConfig, callback) {\n return this.registry.setOwner(name, address, txConfig, callback);\n};\n/**\n * Returns the address record associated with a name.\n *\n * @method getAddress\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.getAddress = function (name, callback) {\n return this.resolverMethodHandler.method(name, 'addr', []).call(callback);\n};\n/**\n * Sets a new address\n *\n * @method setAddress\n *\n * @param {string} name\n * @param {string} address\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setAddress = function (name, address, txConfig, callback) {\n return this.resolverMethodHandler.method(name, 'setAddr', [address]).send(txConfig, callback);\n};\n/**\n * Returns the public key\n *\n * @method getPubkey\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.getPubkey = function (name, callback) {\n return this.resolverMethodHandler.method(name, 'pubkey', [], null, callback).call(callback);\n};\n/**\n * Set the new public key\n *\n * @method setPubkey\n *\n * @param {string} name\n * @param {string} x\n * @param {string} y\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setPubkey = function (name, x, y, txConfig, callback) {\n return this.resolverMethodHandler.method(name, 'setPubkey', [x, y]).send(txConfig, callback);\n};\n/**\n * Returns the content\n *\n * @method getContent\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.getContent = function (name, callback) {\n return this.resolverMethodHandler.method(name, 'content', []).call(callback);\n};\n/**\n * Set the content\n *\n * @method setContent\n *\n * @param {string} name\n * @param {string} hash\n * @param {function} callback\n * @param {TransactionConfig} txConfig\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setContent = function (name, hash, txConfig, callback) {\n return this.resolverMethodHandler.method(name, 'setContent', [hash]).send(txConfig, callback);\n};\n/**\n * Returns the contenthash\n *\n * @method getContenthash\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.getContenthash = function (name, callback) {\n return this.resolverMethodHandler.method(name, 'contenthash', [], contenthash.decode).call(callback);\n};\n/**\n * Set the contenthash\n *\n * @method setContent\n *\n * @param {string} name\n * @param {string} hash\n * @param {function} callback\n * @param {TransactionConfig} txConfig\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setContenthash = function (name, hash, txConfig, callback) {\n var encoded;\n try {\n encoded = contenthash.encode(hash);\n }\n catch (err) {\n var error = new Error('Could not encode ' + hash + '. See docs for supported hash protocols.');\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n throw error;\n }\n return this.resolverMethodHandler.method(name, 'setContenthash', [encoded]).send(txConfig, callback);\n};\n/**\n * Get the multihash\n *\n * @method getMultihash\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.getMultihash = function (name, callback) {\n return this.resolverMethodHandler.method(name, 'multihash', []).call(callback);\n};\n/**\n * Set the multihash\n *\n * @method setMultihash\n *\n * @param {string} name\n * @param {string} hash\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setMultihash = function (name, hash, txConfig, callback) {\n return this.resolverMethodHandler.method(name, 'multihash', [hash]).send(txConfig, callback);\n};\n/**\n * Checks if the current used network is synced and looks for ENS support there.\n * Throws an error if not.\n *\n * @returns {Promise}\n */\nENS.prototype.checkNetwork = async function () {\n var now = new Date() / 1000;\n if (!this._lastSyncCheck || (now - this._lastSyncCheck) > 3600) {\n var block = await this.eth.getBlock('latest');\n var headAge = now - block.timestamp;\n if (headAge > 3600) {\n throw new Error(\"Network not synced; last block was \" + headAge + \" seconds ago\");\n }\n this._lastSyncCheck = now;\n }\n if (this.registryAddress) {\n return this.registryAddress;\n }\n if (!this._detectedAddress) {\n var networkType = await this.eth.net.getNetworkType();\n var addr = config.addresses[networkType];\n if (typeof addr === 'undefined') {\n throw new Error(\"ENS is not supported on network \" + networkType);\n }\n this._detectedAddress = addr;\n return this._detectedAddress;\n }\n return this._detectedAddress;\n};\nmodule.exports = ENS;\n","/*\n This file is part of web3.js.\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file config.js\n *\n * @author Samuel Furter \n * @date 2017\n */\n\"use strict\";\n/**\n * Source: https://docs.ens.domains/ens-deployments\n *\n * @type {{addresses: {main: string, rinkeby: string, goerli: string, ropsten: string}}}\n */\nvar config = {\n addresses: {\n main: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n ropsten: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n rinkeby: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n goerli: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\"\n },\n // These ids obtained at ensdomains docs:\n // https://docs.ens.domains/contract-developer-guide/writing-a-resolver\n interfaceIds: {\n addr: \"0x3b3b57de\",\n setAddr: \"0x3b3b57de\",\n pubkey: \"0xc8690233\",\n setPubkey: \"0xc8690233\",\n contenthash: \"0xbc1c58d1\",\n setContenthash: \"0xbc1c58d1\",\n content: \"0xd8389dc5\",\n setContent: \"0xd8389dc5\"\n }\n};\nmodule.exports = config;\n","/*\n This file is part of web3.js.\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file Registry.js\n *\n * @author Samuel Furter \n * @date 2018\n */\n\"use strict\";\nvar Contract = require('web3-eth-contract');\nvar namehash = require('eth-ens-namehash');\nvar PromiEvent = require('web3-core-promievent');\nvar formatters = require('web3-core-helpers').formatters;\nvar utils = require('web3-utils');\nvar REGISTRY_ABI = require('../resources/ABI/Registry');\nvar RESOLVER_ABI = require('../resources/ABI/Resolver');\n/**\n * A wrapper around the ENS registry contract.\n *\n * @method Registry\n * @param {Ens} ens\n * @constructor\n */\nfunction Registry(ens) {\n var self = this;\n this.ens = ens;\n this.contract = ens.checkNetwork().then(function (address) {\n var contract = new Contract(REGISTRY_ABI, address);\n contract.setProvider(self.ens.eth.currentProvider);\n return contract;\n });\n}\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @deprecated Please use the \"getOwner\" method instead of \"owner\"\n *\n * @method owner\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nRegistry.prototype.owner = function (name, callback) {\n console.warn('Deprecated: Please use the \"getOwner\" method instead of \"owner\".');\n return this.getOwner(name, callback);\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method getOwner\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nRegistry.prototype.getOwner = function (name, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.owner(namehash.hash(name)).call();\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method setOwner\n *\n * @param {string} name\n * @param {string} address\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nRegistry.prototype.setOwner = function (name, address, txConfig, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.setOwner(namehash.hash(name), formatters.inputAddressFormatter(address)).send(txConfig);\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Returns the TTL of the given node by his name\n *\n * @method getTTL\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returnss {Promise}\n */\nRegistry.prototype.getTTL = function (name, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.ttl(namehash.hash(name)).call();\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method setTTL\n *\n * @param {string} name\n * @param {number} ttl\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nRegistry.prototype.setTTL = function (name, ttl, txConfig, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.setTTL(namehash.hash(name), ttl).send(txConfig);\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method setSubnodeOwner\n *\n * @param {string} name\n * @param {string} label\n * @param {string} address\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nRegistry.prototype.setSubnodeOwner = function (name, label, address, txConfig, callback) {\n var promiEvent = new PromiEvent(true);\n if (!utils.isHexStrict(label)) {\n label = utils.sha3(label);\n }\n this.contract.then(function (contract) {\n return contract.methods.setSubnodeOwner(namehash.hash(name), label, formatters.inputAddressFormatter(address)).send(txConfig);\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Sets the owner, resolver, and TTL for an ENS record in a single operation.\n *\n * @method setRecord\n *\n * @param {string} name\n * @param {string} owner\n * @param {string} resolver\n * @param {string | number} ttl\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nRegistry.prototype.setRecord = function (name, owner, resolver, ttl, txConfig, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.setRecord(namehash.hash(name), formatters.inputAddressFormatter(owner), formatters.inputAddressFormatter(resolver), ttl).send(txConfig);\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Sets the owner, resolver and TTL for a subdomain, creating it if necessary.\n *\n * @method setSubnodeRecord\n *\n * @param {string} name\n * @param {string} label\n * @param {string} owner\n * @param {string} resolver\n * @param {string | number} ttl\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nRegistry.prototype.setSubnodeRecord = function (name, label, owner, resolver, ttl, txConfig, callback) {\n var promiEvent = new PromiEvent(true);\n if (!utils.isHexStrict(label)) {\n label = utils.sha3(label);\n }\n this.contract.then(function (contract) {\n return contract.methods.setSubnodeRecord(namehash.hash(name), label, formatters.inputAddressFormatter(owner), formatters.inputAddressFormatter(resolver), ttl).send(txConfig);\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Sets or clears an approval by the given operator.\n *\n * @method setApprovalForAll\n *\n * @param {string} operator\n * @param {boolean} approved\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nRegistry.prototype.setApprovalForAll = function (operator, approved, txConfig, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.setApprovalForAll(formatters.inputAddressFormatter(operator), approved).send(txConfig);\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Returns true if the operator is approved\n *\n * @method isApprovedForAll\n *\n * @param {string} owner\n * @param {string} operator\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nRegistry.prototype.isApprovedForAll = function (owner, operator, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.isApprovedForAll(formatters.inputAddressFormatter(owner), formatters.inputAddressFormatter(operator)).call();\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Returns true if the record exists\n *\n * @method recordExists\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nRegistry.prototype.recordExists = function (name, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.recordExists(namehash.hash(name)).call();\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Returns the resolver contract associated with a name.\n *\n * @deprecated Please use the \"getResolver\" method instead of \"resolver\"\n *\n * @method resolver\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nRegistry.prototype.resolver = function (name, callback) {\n console.warn('Deprecated: Please use the \"getResolver\" method instead of \"resolver\".');\n return this.getResolver(name, callback);\n};\n/**\n * Returns the resolver contract associated with a name.\n *\n * @method getResolver\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nRegistry.prototype.getResolver = function (name, callback) {\n var self = this;\n return this.contract.then(function (contract) {\n return contract.methods.resolver(namehash.hash(name)).call();\n }).then(function (address) {\n var contract = new Contract(RESOLVER_ABI, address);\n contract.setProvider(self.ens.eth.currentProvider);\n if (typeof callback === 'function') {\n // It's required to pass the contract to the first argument to be backward compatible and to have the required consistency\n callback(contract, contract);\n return;\n }\n return contract;\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n throw error;\n });\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method setResolver\n *\n * @param {string} name\n * @param {string} address\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nRegistry.prototype.setResolver = function (name, address, txConfig, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.setResolver(namehash.hash(name), formatters.inputAddressFormatter(address)).send(txConfig);\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\nmodule.exports = Registry;\n","/*\n This file is part of web3.js.\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n *\n * @author Samuel Furter \n * @date 2018\n */\n\"use strict\";\nvar ENS = require('./ENS');\nmodule.exports = ENS;\n","/*\n This file is part of web3.js.\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file ResolverMethodHandler.js\n *\n * @author Samuel Furter \n * @date 2018\n */\n\"use strict\";\nvar PromiEvent = require('web3-core-promievent');\nvar namehash = require('eth-ens-namehash');\nvar errors = require('web3-core-helpers').errors;\nvar interfaceIds = require('../config').interfaceIds;\n/**\n * @param {Registry} registry\n * @constructor\n */\nfunction ResolverMethodHandler(registry) {\n this.registry = registry;\n}\n/**\n * Executes an resolver method and returns an eventifiedPromise\n *\n * @param {string} ensName\n * @param {string} methodName\n * @param {array} methodArguments\n * @param {function} callback\n * @returns {Object}\n */\nResolverMethodHandler.prototype.method = function (ensName, methodName, methodArguments, outputFormatter, callback) {\n return {\n call: this.call.bind({\n ensName: ensName,\n methodName: methodName,\n methodArguments: methodArguments,\n callback: callback,\n parent: this,\n outputFormatter: outputFormatter\n }),\n send: this.send.bind({\n ensName: ensName,\n methodName: methodName,\n methodArguments: methodArguments,\n callback: callback,\n parent: this\n })\n };\n};\n/**\n * Executes call\n *\n * @returns {eventifiedPromise}\n */\nResolverMethodHandler.prototype.call = function (callback) {\n var self = this;\n var promiEvent = new PromiEvent();\n var preparedArguments = this.parent.prepareArguments(this.ensName, this.methodArguments);\n var outputFormatter = this.outputFormatter || null;\n this.parent.registry.getResolver(this.ensName).then(async function (resolver) {\n await self.parent.checkInterfaceSupport(resolver, self.methodName);\n self.parent.handleCall(promiEvent, resolver.methods[self.methodName], preparedArguments, outputFormatter, callback);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Executes send\n *\n * @param {Object} sendOptions\n * @param {function} callback\n * @returns {eventifiedPromise}\n */\nResolverMethodHandler.prototype.send = function (sendOptions, callback) {\n var self = this;\n var promiEvent = new PromiEvent();\n var preparedArguments = this.parent.prepareArguments(this.ensName, this.methodArguments);\n this.parent.registry.getResolver(this.ensName).then(async function (resolver) {\n await self.parent.checkInterfaceSupport(resolver, self.methodName);\n self.parent.handleSend(promiEvent, resolver.methods[self.methodName], preparedArguments, sendOptions, callback);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Handles a call method\n *\n * @param {eventifiedPromise} promiEvent\n * @param {function} method\n * @param {array} preparedArguments\n * @param {function} callback\n * @returns {eventifiedPromise}\n */\nResolverMethodHandler.prototype.handleCall = function (promiEvent, method, preparedArguments, outputFormatter, callback) {\n method.apply(this, preparedArguments).call()\n .then(function (result) {\n if (outputFormatter) {\n result = outputFormatter(result);\n }\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the second argument to be backwards compatible and to have the required consistency\n callback(result, result);\n return;\n }\n promiEvent.resolve(result);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent;\n};\n/**\n * Handles a send method\n *\n * @param {eventifiedPromise} promiEvent\n * @param {function} method\n * @param {array} preparedArguments\n * @param {Object} sendOptions\n * @param {function} callback\n * @returns {eventifiedPromise}\n */\nResolverMethodHandler.prototype.handleSend = function (promiEvent, method, preparedArguments, sendOptions, callback) {\n method.apply(this, preparedArguments).send(sendOptions)\n .on('sending', function () {\n promiEvent.eventEmitter.emit('sending');\n })\n .on('sent', function () {\n promiEvent.eventEmitter.emit('sent');\n })\n .on('transactionHash', function (hash) {\n promiEvent.eventEmitter.emit('transactionHash', hash);\n })\n .on('confirmation', function (confirmationNumber, receipt) {\n promiEvent.eventEmitter.emit('confirmation', confirmationNumber, receipt);\n })\n .on('receipt', function (receipt) {\n promiEvent.eventEmitter.emit('receipt', receipt);\n promiEvent.resolve(receipt);\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the second argument to be backwards compatible and to have the required consistency\n callback(receipt, receipt);\n }\n })\n .on('error', function (error) {\n promiEvent.eventEmitter.emit('error', error);\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent;\n};\n/**\n * Adds the ENS node to the arguments\n *\n * @param {string} name\n * @param {array} methodArguments\n *\n * @returns {array}\n */\nResolverMethodHandler.prototype.prepareArguments = function (name, methodArguments) {\n var node = namehash.hash(name);\n if (methodArguments.length > 0) {\n methodArguments.unshift(node);\n return methodArguments;\n }\n return [node];\n};\n/**\n *\n *\n * @param {Contract} resolver\n * @param {string} methodName\n *\n * @returns {Promise}\n */\nResolverMethodHandler.prototype.checkInterfaceSupport = async function (resolver, methodName) {\n // Skip validation for undocumented interface ids (ex: multihash)\n if (!interfaceIds[methodName])\n return;\n var supported = false;\n try {\n supported = await resolver\n .methods\n .supportsInterface(interfaceIds[methodName])\n .call();\n }\n catch (err) {\n console.warn('Could not verify interface of resolver contract at \"' + resolver.options.address + '\". ');\n }\n if (!supported) {\n throw errors.ResolverMethodMissingError(resolver.options.address, methodName);\n }\n};\nmodule.exports = ResolverMethodHandler;\n","/*\nAdapted from ensdomains/ui\nhttps://github.com/ensdomains/ui/blob/3e62e440b53466eeec9dd1c63d73924eefbd88c1/src/utils/contents.js#L1-L85\n\nBSD 2-Clause License\n\nCopyright (c) 2019, Ethereum Name Service\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nvar contentHash = require('content-hash');\nfunction decode(encoded) {\n var decoded = null;\n var protocolType = null;\n var error = null;\n if (encoded && encoded.error) {\n return {\n protocolType: null,\n decoded: encoded.error\n };\n }\n if (encoded) {\n try {\n decoded = contentHash.decode(encoded);\n var codec = contentHash.getCodec(encoded);\n if (codec === 'ipfs-ns') {\n protocolType = 'ipfs';\n }\n else if (codec === 'swarm-ns') {\n protocolType = 'bzz';\n }\n else if (codec === 'onion') {\n protocolType = 'onion';\n }\n else if (codec === 'onion3') {\n protocolType = 'onion3';\n }\n else {\n decoded = encoded;\n }\n }\n catch (e) {\n error = e.message;\n }\n }\n return {\n protocolType: protocolType,\n decoded: decoded,\n error: error\n };\n}\nfunction encode(text) {\n var content, contentType;\n var encoded = false;\n if (!!text) {\n var matched = text.match(/^(ipfs|bzz|onion|onion3):\\/\\/(.*)/) || text.match(/\\/(ipfs)\\/(.*)/);\n if (matched) {\n contentType = matched[1];\n content = matched[2];\n }\n try {\n if (contentType === 'ipfs') {\n if (content.length >= 4) {\n encoded = '0x' + contentHash.fromIpfs(content);\n }\n }\n else if (contentType === 'bzz') {\n if (content.length >= 4) {\n encoded = '0x' + contentHash.fromSwarm(content);\n }\n }\n else if (contentType === 'onion') {\n if (content.length === 16) {\n encoded = '0x' + contentHash.encode('onion', content);\n }\n }\n else if (contentType === 'onion3') {\n if (content.length === 56) {\n encoded = '0x' + contentHash.encode('onion3', content);\n }\n }\n else {\n throw new Error('Could not encode content hash: unsupported content type');\n }\n }\n catch (err) {\n throw err;\n }\n }\n return encoded;\n}\nmodule.exports = {\n decode: decode,\n encode: encode\n};\n","\"use strict\";\nvar REGISTRY = [\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"resolver\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"label\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setSubnodeOwner\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"ttl\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"setTTL\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ttl\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"resolver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setResolver\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setOwner\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"name\": \"label\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"NewOwner\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"resolver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"NewResolver\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"ttl\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"NewTTL\",\n \"type\": \"event\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"resolver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"ttl\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"setRecord\",\n \"outputs\": [],\n \"payable\": false,\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setApprovalForAll\",\n \"outputs\": [],\n \"payable\": false,\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"ApprovalForAll\",\n \"type\": \"event\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isApprovedForAll\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"payable\": false,\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"recordExists\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"payable\": false,\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"label\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"resolver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"ttl\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"setSubnodeRecord\",\n \"outputs\": [],\n \"payable\": false,\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n];\nmodule.exports = REGISTRY;\n","\"use strict\";\nvar RESOLVER = [\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"interfaceID\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"contentTypes\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ABI\",\n \"outputs\": [\n {\n \"name\": \"contentType\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"hash\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"setMultihash\",\n \"outputs\": [],\n \"payable\": false,\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"multihash\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"payable\": false,\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"x\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"y\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"setPubkey\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"content\",\n \"outputs\": [\n {\n \"name\": \"ret\",\n \"type\": \"bytes32\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"addr\",\n \"outputs\": [\n {\n \"name\": \"ret\",\n \"type\": \"address\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"contentType\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"setABI\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"name\": \"ret\",\n \"type\": \"string\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"setName\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"hash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"setContent\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"pubkey\",\n \"outputs\": [\n {\n \"name\": \"x\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"y\",\n \"type\": \"bytes32\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"addr\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setAddr\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"ensAddr\",\n \"type\": \"address\"\n }\n ],\n \"payable\": false,\n \"type\": \"constructor\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"a\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddrChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"hash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ContentChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"name\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"NameChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"name\": \"contentType\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ABIChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"x\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"y\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"PubkeyChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"hash\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"ContenthashChanged\",\n \"type\": \"event\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"contenthash\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"payable\": false,\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"hash\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"setContenthash\",\n \"outputs\": [],\n \"payable\": false,\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n];\nmodule.exports = RESOLVER;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file iban.js\n *\n * Details: https://github.com/ethereum/wiki/wiki/ICAP:-Inter-exchange-Client-Address-Protocol\n *\n * @author Marek Kotewicz \n * @date 2015\n */\n\"use strict\";\nconst utils = require('web3-utils');\nconst BigNumber = require('bn.js');\nconst leftPad = function (string, bytes) {\n let result = string;\n while (result.length < bytes * 2) {\n result = '0' + result;\n }\n return result;\n};\n/**\n * Prepare an IBAN for mod 97 computation by moving the first 4 chars to the end and transforming the letters to\n * numbers (A = 10, B = 11, ..., Z = 35), as specified in ISO13616.\n *\n * @method iso13616Prepare\n * @param {String} iban the IBAN\n * @returns {String} the prepared IBAN\n */\nconst iso13616Prepare = function (iban) {\n const A = 'A'.charCodeAt(0);\n const Z = 'Z'.charCodeAt(0);\n iban = iban.toUpperCase();\n iban = iban.slice(4) + iban.slice(0, 4);\n return iban.split('').map(function (n) {\n const code = n.charCodeAt(0);\n if (code >= A && code <= Z) {\n // A = 10, B = 11, ... Z = 35\n return code - A + 10;\n }\n else {\n return n;\n }\n }).join('');\n};\n/**\n * Calculates the MOD 97 10 of the passed IBAN as specified in ISO7064.\n *\n * @method mod9710\n * @param {String} iban\n * @returns {Number}\n */\nconst mod9710 = function (iban) {\n let remainder = iban;\n let block;\n while (remainder.length > 2) {\n block = remainder.slice(0, 9);\n remainder = parseInt(block, 10) % 97 + remainder.slice(block.length);\n }\n return parseInt(remainder, 10) % 97;\n};\n/**\n * This prototype should be used to create iban object from iban correct string\n *\n * @param {String} iban\n */\nclass Iban {\n constructor(iban) {\n this._iban = iban;\n }\n /**\n * This method should be used to create an ethereum address from a direct iban address\n *\n * @method toAddress\n * @param {String} iban address\n * @return {String} the ethereum address\n */\n static toAddress(ib) {\n ib = new Iban(ib);\n if (!ib.isDirect()) {\n throw new Error('IBAN is indirect and can\\'t be converted');\n }\n return ib.toAddress();\n }\n /**\n * This method should be used to create iban address from an ethereum address\n *\n * @method toIban\n * @param {String} address\n * @return {String} the IBAN address\n */\n static toIban(address) {\n return Iban.fromAddress(address).toString();\n }\n /**\n * This method should be used to create iban object from an ethereum address\n *\n * @method fromAddress\n * @param {String} address\n * @return {Iban} the IBAN object\n */\n static fromAddress(address) {\n if (!utils.isAddress(address)) {\n throw new Error('Provided address is not a valid address: ' + address);\n }\n address = address.replace('0x', '').replace('0X', '');\n const asBn = new BigNumber(address, 16);\n const base36 = asBn.toString(36);\n const padded = leftPad(base36, 15);\n return Iban.fromBban(padded.toUpperCase());\n }\n /**\n * Convert the passed BBAN to an IBAN for this country specification.\n * Please note that \"generation of the IBAN shall be the exclusive responsibility of the bank/branch servicing the account\".\n * This method implements the preferred algorithm described in http://en.wikipedia.org/wiki/International_Bank_Account_Number#Generating_IBAN_check_digits\n *\n * @method fromBban\n * @param {String} bban the BBAN to convert to IBAN\n * @returns {Iban} the IBAN object\n */\n static fromBban(bban) {\n const countryCode = 'XE';\n const remainder = mod9710(iso13616Prepare(countryCode + '00' + bban));\n const checkDigit = ('0' + (98 - remainder)).slice(-2);\n return new Iban(countryCode + checkDigit + bban);\n }\n /**\n * Should be used to create IBAN object for given institution and identifier\n *\n * @method createIndirect\n * @param {Object} options, required options are \"institution\" and \"identifier\"\n * @return {Iban} the IBAN object\n */\n static createIndirect(options) {\n return Iban.fromBban('ETH' + options.institution + options.identifier);\n }\n /**\n * This method should be used to check if given string is valid iban object\n *\n * @method isValid\n * @param {String} iban string\n * @return {Boolean} true if it is valid IBAN\n */\n static isValid(iban) {\n const i = new Iban(iban);\n return i.isValid();\n }\n ;\n /**\n * Should be called to check if iban is correct\n *\n * @method isValid\n * @returns {Boolean} true if it is, otherwise false\n */\n isValid() {\n return /^XE[0-9]{2}(ETH[0-9A-Z]{13}|[0-9A-Z]{30,31})$/.test(this._iban) &&\n mod9710(iso13616Prepare(this._iban)) === 1;\n }\n ;\n /**\n * Should be called to check if iban number is direct\n *\n * @method isDirect\n * @returns {Boolean} true if it is, otherwise false\n */\n isDirect() {\n return this._iban.length === 34 || this._iban.length === 35;\n }\n ;\n /**\n * Should be called to check if iban number if indirect\n *\n * @method isIndirect\n * @returns {Boolean} true if it is, otherwise false\n */\n isIndirect() {\n return this._iban.length === 20;\n }\n ;\n /**\n * Should be called to get iban checksum\n * Uses the mod-97-10 checksumming protocol (ISO/IEC 7064:2003)\n *\n * @method checksum\n * @returns {String} checksum\n */\n checksum() {\n return this._iban.slice(2, 4);\n }\n ;\n /**\n * Should be called to get institution identifier\n * eg. XREG\n *\n * @method institution\n * @returns {String} institution identifier\n */\n institution() {\n return this.isIndirect() ? this._iban.slice(7, 11) : '';\n }\n ;\n /**\n * Should be called to get client identifier within institution\n * eg. GAVOFYORK\n *\n * @method client\n * @returns {String} client identifier\n */\n client() {\n return this.isIndirect() ? this._iban.slice(11) : '';\n }\n ;\n /**\n * Should be called to get client direct address\n *\n * @method toAddress\n * @returns {String} ethereum address\n */\n toAddress() {\n if (this.isDirect()) {\n const base36 = this._iban.slice(4);\n const asBn = new BigNumber(base36, 36);\n return utils.toChecksumAddress(asBn.toString(16, 20));\n }\n return '';\n }\n ;\n toString() {\n return this._iban;\n }\n ;\n}\nmodule.exports = Iban;\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar core = require('web3-core');\nvar Method = require('web3-core-method');\nvar utils = require('web3-utils');\nvar Net = require('web3-net');\nvar formatters = require('web3-core-helpers').formatters;\nvar Personal = function Personal() {\n var _this = this;\n // sets _requestmanager\n core.packageInit(this, arguments);\n this.net = new Net(this);\n var defaultAccount = null;\n var defaultBlock = 'latest';\n Object.defineProperty(this, 'defaultAccount', {\n get: function () {\n return defaultAccount;\n },\n set: function (val) {\n if (val) {\n defaultAccount = utils.toChecksumAddress(formatters.inputAddressFormatter(val));\n }\n // update defaultBlock\n methods.forEach(function (method) {\n method.defaultAccount = defaultAccount;\n });\n return val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultBlock', {\n get: function () {\n return defaultBlock;\n },\n set: function (val) {\n defaultBlock = val;\n // update defaultBlock\n methods.forEach(function (method) {\n method.defaultBlock = defaultBlock;\n });\n return val;\n },\n enumerable: true\n });\n var methods = [\n new Method({\n name: 'getAccounts',\n call: 'personal_listAccounts',\n params: 0,\n outputFormatter: utils.toChecksumAddress\n }),\n new Method({\n name: 'newAccount',\n call: 'personal_newAccount',\n params: 1,\n inputFormatter: [null],\n outputFormatter: utils.toChecksumAddress\n }),\n new Method({\n name: 'unlockAccount',\n call: 'personal_unlockAccount',\n params: 3,\n inputFormatter: [formatters.inputAddressFormatter, null, null]\n }),\n new Method({\n name: 'lockAccount',\n call: 'personal_lockAccount',\n params: 1,\n inputFormatter: [formatters.inputAddressFormatter]\n }),\n new Method({\n name: 'importRawKey',\n call: 'personal_importRawKey',\n params: 2\n }),\n new Method({\n name: 'sendTransaction',\n call: 'personal_sendTransaction',\n params: 2,\n inputFormatter: [formatters.inputTransactionFormatter, null]\n }),\n new Method({\n name: 'signTransaction',\n call: 'personal_signTransaction',\n params: 2,\n inputFormatter: [formatters.inputTransactionFormatter, null]\n }),\n new Method({\n name: 'sign',\n call: 'personal_sign',\n params: 3,\n inputFormatter: [formatters.inputSignFormatter, formatters.inputAddressFormatter, null]\n }),\n new Method({\n name: 'ecRecover',\n call: 'personal_ecRecover',\n params: 2,\n inputFormatter: [formatters.inputSignFormatter, null]\n })\n ];\n methods.forEach(function (method) {\n method.attachToObject(_this);\n method.setRequestManager(_this._requestManager);\n method.defaultBlock = _this.defaultBlock;\n method.defaultAccount = _this.defaultAccount;\n });\n};\ncore.addProviders(Personal);\nmodule.exports = Personal;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file getNetworkType.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar getNetworkType = function (callback) {\n var _this = this, id;\n return this.net.getId()\n .then(function (givenId) {\n id = givenId;\n return _this.getBlock(0);\n })\n .then(function (genesis) {\n var returnValue = 'private';\n if (genesis.hash === '0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3' &&\n id === 1) {\n returnValue = 'main';\n }\n if (genesis.hash === '0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d' &&\n id === 3) {\n returnValue = 'ropsten';\n }\n if (genesis.hash === '0x6341fd3daf94b748c72ced5a5b26028f2474f5f00d824504e4fa37a75767e177' &&\n id === 4) {\n returnValue = 'rinkeby';\n }\n if (genesis.hash === '0xbf7e331f7f7c1dd2e05159666b3bf8bc7a8a3a9eb1d518969eab529dd9b88c1a' &&\n id === 5) {\n returnValue = 'goerli';\n }\n if (genesis.hash === '0xa3c565fc15c7478862d50ccd6561e3c06b24cc509bf388941c25ea985ce32cb9' &&\n id === 42) {\n returnValue = 'kovan';\n }\n if (typeof callback === 'function') {\n callback(null, returnValue);\n }\n return returnValue;\n })\n .catch(function (err) {\n if (typeof callback === 'function') {\n callback(err);\n }\n else {\n throw err;\n }\n });\n};\nmodule.exports = getNetworkType;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar core = require('web3-core');\nvar helpers = require('web3-core-helpers');\nvar Subscriptions = require('web3-core-subscriptions').subscriptions;\nvar Method = require('web3-core-method');\nvar utils = require('web3-utils');\nvar Net = require('web3-net');\nvar ENS = require('web3-eth-ens');\nvar Personal = require('web3-eth-personal');\nvar BaseContract = require('web3-eth-contract');\nvar Iban = require('web3-eth-iban');\nvar Accounts = require('web3-eth-accounts');\nvar abi = require('web3-eth-abi');\nvar getNetworkType = require('./getNetworkType.js');\nvar formatter = helpers.formatters;\nvar blockCall = function (args) {\n return (typeof args[0] === 'string' && args[0].indexOf('0x') === 0) ? \"eth_getBlockByHash\" : \"eth_getBlockByNumber\";\n};\nvar transactionFromBlockCall = function (args) {\n return (typeof args[0] === 'string' && args[0].indexOf('0x') === 0) ? 'eth_getTransactionByBlockHashAndIndex' : 'eth_getTransactionByBlockNumberAndIndex';\n};\nvar uncleCall = function (args) {\n return (typeof args[0] === 'string' && args[0].indexOf('0x') === 0) ? 'eth_getUncleByBlockHashAndIndex' : 'eth_getUncleByBlockNumberAndIndex';\n};\nvar getBlockTransactionCountCall = function (args) {\n return (typeof args[0] === 'string' && args[0].indexOf('0x') === 0) ? 'eth_getBlockTransactionCountByHash' : 'eth_getBlockTransactionCountByNumber';\n};\nvar uncleCountCall = function (args) {\n return (typeof args[0] === 'string' && args[0].indexOf('0x') === 0) ? 'eth_getUncleCountByBlockHash' : 'eth_getUncleCountByBlockNumber';\n};\nvar Eth = function Eth() {\n var _this = this;\n // sets _requestmanager\n core.packageInit(this, arguments);\n // overwrite package setRequestManager\n var setRequestManager = this.setRequestManager;\n this.setRequestManager = function (manager) {\n setRequestManager(manager);\n _this.net.setRequestManager(manager);\n _this.personal.setRequestManager(manager);\n _this.accounts.setRequestManager(manager);\n _this.Contract._requestManager = _this._requestManager;\n _this.Contract.currentProvider = _this._provider;\n return true;\n };\n // overwrite setProvider\n var setProvider = this.setProvider;\n this.setProvider = function () {\n setProvider.apply(_this, arguments);\n _this.setRequestManager(_this._requestManager);\n // Set detectedAddress/lastSyncCheck back to null because the provider could be connected to a different chain now\n _this.ens._detectedAddress = null;\n _this.ens._lastSyncCheck = null;\n };\n var handleRevert = false;\n var defaultAccount = null;\n var defaultBlock = 'latest';\n var transactionBlockTimeout = 50;\n var transactionConfirmationBlocks = 24;\n var transactionPollingTimeout = 750;\n var transactionPollingInterval = 1000;\n var blockHeaderTimeout = 10; // 10 seconds\n var maxListenersWarningThreshold = 100;\n var defaultChain, defaultHardfork, defaultCommon;\n Object.defineProperty(this, 'handleRevert', {\n get: function () {\n return handleRevert;\n },\n set: function (val) {\n handleRevert = val;\n // also set on the Contract object\n _this.Contract.handleRevert = handleRevert;\n // update handleRevert\n methods.forEach(function (method) {\n method.handleRevert = handleRevert;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultCommon', {\n get: function () {\n return defaultCommon;\n },\n set: function (val) {\n defaultCommon = val;\n // also set on the Contract object\n _this.Contract.defaultCommon = defaultCommon;\n // update defaultBlock\n methods.forEach(function (method) {\n method.defaultCommon = defaultCommon;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultHardfork', {\n get: function () {\n return defaultHardfork;\n },\n set: function (val) {\n defaultHardfork = val;\n // also set on the Contract object\n _this.Contract.defaultHardfork = defaultHardfork;\n // update defaultBlock\n methods.forEach(function (method) {\n method.defaultHardfork = defaultHardfork;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultChain', {\n get: function () {\n return defaultChain;\n },\n set: function (val) {\n defaultChain = val;\n // also set on the Contract object\n _this.Contract.defaultChain = defaultChain;\n // update defaultBlock\n methods.forEach(function (method) {\n method.defaultChain = defaultChain;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionPollingTimeout', {\n get: function () {\n return transactionPollingTimeout;\n },\n set: function (val) {\n transactionPollingTimeout = val;\n // also set on the Contract object\n _this.Contract.transactionPollingTimeout = transactionPollingTimeout;\n // update defaultBlock\n methods.forEach(function (method) {\n method.transactionPollingTimeout = transactionPollingTimeout;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionPollingInterval', {\n get: function () {\n return transactionPollingInterval;\n },\n set: function (val) {\n transactionPollingInterval = val;\n // also set on the Contract object\n _this.Contract.transactionPollingInterval = transactionPollingInterval;\n // update defaultBlock\n methods.forEach(function (method) {\n method.transactionPollingInterval = transactionPollingInterval;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionConfirmationBlocks', {\n get: function () {\n return transactionConfirmationBlocks;\n },\n set: function (val) {\n transactionConfirmationBlocks = val;\n // also set on the Contract object\n _this.Contract.transactionConfirmationBlocks = transactionConfirmationBlocks;\n // update defaultBlock\n methods.forEach(function (method) {\n method.transactionConfirmationBlocks = transactionConfirmationBlocks;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionBlockTimeout', {\n get: function () {\n return transactionBlockTimeout;\n },\n set: function (val) {\n transactionBlockTimeout = val;\n // also set on the Contract object\n _this.Contract.transactionBlockTimeout = transactionBlockTimeout;\n // update defaultBlock\n methods.forEach(function (method) {\n method.transactionBlockTimeout = transactionBlockTimeout;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'blockHeaderTimeout', {\n get: function () {\n return blockHeaderTimeout;\n },\n set: function (val) {\n blockHeaderTimeout = val;\n // also set on the Contract object\n _this.Contract.blockHeaderTimeout = blockHeaderTimeout;\n // update defaultBlock\n methods.forEach(function (method) {\n method.blockHeaderTimeout = blockHeaderTimeout;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultAccount', {\n get: function () {\n return defaultAccount;\n },\n set: function (val) {\n if (val) {\n defaultAccount = utils.toChecksumAddress(formatter.inputAddressFormatter(val));\n }\n // also set on the Contract object\n _this.Contract.defaultAccount = defaultAccount;\n _this.personal.defaultAccount = defaultAccount;\n // update defaultBlock\n methods.forEach(function (method) {\n method.defaultAccount = defaultAccount;\n });\n return val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultBlock', {\n get: function () {\n return defaultBlock;\n },\n set: function (val) {\n defaultBlock = val;\n // also set on the Contract object\n _this.Contract.defaultBlock = defaultBlock;\n _this.personal.defaultBlock = defaultBlock;\n // update defaultBlock\n methods.forEach(function (method) {\n method.defaultBlock = defaultBlock;\n });\n return val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'maxListenersWarningThreshold', {\n get: function () {\n return maxListenersWarningThreshold;\n },\n set: function (val) {\n if (_this.currentProvider && _this.currentProvider.setMaxListeners) {\n maxListenersWarningThreshold = val;\n _this.currentProvider.setMaxListeners(val);\n }\n },\n enumerable: true\n });\n this.clearSubscriptions = _this._requestManager.clearSubscriptions.bind(_this._requestManager);\n this.removeSubscriptionById = _this._requestManager.removeSubscription.bind(_this._requestManager);\n // add net\n this.net = new Net(this);\n // add chain detection\n this.net.getNetworkType = getNetworkType.bind(this);\n // add accounts\n this.accounts = new Accounts(this);\n // add personal\n this.personal = new Personal(this);\n this.personal.defaultAccount = this.defaultAccount;\n // set warnings threshold\n this.maxListenersWarningThreshold = maxListenersWarningThreshold;\n // create a proxy Contract type for this instance, as a Contract's provider\n // is stored as a class member rather than an instance variable. If we do\n // not create this proxy type, changing the provider in one instance of\n // web3-eth would subsequently change the provider for _all_ contract\n // instances!\n var self = this;\n var Contract = function Contract() {\n BaseContract.apply(this, arguments);\n // when Eth.setProvider is called, call packageInit\n // on all contract instances instantiated via this Eth\n // instances. This will update the currentProvider for\n // the contract instances\n var _this = this;\n var setProvider = self.setProvider;\n self.setProvider = function () {\n setProvider.apply(self, arguments);\n core.packageInit(_this, [self]);\n };\n };\n Contract.setProvider = function () {\n BaseContract.setProvider.apply(this, arguments);\n };\n // make our proxy Contract inherit from web3-eth-contract so that it has all\n // the right functionality and so that instanceof and friends work properly\n Contract.prototype = Object.create(BaseContract.prototype);\n Contract.prototype.constructor = Contract;\n // add contract\n this.Contract = Contract;\n this.Contract.defaultAccount = this.defaultAccount;\n this.Contract.defaultBlock = this.defaultBlock;\n this.Contract.transactionBlockTimeout = this.transactionBlockTimeout;\n this.Contract.transactionConfirmationBlocks = this.transactionConfirmationBlocks;\n this.Contract.transactionPollingTimeout = this.transactionPollingTimeout;\n this.Contract.transactionPollingInterval = this.transactionPollingInterval;\n this.Contract.blockHeaderTimeout = this.blockHeaderTimeout;\n this.Contract.handleRevert = this.handleRevert;\n this.Contract._requestManager = this._requestManager;\n this.Contract._ethAccounts = this.accounts;\n this.Contract.currentProvider = this._requestManager.provider;\n // add IBAN\n this.Iban = Iban;\n // add ABI\n this.abi = abi;\n // add ENS\n this.ens = new ENS(this);\n var methods = [\n new Method({\n name: 'getNodeInfo',\n call: 'web3_clientVersion'\n }),\n new Method({\n name: 'getProtocolVersion',\n call: 'eth_protocolVersion',\n params: 0\n }),\n new Method({\n name: 'getCoinbase',\n call: 'eth_coinbase',\n params: 0\n }),\n new Method({\n name: 'isMining',\n call: 'eth_mining',\n params: 0\n }),\n new Method({\n name: 'getHashrate',\n call: 'eth_hashrate',\n params: 0,\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'isSyncing',\n call: 'eth_syncing',\n params: 0,\n outputFormatter: formatter.outputSyncingFormatter\n }),\n new Method({\n name: 'getGasPrice',\n call: 'eth_gasPrice',\n params: 0,\n outputFormatter: formatter.outputBigNumberFormatter\n }),\n new Method({\n name: 'getFeeHistory',\n call: 'eth_feeHistory',\n params: 3,\n inputFormatter: [utils.numberToHex, formatter.inputBlockNumberFormatter, null]\n }),\n new Method({\n name: 'getAccounts',\n call: 'eth_accounts',\n params: 0,\n outputFormatter: utils.toChecksumAddress\n }),\n new Method({\n name: 'getBlockNumber',\n call: 'eth_blockNumber',\n params: 0,\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'getBalance',\n call: 'eth_getBalance',\n params: 2,\n inputFormatter: [formatter.inputAddressFormatter, formatter.inputDefaultBlockNumberFormatter],\n outputFormatter: formatter.outputBigNumberFormatter\n }),\n new Method({\n name: 'getStorageAt',\n call: 'eth_getStorageAt',\n params: 3,\n inputFormatter: [formatter.inputAddressFormatter, utils.numberToHex, formatter.inputDefaultBlockNumberFormatter]\n }),\n new Method({\n name: 'getCode',\n call: 'eth_getCode',\n params: 2,\n inputFormatter: [formatter.inputAddressFormatter, formatter.inputDefaultBlockNumberFormatter]\n }),\n new Method({\n name: 'getBlock',\n call: blockCall,\n params: 2,\n inputFormatter: [formatter.inputBlockNumberFormatter, function (val) { return !!val; }],\n outputFormatter: formatter.outputBlockFormatter\n }),\n new Method({\n name: 'getUncle',\n call: uncleCall,\n params: 2,\n inputFormatter: [formatter.inputBlockNumberFormatter, utils.numberToHex],\n outputFormatter: formatter.outputBlockFormatter,\n }),\n new Method({\n name: 'getBlockTransactionCount',\n call: getBlockTransactionCountCall,\n params: 1,\n inputFormatter: [formatter.inputBlockNumberFormatter],\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'getBlockUncleCount',\n call: uncleCountCall,\n params: 1,\n inputFormatter: [formatter.inputBlockNumberFormatter],\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'getTransaction',\n call: 'eth_getTransactionByHash',\n params: 1,\n inputFormatter: [null],\n outputFormatter: formatter.outputTransactionFormatter\n }),\n new Method({\n name: 'getTransactionFromBlock',\n call: transactionFromBlockCall,\n params: 2,\n inputFormatter: [formatter.inputBlockNumberFormatter, utils.numberToHex],\n outputFormatter: formatter.outputTransactionFormatter\n }),\n new Method({\n name: 'getTransactionReceipt',\n call: 'eth_getTransactionReceipt',\n params: 1,\n inputFormatter: [null],\n outputFormatter: formatter.outputTransactionReceiptFormatter\n }),\n new Method({\n name: 'getTransactionCount',\n call: 'eth_getTransactionCount',\n params: 2,\n inputFormatter: [formatter.inputAddressFormatter, formatter.inputDefaultBlockNumberFormatter],\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'sendSignedTransaction',\n call: 'eth_sendRawTransaction',\n params: 1,\n inputFormatter: [null],\n abiCoder: abi\n }),\n new Method({\n name: 'signTransaction',\n call: 'eth_signTransaction',\n params: 1,\n inputFormatter: [formatter.inputTransactionFormatter]\n }),\n new Method({\n name: 'sendTransaction',\n call: 'eth_sendTransaction',\n params: 1,\n inputFormatter: [formatter.inputTransactionFormatter],\n abiCoder: abi\n }),\n new Method({\n name: 'sign',\n call: 'eth_sign',\n params: 2,\n inputFormatter: [formatter.inputSignFormatter, formatter.inputAddressFormatter],\n transformPayload: function (payload) {\n payload.params.reverse();\n return payload;\n }\n }),\n new Method({\n name: 'call',\n call: 'eth_call',\n params: 2,\n inputFormatter: [formatter.inputCallFormatter, formatter.inputDefaultBlockNumberFormatter],\n abiCoder: abi\n }),\n new Method({\n name: 'estimateGas',\n call: 'eth_estimateGas',\n params: 1,\n inputFormatter: [formatter.inputCallFormatter],\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'submitWork',\n call: 'eth_submitWork',\n params: 3\n }),\n new Method({\n name: 'getWork',\n call: 'eth_getWork',\n params: 0\n }),\n new Method({\n name: 'getPastLogs',\n call: 'eth_getLogs',\n params: 1,\n inputFormatter: [formatter.inputLogFormatter],\n outputFormatter: formatter.outputLogFormatter\n }),\n new Method({\n name: 'getChainId',\n call: 'eth_chainId',\n params: 0,\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'requestAccounts',\n call: 'eth_requestAccounts',\n params: 0,\n outputFormatter: utils.toChecksumAddress\n }),\n new Method({\n name: 'getProof',\n call: 'eth_getProof',\n params: 3,\n inputFormatter: [formatter.inputAddressFormatter, formatter.inputStorageKeysFormatter, formatter.inputDefaultBlockNumberFormatter],\n outputFormatter: formatter.outputProofFormatter\n }),\n new Method({\n name: 'getPendingTransactions',\n call: 'eth_pendingTransactions',\n params: 0,\n outputFormatter: formatter.outputTransactionFormatter\n }),\n new Method({\n name: 'createAccessList',\n call: 'eth_createAccessList',\n params: 2,\n inputFormatter: [formatter.inputTransactionFormatter, formatter.inputDefaultBlockNumberFormatter],\n }),\n // subscriptions\n new Subscriptions({\n name: 'subscribe',\n type: 'eth',\n subscriptions: {\n 'newBlockHeaders': {\n // TODO rename on RPC side?\n subscriptionName: 'newHeads',\n params: 0,\n outputFormatter: formatter.outputBlockFormatter\n },\n 'pendingTransactions': {\n subscriptionName: 'newPendingTransactions',\n params: 0\n },\n 'logs': {\n params: 1,\n inputFormatter: [formatter.inputLogFormatter],\n outputFormatter: formatter.outputLogFormatter,\n // DUBLICATE, also in web3-eth-contract\n subscriptionHandler: function (output) {\n if (output.removed) {\n this.emit('changed', output);\n }\n else {\n this.emit('data', output);\n }\n if (typeof this.callback === 'function') {\n this.callback(null, output, this);\n }\n }\n },\n 'syncing': {\n params: 0,\n outputFormatter: formatter.outputSyncingFormatter,\n subscriptionHandler: function (output) {\n var _this = this;\n // fire TRUE at start\n if (this._isSyncing !== true) {\n this._isSyncing = true;\n this.emit('changed', _this._isSyncing);\n if (typeof this.callback === 'function') {\n this.callback(null, _this._isSyncing, this);\n }\n setTimeout(function () {\n _this.emit('data', output);\n if (typeof _this.callback === 'function') {\n _this.callback(null, output, _this);\n }\n }, 0);\n // fire sync status\n }\n else {\n this.emit('data', output);\n if (typeof _this.callback === 'function') {\n this.callback(null, output, this);\n }\n // wait for some time before fireing the FALSE\n clearTimeout(this._isSyncingTimeout);\n this._isSyncingTimeout = setTimeout(function () {\n if (output.currentBlock > output.highestBlock - 200) {\n _this._isSyncing = false;\n _this.emit('changed', _this._isSyncing);\n if (typeof _this.callback === 'function') {\n _this.callback(null, _this._isSyncing, _this);\n }\n }\n }, 500);\n }\n }\n }\n }\n })\n ];\n methods.forEach(function (method) {\n method.attachToObject(_this);\n method.setRequestManager(_this._requestManager, _this.accounts); // second param is the eth.accounts module (necessary for signing transactions locally)\n method.defaultBlock = _this.defaultBlock;\n method.defaultAccount = _this.defaultAccount;\n method.transactionBlockTimeout = _this.transactionBlockTimeout;\n method.transactionConfirmationBlocks = _this.transactionConfirmationBlocks;\n method.transactionPollingTimeout = _this.transactionPollingTimeout;\n method.transactionPollingInterval = _this.transactionPollingInterval;\n method.handleRevert = _this.handleRevert;\n });\n};\n// Adds the static givenProvider and providers property to the Eth module\ncore.addProviders(Eth);\nmodule.exports = Eth;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar core = require('web3-core');\nvar Method = require('web3-core-method');\nvar utils = require('web3-utils');\nvar Net = function () {\n var _this = this;\n // sets _requestmanager\n core.packageInit(this, arguments);\n [\n new Method({\n name: 'getId',\n call: 'net_version',\n params: 0,\n outputFormatter: parseInt\n }),\n new Method({\n name: 'isListening',\n call: 'net_listening',\n params: 0\n }),\n new Method({\n name: 'getPeerCount',\n call: 'net_peerCount',\n params: 0,\n outputFormatter: utils.hexToNumber\n })\n ].forEach(function (method) {\n method.attachToObject(_this);\n method.setRequestManager(_this._requestManager);\n });\n};\ncore.addProviders(Net);\nmodule.exports = Net;\n","const EventEmitter = require('events').EventEmitter\nconst inherits = require('util').inherits\nconst ethUtil = require('ethereumjs-util')\nconst EthBlockTracker = require('eth-block-tracker')\nconst map = require('async/map')\nconst eachSeries = require('async/eachSeries')\nconst Stoplight = require('./util/stoplight.js')\nconst cacheUtils = require('./util/rpc-cache-utils.js')\nconst createPayload = require('./util/create-payload.js')\nconst noop = function(){}\n\nmodule.exports = Web3ProviderEngine\n\n\ninherits(Web3ProviderEngine, EventEmitter)\n\nfunction Web3ProviderEngine(opts) {\n const self = this\n EventEmitter.call(self)\n self.setMaxListeners(30)\n // parse options\n opts = opts || {}\n\n // block polling\n const directProvider = { sendAsync: self._handleAsync.bind(self) }\n const blockTrackerProvider = opts.blockTrackerProvider || directProvider\n self._blockTracker = opts.blockTracker || new EthBlockTracker({\n provider: blockTrackerProvider,\n pollingInterval: opts.pollingInterval || 4000,\n setSkipCacheFlag: true,\n })\n\n // set initialization blocker\n self._ready = new Stoplight()\n\n // local state\n self.currentBlock = null\n self._providers = []\n}\n\n// public\n\nWeb3ProviderEngine.prototype.start = function(cb = noop){\n const self = this\n\n // trigger start\n self._ready.go()\n\n // on new block, request block body and emit as events\n self._blockTracker.on('latest', (blockNumber) => {\n // get block body\n self._getBlockByNumberWithRetry(blockNumber, (err, block) => {\n if (err) {\n this.emit('error', err)\n return\n }\n if (!block) {\n console.log(block)\n this.emit('error', new Error(\"Could not find block\"))\n return\n }\n const bufferBlock = toBufferBlock(block)\n // set current + emit \"block\" event\n self._setCurrentBlock(bufferBlock)\n // emit other events\n self.emit('rawBlock', block)\n self.emit('latest', block)\n })\n })\n\n // forward other events\n self._blockTracker.on('sync', self.emit.bind(self, 'sync'))\n self._blockTracker.on('error', self.emit.bind(self, 'error'))\n\n // update state\n self._running = true\n // signal that we started\n self.emit('start')\n}\n\nWeb3ProviderEngine.prototype.stop = function(){\n const self = this\n // stop block polling by removing event listeners\n self._blockTracker.removeAllListeners()\n // update state\n self._running = false\n // signal that we stopped\n self.emit('stop')\n}\n\nWeb3ProviderEngine.prototype.isRunning = function(){\n const self = this\n return self._running\n}\n\nWeb3ProviderEngine.prototype.addProvider = function(source, index){\n const self = this\n if (typeof index === 'number') {\n self._providers.splice(index, 0, source)\n } else {\n self._providers.push(source)\n }\n source.setEngine(this)\n}\n\nWeb3ProviderEngine.prototype.removeProvider = function(source){\n const self = this\n const index = self._providers.indexOf(source)\n if (index < 0) throw new Error('Provider not found.')\n self._providers.splice(index, 1)\n}\n\nWeb3ProviderEngine.prototype.send = function(payload){\n throw new Error('Web3ProviderEngine does not support synchronous requests.')\n}\n\nWeb3ProviderEngine.prototype.sendAsync = function(payload, cb){\n const self = this\n self._ready.await(function(){\n\n if (Array.isArray(payload)) {\n // handle batch\n map(payload, self._handleAsync.bind(self), cb)\n } else {\n // handle single\n self._handleAsync(payload, cb)\n }\n\n })\n}\n\n// private\n\nWeb3ProviderEngine.prototype._getBlockByNumberWithRetry = function(blockNumber, cb) {\n const self = this\n\n let retriesRemaining = 5\n\n attemptRequest()\n return\n\n function attemptRequest () {\n self._getBlockByNumber(blockNumber, afterRequest)\n }\n\n function afterRequest (err, block) {\n // anomalous error occurred\n if (err) return cb(err)\n // block not ready yet\n if (!block) {\n if (retriesRemaining > 0) {\n // wait 1s then try again\n retriesRemaining--\n setTimeout(function () {\n attemptRequest()\n }, 1000)\n return\n } else {\n // give up, return a null block\n cb(null, null)\n return\n }\n }\n // otherwise return result\n cb(null, block)\n return\n }\n}\n\n\nWeb3ProviderEngine.prototype._getBlockByNumber = function(blockNumber, cb) {\n const req = createPayload({ method: 'eth_getBlockByNumber', params: [blockNumber, false], skipCache: true })\n this._handleAsync(req, (err, res) => {\n if (err) return cb(err)\n return cb(null, res.result)\n })\n}\n\nWeb3ProviderEngine.prototype._handleAsync = function(payload, finished) {\n var self = this\n var currentProvider = -1\n var result = null\n var error = null\n\n var stack = []\n\n next()\n\n function next(after) {\n currentProvider += 1\n stack.unshift(after)\n\n // Bubbled down as far as we could go, and the request wasn't\n // handled. Return an error.\n if (currentProvider >= self._providers.length) {\n end(new Error('Request for method \"' + payload.method + '\" not handled by any subprovider. Please check your subprovider configuration to ensure this method is handled.'))\n } else {\n try {\n var provider = self._providers[currentProvider]\n provider.handleRequest(payload, next, end)\n } catch (e) {\n end(e)\n }\n }\n }\n\n function end(_error, _result) {\n error = _error\n result = _result\n\n eachSeries(stack, function(fn, callback) {\n\n if (fn) {\n fn(error, result, callback)\n } else {\n callback()\n }\n }, function() {\n\n var resultObj = {\n id: payload.id,\n jsonrpc: payload.jsonrpc,\n result: result\n }\n\n if (error != null) {\n resultObj.error = {\n message: error.stack || error.message || error,\n code: -32000\n }\n // respond with both error formats\n finished(error, resultObj)\n } else {\n finished(null, resultObj)\n }\n })\n }\n}\n\n//\n// from remote-data\n//\n\nWeb3ProviderEngine.prototype._setCurrentBlock = function(block){\n const self = this\n self.currentBlock = block\n self.emit('block', block)\n}\n\n// util\n\nfunction toBufferBlock (jsonBlock) {\n return {\n number: ethUtil.toBuffer(jsonBlock.number),\n hash: ethUtil.toBuffer(jsonBlock.hash),\n parentHash: ethUtil.toBuffer(jsonBlock.parentHash),\n nonce: ethUtil.toBuffer(jsonBlock.nonce),\n mixHash: ethUtil.toBuffer(jsonBlock.mixHash),\n sha3Uncles: ethUtil.toBuffer(jsonBlock.sha3Uncles),\n logsBloom: ethUtil.toBuffer(jsonBlock.logsBloom),\n transactionsRoot: ethUtil.toBuffer(jsonBlock.transactionsRoot),\n stateRoot: ethUtil.toBuffer(jsonBlock.stateRoot),\n receiptsRoot: ethUtil.toBuffer(jsonBlock.receiptRoot || jsonBlock.receiptsRoot),\n miner: ethUtil.toBuffer(jsonBlock.miner),\n difficulty: ethUtil.toBuffer(jsonBlock.difficulty),\n totalDifficulty: ethUtil.toBuffer(jsonBlock.totalDifficulty),\n size: ethUtil.toBuffer(jsonBlock.size),\n extraData: ethUtil.toBuffer(jsonBlock.extraData),\n gasLimit: ethUtil.toBuffer(jsonBlock.gasLimit),\n gasUsed: ethUtil.toBuffer(jsonBlock.gasUsed),\n timestamp: ethUtil.toBuffer(jsonBlock.timestamp),\n transactions: jsonBlock.transactions,\n }\n}\n","const ProviderSubprovider = require('./json-rpc-engine-middleware')\nconst createBlockCacheMiddleware = require('eth-json-rpc-middleware/block-cache')\n\nclass BlockCacheSubprovider extends ProviderSubprovider {\n constructor(opts) {\n super(({ blockTracker }) => createBlockCacheMiddleware(Object.assign({ blockTracker }, opts)))\n }\n}\n\nmodule.exports = BlockCacheSubprovider\n","const ProviderSubprovider = require('./json-rpc-engine-middleware')\nconst createFilterMiddleware = require('eth-json-rpc-filters')\n\nclass SubscriptionsSubprovider extends ProviderSubprovider {\n constructor() {\n super(({ blockTracker, provider, engine }) => {\n return createFilterMiddleware({ blockTracker, provider })\n })\n }\n}\n\nmodule.exports = SubscriptionsSubprovider\n","const inherits = require('util').inherits\nconst Subprovider = require('./subprovider.js')\n\nmodule.exports = FixtureProvider\n\ninherits(FixtureProvider, Subprovider)\n\nfunction FixtureProvider(staticResponses){\n const self = this\n staticResponses = staticResponses || {}\n self.staticResponses = staticResponses\n}\n\nFixtureProvider.prototype.handleRequest = function(payload, next, end){\n const self = this\n var staticResponse = self.staticResponses[payload.method]\n // async function\n if ('function' === typeof staticResponse) {\n staticResponse(payload, next, end)\n // static response - null is valid response\n } else if (staticResponse !== undefined) {\n // return result asynchronously\n setTimeout(() => end(null, staticResponse))\n // no prepared response - skip\n } else {\n next()\n }\n}\n","/*\n * Emulate 'eth_accounts' / 'eth_sendTransaction' using 'eth_sendRawTransaction'\n *\n * The two callbacks a user needs to implement are:\n * - getAccounts() -- array of addresses supported\n * - signTransaction(tx) -- sign a raw transaction object\n */\n\nconst waterfall = require('async/waterfall')\nconst parallel = require('async/parallel')\nconst inherits = require('util').inherits\nconst ethUtil = require('ethereumjs-util')\nconst sigUtil = require('eth-sig-util')\nconst extend = require('xtend')\nconst Semaphore = require('semaphore')\nconst Subprovider = require('./subprovider.js')\nconst estimateGas = require('../util/estimate-gas.js')\nconst hexRegex = /^[0-9A-Fa-f]+$/g\n\nmodule.exports = HookedWalletSubprovider\n\n// handles the following RPC methods:\n// eth_coinbase\n// eth_accounts\n// eth_sendTransaction\n// eth_sign\n// eth_signTypedData\n// eth_signTypedData_v3\n// eth_signTypedData_v4\n// personal_sign\n// eth_decryptMessage\n// encryption_public_key\n// personal_ecRecover\n// parity_postTransaction\n// parity_checkRequest\n// parity_defaultAccount\n\n//\n// Tx Signature Flow\n//\n// handleRequest: eth_sendTransaction\n// validateTransaction (basic validity check)\n// validateSender (checks that sender is in accounts)\n// processTransaction (sign tx and submit to network)\n// approveTransaction (UI approval hook)\n// checkApproval\n// finalizeAndSubmitTx (tx signing)\n// nonceLock.take (bottle neck to ensure atomic nonce)\n// fillInTxExtras (set fallback gasPrice, nonce, etc)\n// signTransaction (perform the signature)\n// publishTransaction (publish signed tx to network)\n//\n\n\ninherits(HookedWalletSubprovider, Subprovider)\n\nfunction HookedWalletSubprovider(opts){\n const self = this\n // control flow\n self.nonceLock = Semaphore(1)\n\n // data lookup\n if (opts.getAccounts) self.getAccounts = opts.getAccounts\n // high level override\n if (opts.processTransaction) self.processTransaction = opts.processTransaction\n if (opts.processMessage) self.processMessage = opts.processMessage\n if (opts.processPersonalMessage) self.processPersonalMessage = opts.processPersonalMessage\n if (opts.processTypedMessage) self.processTypedMessage = opts.processTypedMessage\n // approval hooks\n self.approveTransaction = opts.approveTransaction || self.autoApprove\n self.approveMessage = opts.approveMessage || self.autoApprove\n self.approvePersonalMessage = opts.approvePersonalMessage || self.autoApprove\n self.approveDecryptMessage = opts.approveDecryptMessage || self.autoApprove\n self.approveEncryptionPublicKey = opts.approveEncryptionPublicKey || self.autoApprove\n self.approveTypedMessage = opts.approveTypedMessage || self.autoApprove\n // actually perform the signature\n if (opts.signTransaction) self.signTransaction = opts.signTransaction || mustProvideInConstructor('signTransaction')\n if (opts.signMessage) self.signMessage = opts.signMessage || mustProvideInConstructor('signMessage')\n if (opts.signPersonalMessage) self.signPersonalMessage = opts.signPersonalMessage || mustProvideInConstructor('signPersonalMessage')\n if (opts.decryptMessage) self.decryptMessage = opts.decryptMessage || mustProvideInConstructor('decryptMessage')\n if (opts.encryptionPublicKey) self.encryptionPublicKey = opts.encryptionPublicKey || mustProvideInConstructor('encryptionPublicKey')\n if (opts.signTypedMessage) self.signTypedMessage = opts.signTypedMessage || mustProvideInConstructor('signTypedMessage')\n if (opts.recoverPersonalSignature) self.recoverPersonalSignature = opts.recoverPersonalSignature\n // publish to network\n if (opts.publishTransaction) self.publishTransaction = opts.publishTransaction\n // gas options\n self.estimateGas = opts.estimateGas || self.estimateGas\n self.getGasPrice = opts.getGasPrice || self.getGasPrice\n}\n\nHookedWalletSubprovider.prototype.handleRequest = function(payload, next, end){\n const self = this\n self._parityRequests = {}\n self._parityRequestCount = 0\n\n // switch statement is not block scoped\n // sp we cant repeat var declarations\n let txParams, msgParams, extraParams\n let message, address\n\n switch(payload.method) {\n\n case 'eth_coinbase':\n // process normally\n self.getAccounts(function(err, accounts){\n if (err) return end(err)\n let result = accounts[0] || null\n end(null, result)\n })\n return\n\n case 'eth_accounts':\n // process normally\n self.getAccounts(function(err, accounts){\n if (err) return end(err)\n end(null, accounts)\n })\n return\n\n case 'eth_sendTransaction':\n txParams = payload.params[0]\n waterfall([\n (cb) => self.validateTransaction(txParams, cb),\n (cb) => self.processTransaction(txParams, cb),\n ], end)\n return\n\n case 'eth_signTransaction':\n txParams = payload.params[0]\n waterfall([\n (cb) => self.validateTransaction(txParams, cb),\n (cb) => self.processSignTransaction(txParams, cb),\n ], end)\n return\n\n case 'eth_sign':\n // process normally\n address = payload.params[0]\n message = payload.params[1]\n // non-standard \"extraParams\" to be appended to our \"msgParams\" obj\n // good place for metadata\n extraParams = payload.params[2] || {}\n msgParams = extend(extraParams, {\n from: address,\n data: message,\n })\n waterfall([\n (cb) => self.validateMessage(msgParams, cb),\n (cb) => self.processMessage(msgParams, cb),\n ], end)\n return\n\n case 'personal_sign':\n return (function(){\n // process normally\n const first = payload.params[0]\n const second = payload.params[1]\n\n // We initially incorrectly ordered these parameters.\n // To gracefully respect users who adopted this API early,\n // we are currently gracefully recovering from the wrong param order\n // when it is clearly identifiable.\n //\n // That means when the first param is definitely an address,\n // and the second param is definitely not, but is hex.\n if (resemblesData(second) && resemblesAddress(first)) {\n let warning = `The eth_personalSign method requires params ordered `\n warning += `[message, address]. This was previously handled incorrectly, `\n warning += `and has been corrected automatically. `\n warning += `Please switch this param order for smooth behavior in the future.`\n console.warn(warning)\n\n address = payload.params[0]\n message = payload.params[1]\n } else {\n message = payload.params[0]\n address = payload.params[1]\n }\n\n // non-standard \"extraParams\" to be appended to our \"msgParams\" obj\n // good place for metadata\n extraParams = payload.params[2] || {}\n msgParams = extend(extraParams, {\n from: address,\n data: message,\n })\n waterfall([\n (cb) => self.validatePersonalMessage(msgParams, cb),\n (cb) => self.processPersonalMessage(msgParams, cb),\n ], end)\n })()\n\n case 'eth_decryptMessage':\n return (function(){\n // process normally\n const first = payload.params[0]\n const second = payload.params[1]\n\n // We initially incorrectly ordered these parameters.\n // To gracefully respect users who adopted this API early,\n // we are currently gracefully recovering from the wrong param order\n // when it is clearly identifiable.\n //\n // That means when the first param is definitely an address,\n // and the second param is definitely not, but is hex.\n if (resemblesData(second) && resemblesAddress(first)) {\n let warning = `The eth_decryptMessage method requires params ordered `\n warning += `[message, address]. This was previously handled incorrectly, `\n warning += `and has been corrected automatically. `\n warning += `Please switch this param order for smooth behavior in the future.`\n console.warn(warning)\n\n address = payload.params[0]\n message = payload.params[1]\n } else {\n message = payload.params[0]\n address = payload.params[1]\n }\n\n // non-standard \"extraParams\" to be appended to our \"msgParams\" obj\n // good place for metadata\n extraParams = payload.params[2] || {}\n msgParams = extend(extraParams, {\n from: address,\n data: message,\n })\n waterfall([\n (cb) => self.validateDecryptMessage(msgParams, cb),\n (cb) => self.processDecryptMessage(msgParams, cb),\n ], end)\n })()\n \n case 'encryption_public_key':\n return (function(){\n const address = payload.params[0]\n \n waterfall([\n (cb) => self.validateEncryptionPublicKey(address, cb),\n (cb) => self.processEncryptionPublicKey(address, cb),\n ], end)\n })()\n \n case 'personal_ecRecover':\n return (function(){ \n message = payload.params[0]\n let signature = payload.params[1]\n // non-standard \"extraParams\" to be appended to our \"msgParams\" obj\n // good place for metadata\n extraParams = payload.params[2] || {}\n msgParams = extend(extraParams, {\n sig: signature,\n data: message,\n })\n self.recoverPersonalSignature(msgParams, end)\n })()\n\n case 'eth_signTypedData':\n case 'eth_signTypedData_v3':\n case 'eth_signTypedData_v4':\n return (function(){ \n // process normally\n \n const first = payload.params[0]\n const second = payload.params[1]\n\n if (resemblesAddress(first)) {\n address = first\n message = second\n } else {\n message = first\n address = second\n }\n\n extraParams = payload.params[2] || {}\n msgParams = extend(extraParams, {\n from: address,\n data: message,\n })\n waterfall([\n (cb) => self.validateTypedMessage(msgParams, cb),\n (cb) => self.processTypedMessage(msgParams, cb),\n ], end)\n })()\n\n case 'parity_postTransaction':\n txParams = payload.params[0]\n self.parityPostTransaction(txParams, end)\n return\n\n case 'parity_postSign':\n address = payload.params[0]\n message = payload.params[1]\n self.parityPostSign(address, message, end)\n return\n\n case 'parity_checkRequest':\n return (function(){\n const requestId = payload.params[0]\n self.parityCheckRequest(requestId, end)\n })()\n\n case 'parity_defaultAccount':\n self.getAccounts(function(err, accounts){\n if (err) return end(err)\n const account = accounts[0] || null\n end(null, account)\n })\n return\n\n default:\n next()\n return\n\n }\n}\n\n//\n// data lookup\n//\n\nHookedWalletSubprovider.prototype.getAccounts = function(cb) {\n cb(null, [])\n}\n\n\n//\n// \"process\" high level flow\n//\n\nHookedWalletSubprovider.prototype.processTransaction = function(txParams, cb) {\n const self = this\n waterfall([\n (cb) => self.approveTransaction(txParams, cb),\n (didApprove, cb) => self.checkApproval('transaction', didApprove, cb),\n (cb) => self.finalizeAndSubmitTx(txParams, cb),\n ], cb)\n}\n\n\nHookedWalletSubprovider.prototype.processSignTransaction = function(txParams, cb) {\n const self = this\n waterfall([\n (cb) => self.approveTransaction(txParams, cb),\n (didApprove, cb) => self.checkApproval('transaction', didApprove, cb),\n (cb) => self.finalizeTx(txParams, cb),\n ], cb)\n}\n\nHookedWalletSubprovider.prototype.processMessage = function(msgParams, cb) {\n const self = this\n waterfall([\n (cb) => self.approveMessage(msgParams, cb),\n (didApprove, cb) => self.checkApproval('message', didApprove, cb),\n (cb) => self.signMessage(msgParams, cb),\n ], cb)\n}\n\nHookedWalletSubprovider.prototype.processPersonalMessage = function(msgParams, cb) {\n const self = this\n waterfall([\n (cb) => self.approvePersonalMessage(msgParams, cb),\n (didApprove, cb) => self.checkApproval('message', didApprove, cb),\n (cb) => self.signPersonalMessage(msgParams, cb),\n ], cb)\n}\n\nHookedWalletSubprovider.prototype.processDecryptMessage = function(msgParams, cb) {\n const self = this\n waterfall([\n (cb) => self.approveDecryptMessage(msgParams, cb),\n (didApprove, cb) => self.checkApproval('decryptMessage', didApprove, cb),\n (cb) => self.decryptMessage(msgParams, cb),\n ], cb)\n}\n\nHookedWalletSubprovider.prototype.processEncryptionPublicKey = function(msgParams, cb) {\n const self = this\n waterfall([\n (cb) => self.approveEncryptionPublicKey(msgParams, cb),\n (didApprove, cb) => self.checkApproval('encryptionPublicKey', didApprove, cb),\n (cb) => self.encryptionPublicKey(msgParams, cb),\n ], cb)\n}\n\nHookedWalletSubprovider.prototype.processTypedMessage = function(msgParams, cb) {\n const self = this\n waterfall([\n (cb) => self.approveTypedMessage(msgParams, cb),\n (didApprove, cb) => self.checkApproval('message', didApprove, cb),\n (cb) => self.signTypedMessage(msgParams, cb),\n ], cb)\n}\n\n//\n// approval\n//\n\nHookedWalletSubprovider.prototype.autoApprove = function(txParams, cb) {\n cb(null, true)\n}\n\nHookedWalletSubprovider.prototype.checkApproval = function(type, didApprove, cb) {\n cb( didApprove ? null : new Error('User denied '+type+' signature.') )\n}\n\n//\n// parity\n//\n\nHookedWalletSubprovider.prototype.parityPostTransaction = function(txParams, cb) {\n const self = this\n\n // get next id\n const count = self._parityRequestCount\n const reqId = `0x${count.toString(16)}`\n self._parityRequestCount++\n\n self.emitPayload({\n method: 'eth_sendTransaction',\n params: [txParams],\n }, function(error, res){\n if (error) {\n self._parityRequests[reqId] = { error }\n return\n }\n const txHash = res.result\n self._parityRequests[reqId] = txHash\n })\n\n cb(null, reqId)\n}\n\n\nHookedWalletSubprovider.prototype.parityPostSign = function(address, message, cb) {\n const self = this\n\n // get next id\n const count = self._parityRequestCount\n const reqId = `0x${count.toString(16)}`\n self._parityRequestCount++\n\n self.emitPayload({\n method: 'eth_sign',\n params: [address, message],\n }, function(error, res){\n if (error) {\n self._parityRequests[reqId] = { error }\n return\n }\n const result = res.result\n self._parityRequests[reqId] = result\n })\n\n cb(null, reqId)\n}\n\nHookedWalletSubprovider.prototype.parityCheckRequest = function(reqId, cb) {\n const self = this\n const result = self._parityRequests[reqId] || null\n // tx not handled yet\n if (!result) return cb(null, null)\n // tx was rejected (or other error)\n if (result.error) return cb(result.error)\n // tx sent\n cb(null, result)\n}\n\n//\n// signature and recovery\n//\n\nHookedWalletSubprovider.prototype.recoverPersonalSignature = function(msgParams, cb) {\n let senderHex\n try {\n senderHex = sigUtil.recoverPersonalSignature(msgParams)\n } catch (err) {\n return cb(err)\n }\n cb(null, senderHex)\n}\n\n//\n// validation\n//\n\nHookedWalletSubprovider.prototype.validateTransaction = function(txParams, cb){\n const self = this\n // shortcut: undefined sender is invalid\n if (txParams.from === undefined) return cb(new Error(`Undefined address - from address required to sign transaction.`))\n self.validateSender(txParams.from, function(err, senderIsValid){\n if (err) return cb(err)\n if (!senderIsValid) return cb(new Error(`Unknown address - unable to sign transaction for this address: \"${txParams.from}\"`))\n cb()\n })\n}\n\nHookedWalletSubprovider.prototype.validateMessage = function(msgParams, cb){\n const self = this\n if (msgParams.from === undefined) return cb(new Error(`Undefined address - from address required to sign message.`))\n self.validateSender(msgParams.from, function(err, senderIsValid){\n if (err) return cb(err)\n if (!senderIsValid) return cb(new Error(`Unknown address - unable to sign message for this address: \"${msgParams.from}\"`))\n cb()\n })\n}\n\nHookedWalletSubprovider.prototype.validatePersonalMessage = function(msgParams, cb){\n const self = this\n if (msgParams.from === undefined) return cb(new Error(`Undefined address - from address required to sign personal message.`))\n if (msgParams.data === undefined) return cb(new Error(`Undefined message - message required to sign personal message.`))\n if (!isValidHex(msgParams.data)) return cb(new Error(`HookedWalletSubprovider - validateMessage - message was not encoded as hex.`))\n self.validateSender(msgParams.from, function(err, senderIsValid){\n if (err) return cb(err)\n if (!senderIsValid) return cb(new Error(`Unknown address - unable to sign message for this address: \"${msgParams.from}\"`))\n cb()\n })\n}\n\nHookedWalletSubprovider.prototype.validateDecryptMessage = function(msgParams, cb){\n const self = this\n if (msgParams.from === undefined) return cb(new Error(`Undefined address - from address required to decrypt message.`))\n if (msgParams.data === undefined) return cb(new Error(`Undefined message - message required to decrypt message.`))\n if (!isValidHex(msgParams.data)) return cb(new Error(`HookedWalletSubprovider - validateDecryptMessage - message was not encoded as hex.`))\n self.validateSender(msgParams.from, function(err, senderIsValid){\n if (err) return cb(err)\n if (!senderIsValid) return cb(new Error(`Unknown address - unable to decrypt message for this address: \"${msgParams.from}\"`))\n cb()\n })\n}\n\nHookedWalletSubprovider.prototype.validateEncryptionPublicKey = function(address, cb){\n const self = this\n\n self.validateSender(address, function(err, senderIsValid){\n if (err) return cb(err)\n if (!senderIsValid) return cb(new Error(`Unknown address - unable to obtain encryption public key for this address: \"${address}\"`))\n cb()\n })\n}\n\nHookedWalletSubprovider.prototype.validateTypedMessage = function(msgParams, cb){\n if (msgParams.from === undefined) return cb(new Error(`Undefined address - from address required to sign typed data.`))\n if (msgParams.data === undefined) return cb(new Error(`Undefined data - message required to sign typed data.`))\n this.validateSender(msgParams.from, function(err, senderIsValid){\n if (err) return cb(err)\n if (!senderIsValid) return cb(new Error(`Unknown address - unable to sign message for this address: \"${msgParams.from}\"`))\n cb()\n })\n}\n\nHookedWalletSubprovider.prototype.validateSender = function(senderAddress, cb){\n const self = this\n // shortcut: undefined sender is invalid\n if (!senderAddress) return cb(null, false)\n self.getAccounts(function(err, accounts){\n if (err) return cb(err)\n const senderIsValid = (accounts.map(toLowerCase).indexOf(senderAddress.toLowerCase()) !== -1)\n cb(null, senderIsValid)\n })\n}\n\n//\n// tx helpers\n//\n\nHookedWalletSubprovider.prototype.finalizeAndSubmitTx = function(txParams, cb) {\n const self = this\n // can only allow one tx to pass through this flow at a time\n // so we can atomically consume a nonce\n self.nonceLock.take(function(){\n waterfall([\n self.fillInTxExtras.bind(self, txParams),\n self.signTransaction.bind(self),\n self.publishTransaction.bind(self),\n ], function(err, txHash){\n self.nonceLock.leave()\n if (err) return cb(err)\n cb(null, txHash)\n })\n })\n}\n\nHookedWalletSubprovider.prototype.finalizeTx = function(txParams, cb) {\n const self = this\n // can only allow one tx to pass through this flow at a time\n // so we can atomically consume a nonce\n self.nonceLock.take(function(){\n waterfall([\n self.fillInTxExtras.bind(self, txParams),\n self.signTransaction.bind(self),\n ], function(err, signedTx){\n self.nonceLock.leave()\n if (err) return cb(err)\n cb(null, {raw: signedTx, tx: txParams})\n })\n })\n}\n\nHookedWalletSubprovider.prototype.publishTransaction = function(rawTx, cb) {\n const self = this\n self.emitPayload({\n method: 'eth_sendRawTransaction',\n params: [rawTx],\n }, function(err, res){\n if (err) return cb(err)\n cb(null, res.result)\n })\n}\n\nHookedWalletSubprovider.prototype.estimateGas = function(txParams, cb) {\n const self = this\n estimateGas(self.engine, txParams, cb)\n}\n\nHookedWalletSubprovider.prototype.getGasPrice = function(cb) {\n const self = this\n self.emitPayload({ method: 'eth_gasPrice', params: [] }, function (err, res) {\n if (err) return cb(err)\n cb(null, res.result)\n })\n}\n\nHookedWalletSubprovider.prototype.fillInTxExtras = function(txParams, cb){\n const self = this\n const address = txParams.from\n // console.log('fillInTxExtras - address:', address)\n\n const tasks = {}\n\n if (txParams.gasPrice === undefined) {\n // console.log(\"need to get gasprice\")\n tasks.gasPrice = self.getGasPrice.bind(self)\n }\n\n if (txParams.nonce === undefined) {\n // console.log(\"need to get nonce\")\n tasks.nonce = self.emitPayload.bind(self, { method: 'eth_getTransactionCount', params: [address, 'pending'] })\n }\n\n if (txParams.gas === undefined) {\n // console.log(\"need to get gas\")\n tasks.gas = self.estimateGas.bind(self, cloneTxParams(txParams))\n }\n\n parallel(tasks, function(err, taskResults) {\n if (err) return cb(err)\n\n const result = {}\n if (taskResults.gasPrice) result.gasPrice = taskResults.gasPrice\n if (taskResults.nonce) result.nonce = taskResults.nonce.result\n if (taskResults.gas) result.gas = taskResults.gas\n\n cb(null, extend(txParams, result))\n })\n}\n\n// util\n\n// we use this to clean any custom params from the txParams\nfunction cloneTxParams(txParams){\n return {\n from: txParams.from,\n to: txParams.to,\n value: txParams.value,\n data: txParams.data,\n gas: txParams.gas,\n gasPrice: txParams.gasPrice,\n nonce: txParams.nonce,\n }\n}\n\nfunction toLowerCase(string){\n return string.toLowerCase()\n}\n\nfunction resemblesAddress (string) {\n const fixed = ethUtil.addHexPrefix(string)\n const isValid = ethUtil.isValidAddress(fixed)\n return isValid\n}\n\n// Returns true if resembles hex data\n// but definitely not a valid address.\nfunction resemblesData (string) {\n const fixed = ethUtil.addHexPrefix(string)\n const isValidAddress = ethUtil.isValidAddress(fixed)\n return !isValidAddress && isValidHex(string)\n}\n\nfunction isValidHex(data) {\n const isString = typeof data === 'string'\n if (!isString) return false\n const isHexPrefixed = data.slice(0,2) === '0x'\n if (!isHexPrefixed) return false\n const nonPrefixed = data.slice(2)\n const isValid = nonPrefixed.match(hexRegex)\n return isValid\n}\n\nfunction mustProvideInConstructor(methodName) {\n return function(params, cb) {\n cb(new Error('ProviderEngine - HookedWalletSubprovider - Must provide \"' + methodName + '\" fn in constructor options'))\n }\n}\n","const Subprovider = require('./subprovider.js')\n\n// wraps a json-rpc-engine middleware in a subprovider interface\n\nclass JsonRpcEngineMiddlewareSubprovider extends Subprovider {\n\n // take a constructorFn to call once we have a reference to the engine\n constructor (constructorFn) {\n super()\n if (!constructorFn) throw new Error('JsonRpcEngineMiddlewareSubprovider - no constructorFn specified')\n this._constructorFn = constructorFn\n }\n\n // this is called once the subprovider has been added to the provider engine\n setEngine (engine) {\n if (this.middleware) throw new Error('JsonRpcEngineMiddlewareSubprovider - subprovider added to engine twice')\n const blockTracker = engine._blockTracker\n const middleware = this._constructorFn({ engine, provider: engine, blockTracker })\n if (!middleware) throw new Error('JsonRpcEngineMiddlewareSubprovider - _constructorFn did not return middleware')\n if (typeof middleware !== 'function') throw new Error('JsonRpcEngineMiddlewareSubprovider - specified middleware is not a function')\n this.middleware = middleware\n }\n\n handleRequest (req, provEngNext, provEngEnd) {\n const res = { id: req.id }\n this.middleware(req, res, middlewareNext, middlewareEnd)\n\n function middlewareNext (handler) {\n provEngNext((err, result, cb) => {\n // update response object with result or error\n if (err) {\n delete res.result\n res.error = { message: err.message || err }\n } else {\n res.result = result\n }\n // call middleware's next handler (even if error)\n if (handler) {\n handler(cb)\n } else {\n cb()\n }\n })\n }\n\n function middlewareEnd (err) {\n if (err) return provEngEnd(err)\n provEngEnd(null, res.result)\n }\n }\n\n}\n\nmodule.exports = JsonRpcEngineMiddlewareSubprovider\n","const inherits = require('util').inherits\nconst Transaction = require('ethereumjs-tx')\nconst ethUtil = require('ethereumjs-util')\nconst Subprovider = require('./subprovider.js')\nconst blockTagForPayload = require('../util/rpc-cache-utils').blockTagForPayload\n\nmodule.exports = NonceTrackerSubprovider\n\n// handles the following RPC methods:\n// eth_getTransactionCount (pending only)\n//\n// observes the following RPC methods:\n// eth_sendRawTransaction\n// evm_revert (to clear the nonce cache)\n\ninherits(NonceTrackerSubprovider, Subprovider)\n\nfunction NonceTrackerSubprovider(opts){\n const self = this\n\n self.nonceCache = {}\n}\n\nNonceTrackerSubprovider.prototype.handleRequest = function(payload, next, end){\n const self = this\n\n switch(payload.method) {\n\n case 'eth_getTransactionCount':\n var blockTag = blockTagForPayload(payload)\n var address = payload.params[0].toLowerCase()\n var cachedResult = self.nonceCache[address]\n // only handle requests against the 'pending' blockTag\n if (blockTag === 'pending') {\n // has a result\n if (cachedResult) {\n end(null, cachedResult)\n // fallthrough then populate cache\n } else {\n next(function(err, result, cb){\n if (err) return cb()\n if (self.nonceCache[address] === undefined) {\n self.nonceCache[address] = result\n }\n cb()\n })\n }\n } else {\n next()\n }\n return\n\n case 'eth_sendRawTransaction':\n // allow the request to continue normally\n next(function(err, result, cb){\n // only update local nonce if tx was submitted correctly\n if (err) return cb()\n // parse raw tx\n var rawTx = payload.params[0]\n var stripped = ethUtil.stripHexPrefix(rawTx)\n var rawData = Buffer.from(ethUtil.stripHexPrefix(rawTx), 'hex')\n var tx = new Transaction(Buffer.from(ethUtil.stripHexPrefix(rawTx), 'hex'))\n // extract address\n var address = '0x'+tx.getSenderAddress().toString('hex').toLowerCase()\n // extract nonce and increment\n var nonce = ethUtil.bufferToInt(tx.nonce)\n nonce++\n // hexify and normalize\n var hexNonce = nonce.toString(16)\n if (hexNonce.length%2) hexNonce = '0'+hexNonce\n hexNonce = '0x'+hexNonce\n // dont update our record on the nonce until the submit was successful\n // update cache\n self.nonceCache[address] = hexNonce\n cb()\n })\n return\n\n // Clear cache on a testrpc revert\n case 'evm_revert':\n self.nonceCache = {}\n next()\n return\n\n default:\n next()\n return\n\n }\n}\n","const createPayload = require('../util/create-payload.js')\n\nmodule.exports = SubProvider\n\n// this is the base class for a subprovider -- mostly helpers\n\n\nfunction SubProvider() {\n\n}\n\nSubProvider.prototype.setEngine = function(engine) {\n const self = this\n if (self.engine) return\n self.engine = engine\n engine.on('block', function(block) {\n self.currentBlock = block\n })\n\n engine.on('start', function () {\n self.start()\n })\n\n engine.on('stop', function () {\n self.stop()\n })\n}\n\nSubProvider.prototype.handleRequest = function(payload, next, end) {\n throw new Error('Subproviders should override `handleRequest`.')\n}\n\nSubProvider.prototype.emitPayload = function(payload, cb){\n const self = this\n self.engine.sendAsync(createPayload(payload), cb)\n}\n\n// dummies for overriding\n\nSubProvider.prototype.stop = function () {}\n\nSubProvider.prototype.start = function () {}\n","const ProviderSubprovider = require('./json-rpc-engine-middleware')\nconst createSubscriptionManager = require('eth-json-rpc-filters/subscriptionManager')\n\nclass SubscriptionsSubprovider extends ProviderSubprovider {\n constructor() {\n super(({ blockTracker, provider, engine }) => {\n const { events, middleware } = createSubscriptionManager({ blockTracker, provider })\n // forward subscription events on the engine\n events.on('notification', (data) => engine.emit('data', null, data))\n // return the subscription install/remove middleware\n return middleware\n })\n }\n}\n\nmodule.exports = SubscriptionsSubprovider\n","const getRandomId = require('./random-id.js')\nconst extend = require('xtend')\n\nmodule.exports = createPayload\n\n\nfunction createPayload(data){\n return extend({\n // defaults\n id: getRandomId(),\n jsonrpc: '2.0',\n params: [],\n // user-specified\n }, data)\n}\n","const createPayload = require('./create-payload.js')\n\nmodule.exports = estimateGas\n\n/*\n\nThis is a work around for https://github.com/ethereum/go-ethereum/issues/2577\n\n*/\n\n\nfunction estimateGas(provider, txParams, cb) {\n provider.sendAsync(createPayload({\n method: 'eth_estimateGas',\n params: [txParams]\n }), function(err, res){\n if (err) {\n // handle simple value transfer case\n if (err.message === 'no contract code at given address') {\n return cb(null, '0xcf08')\n } else {\n return cb(err) \n }\n }\n cb(null, res.result)\n })\n}","module.exports = createRandomId\n\n\nfunction createRandomId () {\n // random id\n return Math.floor(Number.MAX_SAFE_INTEGER * Math.random())\n}","const stringify = require('json-stable-stringify')\n\nmodule.exports = {\n cacheIdentifierForPayload: cacheIdentifierForPayload,\n canCache: canCache,\n blockTagForPayload: blockTagForPayload,\n paramsWithoutBlockTag: paramsWithoutBlockTag,\n blockTagParamIndex: blockTagParamIndex,\n cacheTypeForPayload: cacheTypeForPayload,\n}\n\nfunction cacheIdentifierForPayload(payload, opts = {}){\n if (!canCache(payload)) return null\n const { includeBlockRef } = opts\n const params = includeBlockRef ? payload.params : paramsWithoutBlockTag(payload)\n return payload.method + ':' + stringify(params)\n}\n\nfunction canCache(payload){\n return cacheTypeForPayload(payload) !== 'never'\n}\n\nfunction blockTagForPayload(payload){\n var index = blockTagParamIndex(payload);\n\n // Block tag param not passed.\n if (index >= payload.params.length) {\n return null;\n }\n\n return payload.params[index];\n}\n\nfunction paramsWithoutBlockTag(payload){\n var index = blockTagParamIndex(payload);\n\n // Block tag param not passed.\n if (index >= payload.params.length) {\n return payload.params;\n }\n\n // eth_getBlockByNumber has the block tag first, then the optional includeTx? param\n if (payload.method === 'eth_getBlockByNumber') {\n return payload.params.slice(1);\n }\n\n return payload.params.slice(0,index);\n}\n\nfunction blockTagParamIndex(payload){\n switch(payload.method) {\n // blockTag is third param\n case 'eth_getStorageAt':\n return 2\n // blockTag is second param\n case 'eth_getBalance':\n case 'eth_getCode':\n case 'eth_getTransactionCount':\n case 'eth_call':\n case 'eth_estimateGas':\n return 1\n // blockTag is first param\n case 'eth_getBlockByNumber':\n return 0\n // there is no blockTag\n default:\n return undefined\n }\n}\n\nfunction cacheTypeForPayload(payload) {\n switch (payload.method) {\n // cache permanently\n case 'web3_clientVersion':\n case 'web3_sha3':\n case 'eth_protocolVersion':\n case 'eth_getBlockTransactionCountByHash':\n case 'eth_getUncleCountByBlockHash':\n case 'eth_getCode':\n case 'eth_getBlockByHash':\n case 'eth_getTransactionByHash':\n case 'eth_getTransactionByBlockHashAndIndex':\n case 'eth_getTransactionReceipt':\n case 'eth_getUncleByBlockHashAndIndex':\n case 'eth_getCompilers':\n case 'eth_compileLLL':\n case 'eth_compileSolidity':\n case 'eth_compileSerpent':\n case 'shh_version':\n return 'perma'\n\n // cache until fork\n case 'eth_getBlockByNumber':\n case 'eth_getBlockTransactionCountByNumber':\n case 'eth_getUncleCountByBlockNumber':\n case 'eth_getTransactionByBlockNumberAndIndex':\n case 'eth_getUncleByBlockNumberAndIndex':\n return 'fork'\n\n // cache for block\n case 'eth_gasPrice':\n case 'eth_getBalance':\n case 'eth_getStorageAt':\n case 'eth_getTransactionCount':\n case 'eth_call':\n case 'eth_estimateGas':\n case 'eth_getFilterLogs':\n case 'eth_getLogs':\n case 'eth_blockNumber':\n return 'block'\n\n // never cache\n case 'net_version':\n case 'net_peerCount':\n case 'net_listening':\n case 'eth_syncing':\n case 'eth_sign':\n case 'eth_coinbase':\n case 'eth_mining':\n case 'eth_hashrate':\n case 'eth_accounts':\n case 'eth_sendTransaction':\n case 'eth_sendRawTransaction':\n case 'eth_newFilter':\n case 'eth_newBlockFilter':\n case 'eth_newPendingTransactionFilter':\n case 'eth_uninstallFilter':\n case 'eth_getFilterChanges':\n case 'eth_getWork':\n case 'eth_submitWork':\n case 'eth_submitHashrate':\n case 'db_putString':\n case 'db_getString':\n case 'db_putHex':\n case 'db_getHex':\n case 'shh_post':\n case 'shh_newIdentity':\n case 'shh_hasIdentity':\n case 'shh_newGroup':\n case 'shh_addToGroup':\n case 'shh_newFilter':\n case 'shh_uninstallFilter':\n case 'shh_getFilterChanges':\n case 'shh_getMessages':\n return 'never'\n }\n}\n","const EventEmitter = require('events').EventEmitter\nconst inherits = require('util').inherits\n\nmodule.exports = Stoplight\n\n\ninherits(Stoplight, EventEmitter)\n\nfunction Stoplight(){\n const self = this\n EventEmitter.call(self)\n self.isLocked = true\n}\n\nStoplight.prototype.go = function(){\n const self = this\n self.isLocked = false\n self.emit('unlock')\n}\n\nStoplight.prototype.stop = function(){\n const self = this\n self.isLocked = true\n self.emit('lock')\n}\n\nStoplight.prototype.await = function(fn){\n const self = this\n if (self.isLocked) {\n self.once('unlock', fn)\n } else {\n setTimeout(fn)\n }\n}","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/** @file httpprovider.js\n * @authors:\n * Marek Kotewicz \n * Marian Oancea\n * Fabian Vogelsteller \n * @date 2015\n */\nvar errors = require('web3-core-helpers').errors;\nvar XHR2 = require('xhr2-cookies').XMLHttpRequest; // jshint ignore: line\nvar http = require('http');\nvar https = require('https');\n/**\n * HttpProvider should be used to send rpc calls over http\n */\nvar HttpProvider = function HttpProvider(host, options) {\n options = options || {};\n this.withCredentials = options.withCredentials || false;\n this.timeout = options.timeout || 0;\n this.headers = options.headers;\n this.agent = options.agent;\n this.connected = false;\n // keepAlive is true unless explicitly set to false\n const keepAlive = options.keepAlive !== false;\n this.host = host || 'http://localhost:8545';\n if (!this.agent) {\n if (this.host.substring(0, 5) === \"https\") {\n this.httpsAgent = new https.Agent({ keepAlive });\n }\n else {\n this.httpAgent = new http.Agent({ keepAlive });\n }\n }\n};\nHttpProvider.prototype._prepareRequest = function () {\n var request;\n // the current runtime is a browser\n if (typeof XMLHttpRequest !== 'undefined') {\n request = new XMLHttpRequest();\n }\n else {\n request = new XHR2();\n var agents = { httpsAgent: this.httpsAgent, httpAgent: this.httpAgent, baseUrl: this.baseUrl };\n if (this.agent) {\n agents.httpsAgent = this.agent.https;\n agents.httpAgent = this.agent.http;\n agents.baseUrl = this.agent.baseUrl;\n }\n request.nodejsSet(agents);\n }\n request.open('POST', this.host, true);\n request.setRequestHeader('Content-Type', 'application/json');\n request.timeout = this.timeout;\n request.withCredentials = this.withCredentials;\n if (this.headers) {\n this.headers.forEach(function (header) {\n request.setRequestHeader(header.name, header.value);\n });\n }\n return request;\n};\n/**\n * Should be used to make async request\n *\n * @method send\n * @param {Object} payload\n * @param {Function} callback triggered on end with (err, result)\n */\nHttpProvider.prototype.send = function (payload, callback) {\n var _this = this;\n var request = this._prepareRequest();\n request.onreadystatechange = function () {\n if (request.readyState === 4 && request.timeout !== 1) {\n var result = request.responseText;\n var error = null;\n try {\n result = JSON.parse(result);\n }\n catch (e) {\n error = errors.InvalidResponse(request.responseText);\n }\n _this.connected = true;\n callback(error, result);\n }\n };\n request.ontimeout = function () {\n _this.connected = false;\n callback(errors.ConnectionTimeout(this.timeout));\n };\n try {\n request.send(JSON.stringify(payload));\n }\n catch (error) {\n this.connected = false;\n callback(errors.InvalidConnection(this.host));\n }\n};\nHttpProvider.prototype.disconnect = function () {\n //NO OP\n};\n/**\n * Returns the desired boolean.\n *\n * @method supportsSubscriptions\n * @returns {boolean}\n */\nHttpProvider.prototype.supportsSubscriptions = function () {\n return false;\n};\nmodule.exports = HttpProvider;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/** @file index.js\n * @authors:\n * Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar errors = require('web3-core-helpers').errors;\nvar oboe = require('oboe');\nvar IpcProvider = function IpcProvider(path, net) {\n var _this = this;\n this.responseCallbacks = {};\n this.notificationCallbacks = [];\n this.path = path;\n this.connected = false;\n this.connection = net.connect({ path: this.path });\n this.addDefaultEvents();\n // LISTEN FOR CONNECTION RESPONSES\n var callback = function (result) {\n /*jshint maxcomplexity: 6 */\n var id = null;\n // get the id which matches the returned id\n if (Array.isArray(result)) {\n result.forEach(function (load) {\n if (_this.responseCallbacks[load.id])\n id = load.id;\n });\n }\n else {\n id = result.id;\n }\n // notification\n if (!id && result.method.indexOf('_subscription') !== -1) {\n _this.notificationCallbacks.forEach(function (callback) {\n if (typeof callback === 'function')\n callback(result);\n });\n // fire the callback\n }\n else if (_this.responseCallbacks[id]) {\n _this.responseCallbacks[id](null, result);\n delete _this.responseCallbacks[id];\n }\n };\n // use oboe.js for Sockets\n if (net.constructor.name === 'Socket') {\n oboe(this.connection)\n .done(callback);\n }\n else {\n this.connection.on('data', function (data) {\n _this._parseResponse(data.toString()).forEach(callback);\n });\n }\n};\n/**\nWill add the error and end event to timeout existing calls\n\n@method addDefaultEvents\n*/\nIpcProvider.prototype.addDefaultEvents = function () {\n var _this = this;\n this.connection.on('connect', function () {\n _this.connected = true;\n });\n this.connection.on('close', function () {\n _this.connected = false;\n });\n this.connection.on('error', function () {\n _this._timeout();\n });\n this.connection.on('end', function () {\n _this._timeout();\n });\n this.connection.on('timeout', function () {\n _this._timeout();\n });\n};\n/**\n Will parse the response and make an array out of it.\n\n NOTE, this exists for backwards compatibility reasons.\n\n @method _parseResponse\n @param {String} data\n */\nIpcProvider.prototype._parseResponse = function (data) {\n var _this = this, returnValues = [];\n // DE-CHUNKER\n var dechunkedData = data\n .replace(/\\}[\\n\\r]?\\{/g, '}|--|{') // }{\n .replace(/\\}\\][\\n\\r]?\\[\\{/g, '}]|--|[{') // }][{\n .replace(/\\}[\\n\\r]?\\[\\{/g, '}|--|[{') // }[{\n .replace(/\\}\\][\\n\\r]?\\{/g, '}]|--|{') // }]{\n .split('|--|');\n dechunkedData.forEach(function (data) {\n // prepend the last chunk\n if (_this.lastChunk)\n data = _this.lastChunk + data;\n var result = null;\n try {\n result = JSON.parse(data);\n }\n catch (e) {\n _this.lastChunk = data;\n // start timeout to cancel all requests\n clearTimeout(_this.lastChunkTimeout);\n _this.lastChunkTimeout = setTimeout(function () {\n _this._timeout();\n throw errors.InvalidResponse(data);\n }, 1000 * 15);\n return;\n }\n // cancel timeout and set chunk to null\n clearTimeout(_this.lastChunkTimeout);\n _this.lastChunk = null;\n if (result)\n returnValues.push(result);\n });\n return returnValues;\n};\n/**\nGet the adds a callback to the responseCallbacks object,\nwhich will be called if a response matching the response Id will arrive.\n\n@method _addResponseCallback\n*/\nIpcProvider.prototype._addResponseCallback = function (payload, callback) {\n var id = payload.id || payload[0].id;\n var method = payload.method || payload[0].method;\n this.responseCallbacks[id] = callback;\n this.responseCallbacks[id].method = method;\n};\n/**\nTimeout all requests when the end/error event is fired\n\n@method _timeout\n*/\nIpcProvider.prototype._timeout = function () {\n for (var key in this.responseCallbacks) {\n if (this.responseCallbacks.hasOwnProperty(key)) {\n this.responseCallbacks[key](errors.InvalidConnection('on IPC'));\n delete this.responseCallbacks[key];\n }\n }\n};\n/**\n Try to reconnect\n\n @method reconnect\n */\nIpcProvider.prototype.reconnect = function () {\n this.connection.connect({ path: this.path });\n};\nIpcProvider.prototype.send = function (payload, callback) {\n // try reconnect, when connection is gone\n if (!this.connection.writable)\n this.connection.connect({ path: this.path });\n this.connection.write(JSON.stringify(payload));\n this._addResponseCallback(payload, callback);\n};\n/**\nSubscribes to provider events.provider\n\n@method on\n@param {String} type 'notification', 'connect', 'error', 'end' or 'data'\n@param {Function} callback the callback to call\n*/\nIpcProvider.prototype.on = function (type, callback) {\n if (typeof callback !== 'function')\n throw new Error('The second parameter callback must be a function.');\n switch (type) {\n case 'data':\n this.notificationCallbacks.push(callback);\n break;\n // adds error, end, timeout, connect\n default:\n this.connection.on(type, callback);\n break;\n }\n};\n/**\n Subscribes to provider events.provider\n\n @method on\n @param {String} type 'connect', 'error', 'end' or 'data'\n @param {Function} callback the callback to call\n */\nIpcProvider.prototype.once = function (type, callback) {\n if (typeof callback !== 'function')\n throw new Error('The second parameter callback must be a function.');\n this.connection.once(type, callback);\n};\n/**\nRemoves event listener\n\n@method removeListener\n@param {String} type 'data', 'connect', 'error', 'end' or 'data'\n@param {Function} callback the callback to call\n*/\nIpcProvider.prototype.removeListener = function (type, callback) {\n var _this = this;\n switch (type) {\n case 'data':\n this.notificationCallbacks.forEach(function (cb, index) {\n if (cb === callback)\n _this.notificationCallbacks.splice(index, 1);\n });\n break;\n default:\n this.connection.removeListener(type, callback);\n break;\n }\n};\n/**\nRemoves all event listeners\n\n@method removeAllListeners\n@param {String} type 'data', 'connect', 'error', 'end' or 'data'\n*/\nIpcProvider.prototype.removeAllListeners = function (type) {\n switch (type) {\n case 'data':\n this.notificationCallbacks = [];\n break;\n default:\n this.connection.removeAllListeners(type);\n break;\n }\n};\n/**\nResets the providers, clears all callbacks\n\n@method reset\n*/\nIpcProvider.prototype.reset = function () {\n this._timeout();\n this.notificationCallbacks = [];\n this.connection.removeAllListeners('error');\n this.connection.removeAllListeners('end');\n this.connection.removeAllListeners('timeout');\n this.addDefaultEvents();\n};\n/**\n * Returns the desired boolean.\n *\n * @method supportsSubscriptions\n * @returns {boolean}\n */\nIpcProvider.prototype.supportsSubscriptions = function () {\n return true;\n};\nmodule.exports = IpcProvider;\n","var isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\nvar isRN = typeof navigator !== 'undefined' && navigator.product === 'ReactNative';\nvar _btoa = null;\nvar helpers = null;\nif (isNode || isRN) {\n _btoa = function (str) {\n return Buffer.from(str).toString('base64');\n };\n var url = require('url');\n if (url.URL) {\n // Use the new Node 6+ API for parsing URLs that supports username/password\n var newURL = url.URL;\n helpers = function (url) {\n return new newURL(url);\n };\n }\n else {\n // Web3 supports Node.js 5, so fall back to the legacy URL API if necessary\n helpers = require('url').parse;\n }\n}\nelse {\n _btoa = btoa.bind(typeof globalThis === 'object' ? globalThis : self);\n helpers = function (url) {\n return new URL(url);\n };\n}\nmodule.exports = {\n parseURL: helpers,\n btoa: _btoa\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file WebsocketProvider.js\n * @authors: Samuel Furter , Fabian Vogelsteller \n * @date 2019\n */\n'use strict';\nvar EventEmitter = require('eventemitter3');\nvar helpers = require('./helpers.js');\nvar errors = require('web3-core-helpers').errors;\nvar Ws = require('websocket').w3cwebsocket;\n/**\n * @param {string} url\n * @param {Object} options\n *\n * @constructor\n */\nvar WebsocketProvider = function WebsocketProvider(url, options) {\n EventEmitter.call(this);\n options = options || {};\n this.url = url;\n this._customTimeout = options.timeout || 1000 * 15;\n this.headers = options.headers || {};\n this.protocol = options.protocol || undefined;\n this.reconnectOptions = Object.assign({\n auto: false,\n delay: 5000,\n maxAttempts: false,\n onTimeout: false\n }, options.reconnect);\n this.clientConfig = options.clientConfig || undefined; // Allow a custom client configuration\n this.requestOptions = options.requestOptions || undefined; // Allow a custom request options (https://github.com/theturtle32/WebSocket-Node/blob/master/docs/WebSocketClient.md#connectrequesturl-requestedprotocols-origin-headers-requestoptions)\n this.DATA = 'data';\n this.CLOSE = 'close';\n this.ERROR = 'error';\n this.CONNECT = 'connect';\n this.RECONNECT = 'reconnect';\n this.connection = null;\n this.requestQueue = new Map();\n this.responseQueue = new Map();\n this.reconnectAttempts = 0;\n this.reconnecting = false;\n // The w3cwebsocket implementation does not support Basic Auth\n // username/password in the URL. So generate the basic auth header, and\n // pass through with any additional headers supplied in constructor\n var parsedURL = helpers.parseURL(url);\n if (parsedURL.username && parsedURL.password) {\n this.headers.authorization = 'Basic ' + helpers.btoa(parsedURL.username + ':' + parsedURL.password);\n }\n // When all node core implementations that do not have the\n // WHATWG compatible URL parser go out of service this line can be removed.\n if (parsedURL.auth) {\n this.headers.authorization = 'Basic ' + helpers.btoa(parsedURL.auth);\n }\n // make property `connected` which will return the current connection status\n Object.defineProperty(this, 'connected', {\n get: function () {\n return this.connection && this.connection.readyState === this.connection.OPEN;\n },\n enumerable: true\n });\n this.connect();\n};\n// Inherit from EventEmitter\nWebsocketProvider.prototype = Object.create(EventEmitter.prototype);\nWebsocketProvider.prototype.constructor = WebsocketProvider;\n/**\n * Connects to the configured node\n *\n * @method connect\n *\n * @returns {void}\n */\nWebsocketProvider.prototype.connect = function () {\n this.connection = new Ws(this.url, this.protocol, undefined, this.headers, this.requestOptions, this.clientConfig);\n this._addSocketListeners();\n};\n/**\n * Listener for the `data` event of the underlying WebSocket object\n *\n * @method _onMessage\n *\n * @returns {void}\n */\nWebsocketProvider.prototype._onMessage = function (e) {\n var _this = this;\n this._parseResponse((typeof e.data === 'string') ? e.data : '').forEach(function (result) {\n if (result.method && result.method.indexOf('_subscription') !== -1) {\n _this.emit(_this.DATA, result);\n return;\n }\n var id = result.id;\n // get the id which matches the returned id\n if (Array.isArray(result)) {\n id = result[0].id;\n }\n if (_this.responseQueue.has(id)) {\n if (_this.responseQueue.get(id).callback !== undefined) {\n _this.responseQueue.get(id).callback(false, result);\n }\n _this.responseQueue.delete(id);\n }\n });\n};\n/**\n * Listener for the `open` event of the underlying WebSocket object\n *\n * @method _onConnect\n *\n * @returns {void}\n */\nWebsocketProvider.prototype._onConnect = function () {\n this.emit(this.CONNECT);\n this.reconnectAttempts = 0;\n this.reconnecting = false;\n if (this.requestQueue.size > 0) {\n var _this = this;\n this.requestQueue.forEach(function (request, key) {\n _this.send(request.payload, request.callback);\n _this.requestQueue.delete(key);\n });\n }\n};\n/**\n * Listener for the `close` event of the underlying WebSocket object\n *\n * @method _onClose\n *\n * @returns {void}\n */\nWebsocketProvider.prototype._onClose = function (event) {\n var _this = this;\n if (this.reconnectOptions.auto && (![1000, 1001].includes(event.code) || event.wasClean === false)) {\n this.reconnect();\n return;\n }\n this.emit(this.CLOSE, event);\n if (this.requestQueue.size > 0) {\n this.requestQueue.forEach(function (request, key) {\n request.callback(errors.ConnectionNotOpenError(event));\n _this.requestQueue.delete(key);\n });\n }\n if (this.responseQueue.size > 0) {\n this.responseQueue.forEach(function (request, key) {\n request.callback(errors.InvalidConnection('on WS', event));\n _this.responseQueue.delete(key);\n });\n }\n this._removeSocketListeners();\n this.removeAllListeners();\n};\n/**\n * Will add the required socket listeners\n *\n * @method _addSocketListeners\n *\n * @returns {void}\n */\nWebsocketProvider.prototype._addSocketListeners = function () {\n this.connection.addEventListener('message', this._onMessage.bind(this));\n this.connection.addEventListener('open', this._onConnect.bind(this));\n this.connection.addEventListener('close', this._onClose.bind(this));\n};\n/**\n * Will remove all socket listeners\n *\n * @method _removeSocketListeners\n *\n * @returns {void}\n */\nWebsocketProvider.prototype._removeSocketListeners = function () {\n this.connection.removeEventListener('message', this._onMessage);\n this.connection.removeEventListener('open', this._onConnect);\n this.connection.removeEventListener('close', this._onClose);\n};\n/**\n * Will parse the response and make an array out of it.\n *\n * @method _parseResponse\n *\n * @param {String} data\n *\n * @returns {Array}\n */\nWebsocketProvider.prototype._parseResponse = function (data) {\n var _this = this, returnValues = [];\n // DE-CHUNKER\n var dechunkedData = data\n .replace(/\\}[\\n\\r]?\\{/g, '}|--|{') // }{\n .replace(/\\}\\][\\n\\r]?\\[\\{/g, '}]|--|[{') // }][{\n .replace(/\\}[\\n\\r]?\\[\\{/g, '}|--|[{') // }[{\n .replace(/\\}\\][\\n\\r]?\\{/g, '}]|--|{') // }]{\n .split('|--|');\n dechunkedData.forEach(function (data) {\n // prepend the last chunk\n if (_this.lastChunk)\n data = _this.lastChunk + data;\n var result = null;\n try {\n result = JSON.parse(data);\n }\n catch (e) {\n _this.lastChunk = data;\n // start timeout to cancel all requests\n clearTimeout(_this.lastChunkTimeout);\n _this.lastChunkTimeout = setTimeout(function () {\n if (_this.reconnectOptions.auto && _this.reconnectOptions.onTimeout) {\n _this.reconnect();\n return;\n }\n _this.emit(_this.ERROR, errors.ConnectionTimeout(_this._customTimeout));\n if (_this.requestQueue.size > 0) {\n _this.requestQueue.forEach(function (request, key) {\n request.callback(errors.ConnectionTimeout(_this._customTimeout));\n _this.requestQueue.delete(key);\n });\n }\n }, _this._customTimeout);\n return;\n }\n // cancel timeout and set chunk to null\n clearTimeout(_this.lastChunkTimeout);\n _this.lastChunk = null;\n if (result)\n returnValues.push(result);\n });\n return returnValues;\n};\n/**\n * Does check if the provider is connecting and will add it to the queue or will send it directly\n *\n * @method send\n *\n * @param {Object} payload\n * @param {Function} callback\n *\n * @returns {void}\n */\nWebsocketProvider.prototype.send = function (payload, callback) {\n var _this = this;\n var id = payload.id;\n var request = { payload: payload, callback: callback };\n if (Array.isArray(payload)) {\n id = payload[0].id;\n }\n if (this.connection.readyState === this.connection.CONNECTING || this.reconnecting) {\n this.requestQueue.set(id, request);\n return;\n }\n if (this.connection.readyState !== this.connection.OPEN) {\n this.requestQueue.delete(id);\n this.emit(this.ERROR, errors.ConnectionNotOpenError());\n request.callback(errors.ConnectionNotOpenError());\n return;\n }\n this.responseQueue.set(id, request);\n this.requestQueue.delete(id);\n try {\n this.connection.send(JSON.stringify(request.payload));\n }\n catch (error) {\n request.callback(error);\n _this.responseQueue.delete(id);\n }\n};\n/**\n * Resets the providers, clears all callbacks\n *\n * @method reset\n *\n * @returns {void}\n */\nWebsocketProvider.prototype.reset = function () {\n this.responseQueue.clear();\n this.requestQueue.clear();\n this.removeAllListeners();\n this._removeSocketListeners();\n this._addSocketListeners();\n};\n/**\n * Closes the current connection with the given code and reason arguments\n *\n * @method disconnect\n *\n * @param {number} code\n * @param {string} reason\n *\n * @returns {void}\n */\nWebsocketProvider.prototype.disconnect = function (code, reason) {\n this._removeSocketListeners();\n this.connection.close(code || 1000, reason);\n};\n/**\n * Returns the desired boolean.\n *\n * @method supportsSubscriptions\n *\n * @returns {boolean}\n */\nWebsocketProvider.prototype.supportsSubscriptions = function () {\n return true;\n};\n/**\n * Removes the listeners and reconnects to the socket.\n *\n * @method reconnect\n *\n * @returns {void}\n */\nWebsocketProvider.prototype.reconnect = function () {\n var _this = this;\n this.reconnecting = true;\n if (this.responseQueue.size > 0) {\n this.responseQueue.forEach(function (request, key) {\n request.callback(errors.PendingRequestsOnReconnectingError());\n _this.responseQueue.delete(key);\n });\n }\n if (!this.reconnectOptions.maxAttempts ||\n this.reconnectAttempts < this.reconnectOptions.maxAttempts) {\n setTimeout(function () {\n _this.reconnectAttempts++;\n _this._removeSocketListeners();\n _this.emit(_this.RECONNECT, _this.reconnectAttempts);\n _this.connect();\n }, this.reconnectOptions.delay);\n return;\n }\n this.emit(this.ERROR, errors.MaxAttemptsReachedOnReconnectingError());\n this.reconnecting = false;\n if (this.requestQueue.size > 0) {\n this.requestQueue.forEach(function (request, key) {\n request.callback(errors.MaxAttemptsReachedOnReconnectingError());\n _this.requestQueue.delete(key);\n });\n }\n};\nmodule.exports = WebsocketProvider;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar core = require('web3-core');\nvar Subscriptions = require('web3-core-subscriptions').subscriptions;\nvar Method = require('web3-core-method');\n// var formatters = require('web3-core-helpers').formatters;\nvar Net = require('web3-net');\nvar Shh = function Shh() {\n var _this = this;\n // sets _requestmanager\n core.packageInit(this, arguments);\n // overwrite package setRequestManager\n var setRequestManager = this.setRequestManager;\n this.setRequestManager = function (manager) {\n setRequestManager(manager);\n _this.net.setRequestManager(manager);\n return true;\n };\n // overwrite setProvider\n var setProvider = this.setProvider;\n this.setProvider = function () {\n setProvider.apply(_this, arguments);\n _this.setRequestManager(_this._requestManager);\n };\n this.net = new Net(this);\n [\n new Subscriptions({\n name: 'subscribe',\n type: 'shh',\n subscriptions: {\n 'messages': {\n params: 1\n // inputFormatter: [formatters.inputPostFormatter],\n // outputFormatter: formatters.outputPostFormatter\n }\n }\n }),\n new Method({\n name: 'getVersion',\n call: 'shh_version',\n params: 0\n }),\n new Method({\n name: 'getInfo',\n call: 'shh_info',\n params: 0\n }),\n new Method({\n name: 'setMaxMessageSize',\n call: 'shh_setMaxMessageSize',\n params: 1\n }),\n new Method({\n name: 'setMinPoW',\n call: 'shh_setMinPoW',\n params: 1\n }),\n new Method({\n name: 'markTrustedPeer',\n call: 'shh_markTrustedPeer',\n params: 1\n }),\n new Method({\n name: 'newKeyPair',\n call: 'shh_newKeyPair',\n params: 0\n }),\n new Method({\n name: 'addPrivateKey',\n call: 'shh_addPrivateKey',\n params: 1\n }),\n new Method({\n name: 'deleteKeyPair',\n call: 'shh_deleteKeyPair',\n params: 1\n }),\n new Method({\n name: 'hasKeyPair',\n call: 'shh_hasKeyPair',\n params: 1\n }),\n new Method({\n name: 'getPublicKey',\n call: 'shh_getPublicKey',\n params: 1\n }),\n new Method({\n name: 'getPrivateKey',\n call: 'shh_getPrivateKey',\n params: 1\n }),\n new Method({\n name: 'newSymKey',\n call: 'shh_newSymKey',\n params: 0\n }),\n new Method({\n name: 'addSymKey',\n call: 'shh_addSymKey',\n params: 1\n }),\n new Method({\n name: 'generateSymKeyFromPassword',\n call: 'shh_generateSymKeyFromPassword',\n params: 1\n }),\n new Method({\n name: 'hasSymKey',\n call: 'shh_hasSymKey',\n params: 1\n }),\n new Method({\n name: 'getSymKey',\n call: 'shh_getSymKey',\n params: 1\n }),\n new Method({\n name: 'deleteSymKey',\n call: 'shh_deleteSymKey',\n params: 1\n }),\n new Method({\n name: 'newMessageFilter',\n call: 'shh_newMessageFilter',\n params: 1\n }),\n new Method({\n name: 'getFilterMessages',\n call: 'shh_getFilterMessages',\n params: 1\n }),\n new Method({\n name: 'deleteMessageFilter',\n call: 'shh_deleteMessageFilter',\n params: 1\n }),\n new Method({\n name: 'post',\n call: 'shh_post',\n params: 1,\n inputFormatter: [null]\n }),\n new Method({\n name: 'unsubscribe',\n call: 'shh_unsubscribe',\n params: 1\n })\n ].forEach(function (method) {\n method.attachToObject(_this);\n method.setRequestManager(_this._requestManager);\n });\n};\nShh.prototype.clearSubscriptions = function () {\n this._requestManager.clearSubscriptions();\n};\ncore.addProviders(Shh);\nmodule.exports = Shh;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file utils.js\n * @author Marek Kotewicz \n * @author Fabian Vogelsteller \n * @date 2017\n */\nvar ethjsUnit = require('ethjs-unit');\nvar utils = require('./utils.js');\nvar soliditySha3 = require('./soliditySha3.js');\nvar randombytes = require('randombytes');\nvar BN = require('bn.js');\n/**\n * Fires an error in an event emitter and callback and returns the eventemitter\n *\n * @method _fireError\n * @param {Object} error a string, a error, or an object with {message, data}\n * @param {Object} emitter\n * @param {Function} reject\n * @param {Function} callback\n * @param {any} optionalData\n * @return {Object} the emitter\n */\nvar _fireError = function (error, emitter, reject, callback, optionalData) {\n /*jshint maxcomplexity: 10 */\n // add data if given\n if (!!error && typeof error === 'object' && !(error instanceof Error) && error.data) {\n if (!!error.data && typeof error.data === 'object' || Array.isArray(error.data)) {\n error.data = JSON.stringify(error.data, null, 2);\n }\n error = error.message + \"\\n\" + error.data;\n }\n if (typeof error === 'string') {\n error = new Error(error);\n }\n if (typeof callback === 'function') {\n callback(error, optionalData);\n }\n if (typeof reject === 'function') {\n // suppress uncatched error if an error listener is present\n // OR suppress uncatched error if an callback listener is present\n if (emitter &&\n (typeof emitter.listeners === 'function' &&\n emitter.listeners('error').length) || typeof callback === 'function') {\n emitter.catch(function () { });\n }\n // reject later, to be able to return emitter\n setTimeout(function () {\n reject(error);\n }, 1);\n }\n if (emitter && typeof emitter.emit === 'function') {\n // emit later, to be able to return emitter\n setTimeout(function () {\n emitter.emit('error', error, optionalData);\n emitter.removeAllListeners();\n }, 1);\n }\n return emitter;\n};\n/**\n * Should be used to create full function/event name from json abi\n *\n * @method _jsonInterfaceMethodToString\n * @param {Object} json\n * @return {String} full function/event name\n */\nvar _jsonInterfaceMethodToString = function (json) {\n if (!!json && typeof json === 'object' && json.name && json.name.indexOf('(') !== -1) {\n return json.name;\n }\n return json.name + '(' + _flattenTypes(false, json.inputs).join(',') + ')';\n};\n/**\n * Should be used to flatten json abi inputs/outputs into an array of type-representing-strings\n *\n * @method _flattenTypes\n * @param {bool} includeTuple\n * @param {Object} puts\n * @return {Array} parameters as strings\n */\nvar _flattenTypes = function (includeTuple, puts) {\n // console.log(\"entered _flattenTypes. inputs/outputs: \" + puts)\n var types = [];\n puts.forEach(function (param) {\n if (typeof param.components === 'object') {\n if (param.type.substring(0, 5) !== 'tuple') {\n throw new Error('components found but type is not tuple; report on GitHub');\n }\n var suffix = '';\n var arrayBracket = param.type.indexOf('[');\n if (arrayBracket >= 0) {\n suffix = param.type.substring(arrayBracket);\n }\n var result = _flattenTypes(includeTuple, param.components);\n // console.log(\"result should have things: \" + result)\n if (Array.isArray(result) && includeTuple) {\n // console.log(\"include tuple word, and its an array. joining...: \" + result.types)\n types.push('tuple(' + result.join(',') + ')' + suffix);\n }\n else if (!includeTuple) {\n // console.log(\"don't include tuple, but its an array. joining...: \" + result)\n types.push('(' + result.join(',') + ')' + suffix);\n }\n else {\n // console.log(\"its a single type within a tuple: \" + result.types)\n types.push('(' + result + ')');\n }\n }\n else {\n // console.log(\"its a type and not directly in a tuple: \" + param.type)\n types.push(param.type);\n }\n });\n return types;\n};\n/**\n * Returns a random hex string by the given bytes size\n *\n * @param {Number} size\n * @returns {string}\n */\nvar randomHex = function (size) {\n return '0x' + randombytes(size).toString('hex');\n};\n/**\n * Should be called to get ascii from it's hex representation\n *\n * @method hexToAscii\n * @param {String} hex\n * @returns {String} ascii string representation of hex value\n */\nvar hexToAscii = function (hex) {\n if (!utils.isHexStrict(hex))\n throw new Error('The parameter must be a valid HEX string.');\n var str = \"\";\n var i = 0, l = hex.length;\n if (hex.substring(0, 2) === '0x') {\n i = 2;\n }\n for (; i < l; i += 2) {\n var code = parseInt(hex.slice(i, i + 2), 16);\n str += String.fromCharCode(code);\n }\n return str;\n};\n/**\n * Should be called to get hex representation (prefixed by 0x) of ascii string\n *\n * @method asciiToHex\n * @param {String} str\n * @returns {String} hex representation of input string\n */\nvar asciiToHex = function (str) {\n if (!str)\n return \"0x00\";\n var hex = \"\";\n for (var i = 0; i < str.length; i++) {\n var code = str.charCodeAt(i);\n var n = code.toString(16);\n hex += n.length < 2 ? '0' + n : n;\n }\n return \"0x\" + hex;\n};\n/**\n * Returns value of unit in Wei\n *\n * @method getUnitValue\n * @param {String} unit the unit to convert to, default ether\n * @returns {BN} value of the unit (in Wei)\n * @throws error if the unit is not correct:w\n */\nvar getUnitValue = function (unit) {\n unit = unit ? unit.toLowerCase() : 'ether';\n if (!ethjsUnit.unitMap[unit]) {\n throw new Error('This unit \"' + unit + '\" doesn\\'t exist, please use the one of the following units' + JSON.stringify(ethjsUnit.unitMap, null, 2));\n }\n return unit;\n};\n/**\n * Takes a number of wei and converts it to any other ether unit.\n *\n * Possible units are:\n * SI Short SI Full Effigy Other\n * - kwei femtoether babbage\n * - mwei picoether lovelace\n * - gwei nanoether shannon nano\n * - -- microether szabo micro\n * - -- milliether finney milli\n * - ether -- --\n * - kether -- grand\n * - mether\n * - gether\n * - tether\n *\n * @method fromWei\n * @param {Number|String} number can be a number, number string or a HEX of a decimal\n * @param {String} unit the unit to convert to, default ether\n * @return {String|Object} When given a BN object it returns one as well, otherwise a number\n */\nvar fromWei = function (number, unit) {\n unit = getUnitValue(unit);\n if (!utils.isBN(number) && !(typeof number === 'string')) {\n throw new Error('Please pass numbers as strings or BN objects to avoid precision errors.');\n }\n return utils.isBN(number) ? ethjsUnit.fromWei(number, unit) : ethjsUnit.fromWei(number, unit).toString(10);\n};\n/**\n * Takes a number of a unit and converts it to wei.\n *\n * Possible units are:\n * SI Short SI Full Effigy Other\n * - kwei femtoether babbage\n * - mwei picoether lovelace\n * - gwei nanoether shannon nano\n * - -- microether szabo micro\n * - -- microether szabo micro\n * - -- milliether finney milli\n * - ether -- --\n * - kether -- grand\n * - mether\n * - gether\n * - tether\n *\n * @method toWei\n * @param {Number|String|BN} number can be a number, number string or a HEX of a decimal\n * @param {String} unit the unit to convert from, default ether\n * @return {String|Object} When given a BN object it returns one as well, otherwise a number\n */\nvar toWei = function (number, unit) {\n unit = getUnitValue(unit);\n if (!utils.isBN(number) && !(typeof number === 'string')) {\n throw new Error('Please pass numbers as strings or BN objects to avoid precision errors.');\n }\n return utils.isBN(number) ? ethjsUnit.toWei(number, unit) : ethjsUnit.toWei(number, unit).toString(10);\n};\n/**\n * Converts to a checksum address\n *\n * @method toChecksumAddress\n * @param {String} address the given HEX address\n * @return {String}\n */\nvar toChecksumAddress = function (address) {\n if (typeof address === 'undefined')\n return '';\n if (!/^(0x)?[0-9a-f]{40}$/i.test(address))\n throw new Error('Given address \"' + address + '\" is not a valid Ethereum address.');\n address = address.toLowerCase().replace(/^0x/i, '');\n var addressHash = utils.sha3(address).replace(/^0x/i, '');\n var checksumAddress = '0x';\n for (var i = 0; i < address.length; i++) {\n // If ith character is 8 to f then make it uppercase\n if (parseInt(addressHash[i], 16) > 7) {\n checksumAddress += address[i].toUpperCase();\n }\n else {\n checksumAddress += address[i];\n }\n }\n return checksumAddress;\n};\n/**\n * Returns -1 if ab; 0 if a == b.\n * For more details on this type of function, see\n * developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort\n *\n * @method compareBlockNumbers\n *\n * @param {String|Number|BN} a\n *\n * @param {String|Number|BN} b\n *\n * @returns {Number} -1, 0, or 1\n */\nvar compareBlockNumbers = function (a, b) {\n if (a == b) {\n return 0;\n }\n else if ((\"genesis\" == a || \"earliest\" == a || 0 == a) && (\"genesis\" == b || \"earliest\" == b || 0 == b)) {\n return 0;\n }\n else if (\"genesis\" == a || \"earliest\" == a) {\n // b !== a, thus a < b\n return -1;\n }\n else if (\"genesis\" == b || \"earliest\" == b) {\n // b !== a, thus a > b\n return 1;\n }\n else if (a == \"latest\") {\n if (b == \"pending\") {\n return -1;\n }\n else {\n // b !== (\"pending\" OR \"latest\"), thus a > b\n return 1;\n }\n }\n else if (b === \"latest\") {\n if (a == \"pending\") {\n return 1;\n }\n else {\n // b !== (\"pending\" OR \"latest\"), thus a > b\n return -1;\n }\n }\n else if (a == \"pending\") {\n // b (== OR <) \"latest\", thus a > b\n return 1;\n }\n else if (b == \"pending\") {\n return -1;\n }\n else {\n let bnA = new BN(a);\n let bnB = new BN(b);\n if (bnA.lt(bnB)) {\n return -1;\n }\n else if (bnA.eq(bnB)) {\n return 0;\n }\n else {\n return 1;\n }\n }\n};\nmodule.exports = {\n _fireError: _fireError,\n _jsonInterfaceMethodToString: _jsonInterfaceMethodToString,\n _flattenTypes: _flattenTypes,\n // extractDisplayName: extractDisplayName,\n // extractTypeName: extractTypeName,\n randomHex: randomHex,\n BN: utils.BN,\n isBN: utils.isBN,\n isBigNumber: utils.isBigNumber,\n isHex: utils.isHex,\n isHexStrict: utils.isHexStrict,\n sha3: utils.sha3,\n sha3Raw: utils.sha3Raw,\n keccak256: utils.sha3,\n soliditySha3: soliditySha3.soliditySha3,\n soliditySha3Raw: soliditySha3.soliditySha3Raw,\n encodePacked: soliditySha3.encodePacked,\n isAddress: utils.isAddress,\n checkAddressChecksum: utils.checkAddressChecksum,\n toChecksumAddress: toChecksumAddress,\n toHex: utils.toHex,\n toBN: utils.toBN,\n bytesToHex: utils.bytesToHex,\n hexToBytes: utils.hexToBytes,\n hexToNumberString: utils.hexToNumberString,\n hexToNumber: utils.hexToNumber,\n toDecimal: utils.hexToNumber,\n numberToHex: utils.numberToHex,\n fromDecimal: utils.numberToHex,\n hexToUtf8: utils.hexToUtf8,\n hexToString: utils.hexToUtf8,\n toUtf8: utils.hexToUtf8,\n stripHexPrefix: utils.stripHexPrefix,\n utf8ToHex: utils.utf8ToHex,\n stringToHex: utils.utf8ToHex,\n fromUtf8: utils.utf8ToHex,\n hexToAscii: hexToAscii,\n toAscii: hexToAscii,\n asciiToHex: asciiToHex,\n fromAscii: asciiToHex,\n unitMap: ethjsUnit.unitMap,\n toWei: toWei,\n fromWei: fromWei,\n padLeft: utils.leftPad,\n leftPad: utils.leftPad,\n padRight: utils.rightPad,\n rightPad: utils.rightPad,\n toTwosComplement: utils.toTwosComplement,\n isBloom: utils.isBloom,\n isUserEthereumAddressInBloom: utils.isUserEthereumAddressInBloom,\n isContractAddressInBloom: utils.isContractAddressInBloom,\n isTopic: utils.isTopic,\n isTopicInBloom: utils.isTopicInBloom,\n isInBloom: utils.isInBloom,\n compareBlockNumbers: compareBlockNumbers,\n toNumber: utils.toNumber\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file soliditySha3.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\nvar BN = require('bn.js');\nvar utils = require('./utils.js');\nvar _elementaryName = function (name) {\n /*jshint maxcomplexity:false */\n if (name.startsWith('int[')) {\n return 'int256' + name.slice(3);\n }\n else if (name === 'int') {\n return 'int256';\n }\n else if (name.startsWith('uint[')) {\n return 'uint256' + name.slice(4);\n }\n else if (name === 'uint') {\n return 'uint256';\n }\n else if (name.startsWith('fixed[')) {\n return 'fixed128x128' + name.slice(5);\n }\n else if (name === 'fixed') {\n return 'fixed128x128';\n }\n else if (name.startsWith('ufixed[')) {\n return 'ufixed128x128' + name.slice(6);\n }\n else if (name === 'ufixed') {\n return 'ufixed128x128';\n }\n return name;\n};\n// Parse N from type\nvar _parseTypeN = function (type) {\n var typesize = /^\\D+(\\d+).*$/.exec(type);\n return typesize ? parseInt(typesize[1], 10) : null;\n};\n// Parse N from type[]\nvar _parseTypeNArray = function (type) {\n var arraySize = /^\\D+\\d*\\[(\\d+)\\]$/.exec(type);\n return arraySize ? parseInt(arraySize[1], 10) : null;\n};\nvar _parseNumber = function (arg) {\n var type = typeof arg;\n if (type === 'string') {\n if (utils.isHexStrict(arg)) {\n return new BN(arg.replace(/0x/i, ''), 16);\n }\n else {\n return new BN(arg, 10);\n }\n }\n else if (type === 'number') {\n return new BN(arg);\n }\n else if (utils.isBigNumber(arg)) {\n return new BN(arg.toString(10));\n }\n else if (utils.isBN(arg)) {\n return arg;\n }\n else {\n throw new Error(arg + ' is not a number');\n }\n};\nvar _solidityPack = function (type, value, arraySize) {\n /*jshint maxcomplexity:false */\n var size, num;\n type = _elementaryName(type);\n if (type === 'bytes') {\n if (value.replace(/^0x/i, '').length % 2 !== 0) {\n throw new Error('Invalid bytes characters ' + value.length);\n }\n return value;\n }\n else if (type === 'string') {\n return utils.utf8ToHex(value);\n }\n else if (type === 'bool') {\n return value ? '01' : '00';\n }\n else if (type.startsWith('address')) {\n if (arraySize) {\n size = 64;\n }\n else {\n size = 40;\n }\n if (!utils.isAddress(value)) {\n throw new Error(value + ' is not a valid address, or the checksum is invalid.');\n }\n return utils.leftPad(value.toLowerCase(), size);\n }\n size = _parseTypeN(type);\n if (type.startsWith('bytes')) {\n if (!size) {\n throw new Error('bytes[] not yet supported in solidity');\n }\n // must be 32 byte slices when in an array\n if (arraySize) {\n size = 32;\n }\n if (size < 1 || size > 32 || size < value.replace(/^0x/i, '').length / 2) {\n throw new Error('Invalid bytes' + size + ' for ' + value);\n }\n return utils.rightPad(value, size * 2);\n }\n else if (type.startsWith('uint')) {\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid uint' + size + ' size');\n }\n num = _parseNumber(value);\n if (num.bitLength() > size) {\n throw new Error('Supplied uint exceeds width: ' + size + ' vs ' + num.bitLength());\n }\n if (num.lt(new BN(0))) {\n throw new Error('Supplied uint ' + num.toString() + ' is negative');\n }\n return size ? utils.leftPad(num.toString('hex'), size / 8 * 2) : num;\n }\n else if (type.startsWith('int')) {\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid int' + size + ' size');\n }\n num = _parseNumber(value);\n if (num.bitLength() > size) {\n throw new Error('Supplied int exceeds width: ' + size + ' vs ' + num.bitLength());\n }\n if (num.lt(new BN(0))) {\n return num.toTwos(size).toString('hex');\n }\n else {\n return size ? utils.leftPad(num.toString('hex'), size / 8 * 2) : num;\n }\n }\n else {\n // FIXME: support all other types\n throw new Error('Unsupported or invalid type: ' + type);\n }\n};\nvar _processSolidityEncodePackedArgs = function (arg) {\n /*jshint maxcomplexity:false */\n if (Array.isArray(arg)) {\n throw new Error('Autodetection of array types is not supported.');\n }\n var type, value = '';\n var hexArg, arraySize;\n // if type is given\n if (!!arg && typeof arg === 'object' && (arg.hasOwnProperty('v') || arg.hasOwnProperty('t') || arg.hasOwnProperty('value') || arg.hasOwnProperty('type'))) {\n type = arg.hasOwnProperty('t') ? arg.t : arg.type;\n value = arg.hasOwnProperty('v') ? arg.v : arg.value;\n // otherwise try to guess the type\n }\n else {\n type = utils.toHex(arg, true);\n value = utils.toHex(arg);\n if (!type.startsWith('int') && !type.startsWith('uint')) {\n type = 'bytes';\n }\n }\n if ((type.startsWith('int') || type.startsWith('uint')) && typeof value === 'string' && !/^(-)?0x/i.test(value)) {\n value = new BN(value);\n }\n // get the array size\n if (Array.isArray(value)) {\n arraySize = _parseTypeNArray(type);\n if (arraySize && value.length !== arraySize) {\n throw new Error(type + ' is not matching the given array ' + JSON.stringify(value));\n }\n else {\n arraySize = value.length;\n }\n }\n if (Array.isArray(value)) {\n hexArg = value.map(function (val) {\n return _solidityPack(type, val, arraySize).toString('hex').replace('0x', '');\n });\n return hexArg.join('');\n }\n else {\n hexArg = _solidityPack(type, value, arraySize);\n return hexArg.toString('hex').replace('0x', '');\n }\n};\n/**\n * Hashes solidity values to a sha3 hash using keccak 256\n *\n * @method soliditySha3\n * @return {Object} the sha3\n */\nvar soliditySha3 = function () {\n /*jshint maxcomplexity:false */\n var args = Array.prototype.slice.call(arguments);\n var hexArgs = args.map(_processSolidityEncodePackedArgs);\n // console.log(args, hexArgs);\n // console.log('0x'+ hexArgs.join(''));\n return utils.sha3('0x' + hexArgs.join(''));\n};\n/**\n * Hashes solidity values to a sha3 hash using keccak 256 but does return the hash of value `null` instead of `null`\n *\n * @method soliditySha3Raw\n * @return {Object} the sha3\n */\nvar soliditySha3Raw = function () {\n return utils.sha3Raw('0x' + Array.prototype.slice.call(arguments).map(_processSolidityEncodePackedArgs).join(''));\n};\n/**\n * Encode packed args to hex\n *\n * @method encodePacked\n * @return {String} the hex encoded arguments\n */\nvar encodePacked = function () {\n /*jshint maxcomplexity:false */\n var args = Array.prototype.slice.call(arguments);\n var hexArgs = args.map(_processSolidityEncodePackedArgs);\n return '0x' + hexArgs.join('').toLowerCase();\n};\nmodule.exports = {\n soliditySha3: soliditySha3,\n soliditySha3Raw: soliditySha3Raw,\n encodePacked: encodePacked\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file utils.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\nvar BN = require('bn.js');\nvar numberToBN = require('number-to-bn');\nvar utf8 = require('utf8');\nvar ethereumjsUtil = require('ethereumjs-util');\nvar ethereumBloomFilters = require('ethereum-bloom-filters');\n/**\n * Returns true if object is BN, otherwise false\n *\n * @method isBN\n * @param {Object} object\n * @return {Boolean}\n */\nvar isBN = function (object) {\n return BN.isBN(object);\n};\n/**\n * Returns true if object is BigNumber, otherwise false\n *\n * @method isBigNumber\n * @param {Object} object\n * @return {Boolean}\n */\nvar isBigNumber = function (object) {\n return object && object.constructor && object.constructor.name === 'BigNumber';\n};\n/**\n * Takes an input and transforms it into an BN\n *\n * @method toBN\n * @param {Number|String|BN} number, string, HEX string or BN\n * @return {BN} BN\n */\nvar toBN = function (number) {\n try {\n return numberToBN.apply(null, arguments);\n }\n catch (e) {\n throw new Error(e + ' Given value: \"' + number + '\"');\n }\n};\n/**\n * Takes and input transforms it into BN and if it is negative value, into two's complement\n *\n * @method toTwosComplement\n * @param {Number|String|BN} number\n * @return {String}\n */\nvar toTwosComplement = function (number) {\n return '0x' + toBN(number).toTwos(256).toString(16, 64);\n};\n/**\n * Checks if the given string is an address\n *\n * @method isAddress\n * @param {String} address the given HEX address\n * @return {Boolean}\n */\nvar isAddress = function (address) {\n // check if it has the basic requirements of an address\n if (!/^(0x)?[0-9a-f]{40}$/i.test(address)) {\n return false;\n // If it's ALL lowercase or ALL upppercase\n }\n else if (/^(0x|0X)?[0-9a-f]{40}$/.test(address) || /^(0x|0X)?[0-9A-F]{40}$/.test(address)) {\n return true;\n // Otherwise check each case\n }\n else {\n return checkAddressChecksum(address);\n }\n};\n/**\n * Checks if the given string is a checksummed address\n *\n * @method checkAddressChecksum\n * @param {String} address the given HEX address\n * @return {Boolean}\n */\nvar checkAddressChecksum = function (address) {\n // Check each case\n address = address.replace(/^0x/i, '');\n var addressHash = sha3(address.toLowerCase()).replace(/^0x/i, '');\n for (var i = 0; i < 40; i++) {\n // the nth letter should be uppercase if the nth digit of casemap is 1\n if ((parseInt(addressHash[i], 16) > 7 && address[i].toUpperCase() !== address[i]) || (parseInt(addressHash[i], 16) <= 7 && address[i].toLowerCase() !== address[i])) {\n return false;\n }\n }\n return true;\n};\n/**\n * Should be called to pad string to expected length\n *\n * @method leftPad\n * @param {String} string to be padded\n * @param {Number} chars that result string should have\n * @param {String} sign, by default 0\n * @returns {String} right aligned string\n */\nvar leftPad = function (string, chars, sign) {\n var hasPrefix = /^0x/i.test(string) || typeof string === 'number';\n string = string.toString(16).replace(/^0x/i, '');\n var padding = (chars - string.length + 1 >= 0) ? chars - string.length + 1 : 0;\n return (hasPrefix ? '0x' : '') + new Array(padding).join(sign ? sign : \"0\") + string;\n};\n/**\n * Should be called to pad string to expected length\n *\n * @method rightPad\n * @param {String} string to be padded\n * @param {Number} chars that result string should have\n * @param {String} sign, by default 0\n * @returns {String} right aligned string\n */\nvar rightPad = function (string, chars, sign) {\n var hasPrefix = /^0x/i.test(string) || typeof string === 'number';\n string = string.toString(16).replace(/^0x/i, '');\n var padding = (chars - string.length + 1 >= 0) ? chars - string.length + 1 : 0;\n return (hasPrefix ? '0x' : '') + string + (new Array(padding).join(sign ? sign : \"0\"));\n};\n/**\n * Should be called to get hex representation (prefixed by 0x) of utf8 string\n *\n * @method utf8ToHex\n * @param {String} str\n * @returns {String} hex representation of input string\n */\nvar utf8ToHex = function (str) {\n str = utf8.encode(str);\n var hex = \"\";\n // remove \\u0000 padding from either side\n str = str.replace(/^(?:\\u0000)*/, '');\n str = str.split(\"\").reverse().join(\"\");\n str = str.replace(/^(?:\\u0000)*/, '');\n str = str.split(\"\").reverse().join(\"\");\n for (var i = 0; i < str.length; i++) {\n var code = str.charCodeAt(i);\n // if (code !== 0) {\n var n = code.toString(16);\n hex += n.length < 2 ? '0' + n : n;\n // }\n }\n return \"0x\" + hex;\n};\n/**\n * Should be called to get utf8 from it's hex representation\n *\n * @method hexToUtf8\n * @param {String} hex\n * @returns {String} ascii string representation of hex value\n */\nvar hexToUtf8 = function (hex) {\n if (!isHexStrict(hex))\n throw new Error('The parameter \"' + hex + '\" must be a valid HEX string.');\n var str = \"\";\n var code = 0;\n hex = hex.replace(/^0x/i, '');\n // remove 00 padding from either side\n hex = hex.replace(/^(?:00)*/, '');\n hex = hex.split(\"\").reverse().join(\"\");\n hex = hex.replace(/^(?:00)*/, '');\n hex = hex.split(\"\").reverse().join(\"\");\n var l = hex.length;\n for (var i = 0; i < l; i += 2) {\n code = parseInt(hex.slice(i, i + 2), 16);\n // if (code !== 0) {\n str += String.fromCharCode(code);\n // }\n }\n return utf8.decode(str);\n};\n/**\n * Converts value to it's number representation\n *\n * @method hexToNumber\n * @param {String|Number|BN} value\n * @return {String}\n */\nvar hexToNumber = function (value) {\n if (!value) {\n return value;\n }\n if (typeof value === 'string' && !isHexStrict(value)) {\n throw new Error('Given value \"' + value + '\" is not a valid hex string.');\n }\n return toBN(value).toNumber();\n};\n/**\n * Converts value to it's decimal representation in string\n *\n * @method hexToNumberString\n * @param {String|Number|BN} value\n * @return {String}\n */\nvar hexToNumberString = function (value) {\n if (!value)\n return value;\n if (typeof value === 'string' && !isHexStrict(value)) {\n throw new Error('Given value \"' + value + '\" is not a valid hex string.');\n }\n return toBN(value).toString(10);\n};\n/**\n * Converts value to it's hex representation\n *\n * @method numberToHex\n * @param {String|Number|BN} value\n * @return {String}\n */\nvar numberToHex = function (value) {\n if ((value === null || value === undefined)) {\n return value;\n }\n if (!isFinite(value) && !isHexStrict(value)) {\n throw new Error('Given input \"' + value + '\" is not a number.');\n }\n var number = toBN(value);\n var result = number.toString(16);\n return number.lt(new BN(0)) ? '-0x' + result.slice(1) : '0x' + result;\n};\n/**\n * Convert a byte array to a hex string\n *\n * Note: Implementation from crypto-js\n *\n * @method bytesToHex\n * @param {Array} bytes\n * @return {String} the hex string\n */\nvar bytesToHex = function (bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n /* jshint ignore:start */\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n /* jshint ignore:end */\n }\n return '0x' + hex.join(\"\");\n};\n/**\n * Convert a hex string to a byte array\n *\n * Note: Implementation from crypto-js\n *\n * @method hexToBytes\n * @param {string} hex\n * @return {Array} the byte array\n */\nvar hexToBytes = function (hex) {\n hex = hex.toString(16);\n if (!isHexStrict(hex)) {\n throw new Error('Given value \"' + hex + '\" is not a valid hex string.');\n }\n hex = hex.replace(/^0x/i, '');\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.slice(c, c + 2), 16));\n return bytes;\n};\n/**\n * Auto converts any given value into it's hex representation.\n *\n * And even stringifys objects before.\n *\n * @method toHex\n * @param {String|Number|BN|Object|Buffer} value\n * @param {Boolean} returnType\n * @return {String}\n */\nvar toHex = function (value, returnType) {\n /*jshint maxcomplexity: false */\n if (isAddress(value)) {\n return returnType ? 'address' : '0x' + value.toLowerCase().replace(/^0x/i, '');\n }\n if (typeof value === 'boolean') {\n return returnType ? 'bool' : value ? '0x01' : '0x00';\n }\n if (Buffer.isBuffer(value)) {\n return '0x' + value.toString('hex');\n }\n if (typeof value === 'object' && !!value && !isBigNumber(value) && !isBN(value)) {\n return returnType ? 'string' : utf8ToHex(JSON.stringify(value));\n }\n // if its a negative number, pass it through numberToHex\n if (typeof value === 'string') {\n if (value.indexOf('-0x') === 0 || value.indexOf('-0X') === 0) {\n return returnType ? 'int256' : numberToHex(value);\n }\n else if (value.indexOf('0x') === 0 || value.indexOf('0X') === 0) {\n return returnType ? 'bytes' : value;\n }\n else if (!isFinite(value)) {\n return returnType ? 'string' : utf8ToHex(value);\n }\n }\n return returnType ? (value < 0 ? 'int256' : 'uint256') : numberToHex(value);\n};\n/**\n * Check if string is HEX, requires a 0x in front\n *\n * @method isHexStrict\n * @param {String} hex to be checked\n * @returns {Boolean}\n */\nvar isHexStrict = function (hex) {\n return ((typeof hex === 'string' || typeof hex === 'number') && /^(-)?0x[0-9a-f]*$/i.test(hex));\n};\n/**\n * Check if string is HEX\n *\n * @method isHex\n * @param {String} hex to be checked\n * @returns {Boolean}\n */\nvar isHex = function (hex) {\n return ((typeof hex === 'string' || typeof hex === 'number') && /^(-0x|0x)?[0-9a-f]*$/i.test(hex));\n};\n/**\n * Remove 0x prefix from string\n *\n * @method stripHexPrefix\n * @param {String} str to be checked\n * @returns {String}\n */\nvar stripHexPrefix = function (str) {\n if (str !== 0 && isHex(str))\n return str.replace(/^(-)?0x/i, '$1');\n return str;\n};\n/**\n * Returns true if given string is a valid Ethereum block header bloom.\n *\n * @method isBloom\n * @param {String} bloom encoded bloom filter\n * @return {Boolean}\n */\nvar isBloom = function (bloom) {\n return ethereumBloomFilters.isBloom(bloom);\n};\n/**\n * Returns true if the ethereum users address is part of the given bloom\n * note: false positives are possible.\n *\n * @method isUserEthereumAddressInBloom\n * @param {String} ethereumAddress encoded bloom filter\n * @param {String} bloom ethereum addresss\n * @return {Boolean}\n */\nvar isUserEthereumAddressInBloom = function (bloom, ethereumAddress) {\n return ethereumBloomFilters.isUserEthereumAddressInBloom(bloom, ethereumAddress);\n};\n/**\n * Returns true if the contract address is part of the given bloom\n * note: false positives are possible.\n *\n * @method isUserEthereumAddressInBloom\n * @param {String} bloom encoded bloom filter\n * @param {String} contractAddress contract addresss\n * @return {Boolean}\n */\nvar isContractAddressInBloom = function (bloom, contractAddress) {\n return ethereumBloomFilters.isContractAddressInBloom(bloom, contractAddress);\n};\n/**\n * Returns true if given string is a valid log topic.\n *\n * @method isTopic\n * @param {String} topic encoded topic\n * @return {Boolean}\n */\nvar isTopic = function (topic) {\n return ethereumBloomFilters.isTopic(topic);\n};\n/**\n * Returns true if the topic is part of the given bloom\n * note: false positives are possible.\n *\n * @method isTopicInBloom\n * @param {String} bloom encoded bloom filter\n * @param {String} topic encoded topic\n * @return {Boolean}\n */\nvar isTopicInBloom = function (bloom, topic) {\n return ethereumBloomFilters.isTopicInBloom(bloom, topic);\n};\n/**\n * Returns true if the value is part of the given bloom\n * note: false positives are possible.\n *\n * @method isInBloom\n * @param {String} bloom encoded bloom filter\n * @param {String | Uint8Array} topic encoded value\n * @return {Boolean}\n */\nvar isInBloom = function (bloom, topic) {\n return ethereumBloomFilters.isInBloom(bloom, topic);\n};\n/**\n * Hashes values to a sha3 hash using keccak 256\n *\n * To hash a HEX string the hex must have 0x in front.\n *\n * @method sha3\n * @return {String} the sha3 string\n */\nvar SHA3_NULL_S = '0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';\nvar sha3 = function (value) {\n if (isBN(value)) {\n value = value.toString();\n }\n if (isHexStrict(value) && /^0x/i.test((value).toString())) {\n value = ethereumjsUtil.toBuffer(value);\n }\n else if (typeof value === 'string') {\n // Assume value is an arbitrary string\n value = Buffer.from(value, 'utf-8');\n }\n var returnValue = ethereumjsUtil.bufferToHex(ethereumjsUtil.keccak256(value));\n if (returnValue === SHA3_NULL_S) {\n return null;\n }\n else {\n return returnValue;\n }\n};\n// expose the under the hood keccak256\nsha3._Hash = ethereumjsUtil.keccak256;\n/**\n * @method sha3Raw\n *\n * @param value\n *\n * @returns {string}\n */\nvar sha3Raw = function (value) {\n value = sha3(value);\n if (value === null) {\n return SHA3_NULL_S;\n }\n return value;\n};\n/**\n * Auto converts any given value into it's hex representation,\n * then converts hex to number.\n *\n * @method toNumber\n * @param {String|Number|BN} value\n * @return {Number}\n */\nvar toNumber = function (value) {\n return typeof value === 'number' ? value : hexToNumber(toHex(value));\n};\n// 1.x currently accepts 0x... strings, bn.js after update doesn't. it would be a breaking change\nvar BNwrapped = function (value) {\n // check negative\n if (typeof value == \"string\" && value.includes(\"0x\")) {\n const [negative, hexValue] = value.toLocaleLowerCase().startsWith('-') ? [\"-\", value.slice(3)] : [\"\", value.slice(2)];\n return new BN(negative + hexValue, 16);\n }\n else {\n return new BN(value);\n }\n};\nObject.setPrototypeOf(BNwrapped, BN);\nObject.setPrototypeOf(BNwrapped.prototype, BN.prototype);\nmodule.exports = {\n BN: BNwrapped,\n isBN: isBN,\n isBigNumber: isBigNumber,\n toBN: toBN,\n isAddress: isAddress,\n isBloom: isBloom,\n isUserEthereumAddressInBloom: isUserEthereumAddressInBloom,\n isContractAddressInBloom: isContractAddressInBloom,\n isTopic: isTopic,\n isTopicInBloom: isTopicInBloom,\n isInBloom: isInBloom,\n checkAddressChecksum: checkAddressChecksum,\n utf8ToHex: utf8ToHex,\n hexToUtf8: hexToUtf8,\n hexToNumber: hexToNumber,\n hexToNumberString: hexToNumberString,\n numberToHex: numberToHex,\n toHex: toHex,\n hexToBytes: hexToBytes,\n bytesToHex: bytesToHex,\n isHex: isHex,\n isHexStrict: isHexStrict,\n stripHexPrefix: stripHexPrefix,\n leftPad: leftPad,\n rightPad: rightPad,\n toTwosComplement: toTwosComplement,\n sha3: sha3,\n sha3Raw: sha3Raw,\n toNumber: toNumber\n};\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","import assert from 'assert'\nimport { BN, rlp } from './externals'\nimport {\n privateKeyVerify,\n publicKeyCreate,\n publicKeyVerify,\n publicKeyConvert,\n} from 'ethereum-cryptography/secp256k1'\nimport { stripHexPrefix } from './internal'\nimport { KECCAK256_RLP, KECCAK256_NULL } from './constants'\nimport { zeros, bufferToHex, toBuffer } from './bytes'\nimport { keccak, keccak256, keccakFromString, rlphash } from './hash'\nimport { assertIsString, assertIsHexString, assertIsBuffer } from './helpers'\nimport { BNLike, BufferLike, bnToUnpaddedBuffer, toType, TypeOutput } from './types'\n\nexport interface AccountData {\n nonce?: BNLike\n balance?: BNLike\n stateRoot?: BufferLike\n codeHash?: BufferLike\n}\n\nexport class Account {\n nonce: BN\n balance: BN\n stateRoot: Buffer\n codeHash: Buffer\n\n static fromAccountData(accountData: AccountData) {\n const { nonce, balance, stateRoot, codeHash } = accountData\n\n return new Account(\n nonce ? new BN(toBuffer(nonce)) : undefined,\n balance ? new BN(toBuffer(balance)) : undefined,\n stateRoot ? toBuffer(stateRoot) : undefined,\n codeHash ? toBuffer(codeHash) : undefined\n )\n }\n\n public static fromRlpSerializedAccount(serialized: Buffer) {\n const values = rlp.decode(serialized)\n\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized account input. Must be array')\n }\n\n return this.fromValuesArray(values)\n }\n\n public static fromValuesArray(values: Buffer[]) {\n const [nonce, balance, stateRoot, codeHash] = values\n\n return new Account(new BN(nonce), new BN(balance), stateRoot, codeHash)\n }\n\n /**\n * This constructor assigns and validates the values.\n * Use the static factory methods to assist in creating an Account from varying data types.\n */\n constructor(\n nonce = new BN(0),\n balance = new BN(0),\n stateRoot = KECCAK256_RLP,\n codeHash = KECCAK256_NULL\n ) {\n this.nonce = nonce\n this.balance = balance\n this.stateRoot = stateRoot\n this.codeHash = codeHash\n\n this._validate()\n }\n\n private _validate() {\n if (this.nonce.lt(new BN(0))) {\n throw new Error('nonce must be greater than zero')\n }\n if (this.balance.lt(new BN(0))) {\n throw new Error('balance must be greater than zero')\n }\n if (this.stateRoot.length !== 32) {\n throw new Error('stateRoot must have a length of 32')\n }\n if (this.codeHash.length !== 32) {\n throw new Error('codeHash must have a length of 32')\n }\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers for the account, in order.\n */\n raw(): Buffer[] {\n return [\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.balance),\n this.stateRoot,\n this.codeHash,\n ]\n }\n\n /**\n * Returns the RLP serialization of the account as a `Buffer`.\n */\n serialize(): Buffer {\n return rlp.encode(this.raw())\n }\n\n /**\n * Returns a `Boolean` determining if the account is a contract.\n */\n isContract(): boolean {\n return !this.codeHash.equals(KECCAK256_NULL)\n }\n\n /**\n * Returns a `Boolean` determining if the account is empty complying to the definition of\n * account emptiness in [EIP-161](https://eips.ethereum.org/EIPS/eip-161):\n * \"An account is considered empty when it has no code and zero nonce and zero balance.\"\n */\n isEmpty(): boolean {\n return this.balance.isZero() && this.nonce.isZero() && this.codeHash.equals(KECCAK256_NULL)\n }\n}\n\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too.\n */\nexport const isValidAddress = function (hexAddress: string): boolean {\n try {\n assertIsString(hexAddress)\n } catch (e: any) {\n return false\n }\n\n return /^0x[0-9a-fA-F]{40}$/.test(hexAddress)\n}\n\n/**\n * Returns a checksummed address.\n *\n * If an eip1191ChainId is provided, the chainId will be included in the checksum calculation. This\n * has the effect of checksummed addresses for one chain having invalid checksums for others.\n * For more details see [EIP-1191](https://eips.ethereum.org/EIPS/eip-1191).\n *\n * WARNING: Checksums with and without the chainId will differ and the EIP-1191 checksum is not\n * backwards compatible to the original widely adopted checksum format standard introduced in\n * [EIP-55](https://eips.ethereum.org/EIPS/eip-55), so this will break in existing applications.\n * Usage of this EIP is therefore discouraged unless you have a very targeted use case.\n */\nexport const toChecksumAddress = function (hexAddress: string, eip1191ChainId?: BNLike): string {\n assertIsHexString(hexAddress)\n const address = stripHexPrefix(hexAddress).toLowerCase()\n\n let prefix = ''\n if (eip1191ChainId) {\n const chainId = toType(eip1191ChainId, TypeOutput.BN)\n prefix = chainId.toString() + '0x'\n }\n\n const hash = keccakFromString(prefix + address).toString('hex')\n let ret = '0x'\n\n for (let i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase()\n } else {\n ret += address[i]\n }\n }\n\n return ret\n}\n\n/**\n * Checks if the address is a valid checksummed address.\n *\n * See toChecksumAddress' documentation for details about the eip1191ChainId parameter.\n */\nexport const isValidChecksumAddress = function (\n hexAddress: string,\n eip1191ChainId?: BNLike\n): boolean {\n return isValidAddress(hexAddress) && toChecksumAddress(hexAddress, eip1191ChainId) === hexAddress\n}\n\n/**\n * Generates an address of a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\nexport const generateAddress = function (from: Buffer, nonce: Buffer): Buffer {\n assertIsBuffer(from)\n assertIsBuffer(nonce)\n const nonceBN = new BN(nonce)\n\n if (nonceBN.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n return rlphash([from, null]).slice(-20)\n }\n\n // Only take the lower 160bits of the hash\n return rlphash([from, Buffer.from(nonceBN.toArray())]).slice(-20)\n}\n\n/**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\nexport const generateAddress2 = function (from: Buffer, salt: Buffer, initCode: Buffer): Buffer {\n assertIsBuffer(from)\n assertIsBuffer(salt)\n assertIsBuffer(initCode)\n\n assert(from.length === 20)\n assert(salt.length === 32)\n\n const address = keccak256(\n Buffer.concat([Buffer.from('ff', 'hex'), from, salt, keccak256(initCode)])\n )\n\n return address.slice(-20)\n}\n\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n */\nexport const isValidPrivate = function (privateKey: Buffer): boolean {\n return privateKeyVerify(privateKey)\n}\n\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexport const isValidPublic = function (publicKey: Buffer, sanitize: boolean = false): boolean {\n assertIsBuffer(publicKey)\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]))\n }\n\n if (!sanitize) {\n return false\n }\n\n return publicKeyVerify(publicKey)\n}\n\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexport const pubToAddress = function (pubKey: Buffer, sanitize: boolean = false): Buffer {\n assertIsBuffer(pubKey)\n if (sanitize && pubKey.length !== 64) {\n pubKey = Buffer.from(publicKeyConvert(pubKey, false).slice(1))\n }\n assert(pubKey.length === 64)\n // Only take the lower 160bits of the hash\n return keccak(pubKey).slice(-20)\n}\nexport const publicToAddress = pubToAddress\n\n/**\n * Returns the ethereum public key of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexport const privateToPublic = function (privateKey: Buffer): Buffer {\n assertIsBuffer(privateKey)\n // skip the type flag and use the X, Y points\n return Buffer.from(publicKeyCreate(privateKey, false)).slice(1)\n}\n\n/**\n * Returns the ethereum address of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexport const privateToAddress = function (privateKey: Buffer): Buffer {\n return publicToAddress(privateToPublic(privateKey))\n}\n\n/**\n * Converts a public key to the Ethereum format.\n */\nexport const importPublic = function (publicKey: Buffer): Buffer {\n assertIsBuffer(publicKey)\n if (publicKey.length !== 64) {\n publicKey = Buffer.from(publicKeyConvert(publicKey, false).slice(1))\n }\n return publicKey\n}\n\n/**\n * Returns the zero address.\n */\nexport const zeroAddress = function (): string {\n const addressLength = 20\n const addr = zeros(addressLength)\n return bufferToHex(addr)\n}\n\n/**\n * Checks if a given address is the zero address.\n */\nexport const isZeroAddress = function (hexAddress: string): boolean {\n try {\n assertIsString(hexAddress)\n } catch (e: any) {\n return false\n }\n\n const zeroAddr = zeroAddress()\n return zeroAddr === hexAddress\n}\n","import assert from 'assert'\nimport { BN } from './externals'\nimport { toBuffer, zeros } from './bytes'\nimport {\n isValidAddress,\n pubToAddress,\n privateToAddress,\n generateAddress,\n generateAddress2,\n} from './account'\n\nexport class Address {\n public readonly buf: Buffer\n\n constructor(buf: Buffer) {\n assert(buf.length === 20, 'Invalid address length')\n this.buf = buf\n }\n\n /**\n * Returns the zero address.\n */\n static zero(): Address {\n return new Address(zeros(20))\n }\n\n /**\n * Returns an Address object from a hex-encoded string.\n * @param str - Hex-encoded address\n */\n static fromString(str: string): Address {\n assert(isValidAddress(str), 'Invalid address')\n return new Address(toBuffer(str))\n }\n\n /**\n * Returns an address for a given public key.\n * @param pubKey The two points of an uncompressed key\n */\n static fromPublicKey(pubKey: Buffer): Address {\n assert(Buffer.isBuffer(pubKey), 'Public key should be Buffer')\n const buf = pubToAddress(pubKey)\n return new Address(buf)\n }\n\n /**\n * Returns an address for a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\n static fromPrivateKey(privateKey: Buffer): Address {\n assert(Buffer.isBuffer(privateKey), 'Private key should be Buffer')\n const buf = privateToAddress(privateKey)\n return new Address(buf)\n }\n\n /**\n * Generates an address for a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\n static generate(from: Address, nonce: BN): Address {\n assert(BN.isBN(nonce))\n return new Address(generateAddress(from.buf, nonce.toArrayLike(Buffer)))\n }\n\n /**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\n static generate2(from: Address, salt: Buffer, initCode: Buffer): Address {\n assert(Buffer.isBuffer(salt))\n assert(Buffer.isBuffer(initCode))\n return new Address(generateAddress2(from.buf, salt, initCode))\n }\n\n /**\n * Is address equal to another.\n */\n equals(address: Address): boolean {\n return this.buf.equals(address.buf)\n }\n\n /**\n * Is address zero.\n */\n isZero(): boolean {\n return this.equals(Address.zero())\n }\n\n /**\n * True if address is in the address range defined\n * by EIP-1352\n */\n isPrecompileOrSystemAddress(): boolean {\n const addressBN = new BN(this.buf)\n const rangeMin = new BN(0)\n const rangeMax = new BN('ffff', 'hex')\n\n return addressBN.gte(rangeMin) && addressBN.lte(rangeMax)\n }\n\n /**\n * Returns hex encoding of address.\n */\n toString(): string {\n return '0x' + this.buf.toString('hex')\n }\n\n /**\n * Returns Buffer representation of address.\n */\n toBuffer(): Buffer {\n return Buffer.from(this.buf)\n }\n}\n","import { BN } from './externals'\nimport { stripHexPrefix, padToEven, isHexString, isHexPrefixed } from './internal'\nimport {\n PrefixedHexString,\n TransformableToArray,\n TransformableToBuffer,\n NestedBufferArray,\n NestedUint8Array,\n} from './types'\nimport { assertIsBuffer, assertIsArray, assertIsHexString } from './helpers'\n\n/**\n * Converts a `Number` into a hex `String`\n * @param {Number} i\n * @return {String}\n */\nexport const intToHex = function (i: number) {\n if (!Number.isSafeInteger(i) || i < 0) {\n throw new Error(`Received an invalid integer type: ${i}`)\n }\n return `0x${i.toString(16)}`\n}\n\n/**\n * Converts an `Number` to a `Buffer`\n * @param {Number} i\n * @return {Buffer}\n */\nexport const intToBuffer = function (i: number) {\n const hex = intToHex(i)\n return Buffer.from(padToEven(hex.slice(2)), 'hex')\n}\n\n/**\n * Returns a buffer filled with 0s.\n * @param bytes the number of bytes the buffer should be\n */\nexport const zeros = function (bytes: number): Buffer {\n return Buffer.allocUnsafe(bytes).fill(0)\n}\n\n/**\n * Pads a `Buffer` with zeros till it has `length` bytes.\n * Truncates the beginning or end of input if its length exceeds `length`.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @param right whether to start padding form the left or right\n * @return (Buffer)\n */\nconst setLength = function (msg: Buffer, length: number, right: boolean) {\n const buf = zeros(length)\n if (right) {\n if (msg.length < length) {\n msg.copy(buf)\n return buf\n }\n return msg.slice(0, length)\n } else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length)\n return buf\n }\n return msg.slice(-length)\n }\n}\n\n/**\n * Left Pads a `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexport const setLengthLeft = function (msg: Buffer, length: number) {\n assertIsBuffer(msg)\n return setLength(msg, length, false)\n}\n\n/**\n * Right Pads a `Buffer` with trailing zeros till it has `length` bytes.\n * it truncates the end if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexport const setLengthRight = function (msg: Buffer, length: number) {\n assertIsBuffer(msg)\n return setLength(msg, length, true)\n}\n\n/**\n * Trims leading zeros from a `Buffer`, `String` or `Number[]`.\n * @param a (Buffer|Array|String)\n * @return (Buffer|Array|String)\n */\nconst stripZeros = function (a: any): Buffer | number[] | string {\n let first = a[0]\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1)\n first = a[0]\n }\n return a\n}\n\n/**\n * Trims leading zeros from a `Buffer`.\n * @param a (Buffer)\n * @return (Buffer)\n */\nexport const unpadBuffer = function (a: Buffer): Buffer {\n assertIsBuffer(a)\n return stripZeros(a) as Buffer\n}\n\n/**\n * Trims leading zeros from an `Array` (of numbers).\n * @param a (number[])\n * @return (number[])\n */\nexport const unpadArray = function (a: number[]): number[] {\n assertIsArray(a)\n return stripZeros(a) as number[]\n}\n\n/**\n * Trims leading zeros from a hex-prefixed `String`.\n * @param a (String)\n * @return (String)\n */\nexport const unpadHexString = function (a: string): string {\n assertIsHexString(a)\n a = stripHexPrefix(a)\n return stripZeros(a) as string\n}\n\nexport type ToBufferInputTypes =\n | PrefixedHexString\n | number\n | BN\n | Buffer\n | Uint8Array\n | number[]\n | TransformableToArray\n | TransformableToBuffer\n | null\n | undefined\n\n/**\n * Attempts to turn a value into a `Buffer`.\n * Inputs supported: `Buffer`, `String` (hex-prefixed), `Number`, null/undefined, `BN` and other objects\n * with a `toArray()` or `toBuffer()` method.\n * @param v the value\n */\nexport const toBuffer = function (v: ToBufferInputTypes): Buffer {\n if (v === null || v === undefined) {\n return Buffer.allocUnsafe(0)\n }\n\n if (Buffer.isBuffer(v)) {\n return Buffer.from(v)\n }\n\n if (Array.isArray(v) || v instanceof Uint8Array) {\n return Buffer.from(v as Uint8Array)\n }\n\n if (typeof v === 'string') {\n if (!isHexString(v)) {\n throw new Error(\n `Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: ${v}`\n )\n }\n return Buffer.from(padToEven(stripHexPrefix(v)), 'hex')\n }\n\n if (typeof v === 'number') {\n return intToBuffer(v)\n }\n\n if (BN.isBN(v)) {\n if (v.isNeg()) {\n throw new Error(`Cannot convert negative BN to buffer. Given: ${v}`)\n }\n return v.toArrayLike(Buffer)\n }\n\n if (v.toArray) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray())\n }\n\n if (v.toBuffer) {\n return Buffer.from(v.toBuffer())\n }\n\n throw new Error('invalid type')\n}\n\n/**\n * Converts a `Buffer` to a `Number`.\n * @param buf `Buffer` object to convert\n * @throws If the input number exceeds 53 bits.\n */\nexport const bufferToInt = function (buf: Buffer): number {\n return new BN(toBuffer(buf)).toNumber()\n}\n\n/**\n * Converts a `Buffer` into a `0x`-prefixed hex `String`.\n * @param buf `Buffer` object to convert\n */\nexport const bufferToHex = function (buf: Buffer): string {\n buf = toBuffer(buf)\n return '0x' + buf.toString('hex')\n}\n\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param num Signed integer value\n */\nexport const fromSigned = function (num: Buffer): BN {\n return new BN(num).fromTwos(256)\n}\n\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param num\n */\nexport const toUnsigned = function (num: BN): Buffer {\n return Buffer.from(num.toTwos(256).toArray())\n}\n\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\".\n */\nexport const addHexPrefix = function (str: string): string {\n if (typeof str !== 'string') {\n return str\n }\n\n return isHexPrefixed(str) ? str : '0x' + str\n}\n\n/**\n * Returns the utf8 string representation from a hex string.\n *\n * Examples:\n *\n * Input 1: '657468657265756d000000000000000000000000000000000000000000000000'\n * Input 2: '657468657265756d'\n * Input 3: '000000000000000000000000000000000000000000000000657468657265756d'\n *\n * Output (all 3 input variants): 'ethereum'\n *\n * Note that this method is not intended to be used with hex strings\n * representing quantities in both big endian or little endian notation.\n *\n * @param string Hex string, should be `0x` prefixed\n * @return Utf8 string\n */\nexport const toUtf8 = function (hex: string): string {\n const zerosRegexp = /^(00)+|(00)+$/g\n hex = stripHexPrefix(hex)\n if (hex.length % 2 !== 0) {\n throw new Error('Invalid non-even hex string input for toUtf8() provided')\n }\n const bufferVal = Buffer.from(hex.replace(zerosRegexp, ''), 'hex')\n\n return bufferVal.toString('utf8')\n}\n\n/**\n * Converts a `Buffer` or `Array` to JSON.\n * @param ba (Buffer|Array)\n * @return (Array|String|null)\n */\nexport const baToJSON = function (ba: any): any {\n if (Buffer.isBuffer(ba)) {\n return `0x${ba.toString('hex')}`\n } else if (ba instanceof Array) {\n const array = []\n for (let i = 0; i < ba.length; i++) {\n array.push(baToJSON(ba[i]))\n }\n return array\n }\n}\n\n/**\n * Checks provided Buffers for leading zeroes and throws if found.\n *\n * Examples:\n *\n * Valid values: 0x1, 0x, 0x01, 0x1234\n * Invalid values: 0x0, 0x00, 0x001, 0x0001\n *\n * Note: This method is useful for validating that RLP encoded integers comply with the rule that all\n * integer values encoded to RLP must be in the most compact form and contain no leading zero bytes\n * @param values An object containing string keys and Buffer values\n * @throws if any provided value is found to have leading zero bytes\n */\nexport const validateNoLeadingZeroes = function (values: { [key: string]: Buffer | undefined }) {\n for (const [k, v] of Object.entries(values)) {\n if (v !== undefined && v.length > 0 && v[0] === 0) {\n throw new Error(`${k} cannot have leading zeroes, received: ${v.toString('hex')}`)\n }\n }\n}\n\n/**\n * Converts a {@link Uint8Array} or {@link NestedUint8Array} to {@link Buffer} or {@link NestedBufferArray}\n */\nexport function arrToBufArr(arr: Uint8Array): Buffer\nexport function arrToBufArr(arr: NestedUint8Array): NestedBufferArray\nexport function arrToBufArr(arr: Uint8Array | NestedUint8Array): Buffer | NestedBufferArray\nexport function arrToBufArr(arr: Uint8Array | NestedUint8Array): Buffer | NestedBufferArray {\n if (!Array.isArray(arr)) {\n return Buffer.from(arr)\n }\n return arr.map((a) => arrToBufArr(a))\n}\n\n/**\n * Converts a {@link Buffer} or {@link NestedBufferArray} to {@link Uint8Array} or {@link NestedUint8Array}\n */\nexport function bufArrToArr(arr: Buffer): Uint8Array\nexport function bufArrToArr(arr: NestedBufferArray): NestedUint8Array\nexport function bufArrToArr(arr: Buffer | NestedBufferArray): Uint8Array | NestedUint8Array\nexport function bufArrToArr(arr: Buffer | NestedBufferArray): Uint8Array | NestedUint8Array {\n if (!Array.isArray(arr)) {\n return Uint8Array.from(arr ?? [])\n }\n return arr.map((a) => bufArrToArr(a))\n}\n","import { Buffer } from 'buffer'\nimport { BN } from './externals'\n\n/**\n * 2^64-1\n */\nexport const MAX_UINT64 = new BN('ffffffffffffffff', 16)\n\n/**\n * The max integer that the evm can handle (2^256-1)\n */\nexport const MAX_INTEGER = new BN(\n 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',\n 16\n)\n\n/**\n * 2^256\n */\nexport const TWO_POW256 = new BN(\n '10000000000000000000000000000000000000000000000000000000000000000',\n 16\n)\n\n/**\n * Keccak-256 hash of null\n */\nexport const KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'\n\n/**\n * Keccak-256 hash of null\n */\nexport const KECCAK256_NULL = Buffer.from(KECCAK256_NULL_S, 'hex')\n\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexport const KECCAK256_RLP_ARRAY_S =\n '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'\n\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexport const KECCAK256_RLP_ARRAY = Buffer.from(KECCAK256_RLP_ARRAY_S, 'hex')\n\n/**\n * Keccak-256 hash of the RLP of null\n */\nexport const KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'\n\n/**\n * Keccak-256 hash of the RLP of null\n */\nexport const KECCAK256_RLP = Buffer.from(KECCAK256_RLP_S, 'hex')\n","/**\n * Re-exports commonly used modules:\n * * Exports [`BN`](https://github.com/indutny/bn.js), [`rlp`](https://github.com/ethereumjs/rlp).\n * @packageDocumentation\n */\n\nimport BN from 'bn.js'\nimport * as rlp from 'rlp'\n\n/**\n * [`BN`](https://github.com/indutny/bn.js)\n */\nexport { BN }\n\n/**\n * [`rlp`](https://github.com/ethereumjs/rlp)\n */\nexport { rlp }\n","import { keccak224, keccak384, keccak256 as k256, keccak512 } from 'ethereum-cryptography/keccak'\nconst createHash = require('create-hash')\nimport { rlp } from './externals'\nimport { toBuffer, setLengthLeft } from './bytes'\nimport { assertIsString, assertIsBuffer, assertIsArray, assertIsHexString } from './helpers'\n\n/**\n * Creates Keccak hash of a Buffer input\n * @param a The input data (Buffer)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccak = function (a: Buffer, bits: number = 256): Buffer {\n assertIsBuffer(a)\n switch (bits) {\n case 224: {\n return keccak224(a)\n }\n case 256: {\n return k256(a)\n }\n case 384: {\n return keccak384(a)\n }\n case 512: {\n return keccak512(a)\n }\n default: {\n throw new Error(`Invald algorithm: keccak${bits}`)\n }\n }\n}\n\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256).\n * @param a The input data (Buffer)\n */\nexport const keccak256 = function (a: Buffer): Buffer {\n return keccak(a)\n}\n\n/**\n * Creates Keccak hash of a utf-8 string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromString = function (a: string, bits: number = 256) {\n assertIsString(a)\n const buf = Buffer.from(a, 'utf8')\n return keccak(buf, bits)\n}\n\n/**\n * Creates Keccak hash of an 0x-prefixed string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromHexString = function (a: string, bits: number = 256) {\n assertIsHexString(a)\n return keccak(toBuffer(a), bits)\n}\n\n/**\n * Creates Keccak hash of a number array input\n * @param a The input data (number[])\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromArray = function (a: number[], bits: number = 256) {\n assertIsArray(a)\n return keccak(toBuffer(a), bits)\n}\n\n/**\n * Creates SHA256 hash of an input.\n * @param a The input data (Buffer|Array|String)\n */\nconst _sha256 = function (a: any): Buffer {\n a = toBuffer(a)\n return createHash('sha256').update(a).digest()\n}\n\n/**\n * Creates SHA256 hash of a Buffer input.\n * @param a The input data (Buffer)\n */\nexport const sha256 = function (a: Buffer): Buffer {\n assertIsBuffer(a)\n return _sha256(a)\n}\n\n/**\n * Creates SHA256 hash of a string input.\n * @param a The input data (string)\n */\nexport const sha256FromString = function (a: string): Buffer {\n assertIsString(a)\n return _sha256(a)\n}\n\n/**\n * Creates SHA256 hash of a number[] input.\n * @param a The input data (number[])\n */\nexport const sha256FromArray = function (a: number[]): Buffer {\n assertIsArray(a)\n return _sha256(a)\n}\n\n/**\n * Creates RIPEMD160 hash of the input.\n * @param a The input data (Buffer|Array|String|Number)\n * @param padded Whether it should be padded to 256 bits or not\n */\nconst _ripemd160 = function (a: any, padded: boolean): Buffer {\n a = toBuffer(a)\n const hash = createHash('rmd160').update(a).digest()\n if (padded === true) {\n return setLengthLeft(hash, 32)\n } else {\n return hash\n }\n}\n\n/**\n * Creates RIPEMD160 hash of a Buffer input.\n * @param a The input data (Buffer)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160 = function (a: Buffer, padded: boolean): Buffer {\n assertIsBuffer(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates RIPEMD160 hash of a string input.\n * @param a The input data (String)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160FromString = function (a: string, padded: boolean): Buffer {\n assertIsString(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates RIPEMD160 hash of a number[] input.\n * @param a The input data (number[])\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160FromArray = function (a: number[], padded: boolean): Buffer {\n assertIsArray(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input.\n * @param a The input data\n */\nexport const rlphash = function (a: rlp.Input): Buffer {\n return keccak(rlp.encode(a))\n}\n","import { isHexString } from './internal'\n\n/**\n * Throws if a string is not hex prefixed\n * @param {string} input string to check hex prefix of\n */\nexport const assertIsHexString = function (input: string): void {\n if (!isHexString(input)) {\n const msg = `This method only supports 0x-prefixed hex strings but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not a buffer\n * @param {Buffer} input value to check\n */\nexport const assertIsBuffer = function (input: Buffer): void {\n if (!Buffer.isBuffer(input)) {\n const msg = `This method only supports Buffer but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not an array\n * @param {number[]} input value to check\n */\nexport const assertIsArray = function (input: number[]): void {\n if (!Array.isArray(input)) {\n const msg = `This method only supports number arrays but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not a string\n * @param {string} input value to check\n */\nexport const assertIsString = function (input: string): void {\n if (typeof input !== 'string') {\n const msg = `This method only supports strings but input was: ${input}`\n throw new Error(msg)\n }\n}\n","/**\n * Constants\n */\nexport * from './constants'\n\n/**\n * Account class and helper functions\n */\nexport * from './account'\n\n/**\n * Address type\n */\nexport * from './address'\n\n/**\n * Hash functions\n */\nexport * from './hash'\n\n/**\n * ECDSA signature\n */\nexport * from './signature'\n\n/**\n * Utilities for manipulating Buffers, byte arrays, etc.\n */\nexport * from './bytes'\n\n/**\n * Function for definining properties on an object\n */\nexport * from './object'\n\n/**\n * External exports (BN, rlp)\n */\nexport * from './externals'\n\n/**\n * Helpful TypeScript types\n */\nexport * from './types'\n\n/**\n * Export ethjs-util methods\n */\nexport {\n isHexPrefixed,\n stripHexPrefix,\n padToEven,\n getBinarySize,\n arrayContainsArray,\n toAscii,\n fromUtf8,\n fromAscii,\n getKeys,\n isHexString,\n} from './internal'\n","/*\nThe MIT License\n\nCopyright (c) 2016 Nick Dodson. nickdodson.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE\n */\n\n/**\n * Returns a `Boolean` on whether or not the a `String` starts with '0x'\n * @param str the string input value\n * @return a boolean if it is or is not hex prefixed\n * @throws if the str input is not a string\n */\nexport function isHexPrefixed(str: string): boolean {\n if (typeof str !== 'string') {\n throw new Error(`[isHexPrefixed] input must be type 'string', received type ${typeof str}`)\n }\n\n return str[0] === '0' && str[1] === 'x'\n}\n\n/**\n * Removes '0x' from a given `String` if present\n * @param str the string value\n * @returns the string without 0x prefix\n */\nexport const stripHexPrefix = (str: string): string => {\n if (typeof str !== 'string')\n throw new Error(`[stripHexPrefix] input must be type 'string', received ${typeof str}`)\n\n return isHexPrefixed(str) ? str.slice(2) : str\n}\n\n/**\n * Pads a `String` to have an even length\n * @param value\n * @return output\n */\nexport function padToEven(value: string): string {\n let a = value\n\n if (typeof a !== 'string') {\n throw new Error(`[padToEven] value must be type 'string', received ${typeof a}`)\n }\n\n if (a.length % 2) a = `0${a}`\n\n return a\n}\n\n/**\n * Get the binary size of a string\n * @param str\n * @returns the number of bytes contained within the string\n */\nexport function getBinarySize(str: string) {\n if (typeof str !== 'string') {\n throw new Error(`[getBinarySize] method requires input type 'string', recieved ${typeof str}`)\n }\n\n return Buffer.byteLength(str, 'utf8')\n}\n\n/**\n * Returns TRUE if the first specified array contains all elements\n * from the second one. FALSE otherwise.\n *\n * @param superset\n * @param subset\n *\n */\nexport function arrayContainsArray(\n superset: unknown[],\n subset: unknown[],\n some?: boolean\n): boolean {\n if (Array.isArray(superset) !== true) {\n throw new Error(\n `[arrayContainsArray] method requires input 'superset' to be an array, got type '${typeof superset}'`\n )\n }\n if (Array.isArray(subset) !== true) {\n throw new Error(\n `[arrayContainsArray] method requires input 'subset' to be an array, got type '${typeof subset}'`\n )\n }\n\n return subset[some ? 'some' : 'every']((value) => superset.indexOf(value) >= 0)\n}\n\n/**\n * Should be called to get ascii from its hex representation\n *\n * @param string in hex\n * @returns ascii string representation of hex value\n */\nexport function toAscii(hex: string): string {\n let str = ''\n let i = 0\n const l = hex.length\n\n if (hex.substring(0, 2) === '0x') i = 2\n\n for (; i < l; i += 2) {\n const code = parseInt(hex.substr(i, 2), 16)\n str += String.fromCharCode(code)\n }\n\n return str\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of utf8 string\n *\n * @param string\n * @param optional padding\n * @returns hex representation of input string\n */\nexport function fromUtf8(stringValue: string) {\n const str = Buffer.from(stringValue, 'utf8')\n\n return `0x${padToEven(str.toString('hex')).replace(/^0+|0+$/g, '')}`\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of ascii string\n *\n * @param string\n * @param optional padding\n * @returns hex representation of input string\n */\nexport function fromAscii(stringValue: string) {\n let hex = ''\n for (let i = 0; i < stringValue.length; i++) {\n const code = stringValue.charCodeAt(i)\n const n = code.toString(16)\n hex += n.length < 2 ? `0${n}` : n\n }\n\n return `0x${hex}`\n}\n\n/**\n * Returns the keys from an array of objects.\n * @example\n * ```js\n * getKeys([{a: '1', b: '2'}, {a: '3', b: '4'}], 'a') => ['1', '3']\n *````\n * @param params\n * @param key\n * @param allowEmpty\n * @returns output just a simple array of output keys\n */\nexport function getKeys(params: Record[], key: string, allowEmpty?: boolean) {\n if (!Array.isArray(params)) {\n throw new Error(`[getKeys] method expects input 'params' to be an array, got ${typeof params}`)\n }\n if (typeof key !== 'string') {\n throw new Error(\n `[getKeys] method expects input 'key' to be type 'string', got ${typeof params}`\n )\n }\n\n const result = []\n\n for (let i = 0; i < params.length; i++) {\n let value = params[i][key]\n if (allowEmpty && !value) {\n value = ''\n } else if (typeof value !== 'string') {\n throw new Error(`invalid abi - expected type 'string', received ${typeof value}`)\n }\n result.push(value)\n }\n\n return result\n}\n\n/**\n * Is the string a hex string.\n *\n * @param value\n * @param length\n * @returns output the string is a hex string\n */\nexport function isHexString(value: string, length?: number): boolean {\n if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) return false\n\n if (length && value.length !== 2 + 2 * length) return false\n\n return true\n}\n","import assert from 'assert'\nimport { stripHexPrefix } from './internal'\nimport { rlp } from './externals'\nimport { toBuffer, baToJSON, unpadBuffer } from './bytes'\n\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param self the `Object` to define properties on\n * @param fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param data data to be validated against the definitions\n * @deprecated\n */\nexport const defineProperties = function (self: any, fields: any, data?: any) {\n self.raw = []\n self._fields = []\n\n // attach the `toJSON`\n self.toJSON = function (label: boolean = false) {\n if (label) {\n type Dict = { [key: string]: string }\n const obj: Dict = {}\n self._fields.forEach((field: string) => {\n obj[field] = `0x${self[field].toString('hex')}`\n })\n return obj\n }\n return baToJSON(self.raw)\n }\n\n self.serialize = function serialize() {\n return rlp.encode(self.raw)\n }\n\n fields.forEach((field: any, i: number) => {\n self._fields.push(field.name)\n function getter() {\n return self.raw[i]\n }\n function setter(v: any) {\n v = toBuffer(v)\n\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0)\n }\n\n if (field.allowLess && field.length) {\n v = unpadBuffer(v)\n assert(\n field.length >= v.length,\n `The field ${field.name} must not have more ${field.length} bytes`\n )\n } else if (!(field.allowZero && v.length === 0) && field.length) {\n assert(\n field.length === v.length,\n `The field ${field.name} must have byte length of ${field.length}`\n )\n }\n\n self.raw[i] = v\n }\n\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter,\n })\n\n if (field.default) {\n self[field.name] = field.default\n }\n\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter,\n })\n }\n })\n\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(stripHexPrefix(data), 'hex')\n }\n\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data)\n }\n\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data')\n }\n\n // make sure all the items are buffers\n data.forEach((d, i) => {\n self[self._fields[i]] = toBuffer(d)\n })\n } else if (typeof data === 'object') {\n const keys = Object.keys(data)\n fields.forEach((field: any) => {\n if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]\n if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]\n })\n } else {\n throw new Error('invalid data')\n }\n }\n}\n","import { ecdsaSign, ecdsaRecover, publicKeyConvert } from 'ethereum-cryptography/secp256k1'\nimport { BN } from './externals'\nimport { toBuffer, setLengthLeft, bufferToHex, bufferToInt } from './bytes'\nimport { keccak } from './hash'\nimport { assertIsBuffer } from './helpers'\nimport { BNLike, toType, TypeOutput } from './types'\n\nexport interface ECDSASignature {\n v: number\n r: Buffer\n s: Buffer\n}\n\nexport interface ECDSASignatureBuffer {\n v: Buffer\n r: Buffer\n s: Buffer\n}\n\n/**\n * Returns the ECDSA signature of a message hash.\n */\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId?: number): ECDSASignature\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId: BNLike): ECDSASignatureBuffer\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId: any): any {\n const { signature, recid: recovery } = ecdsaSign(msgHash, privateKey)\n\n const r = Buffer.from(signature.slice(0, 32))\n const s = Buffer.from(signature.slice(32, 64))\n\n if (!chainId || typeof chainId === 'number') {\n // return legacy type ECDSASignature (deprecated in favor of ECDSASignatureBuffer to handle large chainIds)\n if (chainId && !Number.isSafeInteger(chainId)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)'\n )\n }\n const v = chainId ? recovery + (chainId * 2 + 35) : recovery + 27\n return { r, s, v }\n }\n\n const chainIdBN = toType(chainId as BNLike, TypeOutput.BN)\n const v = chainIdBN.muln(2).addn(35).addn(recovery).toArrayLike(Buffer)\n return { r, s, v }\n}\n\nfunction calculateSigRecovery(v: BNLike, chainId?: BNLike): BN {\n const vBN = toType(v, TypeOutput.BN)\n\n if (vBN.eqn(0) || vBN.eqn(1)) return toType(v, TypeOutput.BN)\n\n if (!chainId) {\n return vBN.subn(27)\n }\n const chainIdBN = toType(chainId, TypeOutput.BN)\n return vBN.sub(chainIdBN.muln(2).addn(35))\n}\n\nfunction isValidSigRecovery(recovery: number | BN): boolean {\n const rec = new BN(recovery)\n return rec.eqn(0) || rec.eqn(1)\n}\n\n/**\n * ECDSA public key recovery from signature.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Recovered public key\n */\nexport const ecrecover = function (\n msgHash: Buffer,\n v: BNLike,\n r: Buffer,\n s: Buffer,\n chainId?: BNLike\n): Buffer {\n const signature = Buffer.concat([setLengthLeft(r, 32), setLengthLeft(s, 32)], 64)\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n const senderPubKey = ecdsaRecover(signature, recovery.toNumber(), msgHash)\n return Buffer.from(publicKeyConvert(senderPubKey, false).slice(1))\n}\n\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Signature\n */\nexport const toRpcSig = function (v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike): string {\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n return bufferToHex(Buffer.concat([setLengthLeft(r, 32), setLengthLeft(s, 32), toBuffer(v)]))\n}\n\n/**\n * Convert signature parameters into the format of Compact Signature Representation (EIP-2098).\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Signature\n */\nexport const toCompactSig = function (v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike): string {\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n\n const vn = toType(v, TypeOutput.Number)\n let ss = s\n if ((vn > 28 && vn % 2 === 1) || vn === 1 || vn === 28) {\n ss = Buffer.from(s)\n ss[0] |= 0x80\n }\n\n return bufferToHex(Buffer.concat([setLengthLeft(r, 32), setLengthLeft(ss, 32)]))\n}\n\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n * NOTE: After EIP1559, `v` could be `0` or `1` but this function assumes\n * it's a signed message (EIP-191 or EIP-712) adding `27` at the end. Remove if needed.\n */\nexport const fromRpcSig = function (sig: string): ECDSASignature {\n const buf: Buffer = toBuffer(sig)\n\n let r: Buffer\n let s: Buffer\n let v: number\n if (buf.length >= 65) {\n r = buf.slice(0, 32)\n s = buf.slice(32, 64)\n v = bufferToInt(buf.slice(64))\n } else if (buf.length === 64) {\n // Compact Signature Representation (https://eips.ethereum.org/EIPS/eip-2098)\n r = buf.slice(0, 32)\n s = buf.slice(32, 64)\n v = bufferToInt(buf.slice(32, 33)) >> 7\n s[0] &= 0x7f\n } else {\n throw new Error('Invalid signature length')\n }\n\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27\n }\n\n return {\n v,\n r,\n s,\n }\n}\n\n/**\n * Validate a ECDSA signature.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @param homesteadOrLater Indicates whether this is being used on either the homestead hardfork or a later one\n */\nexport const isValidSignature = function (\n v: BNLike,\n r: Buffer,\n s: Buffer,\n homesteadOrLater: boolean = true,\n chainId?: BNLike\n): boolean {\n const SECP256K1_N_DIV_2 = new BN(\n '7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0',\n 16\n )\n const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)\n\n if (r.length !== 32 || s.length !== 32) {\n return false\n }\n\n if (!isValidSigRecovery(calculateSigRecovery(v, chainId))) {\n return false\n }\n\n const rBN = new BN(r)\n const sBN = new BN(s)\n\n if (rBN.isZero() || rBN.gt(SECP256K1_N) || sBN.isZero() || sBN.gt(SECP256K1_N)) {\n return false\n }\n\n if (homesteadOrLater && sBN.cmp(SECP256K1_N_DIV_2) === 1) {\n return false\n }\n\n return true\n}\n\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n */\nexport const hashPersonalMessage = function (message: Buffer): Buffer {\n assertIsBuffer(message)\n const prefix = Buffer.from(`\\u0019Ethereum Signed Message:\\n${message.length}`, 'utf-8')\n return keccak(Buffer.concat([prefix, message]))\n}\n","import { BN } from './externals'\nimport { isHexString } from './internal'\nimport { Address } from './address'\nimport { unpadBuffer, toBuffer, ToBufferInputTypes } from './bytes'\n\n/*\n * A type that represents a BNLike input that can be converted to a BN.\n */\nexport type BNLike = BN | PrefixedHexString | number | Buffer\n\n/*\n * A type that represents a BufferLike input that can be converted to a Buffer.\n */\nexport type BufferLike =\n | Buffer\n | Uint8Array\n | number[]\n | number\n | BN\n | TransformableToBuffer\n | PrefixedHexString\n\n/*\n * A type that represents a `0x`-prefixed hex string.\n */\nexport type PrefixedHexString = string\n\n/**\n * A type that represents an Address-like value.\n * To convert to address, use `new Address(toBuffer(value))`\n */\nexport type AddressLike = Address | Buffer | PrefixedHexString\n\n/*\n * A type that represents an object that has a `toArray()` method.\n */\nexport interface TransformableToArray {\n toArray(): Uint8Array\n toBuffer?(): Buffer\n}\n\n/*\n * A type that represents an object that has a `toBuffer()` method.\n */\nexport interface TransformableToBuffer {\n toBuffer(): Buffer\n toArray?(): Uint8Array\n}\n\nexport type NestedUint8Array = Array\nexport type NestedBufferArray = Array\n\n/**\n * Convert BN to 0x-prefixed hex string.\n */\nexport function bnToHex(value: BN): PrefixedHexString {\n return `0x${value.toString(16)}`\n}\n\n/**\n * Convert value from BN to an unpadded Buffer\n * (useful for RLP transport)\n * @param value value to convert\n */\nexport function bnToUnpaddedBuffer(value: BN): Buffer {\n // Using `bn.toArrayLike(Buffer)` instead of `bn.toBuffer()`\n // for compatibility with browserify and similar tools\n return unpadBuffer(value.toArrayLike(Buffer))\n}\n\n/**\n * Deprecated alias for {@link bnToUnpaddedBuffer}\n * @deprecated\n */\nexport function bnToRlp(value: BN): Buffer {\n return bnToUnpaddedBuffer(value)\n}\n\n/**\n * Type output options\n */\nexport enum TypeOutput {\n Number,\n BN,\n Buffer,\n PrefixedHexString,\n}\n\nexport type TypeOutputReturnType = {\n [TypeOutput.Number]: number\n [TypeOutput.BN]: BN\n [TypeOutput.Buffer]: Buffer\n [TypeOutput.PrefixedHexString]: PrefixedHexString\n}\n\n/**\n * Convert an input to a specified type.\n * Input of null/undefined returns null/undefined regardless of the output type.\n * @param input value to convert\n * @param outputType type to output\n */\nexport function toType(input: null, outputType: T): null\nexport function toType(input: undefined, outputType: T): undefined\nexport function toType(\n input: ToBufferInputTypes,\n outputType: T\n): TypeOutputReturnType[T]\nexport function toType(\n input: ToBufferInputTypes,\n outputType: T\n): TypeOutputReturnType[T] | undefined | null {\n if (input === null) {\n return null\n }\n if (input === undefined) {\n return undefined\n }\n\n if (typeof input === 'string' && !isHexString(input)) {\n throw new Error(`A string must be provided with a 0x-prefix, given: ${input}`)\n } else if (typeof input === 'number' && !Number.isSafeInteger(input)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)'\n )\n }\n\n const output = toBuffer(input)\n\n if (outputType === TypeOutput.Buffer) {\n return output as TypeOutputReturnType[T]\n } else if (outputType === TypeOutput.BN) {\n return new BN(output) as TypeOutputReturnType[T]\n } else if (outputType === TypeOutput.Number) {\n const bn = new BN(output)\n const max = new BN(Number.MAX_SAFE_INTEGER.toString())\n if (bn.gt(max)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative output type)'\n )\n }\n return bn.toNumber() as TypeOutputReturnType[T]\n } else {\n // outputType === TypeOutput.PrefixedHexString\n return `0x${output.toString('hex')}` as TypeOutputReturnType[T]\n }\n}\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @authors:\n * Fabian Vogelsteller \n * Gav Wood \n * Jeffrey Wilcke \n * Marek Kotewicz \n * Marian Oancea \n * @date 2017\n */\n\"use strict\";\nvar version = require('../package.json').version;\nvar core = require('web3-core');\nvar Eth = require('web3-eth');\nvar Net = require('web3-net');\nvar Personal = require('web3-eth-personal');\nvar Shh = require('web3-shh');\nvar Bzz = require('web3-bzz');\nvar utils = require('web3-utils');\nvar Web3 = function Web3() {\n var _this = this;\n // sets _requestmanager etc\n core.packageInit(this, arguments);\n this.version = version;\n this.utils = utils;\n this.eth = new Eth(this);\n this.shh = new Shh(this);\n this.bzz = new Bzz(this);\n // overwrite package setProvider\n var setProvider = this.setProvider;\n this.setProvider = function (provider, net) {\n /*jshint unused: false */\n setProvider.apply(_this, arguments);\n _this.eth.setRequestManager(_this._requestManager);\n _this.shh.setRequestManager(_this._requestManager);\n _this.bzz.setProvider(provider);\n return true;\n };\n};\nWeb3.version = version;\nWeb3.utils = utils;\nWeb3.modules = {\n Eth: Eth,\n Net: Net,\n Personal: Personal,\n Shh: Shh,\n Bzz: Bzz\n};\ncore.addProviders(Web3);\nmodule.exports = Web3;\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Web3Modal\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Web3Modal\"] = factory();\n\telse\n\t\troot[\"Web3Modal\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 24);\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","export * from \"./chains\";\nexport * from \"./classNames\";\nexport * from \"./events\";\nexport * from \"./keys\";\n","export * from \"./local\";\nexport * from \"./types\";\nexport * from \"./utils\";\n","import { ThemesList } from \"../helpers\";\nimport lightTheme from \"./light\";\nimport darkTheme from \"./dark\";\n\nexport const themesList: ThemesList = {\n default: lightTheme,\n [lightTheme.name]: lightTheme,\n [darkTheme.name]: darkTheme\n};\n","import * as connectors from \"./connectors\";\nimport * as injected from \"./injected\";\nimport * as providers from \"./providers\";\n\nexport { connectors, injected, providers };\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default index;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","import * as env from \"detect-browser\";\n\nimport { CHAIN_DATA_LIST } from \"../constants\";\nimport { themesList } from \"../themes\";\nimport { providers, injected } from \"../providers\";\nimport {\n IProviderInfo,\n IInjectedProvidersMap,\n ChainData,\n ThemeColors,\n RequiredOption\n} from \"./types\";\n\nexport function checkInjectedProviders(): IInjectedProvidersMap {\n const result = {\n injectedAvailable: !!window.ethereum || !!window.web3\n };\n if (result.injectedAvailable) {\n let fallbackProvider = true;\n Object.values(injected).forEach(provider => {\n const isAvailable = verifyInjectedProvider(provider.check);\n if (isAvailable) {\n result[provider.check] = true;\n fallbackProvider = false;\n }\n });\n\n const browser = env.detect();\n\n if (browser && browser.name === \"opera\") {\n result[injected.OPERA.check] = true;\n fallbackProvider = false;\n }\n\n if (fallbackProvider) {\n result[injected.FALLBACK.check] = true;\n }\n }\n\n return result;\n}\n\nexport function verifyInjectedProvider(check: string): boolean {\n return window.ethereum\n ? window.ethereum[check]\n : window.web3 &&\n window.web3.currentProvider &&\n window.web3.currentProvider[check];\n}\n\nexport function getInjectedProvider(): IProviderInfo | null {\n let result = null;\n\n const injectedProviders = checkInjectedProviders();\n\n if (injectedProviders.injectedAvailable) {\n delete injectedProviders.injectedAvailable;\n const checks = Object.keys(injectedProviders);\n result = getProviderInfoFromChecksArray(checks);\n }\n return result;\n}\n\nexport function getInjectedProviderName(): string | null {\n const injectedProvider = getInjectedProvider();\n return injectedProvider ? injectedProvider.name : null;\n}\n\nexport function getProviderInfo(provider: any): IProviderInfo {\n if (!provider) return providers.FALLBACK;\n const checks = Object.values(providers)\n .filter(x => provider[x.check])\n .map(x => x.check);\n return getProviderInfoFromChecksArray(checks);\n}\n\nexport function getProviderInfoFromChecksArray(\n checks: string[]\n): IProviderInfo {\n const check = filterProviderChecks(checks);\n return filterProviders(\"check\", check);\n}\n\nexport function getProviderInfoByName(name: string | null): IProviderInfo {\n return filterProviders(\"name\", name);\n}\n\nexport function getProviderInfoById(id: string | null): IProviderInfo {\n return filterProviders(\"id\", id);\n}\n\nexport function getProviderInfoByCheck(check: string | null): IProviderInfo {\n return filterProviders(\"check\", check);\n}\n\nexport function isMobile(): boolean {\n let mobile: boolean = false;\n\n function hasTouchEvent(): boolean {\n try {\n document.createEvent(\"TouchEvent\");\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function hasMobileUserAgent(): boolean {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(\n navigator.userAgent\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(\n navigator.userAgent.substr(0, 4)\n )\n ) {\n return true;\n } else if (hasTouchEvent()) {\n return true;\n }\n return false;\n }\n\n mobile = hasMobileUserAgent();\n\n return mobile;\n}\n\nexport function getProviderDescription(\n providerInfo: Partial\n): string {\n if (providerInfo.description) {\n return providerInfo.description;\n }\n let description = \"\";\n switch (providerInfo.type) {\n case \"injected\":\n description = `Connect to your ${providerInfo.name} Wallet`;\n break;\n case \"web\":\n description = `Connect with your ${providerInfo.name} account`;\n break;\n case \"qrcode\":\n description = `Scan with ${providerInfo.name} to connect`;\n break;\n case \"hardware\":\n description = `Connect to your ${providerInfo.name} Hardware Wallet`;\n break;\n default:\n break;\n }\n return description;\n}\n\nexport function filterMatches(\n array: T[],\n condition: (x: T) => boolean,\n fallback: T | undefined\n): T | undefined {\n let result = fallback;\n const matches = array.filter(condition);\n\n if (!!matches && matches.length) {\n result = matches[0];\n }\n\n return result;\n}\n\nexport function filterProviders(\n param: string,\n value: string | null\n): IProviderInfo {\n if (!value) return providers.FALLBACK;\n const match = filterMatches(\n Object.values(providers),\n x => x[param] === value,\n providers.FALLBACK\n );\n return match || providers.FALLBACK;\n}\n\nexport function filterProviderChecks(checks: string[]): string {\n if (!!checks && checks.length) {\n if (checks.length > 1) {\n if (\n checks[0] === injected.METAMASK.check ||\n checks[0] === injected.CIPHER.check\n ) {\n return checks[1];\n }\n }\n return checks[0];\n }\n return providers.FALLBACK.check;\n}\n\nexport function getChainId(network: string): number {\n const chains: ChainData[] = Object.values(CHAIN_DATA_LIST);\n const match = filterMatches(\n chains,\n x => x.network === network,\n undefined\n );\n if (!match) {\n throw new Error(`No chainId found match ${network}`);\n }\n return match.chainId;\n}\n\nexport function getThemeColors(theme: string | ThemeColors): ThemeColors {\n return typeof theme === \"string\" ? themesList[theme].colors : theme;\n}\n\nexport function findMatchingRequiredOptions(\n requiredOptions: RequiredOption[],\n providedOptions: { [key: string]: any }\n): RequiredOption[] {\n const matches = requiredOptions.filter(requiredOption => {\n if (typeof requiredOption === \"string\") {\n return requiredOption in providedOptions;\n }\n const matches = findMatchingRequiredOptions(\n requiredOption,\n providedOptions\n );\n return matches && matches.length;\n });\n return matches;\n}\n\nexport function isLocalStorageAvailable() {\n let test = \"test\";\n try {\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch (e) {\n return false;\n }\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","import { IProviderInfo } from \"../../helpers\";\n\n// @ts-ignore\nimport Web3DefaultLogo from \"../logos/web3-default.svg\";\n// @ts-ignore\nimport MetaMaskLogo from \"../logos/metamask.svg\";\n// @ts-ignore\nimport SafeLogo from \"../logos/safe.svg\";\n// @ts-ignore\nimport NiftyWalletLogo from \"../logos/niftyWallet.png\";\n// @ts-ignore\nimport TrustLogo from \"../logos/trust.svg\";\n// @ts-ignore\nimport DapperLogo from \"../logos/dapper.png\";\n// @ts-ignore\nimport CoinbaseLogo from \"../logos/coinbase.svg\";\n// @ts-ignore\nimport CipherLogo from \"../logos/cipher.svg\";\n// @ts-ignore\nimport imTokenLogo from \"../logos/imtoken.svg\";\n// @ts-ignore\nimport StatusLogo from \"../logos/status.svg\";\n// @ts-ignore\nimport TokenaryLogo from \"../logos/tokenary.png\";\n// @ts-ignore\nimport OperaLogo from \"../logos/opera.svg\";\n// @ts-ignore\nimport FrameLogo from \"../logos/frame.svg\";\n// @ts-ignore\nimport LiqualityLogo from \"../logos/liquality.png\";\n// @ts-ignore\nimport BoltXLogo from \"../logos/boltx.svg\";\n// @ts-ignore\nimport MathWalletLogo from \"../logos/mathwallet.png\";\n// @ts-ignore\nimport RWalletLogo from \"../logos/rwallet.svg\";\n// @ts-ignore\nimport BitpieLogo from \"../logos/bitpie.svg\";\n// @ts-ignore\nimport XDEFILogo from \"../logos/xdefi.svg\";\n// @ts-ignore\nimport CeloExtensionWalletLogo from \"../logos/celoExtensionWallet.svg\";\n// @ts-ignore\nimport BlockWalletLogo from \"../logos/blockwallet.svg\";\n// @ts-ignore\nimport TallyLogo from \"../logos/tally.svg\";\n// @ts-ignore\nimport PortalLogo from \"../logos/portal.svg\";\n// @ts-ignore\nimport SequenceLogo from \"../logos/sequence.svg\";\n// @ts-ignore\nimport BraveLogo from \"../logos/brave.svg\";\n// @ts-ignore\nimport RabbyLogo from \"../logos/rabby.svg\";\n// @ts-ignore\nimport BitkeepLogo from \"../logos/bitkeepwallet.png\";\n// @ts-ignore\nimport ClvLogo from \"../logos/clv.svg\";\n\n\nexport const FALLBACK: IProviderInfo = {\n id: \"injected\",\n name: \"Web3\",\n logo: Web3DefaultLogo,\n type: \"injected\",\n check: \"isWeb3\"\n};\n\nexport const METAMASK: IProviderInfo = {\n id: \"injected\",\n name: \"MetaMask\",\n logo: MetaMaskLogo,\n type: \"injected\",\n check: \"isMetaMask\"\n};\n\nexport const SAFE: IProviderInfo = {\n id: \"injected\",\n name: \"Safe\",\n logo: SafeLogo,\n type: \"injected\",\n check: \"isSafe\"\n};\n\nexport const NIFTY: IProviderInfo = {\n id: \"injected\",\n name: \"Nifty\",\n logo: NiftyWalletLogo,\n type: \"injected\",\n check: \"isNiftyWallet\"\n};\n\nexport const DAPPER: IProviderInfo = {\n id: \"injected\",\n name: \"Dapper\",\n logo: DapperLogo,\n type: \"injected\",\n check: \"isDapper\"\n};\n\nexport const OPERA: IProviderInfo = {\n id: \"injected\",\n name: \"Opera\",\n logo: OperaLogo,\n type: \"injected\",\n check: \"isOpera\"\n};\n\nexport const TRUST: IProviderInfo = {\n id: \"injected\",\n name: \"Trust\",\n logo: TrustLogo,\n type: \"injected\",\n check: \"isTrust\"\n};\n\nexport const COINBASE: IProviderInfo = {\n id: \"injected\",\n name: \"Coinbase\",\n logo: CoinbaseLogo,\n type: \"injected\",\n check: \"isCoinbaseWallet\"\n};\n\nexport const CIPHER: IProviderInfo = {\n id: \"injected\",\n name: \"Cipher\",\n logo: CipherLogo,\n type: \"injected\",\n check: \"isCipher\"\n};\n\nexport const IMTOKEN: IProviderInfo = {\n id: \"injected\",\n name: \"imToken\",\n logo: imTokenLogo,\n type: \"injected\",\n check: \"isImToken\"\n};\n\nexport const STATUS: IProviderInfo = {\n id: \"injected\",\n name: \"Status\",\n logo: StatusLogo,\n type: \"injected\",\n check: \"isStatus\"\n};\n\nexport const TOKENARY: IProviderInfo = {\n id: \"injected\",\n name: \"Tokenary\",\n logo: TokenaryLogo,\n type: \"injected\",\n check: \"isTokenary\"\n};\n\nexport const FRAMEINJECTED: IProviderInfo = {\n id: \"injected\",\n name: \"Frame\",\n logo: FrameLogo,\n type: \"injected\",\n check: \"isFrame\"\n};\n\nexport const LIQUALITY: IProviderInfo = {\n id: \"injected\",\n name: \"Liquality\",\n logo: LiqualityLogo,\n type: \"injected\",\n check: \"isLiquality\"\n};\n\nexport const BOLTX: IProviderInfo = {\n id: \"boltx\",\n name: \"Bolt-X\",\n logo: BoltXLogo,\n type: \"injected\",\n check: \"isBoltX\"\n};\n\nexport const MATHWALLET: IProviderInfo = {\n id: \"injected\",\n name: \"Math Wallet\",\n logo: MathWalletLogo,\n type: \"injected\",\n check: \"isMathWallet\"\n};\n\nexport const RWALLET: IProviderInfo = {\n id: \"injected\",\n name: \"rWallet\",\n logo: RWalletLogo,\n type: \"injected\",\n check: \"isRWallet\"\n};\n\nexport const XDEFI: IProviderInfo = {\n id: \"injected\",\n name: \"XDEFI\",\n logo: XDEFILogo,\n type: \"injected\",\n check: \"__XDEFI\"\n};\n\nexport const BITPIE: IProviderInfo = {\n id: \"injected\",\n name: \"Bitpie\",\n logo: BitpieLogo,\n type: \"injected\",\n check: \"isBitpie\"\n};\n\nexport const CELOINJECTED: IProviderInfo = {\n id: \"injected\",\n name: \"Celo extension wallet\",\n logo: CeloExtensionWalletLogo,\n type: \"injected\",\n check: \"isCelo\"\n};\n\nexport const BLOCKWALLET: IProviderInfo = {\n id: \"injected\",\n name: \"BlockWallet\",\n logo: BlockWalletLogo,\n type: \"injected\",\n check: \"isBlockWallet\"\n};\n\nexport const TALLYINJECTED: IProviderInfo = {\n id: \"injected\",\n name: \"Tally\",\n logo: TallyLogo,\n type: \"injected\",\n check: \"isTally\"\n};\n\nexport const PORTAL: IProviderInfo = {\n id: \"injected\",\n name: \"Ripio Portal\",\n logo: PortalLogo,\n type: \"injected\",\n check: \"isPortal\"\n};\n\nexport const SEQUENCEINJECTED: IProviderInfo = {\n id: \"injected\",\n name: \"Sequence\",\n logo: SequenceLogo,\n type: \"injected\",\n check: \"isSequence\"\n};\n\nexport const RABBY: IProviderInfo = {\n id: \"injected\",\n name: \"Rabby\",\n logo: RabbyLogo,\n type: \"injected\",\n check: \"isRabby\"\n};\n\nexport const BRAVE: IProviderInfo = {\n id: \"injected\",\n name: \"Brave\",\n logo: BraveLogo,\n type: \"injected\",\n check: \"isBraveWallet\"\n};\n\nexport const CLV: IProviderInfo = {\n id: \"injected\",\n name: \"CLV\",\n logo: ClvLogo,\n type: \"injected\",\n check: \"isCloverWallet\"\n};\n\nexport const BITKEEPWALLET: IProviderInfo = {\n id: \"injected\",\n name: \"Bitkeep Wallet\",\n logo: BitkeepLogo,\n type: \"injected\",\n check: \"isBitKeep\"\n};\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODEiIGhlaWdodD0iODAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNLjcxIDBINjh2NzkuOEguNzF6Ii8+PHBhdGggZD0iTTQwLjYxIDBDMTguNTczIDAgLjcxIDE3Ljg2My43MSAzOS45MDJjMCAyMS4zOTkgMTYuODQ1IDM4Ljg2IDM3Ljk5NyAzOS44NTIuNjMzLjAzMSAxLjI2Ni4wNDcgMS45MDIuMDQ3IDEwLjIxNSAwIDE5LjUzMi0zLjg0IDI2LjU5LTEwLjE1My00LjY3NiAzLjEwMi0xMC4xNDQgNC44ODctMTUuOTg4IDQuODg3LTkuNSAwLTE4LjAxMi00LjcxNS0yMy43MzQtMTIuMTQ4LTQuNDEtNS4yMDctNy4yNy0xMi45MDctNy40NjUtMjEuNTQ3di0xLjg4Yy4xOTUtOC42NCAzLjA1NC0xNi4zMzkgNy40NjUtMjEuNTQ2QzMzLjE5OSA5Ljk4NCA0MS43MSA1LjI3IDUxLjIxIDUuMjdjNS44NDQgMCAxMS4zMTYgMS43ODUgMTUuOTkyIDQuODg2QzYwLjE4IDMuODc1IDUwLjkxOC4wNCA0MC43NjIuMDA0IDQwLjcxLjAwNCA0MC42NiAwIDQwLjYwOSAweiIgaWQ9ImMiLz48bGluZWFyR3JhZGllbnQgeDE9IjQ5Ljk5OSUiIHkxPSIwJSIgeDI9IjQ5Ljk5OSUiIHkyPSIxMDAlIiBpZD0iZCI+PHN0b3Agc3RvcC1jb2xvcj0iI0ZGMUIyRCIgb2Zmc2V0PSIwJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNGRjFCMkQiIG9mZnNldD0iMjUlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0ZGMUIyRCIgb2Zmc2V0PSIzMS4yNSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkYxQjJEIiBvZmZzZXQ9IjM0LjM3NSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkUxQjJEIiBvZmZzZXQ9IjM3LjUlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0ZEMUEyRCIgb2Zmc2V0PSIzOS4wNjMlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0ZEMUEyQyIgb2Zmc2V0PSI0MC42MjUlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0ZDMUEyQyIgb2Zmc2V0PSI0Mi4xODglIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0ZCMUEyQyIgb2Zmc2V0PSI0My43NSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkExQTJDIiBvZmZzZXQ9IjQ0LjUzMSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkExOTJDIiBvZmZzZXQ9IjQ1LjMxMyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRjkxOTJCIiBvZmZzZXQ9IjQ2LjA5NCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRjkxOTJCIiBvZmZzZXQ9IjQ2Ljg3NSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRjgxOTJCIiBvZmZzZXQ9IjQ3LjY1NiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRjgxOTJCIiBvZmZzZXQ9IjQ4LjQzOCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRjcxOTJCIiBvZmZzZXQ9IjQ5LjIxOSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRjYxODJCIiBvZmZzZXQ9IjUwJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNGNjE4MkEiIG9mZnNldD0iNTAuNzgxJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNGNTE4MkEiIG9mZnNldD0iNTEuNTYzJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNGNDE4MkEiIG9mZnNldD0iNTIuMzQ0JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNGNDE3MkEiIG9mZnNldD0iNTMuMTI1JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNGMzE3MkEiIG9mZnNldD0iNTMuOTA2JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNGMjE3MjkiIG9mZnNldD0iNTQuNjg4JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNGMTE3MjkiIG9mZnNldD0iNTUuNDY5JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNGMDE3MjkiIG9mZnNldD0iNTYuMjUlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0YwMTYyOSIgb2Zmc2V0PSI1Ny4wMzElIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0VGMTYyOCIgb2Zmc2V0PSI1Ny44MTMlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0VFMTYyOCIgb2Zmc2V0PSI1OC41OTQlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0VEMTUyOCIgb2Zmc2V0PSI1OS4zNzUlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0VDMTUyOCIgb2Zmc2V0PSI2MC4xNTYlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0VCMTUyNyIgb2Zmc2V0PSI2MC45MzglIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0VBMTUyNyIgb2Zmc2V0PSI2MS43MTklIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0U5MTQyNyIgb2Zmc2V0PSI2Mi41JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFODE0MjciIG9mZnNldD0iNjIuODkxJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFODE0MjYiIG9mZnNldD0iNjMuMjgxJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFNzE0MjYiIG9mZnNldD0iNjMuNjcyJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFNzE0MjYiIG9mZnNldD0iNjQuMDYzJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFNjEzMjYiIG9mZnNldD0iNjQuNDUzJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFNjEzMjYiIG9mZnNldD0iNjQuODQ0JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFNTEzMjYiIG9mZnNldD0iNjUuMjM0JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFNTEzMjYiIG9mZnNldD0iNjUuNjI1JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFNDEzMjUiIG9mZnNldD0iNjYuMDE2JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFNDEzMjUiIG9mZnNldD0iNjYuNDA2JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFMzEyMjUiIG9mZnNldD0iNjYuNzk3JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFMjEyMjUiIG9mZnNldD0iNjcuMTg4JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFMjEyMjUiIG9mZnNldD0iNjcuNTc4JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFMTEyMjUiIG9mZnNldD0iNjcuOTY5JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFMTEyMjQiIG9mZnNldD0iNjguMzU5JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFMDEyMjQiIG9mZnNldD0iNjguNzUlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0UwMTEyNCIgb2Zmc2V0PSI2OS4xNDElIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0RGMTEyNCIgb2Zmc2V0PSI2OS41MzElIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0RFMTEyNCIgb2Zmc2V0PSI2OS45MjIlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0RFMTEyNCIgb2Zmc2V0PSI3MC4zMTMlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0REMTEyMyIgb2Zmc2V0PSI3MC43MDMlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0REMTAyMyIgb2Zmc2V0PSI3MS4wOTQlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0RDMTAyMyIgb2Zmc2V0PSI3MS40ODQlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0RCMTAyMyIgb2Zmc2V0PSI3MS44NzUlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0RCMTAyMyIgb2Zmc2V0PSI3Mi4yNjYlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0RBMTAyMyIgb2Zmc2V0PSI3Mi42NTYlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0RBMTAyMiIgb2Zmc2V0PSI3My4wNDclIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Q5MEYyMiIgb2Zmc2V0PSI3My40MzglIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Q4MEYyMiIgb2Zmc2V0PSI3My44MjglIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Q4MEYyMiIgb2Zmc2V0PSI3NC4yMTklIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Q3MEYyMiIgb2Zmc2V0PSI3NC42MDklIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Q2MEYyMSIgb2Zmc2V0PSI3NSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDYwRTIxIiBvZmZzZXQ9Ijc1LjM5MSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDUwRTIxIiBvZmZzZXQ9Ijc1Ljc4MSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDQwRTIxIiBvZmZzZXQ9Ijc2LjE3MiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDQwRTIxIiBvZmZzZXQ9Ijc2LjU2MyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDMwRTIxIiBvZmZzZXQ9Ijc2Ljk1MyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDIwRDIwIiBvZmZzZXQ9Ijc3LjM0NCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDIwRDIwIiBvZmZzZXQ9Ijc3LjczNCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDEwRDIwIiBvZmZzZXQ9Ijc4LjEyNSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDAwRDIwIiBvZmZzZXQ9Ijc4LjUxNiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDAwQzIwIiBvZmZzZXQ9Ijc4LjkwNiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQ0YwQzFGIiBvZmZzZXQ9Ijc5LjI5NyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQ0UwQzFGIiBvZmZzZXQ9Ijc5LjY4OCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQ0UwQzFGIiBvZmZzZXQ9IjgwLjA3OCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQ0QwQzFGIiBvZmZzZXQ9IjgwLjQ2OSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQ0MwQjFGIiBvZmZzZXQ9IjgwLjg1OSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQ0IwQjFFIiBvZmZzZXQ9IjgxLjI1JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDQjBCMUUiIG9mZnNldD0iODEuNjQxJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDQTBCMUUiIG9mZnNldD0iODIuMDMxJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDOTBBMUUiIG9mZnNldD0iODIuNDIyJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDODBBMUUiIG9mZnNldD0iODIuODEzJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDODBBMUQiIG9mZnNldD0iODMuMjAzJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDNzBBMUQiIG9mZnNldD0iODMuNTk0JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDNjBBMUQiIG9mZnNldD0iODMuOTg0JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDNTA5MUQiIG9mZnNldD0iODQuMzc1JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDNTA5MUMiIG9mZnNldD0iODQuNzY2JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDNDA5MUMiIG9mZnNldD0iODUuMTU2JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDMzA5MUMiIG9mZnNldD0iODUuNTQ3JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDMjA4MUMiIG9mZnNldD0iODUuOTM4JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDMjA4MUMiIG9mZnNldD0iODYuMzI4JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDMTA4MUIiIG9mZnNldD0iODYuNzE5JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDMDA4MUIiIG9mZnNldD0iODcuMTA5JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNCRjA3MUIiIG9mZnNldD0iODcuNSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQkUwNzFCIiBvZmZzZXQ9Ijg3Ljg5MSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQkUwNzFBIiBvZmZzZXQ9Ijg4LjI4MSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQkQwNzFBIiBvZmZzZXQ9Ijg4LjY3MiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQkMwNjFBIiBvZmZzZXQ9Ijg5LjA2MyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQkIwNjFBIiBvZmZzZXQ9Ijg5LjQ1MyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQkEwNjFBIiBvZmZzZXQ9Ijg5Ljg0NCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQkEwNjE5IiBvZmZzZXQ9IjkwLjIzNCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQjkwNTE5IiBvZmZzZXQ9IjkwLjYyNSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQjgwNTE5IiBvZmZzZXQ9IjkxLjAxNiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQjcwNTE5IiBvZmZzZXQ9IjkxLjQwNiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQjYwNTE4IiBvZmZzZXQ9IjkxLjc5NyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQjUwNDE4IiBvZmZzZXQ9IjkyLjE4OCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQjUwNDE4IiBvZmZzZXQ9IjkyLjU3OCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQjQwNDE4IiBvZmZzZXQ9IjkyLjk2OSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQjMwNDE3IiBvZmZzZXQ9IjkzLjM1OSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQjIwMzE3IiBvZmZzZXQ9IjkzLjc1JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNCMTAzMTciIG9mZnNldD0iOTQuMTQxJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNCMDAzMTciIG9mZnNldD0iOTQuNTMxJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBRjAzMTYiIG9mZnNldD0iOTQuOTIyJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBRTAyMTYiIG9mZnNldD0iOTUuMzEzJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBRTAyMTYiIG9mZnNldD0iOTUuNzAzJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBRDAyMTYiIG9mZnNldD0iOTYuMDk0JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBQzAxMTUiIG9mZnNldD0iOTYuNDg0JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBQjAxMTUiIG9mZnNldD0iOTYuODc1JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBQTAxMTUiIG9mZnNldD0iOTcuMjY2JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBOTAxMTUiIG9mZnNldD0iOTcuNjU2JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBODAwMTQiIG9mZnNldD0iOTguMDQ3JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBNzAwMTQiIG9mZnNldD0iOTguNDM4JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBNzAwMTQiIG9mZnNldD0iMTAwJSIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9ImYiIGQ9Ik0wIDBoNTR2NzBIMHoiLz48cGF0aCBkPSJNLjQ3NyAxMi40MTRjMy42Ni00LjMyIDguMzktNi45MjYgMTMuNTU0LTYuOTI2IDExLjYxNyAwIDIxLjAzMiAxMy4xNjggMjEuMDMyIDI5LjQxNCAwIDE2LjI0My05LjQxNSAyOS40MS0yMS4wMzIgMjkuNDEtNS4xNjQgMC05Ljg5NC0yLjYwNS0xMy41NTQtNi45MjVDNi4xOTkgNjQuODIgMTQuNzEgNjkuNTM1IDI0LjIxIDY5LjUzNWM1Ljg0NCAwIDExLjMxMi0xLjc4NSAxNS45ODgtNC44ODcgOC4xNjgtNy4zMDggMTMuMzEzLTE3LjkyNSAxMy4zMTMtMjkuNzQ2IDAtMTEuODItNS4xNDUtMjIuNDQxLTEzLjMwOS0yOS43NDZDMzUuNTI3IDIuMDU1IDMwLjA1NS4yNyAyNC4yMTEuMjcgMTQuNzEuMjcgNi4xOTkgNC45ODQuNDc3IDEyLjQxNCIgaWQ9ImgiLz48bGluZWFyR3JhZGllbnQgeDE9IjQ5Ljk5OCUiIHkxPSItLjAwMSUiIHgyPSI0OS45OTglIiB5Mj0iOTkuOTk3JSIgaWQ9ImkiPjxzdG9wIHN0b3AtY29sb3I9IiM5QzAwMDAiIG9mZnNldD0iMCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjOUMwMDAwIiBvZmZzZXQ9Ii43ODElIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzlEMDAwMCIgb2Zmc2V0PSIxLjE3MiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjOUQwMTAxIiBvZmZzZXQ9IjEuNTYzJSIvPjxzdG9wIHN0b3AtY29sb3I9IiM5RTAxMDEiIG9mZnNldD0iMS45NTMlIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzlFMDIwMiIgb2Zmc2V0PSIyLjM0NCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjOUYwMjAyIiBvZmZzZXQ9IjIuNzM0JSIvPjxzdG9wIHN0b3AtY29sb3I9IiM5RjAyMDIiIG9mZnNldD0iMy4xMjUlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0EwMDMwMyIgb2Zmc2V0PSIzLjUxNiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQTAwMzAzIiBvZmZzZXQ9IjMuOTA2JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBMTA0MDQiIG9mZnNldD0iNC4yOTclIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0ExMDQwNCIgb2Zmc2V0PSI0LjY4OCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQTIwNTA1IiBvZmZzZXQ9IjUuMDc4JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBMzA1MDUiIG9mZnNldD0iNS40NjklIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0EzMDUwNSIgb2Zmc2V0PSI1Ljg1OSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQTQwNjA2IiBvZmZzZXQ9IjYuMjUlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0E0MDYwNiIgb2Zmc2V0PSI2LjY0MSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQTUwNzA3IiBvZmZzZXQ9IjcuMDMxJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBNTA3MDciIG9mZnNldD0iNy40MjIlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0E2MDgwOCIgb2Zmc2V0PSI3LjgxMyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQTcwODA4IiBvZmZzZXQ9IjguMjAzJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBNzA4MDgiIG9mZnNldD0iOC41OTQlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0E4MDkwOSIgb2Zmc2V0PSI4Ljk4NCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQTgwOTA5IiBvZmZzZXQ9IjkuMzc1JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBOTBBMEEiIG9mZnNldD0iOS43NjYlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0E5MEEwQSIgb2Zmc2V0PSIxMC4xNTYlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0FBMEIwQiIgb2Zmc2V0PSIxMC41NDclIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0FBMEIwQiIgb2Zmc2V0PSIxMC45MzglIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0FCMEIwQiIgb2Zmc2V0PSIxMS4zMjglIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0FDMEMwQyIgb2Zmc2V0PSIxMS43MTklIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0FDMEMwQyIgb2Zmc2V0PSIxMi4xMDklIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0FEMEQwRCIgb2Zmc2V0PSIxMi41JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBRDBEMEQiIG9mZnNldD0iMTIuODkxJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBRTBEMEQiIG9mZnNldD0iMTMuMjgxJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBRTBFMEUiIG9mZnNldD0iMTMuNjcyJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBRjBFMEUiIG9mZnNldD0iMTQuMDYzJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNBRjBGMEYiIG9mZnNldD0iMTQuNDUzJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNCMDBGMEYiIG9mZnNldD0iMTQuODQ0JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNCMTEwMTAiIG9mZnNldD0iMTUuMjM0JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNCMTEwMTAiIG9mZnNldD0iMTUuNjI1JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNCMjEwMTAiIG9mZnNldD0iMTYuMDE2JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNCMjExMTEiIG9mZnNldD0iMTYuNDA2JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNCMzExMTEiIG9mZnNldD0iMTYuNzk3JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNCMzEyMTIiIG9mZnNldD0iMTcuMTg4JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNCNDEyMTIiIG9mZnNldD0iMTcuNTc4JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNCNTEzMTMiIG9mZnNldD0iMTcuOTY5JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNCNTEzMTMiIG9mZnNldD0iMTguMzU5JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNCNjEzMTMiIG9mZnNldD0iMTguNzUlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I2MTQxNCIgb2Zmc2V0PSIxOS4xNDElIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I3MTQxNCIgb2Zmc2V0PSIxOS41MzElIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I3MTUxNSIgb2Zmc2V0PSIxOS45MjIlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I4MTUxNSIgb2Zmc2V0PSIyMC4zMTMlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I4MTYxNiIgb2Zmc2V0PSIyMC43MDMlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I5MTYxNiIgb2Zmc2V0PSIyMS4wOTQlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0JBMTYxNiIgb2Zmc2V0PSIyMS40ODQlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0JBMTcxNyIgb2Zmc2V0PSIyMS44NzUlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0JCMTcxNyIgb2Zmc2V0PSIyMi4yNjYlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0JCMTgxOCIgb2Zmc2V0PSIyMi42NTYlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0JDMTgxOCIgb2Zmc2V0PSIyMy4wNDclIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0JDMTkxOSIgb2Zmc2V0PSIyMy40MzglIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0JEMTkxOSIgb2Zmc2V0PSIyMy44MjglIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0JEMTkxOSIgb2Zmc2V0PSIyNC4yMTklIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0JFMUExQSIgb2Zmc2V0PSIyNC42MDklIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0JGMUExQSIgb2Zmc2V0PSIyNSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQkYxQjFCIiBvZmZzZXQ9IjI1LjM5MSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQzAxQjFCIiBvZmZzZXQ9IjI1Ljc4MSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQzAxQjFCIiBvZmZzZXQ9IjI2LjE3MiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQzExQzFDIiBvZmZzZXQ9IjI2LjU2MyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQzExQzFDIiBvZmZzZXQ9IjI2Ljk1MyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQzIxRDFEIiBvZmZzZXQ9IjI3LjM0NCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQzIxRDFEIiBvZmZzZXQ9IjI3LjczNCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQzMxRTFFIiBvZmZzZXQ9IjI4LjEyNSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQzQxRTFFIiBvZmZzZXQ9IjI4LjUxNiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQzQxRTFFIiBvZmZzZXQ9IjI4LjkwNiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQzUxRjFGIiBvZmZzZXQ9IjI5LjI5NyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQzUxRjFGIiBvZmZzZXQ9IjI5LjY4OCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQzYyMDIwIiBvZmZzZXQ9IjMwLjA3OCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQzYyMDIwIiBvZmZzZXQ9IjMwLjQ2OSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQzcyMTIxIiBvZmZzZXQ9IjMwLjg1OSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQzgyMTIxIiBvZmZzZXQ9IjMxLjI1JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDODIxMjEiIG9mZnNldD0iMzEuNjQxJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDOTIyMjIiIG9mZnNldD0iMzIuMDMxJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDOTIyMjIiIG9mZnNldD0iMzIuNDIyJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDQTIzMjMiIG9mZnNldD0iMzIuODEzJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDQTIzMjMiIG9mZnNldD0iMzMuMjAzJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDQjI0MjQiIG9mZnNldD0iMzMuNTk0JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDQjI0MjQiIG9mZnNldD0iMzMuOTg0JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDQzI0MjQiIG9mZnNldD0iMzQuMzc1JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDRDI1MjUiIG9mZnNldD0iMzQuNzY2JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDRDI1MjUiIG9mZnNldD0iMzUuMTU2JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDRTI2MjYiIG9mZnNldD0iMzUuNTQ3JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDRTI2MjYiIG9mZnNldD0iMzUuOTM4JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDRjI2MjYiIG9mZnNldD0iMzYuMzI4JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNDRjI3MjciIG9mZnNldD0iMzYuNzE5JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNEMDI3MjciIG9mZnNldD0iMzcuMTA5JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNEMDI4MjgiIG9mZnNldD0iMzcuNSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDEyODI4IiBvZmZzZXQ9IjM3Ljg5MSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDIyOTI5IiBvZmZzZXQ9IjM4LjI4MSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDIyOTI5IiBvZmZzZXQ9IjM4LjY3MiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDMyOTI5IiBvZmZzZXQ9IjM5LjA2MyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDMyQTJBIiBvZmZzZXQ9IjM5LjQ1MyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDQyQTJBIiBvZmZzZXQ9IjM5Ljg0NCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDQyQjJCIiBvZmZzZXQ9IjQwLjIzNCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDUyQjJCIiBvZmZzZXQ9IjQwLjYyNSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDYyQzJDIiBvZmZzZXQ9IjQxLjAxNiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDYyQzJDIiBvZmZzZXQ9IjQxLjQwNiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDcyQzJDIiBvZmZzZXQ9IjQxLjc5NyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDcyRDJEIiBvZmZzZXQ9IjQyLjE4OCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDgyRDJEIiBvZmZzZXQ9IjQyLjU3OCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDgyRTJFIiBvZmZzZXQ9IjQyLjk2OSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDkyRTJFIiBvZmZzZXQ9IjQzLjM1OSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRDkyRjJGIiBvZmZzZXQ9IjQzLjc1JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNEQTJGMkYiIG9mZnNldD0iNDQuMTQxJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNEQjJGMkYiIG9mZnNldD0iNDQuNTMxJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNEQjMwMzAiIG9mZnNldD0iNDQuOTIyJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNEQzMwMzAiIG9mZnNldD0iNDUuMzEzJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNEQzMxMzEiIG9mZnNldD0iNDUuNzAzJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNERDMxMzEiIG9mZnNldD0iNDYuMDk0JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNERDMyMzIiIG9mZnNldD0iNDYuNDg0JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNERTMyMzIiIG9mZnNldD0iNDYuODc1JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNERTMyMzIiIG9mZnNldD0iNDcuMjY2JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNERjMzMzMiIG9mZnNldD0iNDcuNjU2JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFMDMzMzMiIG9mZnNldD0iNDguMDQ3JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFMDM0MzQiIG9mZnNldD0iNDguNDM4JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFMTM0MzQiIG9mZnNldD0iNDguODI4JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFMTM0MzQiIG9mZnNldD0iNDkuMjE5JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFMjM1MzUiIG9mZnNldD0iNDkuNjA5JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFMjM1MzUiIG9mZnNldD0iNTAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0UzMzYzNiIgb2Zmc2V0PSI1MC4zOTElIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0U0MzYzNiIgb2Zmc2V0PSI1MC43ODElIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0U0MzczNyIgb2Zmc2V0PSI1MS4xNzIlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0U1MzczNyIgb2Zmc2V0PSI1MS41NjMlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0U1MzczNyIgb2Zmc2V0PSI1MS45NTMlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0U2MzgzOCIgb2Zmc2V0PSI1Mi4zNDQlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0U2MzgzOCIgb2Zmc2V0PSI1Mi43MzQlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0U3MzkzOSIgb2Zmc2V0PSI1My4xMjUlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0U3MzkzOSIgb2Zmc2V0PSI1My41MTYlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0U4M0EzQSIgb2Zmc2V0PSI1My45MDYlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0U5M0EzQSIgb2Zmc2V0PSI1NC4yOTclIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0U5M0EzQSIgb2Zmc2V0PSI1NC42ODglIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0VBM0IzQiIgb2Zmc2V0PSI1NS4wNzglIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0VBM0IzQiIgb2Zmc2V0PSI1NS40NjklIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0VCM0MzQyIgb2Zmc2V0PSI1NS44NTklIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0VCM0MzQyIgb2Zmc2V0PSI1Ni4yNSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRUMzRDNEIiBvZmZzZXQ9IjU2LjY0MSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRUMzRDNEIiBvZmZzZXQ9IjU3LjAzMSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRUQzRDNEIiBvZmZzZXQ9IjU3LjQyMiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRUUzRTNFIiBvZmZzZXQ9IjU3LjgxMyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRUUzRTNFIiBvZmZzZXQ9IjU4LjIwMyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRUYzRjNGIiBvZmZzZXQ9IjU4LjU5NCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRUYzRjNGIiBvZmZzZXQ9IjU4Ljk4NCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRjAzRjNGIiBvZmZzZXQ9IjU5LjM3NSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRjA0MDQwIiBvZmZzZXQ9IjU5Ljc2NiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRjE0MDQwIiBvZmZzZXQ9IjYwLjE1NiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRjE0MTQxIiBvZmZzZXQ9IjYwLjU0NyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRjI0MTQxIiBvZmZzZXQ9IjYwLjkzOCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRjM0MjQyIiBvZmZzZXQ9IjYxLjMyOCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRjM0MjQyIiBvZmZzZXQ9IjYxLjcxOSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRjQ0MjQyIiBvZmZzZXQ9IjYyLjEwOSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRjQ0MzQzIiBvZmZzZXQ9IjYyLjUlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Y1NDM0MyIgb2Zmc2V0PSI2Mi44OTElIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Y1NDQ0NCIgb2Zmc2V0PSI2My4yODElIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Y2NDQ0NCIgb2Zmc2V0PSI2My42NzIlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Y3NDU0NSIgb2Zmc2V0PSI2NC4wNjMlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Y3NDU0NSIgb2Zmc2V0PSI2NC40NTMlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Y4NDU0NSIgb2Zmc2V0PSI2NC44NDQlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Y4NDY0NiIgb2Zmc2V0PSI2NS4yMzQlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Y5NDY0NiIgb2Zmc2V0PSI2NS42MjUlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Y5NDc0NyIgb2Zmc2V0PSI2Ni4wMTYlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0ZBNDc0NyIgb2Zmc2V0PSI2Ni40MDYlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0ZBNDg0OCIgb2Zmc2V0PSI2Ni43OTclIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0ZCNDg0OCIgb2Zmc2V0PSI2Ny4xODglIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0ZDNDg0OCIgb2Zmc2V0PSI2Ny41NzglIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0ZDNDk0OSIgb2Zmc2V0PSI2Ny45NjklIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0ZENDk0OSIgb2Zmc2V0PSI2OC4zNTklIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0ZENEE0QSIgb2Zmc2V0PSI2OC43NSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkU0QTRBIiBvZmZzZXQ9IjY5LjE0MSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkU0QjRCIiBvZmZzZXQ9IjY5LjUzMSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkY0QjRCIiBvZmZzZXQ9IjcwLjMxMyUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkY0QjRCIiBvZmZzZXQ9IjcxLjg3NSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkY0QjRCIiBvZmZzZXQ9Ijc1JSIvPjxzdG9wIHN0b3AtY29sb3I9IiNGRjRCNEIiIG9mZnNldD0iMTAwJSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PG1hc2sgaWQ9ImIiIGZpbGw9IiNmZmYiPjx1c2UgeGxpbms6aHJlZj0iI2EiLz48L21hc2s+PGcgbWFzaz0idXJsKCNiKSI+PG1hc2sgaWQ9ImUiIGZpbGw9IiNmZmYiPjx1c2UgeGxpbms6aHJlZj0iI2MiLz48L21hc2s+PHBhdGggZmlsbD0idXJsKCNkKSIgZmlsbC1ydWxlPSJub256ZXJvIiBtYXNrPSJ1cmwoI2UpIiBkPSJNNjcuMjAzIDBILjcxMXY3OS44aDY2LjQ5MnoiLz48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjcgNSkiPjxtYXNrIGlkPSJnIiBmaWxsPSIjZmZmIj48dXNlIHhsaW5rOmhyZWY9IiNmIi8+PC9tYXNrPjxnIG1hc2s9InVybCgjZykiPjxtYXNrIGlkPSJqIiBmaWxsPSIjZmZmIj48dXNlIHhsaW5rOmhyZWY9IiNoIi8+PC9tYXNrPjxwYXRoIGZpbGw9InVybCgjaSkiIGZpbGwtcnVsZT0ibm9uemVybyIgbWFzaz0idXJsKCNqKSIgZD0iTTUzLjUxMi4yN0guNDc3djY5LjI2NWg1My4wMzV6Ii8+PC9nPjwvZz48L2c+PC9zdmc+\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE1My40IDE1Mi45Ij48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9InBoYXNlIiBncmFkaWVudFRyYW5zZm9ybT0icm90YXRlKDQ1KSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3R5bGU9InN0b3AtY29sb3I6ICMyYjI1NGYiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0eWxlPSJzdG9wLWNvbG9yOiAjMTkyZjQ1Ii8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZmlsbD0idXJsKCcjcGhhc2UnKSIgZD0iTTE0NS4xLDc1LjZ2LTU4YzAtNS4xLTQuMi05LjMtOS4zLTkuM2gwSDc3LjdjLTAuNiwwLTEuMS0wLjItMS42LTAuNmwtNy03Yy0wLjQtMC40LTEtMC43LTEuNi0wLjdIOS4zIEM0LjIsMCwwLDQuMSwwLDkuM2MwLDAsMCwwLDAsMGwwLDB2NThjMCwwLjYsMC4yLDEuMSwwLjYsMS42bDcsN2MwLjQsMC40LDAuNywxLDAuNywxLjZ2NThjMCw1LjEsNC4yLDkuMyw5LjMsOS4zYzAsMCwwLDAsMCwwaDU4LjIgYzAuNiwwLDEuMSwwLjIsMS42LDAuNmw3LDdjMC40LDAuNCwxLDAuNiwxLjYsMC42aDU4LjJjNS4xLDAsOS4zLTQuMSw5LjMtOS4zYzAsMCwwLDAsMCwwbDAsMHYtNThjMC0wLjYtMC4yLTEuMS0wLjYtMS42bC03LTcgQzE0NS40LDc2LjcsMTQ1LjEsNzYuMiwxNDUuMSw3NS42eiBNMTA1LjYsMTA2LjZINDcuOWMtMC43LDAtMS4zLTAuNi0xLjMtMS4zVjQ3LjdjMC0wLjcsMC42LTEuMywxLjMtMS4zaDU3LjcgYzAuNywwLDEuMywwLjYsMS4zLDEuM3Y1Ny42QzEwNywxMDYsMTA2LjQsMTA2LjYsMTA1LjYsMTA2LjZ6Ii8+PC9zdmc+Cg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0wIDEyMEMwIDUzLjcyNTggNTMuNzI1OCAwIDEyMCAwSDM5MkM0NTguMjc0IDAgNTEyIDUzLjcyNTggNTEyIDEyMFYzOTJDNTEyIDQ1OC4yNzQgNDU4LjI3NCA1MTIgMzkyIDUxMkgxMjBDNTMuNzI1OCA1MTIgMCA0NTguMjc0IDAgMzkyVjEyMFoiIGZpbGw9IiNDNEM0QzQiLz4KPHBhdGggZD0iTTAgMTIwQzAgNTMuNzI1OCA1My43MjU4IDAgMTIwIDBIMzkyQzQ1OC4yNzQgMCA1MTIgNTMuNzI1OCA1MTIgMTIwVjM5MkM1MTIgNDU4LjI3NCA0NTguMjc0IDUxMiAzOTIgNTEySDEyMEM1My43MjU4IDUxMiAwIDQ1OC4yNzQgMCAzOTJWMTIwWiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzExXzExNikiLz4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzExXzExNikiPgo8cGF0aCBkPSJNNTggMTY0LjUwNUw1OCAzNDcuMTY1QzU4IDM4NC40NDcgODguMTQwMiA0MTQuNjcgMTI1LjMyIDQxNC42N0gzODYuNjhDNDIzLjg2IDQxNC42NyA0NTQgMzg0LjQ0NyA0NTQgMzQ3LjE2NVYxNjQuNTA1QzQ1NCAxMjcuMjIzIDQyMy44NiA5NyAzODYuNjggOTdIMTI1LjMyQzg4LjE0MDIgOTcgNTggMTI3LjIyMyA1OCAxNjQuNTA1WiIgZmlsbD0iIzExMTExMSIvPgo8cGF0aCBkPSJNNTggMTY0LjUwNUw1OCAzNDcuMTY1QzU4IDM4NC40NDcgODguMTQwMiA0MTQuNjcgMTI1LjMyIDQxNC42N0gzODYuNjhDNDIzLjg2IDQxNC42NyA0NTQgMzg0LjQ0NyA0NTQgMzQ3LjE2NVYxNjQuNTA1QzQ1NCAxMjcuMjIzIDQyMy44NiA5NyAzODYuNjggOTdIMTI1LjMyQzg4LjE0MDIgOTcgNTggMTI3LjIyMyA1OCAxNjQuNTA1WiIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzExXzExNikiLz4KPHBhdGggZD0iTTE1NyAxNzYuNDE4QzE1NyAxNjUuNDUyIDE0OC4xMzUgMTU2LjU2MyAxMzcuMiAxNTYuNTYzQzEyNi4yNjUgMTU2LjU2MyAxMTcuNCAxNjUuNDUyIDExNy40IDE3Ni40MThDMTE3LjQgMTg3LjM4MyAxMjYuMjY1IDE5Ni4yNzIgMTM3LjIgMTk2LjI3MkMxNDguMTM1IDE5Ni4yNzIgMTU3IDE4Ny4zODMgMTU3IDE3Ni40MThaIiBmaWxsPSJ1cmwoI3BhaW50Ml9saW5lYXJfMTFfMTE2KSIvPgo8cGF0aCBkPSJNMTU3IDE3Ni40MThDMTU3IDE2NS40NTIgMTQ4LjEzNSAxNTYuNTYzIDEzNy4yIDE1Ni41NjNDMTI2LjI2NSAxNTYuNTYzIDExNy40IDE2NS40NTIgMTE3LjQgMTc2LjQxOEMxMTcuNCAxODcuMzgzIDEyNi4yNjUgMTk2LjI3MiAxMzcuMiAxOTYuMjcyQzE0OC4xMzUgMTk2LjI3MiAxNTcgMTg3LjM4MyAxNTcgMTc2LjQxOFoiIGZpbGw9InVybCgjcGFpbnQzX2xpbmVhcl8xMV8xMTYpIi8+CjxwYXRoIGQ9Ik0xNTcgMTc2LjQxOEMxNTcgMTY1LjQ1MiAxNDguMTM1IDE1Ni41NjMgMTM3LjIgMTU2LjU2M0MxMjYuMjY1IDE1Ni41NjMgMTE3LjQgMTY1LjQ1MiAxMTcuNCAxNzYuNDE4QzExNy40IDE4Ny4zODMgMTI2LjI2NSAxOTYuMjcyIDEzNy4yIDE5Ni4yNzJDMTQ4LjEzNSAxOTYuMjcyIDE1NyAxODcuMzgzIDE1NyAxNzYuNDE4WiIgZmlsbD0idXJsKCNwYWludDRfbGluZWFyXzExXzExNikiLz4KPHBhdGggZD0iTTE1NyAzMzUuMTI2QzE1NyAzMjQuMTYxIDE0OC4xMzUgMzE1LjI3MiAxMzcuMiAzMTUuMjcyQzEyNi4yNjUgMzE1LjI3MiAxMTcuNCAzMjQuMTYxIDExNy40IDMzNS4xMjZDMTE3LjQgMzQ2LjA5MiAxMjYuMjY1IDM1NC45ODEgMTM3LjIgMzU0Ljk4MUMxNDguMTM1IDM1NC45ODEgMTU3IDM0Ni4wOTIgMTU3IDMzNS4xMjZaIiBmaWxsPSJ1cmwoI3BhaW50NV9saW5lYXJfMTFfMTE2KSIvPgo8cGF0aCBkPSJNMzk0LjYgMjU1LjgzNUMzOTQuNiAyNDQuODcgMzg1LjczNSAyMzUuOTgxIDM3NC44IDIzNS45ODFDMzYzLjg2NSAyMzUuOTgxIDM1NSAyNDQuODcgMzU1IDI1NS44MzVDMzU1IDI2Ni44IDM2My44NjUgMjc1LjY5IDM3NC44IDI3NS42OUMzODUuNzM1IDI3NS42OSAzOTQuNiAyNjYuOCAzOTQuNiAyNTUuODM1WiIgZmlsbD0idXJsKCNwYWludDZfbGluZWFyXzExXzExNikiLz4KPHBhdGggZD0iTTM5NC42IDI1NS44MzVDMzk0LjYgMjQ0Ljg3IDM4NS43MzUgMjM1Ljk4MSAzNzQuOCAyMzUuOTgxQzM2My44NjUgMjM1Ljk4MSAzNTUgMjQ0Ljg3IDM1NSAyNTUuODM1QzM1NSAyNjYuOCAzNjMuODY1IDI3NS42OSAzNzQuOCAyNzUuNjlDMzg1LjczNSAyNzUuNjkgMzk0LjYgMjY2LjggMzk0LjYgMjU1LjgzNVoiIGZpbGw9InVybCgjcGFpbnQ3X2xpbmVhcl8xMV8xMTYpIi8+CjxwYXRoIGQ9Ik0zNzQuOCAxNTYuNTYzSDIxNi40QzIwNS40NjUgMTU2LjU2MyAxOTYuNiAxNjUuNDUyIDE5Ni42IDE3Ni40MThDMTk2LjYgMTg3LjM4MyAyMDUuNDY1IDE5Ni4yNzIgMjE2LjQgMTk2LjI3MkgzNzQuOEMzODUuNzM1IDE5Ni4yNzIgMzk0LjYgMTg3LjM4MyAzOTQuNiAxNzYuNDE4QzM5NC42IDE2NS40NTIgMzg1LjczNSAxNTYuNTYzIDM3NC44IDE1Ni41NjNaIiBmaWxsPSJ1cmwoI3BhaW50OF9saW5lYXJfMTFfMTE2KSIvPgo8cGF0aCBkPSJNMzc0LjggMzE1LjI3MkgyMTYuNEMyMDUuNDY1IDMxNS4yNzIgMTk2LjYgMzI0LjE2MSAxOTYuNiAzMzUuMTI2QzE5Ni42IDM0Ni4wOTIgMjA1LjQ2NSAzNTQuOTgxIDIxNi40IDM1NC45ODFIMzc0LjhDMzg1LjczNSAzNTQuOTgxIDM5NC42IDM0Ni4wOTIgMzk0LjYgMzM1LjEyNkMzOTQuNiAzMjQuMTYxIDM4NS43MzUgMzE1LjI3MiAzNzQuOCAzMTUuMjcyWiIgZmlsbD0idXJsKCNwYWludDlfbGluZWFyXzExXzExNikiLz4KPHBhdGggZD0iTTI5NS42IDIzNS45ODFIMTM3LjJDMTI2LjI2NSAyMzUuOTgxIDExNy40IDI0NC44NyAxMTcuNCAyNTUuODM1QzExNy40IDI2Ni44IDEyNi4yNjUgMjc1LjY5IDEzNy4yIDI3NS42OUgyOTUuNkMzMDYuNTM1IDI3NS42OSAzMTUuNCAyNjYuOCAzMTUuNCAyNTUuODM1QzMxNS40IDI0NC44NyAzMDYuNTM1IDIzNS45ODEgMjk1LjYgMjM1Ljk4MVoiIGZpbGw9InVybCgjcGFpbnQxMF9saW5lYXJfMTFfMTE2KSIvPgo8L2c+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMTFfMTE2IiB4MT0iLTg2LjUiIHkxPSI2MTYuNSIgeDI9IjM3MS42MTIiIHkyPSItOTAuOTEzMyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjQzcwM0JGIi8+CjxzdG9wIG9mZnNldD0iMC41NTM1MDEiIHN0b3AtY29sb3I9IiMzMTI5REYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMERENEUwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8xMV8xMTYiIHgxPSIyNTYiIHkxPSI5NyIgeDI9IjI1NiIgeTI9IjQxNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjMUQyNzNEIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzBEMEYxMyIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50Ml9saW5lYXJfMTFfMTE2IiB4MT0iMTIzLjUiIHkxPSIxOTYiIHgyPSIxNTAuNSIgeTI9IjE2MCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjNDQ2MkZFIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzdENjlGQSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50M19saW5lYXJfMTFfMTE2IiB4MT0iMTIwLjg4IiB5MT0iMTk2LjI5MSIgeDI9IjE1NC4xMzgiIHkyPSIxOTQuNTkxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMzNzU3RkQiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNjk4MEZBIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQ0X2xpbmVhcl8xMV8xMTYiIHgxPSIxMjAuODgiIHkxPSIxOTYuMjkxIiB4Mj0iMTU0LjEzOCIgeTI9IjE5NC41OTEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzI0NDdGRiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM2OTgwRkEiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDVfbGluZWFyXzExXzExNiIgeDE9IjEyMyIgeTE9IjM0OC41IiB4Mj0iMTQ5LjUiIHkyPSIzMjAuNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjQkMzRUU2Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0Q5NzJGMSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50Nl9saW5lYXJfMTFfMTE2IiB4MT0iMzYzIiB5MT0iMjY5IiB4Mj0iMzg3LjUiIHkyPSIyNDMiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzI5QkRGRiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM5NkU3RkIiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDdfbGluZWFyXzExXzExNiIgeDE9IjM1OC4xOCIgeTE9IjI3NS40MTgiIHgyPSIzOTIuNTY3IiB5Mj0iMjczLjc3MiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjMjNCQkZGIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzg1RTdGRiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50OF9saW5lYXJfMTFfMTE2IiB4MT0iMjEyLjUiIHkxPSIxOTYiIHgyPSIzNzUuNSIgeTI9IjE1NyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjMjNCQkZGIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzg1RTdGRiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50OV9saW5lYXJfMTFfMTE2IiB4MT0iMjE0IiB5MT0iMzU1IiB4Mj0iMzcwLjUiIHkyPSIzMTUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzI0NDdGRiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM2OTgwRkEiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDEwX2xpbmVhcl8xMV8xMTYiIHgxPSIxNDQiIHkxPSIyNzYiIHgyPSIyOTMuNSIgeTI9IjIzNiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjNjYzNEZGIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzlDNkRGRiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzExXzExNiI+CjxyZWN0IHdpZHRoPSIzOTYiIGhlaWdodD0iMzE3LjY3IiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTggOTcpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==\"","export * from \"./Modal\";\nexport * from \"./Provider\";\n","import{typeOf as e,isElement as t,isValidElementType as n}from\"react-is\";import r,{useState as o,useContext as s,useMemo as i,useEffect as a,useRef as c,createElement as u,useDebugValue as l,useLayoutEffect as d}from\"react\";import h from\"shallowequal\";import p from\"@emotion/stylis\";import f from\"@emotion/unitless\";import m from\"@emotion/is-prop-valid\";import y from\"hoist-non-react-statics\";function v(){return(v=Object.assign||function(e){for(var t=1;t ({})}\\n```\\n\\n',8:'ThemeProvider: Please make your \"theme\" prop an object.\\n\\n',9:\"Missing document ``\\n\\n\",10:\"Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\\n\\n\",11:\"_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\\n\\n\",12:\"It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\\\`\\\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\\n\\n\",13:\"%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\\n\\n\",14:'ThemeProvider: \"theme\" prop is required.\\n\\n',15:\"A stylis plugin has been supplied that is not named. We need a name for each plugin to be able to prevent styling collisions between different stylis configurations within the same app. Before you pass your plugin to ``, please make sure each plugin is uniquely-named, e.g.\\n\\n```js\\nObject.defineProperty(importedPlugin, 'name', { value: 'some-unique-name' });\\n```\\n\\n\",16:\"Reached the limit of how many styled components may be created at group %s.\\nYou may only create up to 1,073,741,824 components. If you're creating components dynamically,\\nas for instance in your render method then you may be running into this limitation.\\n\\n\",17:\"CSSStyleSheet could not be found on HTMLStyleElement.\\nHas styled-components' style tag been unmounted or altered by another script?\\n\"}:{};function D(){for(var e=arguments.length<=0?void 0:arguments[0],t=[],n=1,r=arguments.length;n1?t-1:0),r=1;r0?\" Args: \"+n.join(\", \"):\"\")):new Error(D.apply(void 0,[R[e]].concat(n)).trim())}var T=function(){function e(e){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=e}var t=e.prototype;return t.indexOfGroup=function(e){for(var t=0,n=0;n=this.groupSizes.length){for(var n=this.groupSizes,r=n.length,o=r;e>=o;)(o<<=1)<0&&j(16,\"\"+e);this.groupSizes=new Uint32Array(o),this.groupSizes.set(n),this.length=o;for(var s=r;s=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],r=this.indexOfGroup(e),o=r+n,s=r;s1<<30)&&j(16,\"\"+t),x.set(e,t),k.set(t,e),t},z=function(e){return k.get(e)},M=function(e,t){t>=V&&(V=t+1),x.set(e,t),k.set(t,e)},G=\"style[\"+A+'][data-styled-version=\"5.3.3\"]',L=new RegExp(\"^\"+A+'\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)'),F=function(e,t,n){for(var r,o=n.split(\",\"),s=0,i=o.length;s=0;n--){var r=t[n];if(r&&1===r.nodeType&&r.hasAttribute(A))return r}}(n),s=void 0!==o?o.nextSibling:null;r.setAttribute(A,\"active\"),r.setAttribute(\"data-styled-version\",\"5.3.3\");var i=q();return i&&r.setAttribute(\"nonce\",i),n.insertBefore(r,s),r},$=function(){function e(e){var t=this.element=H(e);t.appendChild(document.createTextNode(\"\")),this.sheet=function(e){if(e.sheet)return e.sheet;for(var t=document.styleSheets,n=0,r=t.length;n=0){var n=document.createTextNode(t),r=this.nodes[e];return this.element.insertBefore(n,r||null),this.length++,!0}return!1},t.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},t.getRule=function(e){return e0&&(u+=e+\",\")})),r+=\"\"+a+c+'{content:\"'+u+'\"}/*!sc*/\\n'}}}return r}(this)},e}(),K=/(a)(d)/gi,Q=function(e){return String.fromCharCode(e+(e>25?39:97))};function ee(e){var t,n=\"\";for(t=Math.abs(e);t>52;t=t/52|0)n=Q(t%52)+n;return(Q(t%52)+n).replace(K,\"$1-$2\")}var te=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},ne=function(e){return te(5381,e)};function re(e){for(var t=0;t>>0);if(!t.hasNameForId(r,i)){var a=n(s,\".\"+i,void 0,r);t.insertRules(r,i,a)}o.push(i),this.staticRulesId=i}else{for(var c=this.rules.length,u=te(this.baseHash,n.hash),l=\"\",d=0;d>>0);if(!t.hasNameForId(r,m)){var y=n(l,\".\"+m,void 0,r);t.insertRules(r,m,y)}o.push(m)}}return o.join(\" \")},e}(),ie=/^\\s*\\/\\/.*$/gm,ae=[\":\",\"[\",\".\",\"#\"];function ce(e){var t,n,r,o,s=void 0===e?E:e,i=s.options,a=void 0===i?E:i,c=s.plugins,u=void 0===c?w:c,l=new p(a),d=[],h=function(e){function t(t){if(t)try{e(t+\"}\")}catch(e){}}return function(n,r,o,s,i,a,c,u,l,d){switch(n){case 1:if(0===l&&64===r.charCodeAt(0))return e(r+\";\"),\"\";break;case 2:if(0===u)return r+\"/*|*/\";break;case 3:switch(u){case 102:case 112:return e(o[0]+r),\"\";default:return r+(0===d?\"/*|*/\":\"\")}case-2:r.split(\"/*|*/}\").forEach(t)}}}((function(e){d.push(e)})),f=function(e,r,s){return 0===r&&-1!==ae.indexOf(s[n.length])||s.match(o)?e:\".\"+t};function m(e,s,i,a){void 0===a&&(a=\"&\");var c=e.replace(ie,\"\"),u=s&&i?i+\" \"+s+\" { \"+c+\" }\":c;return t=a,n=s,r=new RegExp(\"\\\\\"+n+\"\\\\b\",\"g\"),o=new RegExp(\"(\\\\\"+n+\"\\\\b){2,}\"),l(i||!s?\"\":s,u)}return l.use([].concat(u,[function(e,t,o){2===e&&o.length&&o[0].lastIndexOf(n)>0&&(o[0]=o[0].replace(r,f))},h,function(e){if(-2===e){var t=d;return d=[],t}}])),m.hash=u.length?u.reduce((function(e,t){return t.name||j(15),te(e,t.name)}),5381).toString():\"\",m}var ue=r.createContext(),le=ue.Consumer,de=r.createContext(),he=(de.Consumer,new Z),pe=ce();function fe(){return s(ue)||he}function me(){return s(de)||pe}function ye(e){var t=o(e.stylisPlugins),n=t[0],s=t[1],c=fe(),u=i((function(){var t=c;return e.sheet?t=e.sheet:e.target&&(t=t.reconstructWithOptions({target:e.target},!1)),e.disableCSSOMInjection&&(t=t.reconstructWithOptions({useCSSOMInjection:!1})),t}),[e.disableCSSOMInjection,e.sheet,e.target]),l=i((function(){return ce({options:{prefix:!e.disableVendorPrefixes},plugins:n})}),[e.disableVendorPrefixes,n]);return a((function(){h(n,e.stylisPlugins)||s(e.stylisPlugins)}),[e.stylisPlugins]),r.createElement(ue.Provider,{value:u},r.createElement(de.Provider,{value:l},\"production\"!==process.env.NODE_ENV?r.Children.only(e.children):e.children))}var ve=function(){function e(e,t){var n=this;this.inject=function(e,t){void 0===t&&(t=pe);var r=n.name+t.hash;e.hasNameForId(n.id,r)||e.insertRules(n.id,r,t(n.rules,r,\"@keyframes\"))},this.toString=function(){return j(12,String(n.name))},this.name=e,this.id=\"sc-keyframes-\"+e,this.rules=t}return e.prototype.getName=function(e){return void 0===e&&(e=pe),this.name+e.hash},e}(),ge=/([A-Z])/,Se=/([A-Z])/g,we=/^ms-/,Ee=function(e){return\"-\"+e.toLowerCase()};function be(e){return ge.test(e)?e.replace(Se,Ee).replace(we,\"-ms-\"):e}var _e=function(e){return null==e||!1===e||\"\"===e};function Ne(e,n,r,o){if(Array.isArray(e)){for(var s,i=[],a=0,c=e.length;a1?t-1:0),r=1;r1?t-1:0),i=1;i?@[\\\\\\]^`{|}~-]+/g,je=/(^-|-$)/g;function Te(e){return e.replace(De,\"-\").replace(je,\"\")}var xe=function(e){return ee(ne(e)>>>0)};function ke(e){return\"string\"==typeof e&&(\"production\"===process.env.NODE_ENV||e.charAt(0)===e.charAt(0).toLowerCase())}var Ve=function(e){return\"function\"==typeof e||\"object\"==typeof e&&null!==e&&!Array.isArray(e)},Be=function(e){return\"__proto__\"!==e&&\"constructor\"!==e&&\"prototype\"!==e};function ze(e,t,n){var r=e[n];Ve(t)&&Ve(r)?Me(r,t):e[n]=t}function Me(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=0||(o[n]=e[n]);return o}(t,[\"componentId\"]),s=r&&r+\"-\"+(ke(e)?e:Te(_(e)));return qe(e,v({},o,{attrs:S,componentId:s}),n)},Object.defineProperty(C,\"defaultProps\",{get:function(){return this._foldedDefaultProps},set:function(t){this._foldedDefaultProps=o?Me({},e.defaultProps,t):t}}),\"production\"!==process.env.NODE_ENV&&(Oe(f,g),C.warnTooManyClasses=function(e,t){var n={},r=!1;return function(o){if(!r&&(n[o]=!0,Object.keys(n).length>=200)){var s=t?' with the id of \"'+t+'\"':\"\";console.warn(\"Over 200 classes were generated for component \"+e+s+\".\\nConsider using the attrs method, together with a style object for frequently changed styles.\\nExample:\\n const Component = styled.div.attrs(props => ({\\n style: {\\n background: props.background,\\n },\\n }))`width: 100%;`\\n\\n \"),r=!0,n={}}}}(f,g)),C.toString=function(){return\".\"+C.styledComponentId},i&&y(C,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0,withComponent:!0}),C}var He=function(e){return function e(t,r,o){if(void 0===o&&(o=E),!n(r))return j(1,String(r));var s=function(){return t(r,o,Ce.apply(void 0,arguments))};return s.withConfig=function(n){return e(t,r,v({},o,{},n))},s.attrs=function(n){return e(t,r,v({},o,{attrs:Array.prototype.concat(o.attrs,n).filter(Boolean)}))},s}(qe,e)};[\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"base\",\"bdi\",\"bdo\",\"big\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\",\"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"dialog\",\"div\",\"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\",\"mark\",\"marquee\",\"menu\",\"menuitem\",\"meta\",\"meter\",\"nav\",\"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"picture\",\"pre\",\"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"section\",\"select\",\"small\",\"source\",\"span\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"title\",\"tr\",\"track\",\"u\",\"ul\",\"var\",\"video\",\"wbr\",\"circle\",\"clipPath\",\"defs\",\"ellipse\",\"foreignObject\",\"g\",\"image\",\"line\",\"linearGradient\",\"marker\",\"mask\",\"path\",\"pattern\",\"polygon\",\"polyline\",\"radialGradient\",\"rect\",\"stop\",\"svg\",\"text\",\"textPath\",\"tspan\"].forEach((function(e){He[e]=He(e)}));var $e=function(){function e(e,t){this.rules=e,this.componentId=t,this.isStatic=re(e),Z.registerId(this.componentId+1)}var t=e.prototype;return t.createStyles=function(e,t,n,r){var o=r(Ne(this.rules,t,n,r).join(\"\"),\"\"),s=this.componentId+e;n.insertRules(s,s,o)},t.removeStyles=function(e,t){t.clearRules(this.componentId+e)},t.renderStyles=function(e,t,n,r){e>2&&Z.registerId(this.componentId+e),this.removeStyles(e,n),this.createStyles(e,t,n,r)},e}();function We(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o meta tag to the stylesheet, or simply embedding it manually in your index.html section for a simpler app.\"),t.server&&h(l,e,t,o,n),d((function(){if(!t.server)return h(l,e,t,o,n),function(){return u.removeStyles(l,t)}}),[l,e,t,o,n]),null}function h(e,t,n,r,o){if(u.isStatic)u.renderStyles(e,O,n,o);else{var s=v({},t,{theme:Re(t,r,l.defaultProps)});u.renderStyles(e,s,n,o)}}return\"production\"!==process.env.NODE_ENV&&Oe(a),r.memo(l)}function Ue(e){\"production\"!==process.env.NODE_ENV&&\"undefined\"!=typeof navigator&&\"ReactNative\"===navigator.product&&console.warn(\"`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.\");for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r\"+t+\"\"},this.getStyleTags=function(){return e.sealed?j(2):e._emitSheetCSS()},this.getStyleElement=function(){var t;if(e.sealed)return j(2);var n=((t={})[A]=\"\",t[\"data-styled-version\"]=\"5.3.3\",t.dangerouslySetInnerHTML={__html:e.instance.toString()},t),o=q();return o&&(n.nonce=o),[r.createElement(\"style\",v({},n,{key:\"sc-0-0\"}))]},this.seal=function(){e.sealed=!0},this.instance=new Z({isServer:!0}),this.sealed=!1}var t=e.prototype;return t.collectStyles=function(e){return this.sealed?j(2):r.createElement(ye,{sheet:this.instance},e)},t.interleaveWithNodeStream=function(e){return j(3)},e}(),Xe=function(e){var t=r.forwardRef((function(t,n){var o=s(Ge),i=e.defaultProps,a=Re(t,o,i);return\"production\"!==process.env.NODE_ENV&&void 0===a&&console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class \"'+_(e)+'\"'),r.createElement(e,v({},t,{theme:a,ref:n}))}));return y(t,e),t.displayName=\"WithTheme(\"+_(e)+\")\",t},Ze=function(){return s(Ge)},Ke={StyleSheet:Z,masterSheet:he};\"production\"!==process.env.NODE_ENV&&\"undefined\"!=typeof navigator&&\"ReactNative\"===navigator.product&&console.warn(\"It looks like you've imported 'styled-components' on React Native.\\nPerhaps you're looking to import 'styled-components/native'?\\nRead more about this at https://www.styled-components.com/docs/basics#react-native\"),\"production\"!==process.env.NODE_ENV&&\"test\"!==process.env.NODE_ENV&&\"undefined\"!=typeof window&&(window[\"__styled-components-init__\"]=window[\"__styled-components-init__\"]||0,1===window[\"__styled-components-init__\"]&&console.warn(\"It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\\n\\nSee https://s-c.sh/2BAXzed for more info.\"),window[\"__styled-components-init__\"]+=1);export default He;export{Je as ServerStyleSheet,le as StyleSheetConsumer,ue as StyleSheetContext,ye as StyleSheetManager,Le as ThemeConsumer,Ge as ThemeContext,Fe as ThemeProvider,Ke as __PRIVATE__,We as createGlobalStyle,Ce as css,N as isStyledComponent,Ue as keyframes,Ze as useTheme,C as version,Xe as withTheme};\n//# sourceMappingURL=styled-components.browser.esm.js.map\n","import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { ThemeColors } from \"../helpers\";\nimport {\n PROVIDER_WRAPPER_CLASSNAME,\n PROVIDER_CONTAINER_CLASSNAME,\n PROVIDER_ICON_CLASSNAME,\n PROVIDER_NAME_CLASSNAME,\n PROVIDER_DESCRIPTION_CLASSNAME\n} from \"../constants\";\n\nconst SIcon = styled.div`\n width: 45px;\n height: 45px;\n display: flex;\n border-radius: 50%;\n overflow: visible;\n box-shadow: none;\n justify-content: center;\n align-items: center;\n & img {\n width: 100%;\n height: 100%;\n }\n\n @media screen and (max-width: 768px) {\n width: 8.5vw;\n height: 8.5vw;\n }\n`;\n\ninterface IStyedThemeColorOptions {\n themeColors: ThemeColors;\n}\n\nconst SName = styled.div`\n width: 100%;\n font-size: 24px;\n font-weight: 700;\n margin-top: 0.5em;\n color: ${({ themeColors }) => themeColors.main};\n @media screen and (max-width: 768px) {\n font-size: 5vw;\n }\n`;\n\nconst SDescription = styled.div`\n width: 100%;\n font-size: 18px;\n margin: 0.333em 0;\n color: ${({ themeColors }) => themeColors.secondary};\n @media screen and (max-width: 768px) {\n font-size: 4vw;\n }\n`;\n\nconst SProviderContainer = styled.div`\n transition: background-color 0.2s ease-in-out;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n background-color: ${({ themeColors }) => themeColors.background};\n border-radius: 12px;\n padding: 24px 16px;\n @media screen and (max-width: 768px) {\n padding: 1vw;\n }\n`;\n\nconst SProviderWrapper = styled.div`\n width: 100%;\n padding: 8px;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n cursor: pointer;\n border-radius: 0;\n border: ${({ themeColors }) => `1px solid ${themeColors.border}`};\n @media (hover: hover) {\n &:hover ${SProviderContainer} {\n background-color: ${({ themeColors }) => themeColors.hover};\n }\n }\n`;\n\ninterface IProviderProps {\n name: string;\n logo: string;\n description: string;\n themeColors: ThemeColors;\n onClick: () => void;\n}\n\nexport function Provider(props: IProviderProps) {\n const {\n name,\n logo,\n description,\n themeColors,\n onClick,\n ...otherProps\n } = props;\n return (\n \n \n \n {name}\n \n \n {name}\n \n \n {description}\n \n \n \n );\n}\n","export * from \"./events\";\nexport * from \"./providers\";\n","import { IEventCallback } from \"../helpers\";\n\n// -- EventController --------------------------------------------------------- //\n\nexport class EventController {\n private _eventCallbacks: IEventCallback[];\n\n constructor() {\n this._eventCallbacks = [];\n }\n\n public on(eventCallback: IEventCallback) {\n this._eventCallbacks.push(eventCallback);\n }\n\n public off(eventObj?: Partial) {\n // remove specific event callback\n if (eventObj) {\n if (eventObj.callback) {\n this._eventCallbacks = this._eventCallbacks.filter(\n (eventCallback: IEventCallback) =>\n eventCallback.event !== eventObj.event ||\n eventCallback.callback !== eventObj.callback\n );\n } // No callback to remove, remove entire event\n else {\n this._eventCallbacks = this._eventCallbacks.filter(\n (eventCallback: IEventCallback) =>\n eventCallback.event !== eventObj.event\n );\n }\n } else {\n this._eventCallbacks = [];\n }\n }\n\n public trigger(event: string, result?: any): void {\n let eventCallbacks: IEventCallback[] = this._eventCallbacks.filter(\n (eventCallback: IEventCallback) => eventCallback.event === event\n );\n\n if (eventCallbacks && eventCallbacks.length) {\n eventCallbacks.forEach((eventCallback: IEventCallback) => {\n eventCallback.callback(result);\n });\n }\n }\n}\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","function stylis_min (W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {\n }\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","import { Core } from \"./core\";\n\nexport * from \"./components\";\nexport * from \"./constants\";\nexport * from \"./controllers\";\nexport * from \"./providers\";\nexport * from \"./helpers\";\nexport * from \"./themes\";\n\nexport default Core;\n","import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\n\nimport {\n ICoreOptions,\n IProviderUserOptions,\n ThemeColors,\n getThemeColors,\n SimpleFunction\n} from \"../helpers\";\nimport {\n WEB3_CONNECT_MODAL_ID,\n CONNECT_EVENT,\n ERROR_EVENT,\n CLOSE_EVENT,\n SELECT_EVENT\n} from \"../constants\";\nimport { themesList } from \"../themes\";\nimport { Modal } from \"../components\";\nimport { EventController, ProviderController } from \"../controllers\";\n\nconst INITIAL_STATE = { show: false };\n\nconst defaultOpts: ICoreOptions = {\n lightboxOpacity: 0.4,\n theme: themesList.default.name,\n cacheProvider: false,\n disableInjectedProvider: false,\n providerOptions: {},\n network: \"\"\n};\n\nexport class Core {\n private show: boolean = INITIAL_STATE.show;\n private themeColors: ThemeColors;\n private eventController: EventController = new EventController();\n private lightboxOpacity: number;\n private providerController: ProviderController;\n private userOptions: IProviderUserOptions[];\n\n constructor(opts?: Partial) {\n const options: ICoreOptions = {\n ...defaultOpts,\n ...opts\n };\n\n this.lightboxOpacity = options.lightboxOpacity;\n this.themeColors = getThemeColors(options.theme);\n\n this.providerController = new ProviderController({\n disableInjectedProvider: options.disableInjectedProvider,\n cacheProvider: options.cacheProvider,\n providerOptions: options.providerOptions,\n network: options.network\n });\n\n this.providerController.on(CONNECT_EVENT, provider =>\n this.onConnect(provider)\n );\n this.providerController.on(ERROR_EVENT, error => this.onError(error));\n\n this.providerController.on(SELECT_EVENT, this.onProviderSelect);\n\n this.userOptions = this.providerController.getUserOptions();\n this.renderModal();\n }\n\n get cachedProvider(): string {\n return this.providerController.cachedProvider;\n }\n\n // --------------- PUBLIC METHODS --------------- //\n\n public connect = (): Promise =>\n new Promise(async (resolve, reject) => {\n this.on(CONNECT_EVENT, provider => resolve(provider));\n this.on(ERROR_EVENT, error => reject(error));\n this.on(CLOSE_EVENT, () => reject(\"Modal closed by user\"));\n await this.toggleModal();\n });\n\n public connectTo = (id: string): Promise =>\n new Promise(async (resolve, reject) => {\n this.on(CONNECT_EVENT, provider => resolve(provider));\n this.on(ERROR_EVENT, error => reject(error));\n this.on(CLOSE_EVENT, () => reject(\"Modal closed by user\"));\n const provider = this.providerController.getProvider(id);\n if (!provider) {\n return reject(\n new Error(\n `Cannot connect to provider (${id}), check provider options`\n )\n );\n }\n await this.providerController.connectTo(provider.id, provider.connector);\n });\n\n public async toggleModal(): Promise {\n if (this.cachedProvider) {\n await this.providerController.connectToCachedProvider();\n return;\n }\n if (\n this.userOptions &&\n this.userOptions.length === 1 &&\n this.userOptions[0].name\n ) {\n await this.userOptions[0].onClick();\n return;\n }\n await this._toggleModal();\n }\n\n public on(event: string, callback: SimpleFunction): SimpleFunction {\n this.eventController.on({\n event,\n callback\n });\n\n return () =>\n this.eventController.off({\n event,\n callback\n });\n }\n\n public off(event: string, callback?: SimpleFunction): void {\n this.eventController.off({\n event,\n callback\n });\n }\n\n public getUserOptions(): IProviderUserOptions[] {\n return this.userOptions\n }\n\n public clearCachedProvider(): void {\n this.providerController.clearCachedProvider();\n }\n\n public setCachedProvider(id: string): void {\n this.providerController.setCachedProvider(id);\n }\n\n public async updateTheme(theme: string | ThemeColors): Promise {\n this.themeColors = getThemeColors(theme);\n await this.updateState({ themeColors: this.themeColors });\n }\n\n // --------------- PRIVATE METHODS --------------- //\n\n private renderModal() {\n const el = document.createElement(\"div\");\n el.id = WEB3_CONNECT_MODAL_ID;\n document.body.appendChild(el);\n\n ReactDOM.render(\n ,\n document.getElementById(WEB3_CONNECT_MODAL_ID)\n );\n }\n\n private _toggleModal = async () => {\n const d = typeof window !== \"undefined\" ? document : \"\";\n const body = d ? d.body || d.getElementsByTagName(\"body\")[0] : \"\";\n if (body) {\n if (this.show) {\n body.style.overflow = \"\";\n } else {\n body.style.overflow = \"hidden\";\n }\n }\n await this.updateState({ show: !this.show });\n };\n\n private onError = async (error: any) => {\n if (this.show) {\n await this._toggleModal();\n }\n this.eventController.trigger(ERROR_EVENT, error);\n };\n\n private onProviderSelect = (providerId: string) => {\n this.eventController.trigger(SELECT_EVENT, providerId);\n };\n\n private onConnect = async (provider: any) => {\n if (this.show) {\n await this._toggleModal();\n }\n this.eventController.trigger(CONNECT_EVENT, provider);\n };\n\n private onClose = async () => {\n if (this.show) {\n await this._toggleModal();\n }\n this.eventController.trigger(CLOSE_EVENT);\n };\n\n private updateState = async (state: any) => {\n Object.keys(state).forEach(key => {\n this[key] = state[key];\n });\n await window.updateWeb3Modal(state);\n };\n\n private resetState = () => this.updateState({ ...INITIAL_STATE });\n}\n","/** @license React v16.14.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cQ.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;kb}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;dpc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;gzf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(gl&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;by?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;yy?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;cf))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(lN.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;hd.tailExpiration&&1b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTimea?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10 component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){awi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;cb||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime {\n const jsonData = JSON.stringify(data);\n if (local) {\n local.setItem(key, jsonData);\n }\n};\n\nexport const getLocal = (key: string) => {\n let data = null;\n let raw = null;\n if (local) {\n raw = local.getItem(key);\n }\n if (raw && typeof raw === \"string\") {\n try {\n data = JSON.parse(raw);\n } catch (error) {\n return null;\n }\n }\n return data;\n};\n\nexport const removeLocal = (key: string) => {\n if (local) {\n local.removeItem(key);\n }\n};\n\nexport const updateLocal = (key: string, data: any) => {\n const localData = getLocal(key) || {};\n const mergedData = { ...localData, ...data };\n setLocal(key, mergedData);\n};\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","import { ChainDataList } from \"../helpers\";\n\nexport const CHAIN_DATA_LIST: ChainDataList = {\n 1: {\n chainId: 1,\n chain: \"ETH\",\n network: \"mainnet\",\n networkId: 1\n },\n 2: {\n chainId: 2,\n chain: \"EXP\",\n network: \"expanse\",\n networkId: 1\n },\n 3: {\n chainId: 3,\n chain: \"ETH\",\n network: \"ropsten\",\n networkId: 3\n },\n 4: {\n chainId: 4,\n chain: \"ETH\",\n network: \"rinkeby\",\n networkId: 4\n },\n 5: {\n chainId: 5,\n chain: \"ETH\",\n network: \"goerli\",\n networkId: 5\n },\n 6: {\n chainId: 6,\n chain: \"ETC\",\n network: \"kotti\",\n networkId: 6\n },\n 8: {\n chainId: 8,\n chain: \"UBQ\",\n network: \"ubiq\",\n networkId: 88\n },\n 9: {\n chainId: 9,\n chain: \"UBQ\",\n network: \"ubiq-testnet\",\n networkId: 2\n },\n 10: {\n chainId: 10,\n chain: \"ETH\",\n network: \"optimism\",\n networkId: 10\n },\n 11: {\n chainId: 11,\n chain: \"META\",\n network: \"metadium\",\n networkId: 11\n },\n 12: {\n chainId: 12,\n chain: \"META\",\n network: \"metadium-testnet\",\n networkId: 12\n },\n 18: {\n chainId: 18,\n chain: \"TST\",\n network: \"thundercore-testnet\",\n networkId: 18\n },\n 22: {\n chainId: 22,\n chain: \"LYX\",\n network: \"lukso-l14-testnet\",\n networkId: 22\n },\n 23: {\n chainId: 23,\n chain: \"LYX\",\n network: \"lukso-l15-testnet\",\n networkId: 23\n },\n 25: {\n chainId: 25,\n chain: \"CRO\",\n network: \"cronos\",\n networkId: 25\n },\n 30: {\n chainId: 30,\n chain: \"RSK\",\n network: \"rsk\",\n networkId: 30\n },\n 31: {\n chainId: 31,\n chain: \"RSK\",\n network: \"rsk-testnet\",\n networkId: 31\n },\n 42: {\n chainId: 42,\n chain: \"ETH\",\n network: \"kovan\",\n networkId: 42\n },\n 56: {\n chainId: 56,\n chain: \"BSC\",\n network: \"binance\",\n networkId: 56\n },\n 60: {\n chainId: 60,\n chain: \"GO\",\n network: \"gochain\",\n networkId: 60\n },\n 61: {\n chainId: 61,\n chain: \"ETC\",\n network: \"etc\",\n networkId: 1\n },\n 62: {\n chainId: 62,\n chain: \"ETC\",\n network: \"etc-morden\",\n networkId: 2\n },\n 63: {\n chainId: 63,\n chain: \"ETC\",\n network: \"etc-testnet\",\n networkId: 7\n },\n 64: {\n chainId: 64,\n chain: \"ELLA\",\n network: \"ellaism\",\n networkId: 64\n },\n 69: {\n chainId: 69,\n chain: \"ETH\",\n network: \"optimism-kovan\",\n networkId: 69\n },\n 76: {\n chainId: 76,\n chain: \"MIX\",\n network: \"mix\",\n networkId: 76\n },\n 77: {\n chainId: 77,\n chain: \"POA\",\n network: \"poa-sokol\",\n networkId: 77\n },\n 88: {\n chainId: 88,\n chain: \"TOMO\",\n network: \"tomochain\",\n networkId: 88\n },\n 97: {\n chainId: 97,\n chain: \"BSC\",\n network: \"binance-testnet\",\n networkId: 97\n },\n 99: {\n chainId: 99,\n chain: \"POA\",\n network: \"poa-core\",\n networkId: 99\n },\n 100: {\n chainId: 100,\n chain: \"XDAI\",\n network: \"xdai\",\n networkId: 100\n },\n 101: {\n chainId: 101,\n chain: \"ETI\",\n network: \"etherinc\",\n networkId: 1\n },\n 108: {\n chainId: 108,\n chain: \"TT\",\n network: \"thundercore\",\n networkId: 108\n },\n 162: {\n chainId: 162,\n chain: \"PHT\",\n network: \"sirius\",\n networkId: 162\n },\n 163: {\n chainId: 163,\n chain: \"PHT\",\n network: \"lightstreams\",\n networkId: 163\n },\n 211: {\n chainId: 211,\n chain: \"FTN\",\n network: \"freight\",\n networkId: 0\n },\n 250: {\n chainId: 250,\n chain: \"FTM\",\n network: \"fantom\",\n networkId: 250\n },\n 269: {\n chainId: 269,\n chain: \"HPB\",\n network: \"hpb\",\n networkId: 100\n },\n 338: {\n chainId: 338,\n chain: \"CRO\",\n network: \"cronos-testnet\",\n networkId: 338\n },\n 385: {\n chainId: 385,\n chain: \"CRO\",\n network: \"lisinski\",\n networkId: 385\n },\n 534: {\n chainId: 534,\n chain: \"CNDL\",\n network: \"candle\",\n networkId: 534\n },\n 820: {\n chainId: 820,\n chain: \"CLO\",\n network: \"callisto\",\n networkId: 1\n },\n 821: {\n chainId: 821,\n chain: \"CLO\",\n network: \"callisto-testnet\",\n networkId: 2\n },\n 137: {\n chainId: 137,\n chain: \"MATIC\",\n network: \"matic\",\n networkId: 137\n },\n 1284: {\n chainId: 1284,\n chain: \"GLMR\",\n network: \"moonbeam\",\n networkId: 1284\n },\n 1285: {\n chainId: 1285,\n chain: \"MOVR\",\n network: \"moonriver\",\n networkId: 1285\n },\n 42161: {\n chainId: 42161,\n chain: \"ETH\",\n network: \"arbitrum\",\n networkId: 42161\n },\n 42220: {\n chainId: 42220,\n chain: \"CELO\",\n network: \"celo\",\n networkId: 42220\n },\n 44787: {\n chainId: 44787,\n chain: \"CELO\",\n network: \"celo-alfajores\",\n networkId: 44787\n },\n 62320: {\n chainId: 62320,\n chain: \"CELO\",\n network: \"celo-baklava\",\n networkId: 62320\n },\n 80001: {\n chainId: 80001,\n chain: \"MUMBAI\",\n network: \"mumbai\",\n networkId: 80001\n },\n 43113: {\n chainId: 43113,\n chain: \"AVAX\",\n network: \"avalanche-fuji-testnet\",\n networkId: 43113\n },\n 43114: {\n chainId: 43114,\n chain: \"AVAX\",\n network: \"avalanche-mainnet\",\n networkId: 43114\n },\n 246529: {\n chainId: 246529,\n chain: \"ARTIS sigma1\",\n network: \"artis-s1\",\n networkId: 246529\n },\n 246785: {\n chainId: 246785,\n chain: \"ARTIS tau1\",\n network: \"artis-t1\",\n networkId: 246785\n },\n 1007: {\n chainId: 1007,\n chain: \"NewChain TestNet\",\n network: \"newchain-testnet\",\n networkId: 1007\n },\n 1012: {\n chainId: 1012,\n chain: \"NewChain MainNet\",\n network: \"newchain-mainnet\",\n networkId: 1012\n },\n 421611: {\n chainId: 421611,\n chain: \"ETH\",\n network: \"arbitrum-rinkeby\",\n networkId: 421611\n },\n 1666600000: {\n chainId: 1666600000,\n chain: \"ONE\",\n network: \"harmony-shard1\",\n networkId: 1666600000\n },\n 1313161554: {\n chainId: 1313161554,\n chain: \"AETH\",\n network: \"aurora\",\n networkId: 1313161554\n }\n};\n","export const MODAL_LIGHTBOX_CLASSNAME = \"web3modal-modal-lightbox\";\nexport const MODAL_CONTAINER_CLASSNAME = \"web3modal-modal-container\";\nexport const MODAL_HITBOX_CLASSNAME = \"web3modal-modal-hitbox\";\nexport const MODAL_CARD_CLASSNAME = \"web3modal-modal-card\";\n\nexport const PROVIDER_WRAPPER_CLASSNAME = \"web3modal-provider-wrapper\";\nexport const PROVIDER_CONTAINER_CLASSNAME = \"web3modal-provider-container\";\nexport const PROVIDER_ICON_CLASSNAME = \"web3modal-provider-icon\";\nexport const PROVIDER_NAME_CLASSNAME = \"web3modal-provider-name\";\nexport const PROVIDER_DESCRIPTION_CLASSNAME = \"web3modal-provider-description\";\n\nexport const CONNECT_BUTTON_CLASSNAME = \"web3modal-connect-button\";\n","export const CONNECT_EVENT = \"connect\";\nexport const ERROR_EVENT = \"error\";\nexport const CLOSE_EVENT = \"close\";\nexport const SELECT_EVENT = \"select\";\n","export const WEB3_CONNECT_MODAL_ID = \"WEB3_CONNECT_MODAL_ID\";\nexport const INJECTED_PROVIDER_ID = \"injected\";\nexport const CACHED_PROVIDER_KEY = \"WEB3_CONNECT_CACHED_PROVIDER\";\n","import { IThemeConfig } from \"../helpers\";\n\nconst lightTheme: IThemeConfig = {\n name: \"light\",\n colors: {\n background: \"rgb(255, 255, 255)\",\n main: \"rgb(12, 12, 13)\",\n secondary: \"rgb(169, 169, 188)\",\n border: \"rgba(195, 195, 195, 0.14)\",\n hover: \"rgba(195, 195, 195, 0.14)\"\n }\n};\n\nexport default lightTheme;\n","import { IThemeConfig } from \"../helpers\";\n\nconst darkTheme: IThemeConfig = {\n name: \"dark\",\n colors: {\n background: \"rgb(39, 49, 56)\",\n main: \"rgb(199, 199, 199)\",\n secondary: \"rgb(136, 136, 136)\",\n border: \"rgba(195, 195, 195, 0.14)\",\n hover: \"rgb(16, 26, 32)\"\n }\n};\n\nexport default darkTheme;\n","import injected from \"./injected\";\nimport boltx from \"./boltx\";\nimport walletconnect from \"./walletconnect\";\nimport portis from \"./portis\";\nimport fortmatic from \"./fortmatic\";\nimport torus from \"./torus\";\nimport venly from \"./venly\";\nimport authereum from \"./authereum\";\nimport burnerconnect from \"./burnerconnect\";\nimport mewconnect from \"./mewconnect\";\nimport dcentwallet from \"./dcentwallet\";\nimport bitski from \"./bitski\";\nimport frame from \"./frame\";\nimport binancechainwallet from \"./binancechainwallet\";\nimport coinbasewallet, { walletlink } from \"./coinbasewallet\";\nimport sequence from \"./sequence\";\nimport clvwallet from \"./clvwallet\"\nimport opera from \"./opera\";\n\n\nexport {\n injected,\n walletconnect,\n boltx,\n portis,\n torus,\n fortmatic,\n venly,\n authereum,\n burnerconnect,\n mewconnect,\n dcentwallet,\n bitski,\n frame,\n binancechainwallet,\n coinbasewallet,\n walletlink,\n sequence,\n clvwallet,\n opera\n};\n","const ConnectToInjected = async () => {\n let provider = null;\n if (typeof window.ethereum !== 'undefined') {\n provider = window.ethereum;\n try {\n await provider.request({ method: 'eth_requestAccounts' })\n } catch (error) {\n throw new Error(\"User Rejected\");\n }\n } else if (window.web3) {\n provider = window.web3.currentProvider;\n } else if (window.celo) {\n provider = window.celo;\n } else {\n throw new Error(\"No Web3 Provider found\");\n }\n return provider;\n};\n\nexport default ConnectToInjected;\n","const ConnectToBoltX = async () => {\n let provider = null;\n if (typeof (window as any).boltX !== 'undefined') {\n provider = (window as any).boltX.ethereum;\n try {\n await provider.request({ method: 'eth_requestAccounts' })\n } catch (error) {\n throw new Error(\"User Rejected\");\n }\n } else {\n throw new Error(\"BoltX not found\");\n }\n return provider;\n};\n\nexport default ConnectToBoltX;\n","import { IAbstractConnectorOptions, getChainId } from \"../../helpers\";\n\nexport interface IWalletConnectConnectorOptions\n extends IAbstractConnectorOptions {\n infuraId?: string;\n rpc?: { [chainId: number]: string };\n bridge?: string;\n qrcode?: boolean;\n qrcodeModalOptions?: { mobileLinks?: string[] };\n}\n\nconst ConnectToWalletConnect = (\n WalletConnectProvider: any,\n opts: IWalletConnectConnectorOptions\n) => {\n return new Promise(async (resolve, reject) => {\n let bridge = \"https://bridge.walletconnect.org\";\n let qrcode = true;\n let infuraId = \"\";\n let rpc = undefined;\n let chainId = 1;\n let qrcodeModalOptions = undefined;\n\n if (opts) {\n bridge = opts.bridge || bridge;\n qrcode = typeof opts.qrcode !== \"undefined\" ? opts.qrcode : qrcode;\n infuraId = opts.infuraId || \"\";\n rpc = opts.rpc || undefined;\n chainId =\n opts.network && getChainId(opts.network) ? getChainId(opts.network) : 1;\n qrcodeModalOptions = opts.qrcodeModalOptions || undefined;\n }\n\n const provider = new WalletConnectProvider({\n bridge,\n qrcode,\n infuraId,\n rpc,\n chainId,\n qrcodeModalOptions\n });\n try {\n await provider.enable();\n resolve(provider);\n } catch (e) {\n reject(e);\n }\n });\n};\n\nexport default ConnectToWalletConnect;\n","import { IAbstractConnectorOptions } from \"../../helpers\";\n\nexport interface INetwork {\n nodeUrl: string;\n chainId?: string;\n gasRelayHubAddress?: string;\n}\n\nexport type Scope = \"email\";\n\nexport interface IOptions {\n scope?: Scope[];\n gasRelay?: boolean;\n registerPageByDefault?: boolean;\n pocketDevId?: string;\n}\n\nexport interface IPortisConnectorOptions extends IAbstractConnectorOptions {\n id: string;\n config?: IOptions;\n}\n\nconst ConnectToPortis = (Portis: any, opts: IPortisConnectorOptions) => {\n return new Promise(async (resolve, reject) => {\n if (opts && opts.id) {\n try {\n const id = opts.id;\n const network = opts.network || \"mainnet\";\n const config = opts.config;\n const pt = new Portis(id, network, config);\n await pt.provider.enable();\n pt.provider._portis = pt;\n resolve(pt.provider);\n } catch (error) {\n return reject(error);\n }\n } else {\n return reject(new Error(\"Missing Portis Id\"));\n }\n });\n};\n\nexport default ConnectToPortis;\n","import { IAbstractConnectorOptions } from \"../../helpers\";\n\nexport interface IFortmaticConnectorOptions extends IAbstractConnectorOptions {\n key: string;\n}\n\nconst ConnectToFortmatic = async (\n Fortmatic: any,\n opts: IFortmaticConnectorOptions\n) => {\n if (opts && opts.key) {\n try {\n const key = opts.key;\n const fm = new Fortmatic(key, opts.network);\n const provider = await fm.getProvider();\n provider.fm = fm;\n await fm.user.login();\n const isLoggedIn = await fm.user.isLoggedIn();\n if (isLoggedIn) {\n return provider;\n } else {\n throw new Error(\"Failed to login to Fortmatic\");\n }\n } catch (error) {\n throw error;\n }\n } else {\n throw new Error(\"Missing Fortmatic key\");\n }\n};\n\nexport default ConnectToFortmatic;\n","import { IAbstractConnectorOptions } from \"../../helpers\";\n\ntype ETHEREUM_NETWORK_TYPE =\n | \"ropsten\"\n | \"rinkeby\"\n | \"kovan\"\n | \"mainnet\"\n | \"goerli\"\n | \"localhost\"\n | \"matic\"\n | \"mumbai\";\n\ninterface NetworkParams {\n host: ETHEREUM_NETWORK_TYPE | string;\n chainId?: number;\n networkName?: string;\n}\n\ninterface VerifierStatus {\n google?: boolean;\n facebook?: boolean;\n reddit?: boolean;\n twitch?: boolean;\n discord?: boolean;\n}\n\ninterface LoginParams {\n verifier?: \"google\" | \"facebook\" | \"twitch\" | \"reddit\" | \"discord\" | string;\n}\n\ntype LOGIN_TYPE =\n | \"google\"\n | \"facebook\"\n | \"reddit\"\n | \"discord\"\n | \"twitch\"\n | \"apple\"\n | \"github\"\n | \"linkedin\"\n | \"twitter\"\n | \"weibo\"\n | \"line\"\n | \"jwt\"\n | \"email-password\"\n | \"passwordless\";\n\ninterface BaseLoginOptions {\n display?: \"page\" | \"popup\" | \"touch\" | \"wap\";\n prompt?: \"none\" | \"login\" | \"consent\" | \"select_account\";\n max_age?: string | number;\n ui_locales?: string;\n id_token_hint?: string;\n login_hint?: string;\n acr_values?: string;\n scope?: string;\n audience?: string;\n connection?: string;\n [key: string]: unknown;\n}\n\ninterface JwtParameters extends BaseLoginOptions {\n domain: string;\n client_id?: string;\n redirect_uri?: string;\n leeway?: number;\n verifierIdField?: string;\n isVerifierIdCaseSensitive?: boolean;\n}\n\ninterface IntegrityParams {\n check: boolean;\n hash?: string;\n version?: string;\n}\n\ninterface WhiteLabelParams {\n theme: ThemeParams;\n defaultLanguage?: string;\n logoDark: string;\n logoLight: string;\n topupHide?: boolean;\n featuredBillboardHide?: boolean;\n disclaimerHide?: boolean;\n tncLink?: LocaleLinks;\n privacyPolicy?: LocaleLinks;\n contactLink?: LocaleLinks;\n customTranslations?: LocaleLinks;\n}\n\ninterface LocaleLinks {\n en?: T;\n ja?: T;\n ko?: T;\n de?: T;\n zh?: T;\n}\n\ninterface ThemeParams {\n isDark: boolean;\n colors: any;\n}\n\ninterface LoginConfigItem {\n name?: string;\n typeOfLogin: LOGIN_TYPE;\n description?: string;\n clientId?: string;\n logoHover?: string;\n logoLight?: string;\n logoDark?: string;\n showOnModal?: boolean;\n jwtParameters?: JwtParameters;\n}\n\ninterface LoginConfig {\n [verifier: string]: LoginConfigItem;\n}\n\nexport interface IOptions {\n buttonPosition?: \"top-left\" | \"top-right\" | \"bottom-right\" | \"bottom-left\";\n modalZIndex?: number;\n apiKey?: string;\n buildEnv?: \"production\" | \"development\" | \"staging\" | \"testing\" | \"lrc\";\n enableLogging?: boolean;\n enabledVerifiers?: VerifierStatus;\n loginConfig?: LoginConfig;\n showTorusButton?: boolean;\n integrity?: IntegrityParams;\n whiteLabel?: WhiteLabelParams;\n}\n\nexport interface ITorusConnectorOptions extends IAbstractConnectorOptions {\n config?: IOptions;\n loginParams?: LoginParams;\n networkParams?: NetworkParams;\n}\n\n// Supports Torus package versions 0.2.*\nconst ConnectToTorus = async (Torus: any, opts: ITorusConnectorOptions) => {\n return new Promise(async (resolve, reject) => {\n try {\n // defaults\n let buttonPosition = \"bottom-left\";\n let apiKey = \"torus-default\";\n let modalZIndex = 99999;\n let network: NetworkParams = { host: \"mainnet\" };\n let defaultVerifier = undefined;\n\n // parsing to Torus interfaces\n network =\n opts.networkParams || opts.network\n ? { host: opts.network, ...opts.networkParams }\n : network;\n\n const torus = new Torus({\n buttonPosition: opts.config?.buttonPosition || buttonPosition,\n apiKey: opts.config?.apiKey || apiKey,\n modalZIndex: opts.config?.modalZIndex || modalZIndex\n });\n await torus.init({\n showTorusButton: false,\n ...opts.config,\n network\n });\n\n if (opts.loginParams) {\n defaultVerifier = opts.loginParams.verifier;\n }\n await torus.login({ verifier: defaultVerifier });\n const provider = torus.provider;\n provider.torus = torus;\n resolve(provider);\n } catch (err) {\n reject(err);\n }\n });\n};\n\nexport default ConnectToTorus;\n","import { IAbstractConnectorOptions } from \"../../helpers\";\n\nexport interface IVenlyConnectorOptions extends IAbstractConnectorOptions {\n clientId: string;\n secretType?: string;\n environment?: string;\n}\n\nconst ConnectToVenly = (Venly: any, opts: IVenlyConnectorOptions) => {\n return new Promise(async (resolve, reject) => {\n if (opts && opts.clientId) {\n try {\n const options = {\n clientId: opts.clientId,\n secretType: opts.secretType || 'ETHEREUM',\n environment: opts.environment,\n signMethod: \"POPUP\"\n };\n const provider = await (window as any).Venly.createProviderEngine(\n options\n );\n return resolve(provider);\n } catch (error) {\n console.error(error);\n return reject(new Error(\"Failed to login to Venly\"));\n }\n } else {\n return reject(new Error(\"Please provide an Venly client id\"));\n }\n });\n};\n\nexport default ConnectToVenly;\n","import { IAbstractConnectorOptions } from \"../../helpers\";\n\nexport interface IAuthereumConnectorOptions extends IAbstractConnectorOptions {\n networkName: string;\n apiKey: string;\n rpcUri: string;\n webUri: string;\n xsUri: string;\n blockedPopupRedirect: boolean;\n forceRedirect: boolean;\n disableNotifications: boolean;\n disableGoogleAnalytics: boolean;\n}\n\nconst ConnectToAuthereum = (\n Authereum: any,\n opts: Partial = {}\n) => {\n return new Promise(async (resolve, reject) => {\n try {\n const authereum = new Authereum({\n ...opts,\n networkName: opts.networkName || opts.network\n });\n const provider = authereum.getProvider();\n provider.authereum = authereum;\n await provider.enable();\n resolve(provider);\n } catch (error) {\n return reject(error);\n }\n });\n};\n\nexport default ConnectToAuthereum;\n","import { IAbstractConnectorOptions } from \"../../helpers\";\n\ninterface Wallet {\n origin: string;\n name: string;\n}\n\nexport interface IBurnerConnectorOptions extends IAbstractConnectorOptions {\n hubUrl?: string;\n defaultNetwork?: string;\n defaultWallets?: Wallet[];\n}\n\nconst ConnectToBurnerConnect = async (\n BurnerConnectProvider: any,\n opts: IBurnerConnectorOptions\n) => {\n opts.defaultNetwork = opts.defaultNetwork || opts.network;\n const provider = new BurnerConnectProvider(opts);\n\n await provider.enable();\n\n return provider;\n};\n\nexport default ConnectToBurnerConnect;\n","import { IAbstractConnectorOptions, getChainId } from \"../../helpers\";\n\nexport interface IMewConnectConnectorOptions\n extends IAbstractConnectorOptions {\n infuraId?: string;\n rpc?: { [chainId: number]: string };\n}\n\nconst ConnectToMewConnect = (\n MewConnectProvider: any,\n opts: IMewConnectConnectorOptions\n) => {\n return new Promise(async (resolve, reject) => {\n let infuraId = \"\";\n let rpc = undefined;\n let chainId = 1;\n\n if (opts) {\n infuraId = opts.infuraId || \"\";\n rpc = opts.rpc || undefined;\n if(opts.infuraId && !rpc){\n rpc = `wss://mainnet.infura.io/ws/v3/${infuraId}`\n }\n chainId =\n opts.network && getChainId(opts.network) ? getChainId(opts.network) : 1;\n }\n\n if (!MewConnectProvider.Provider.isConnected) {\n const mewConnect = new MewConnectProvider.Provider();\n const provider = mewConnect.makeWeb3Provider(chainId, rpc, true)\n\n mewConnect.on('disconnected', () => {\n })\n try {\n const address = await mewConnect.enable();\n console.log(address); // todo remove dev item\n resolve(provider);\n } catch (e) {\n reject(e);\n }\n }\n\n });\n};\n\nexport default ConnectToMewConnect;\n","import { IAbstractConnectorOptions } from \"../../helpers\";\n\nexport interface IDcentConnectorOptions extends IAbstractConnectorOptions {\n rpcUrl: string;\n chainId: number;\n}\n\nconst ConnectToDcentWallet = async (\n DcentProvider: any,\n opts: IDcentConnectorOptions\n) => {\n const provider = new DcentProvider(opts);\n\n await provider.enable();\n\n return provider;\n};\n\nexport default ConnectToDcentWallet;\n","import { IAbstractConnectorOptions } from \"../../helpers\";\n\ninterface IBitskiOptions extends IAbstractConnectorOptions {\n clientId: string;\n callbackUrl: string;\n extraBitskiOptions?: any;\n extraProviderOptions?: any;\n}\n\nconst ConnectToBitski = async (\n Bitski: any,\n opts: IBitskiOptions\n) => {\n const bitski = new Bitski(opts.clientId, opts.callbackUrl, opts.extraBitskiOptions);\n\n await bitski.signIn();\n\n const provider = bitski.getProvider(opts.extraProviderOptions)\n\n return provider;\n};\n\nexport default ConnectToBitski;\n","const ConnectToFrame = async (ethProvider: any) => {\n try {\n const provider = ethProvider('frame');\n provider.isFrameNative = true;\n return provider;\n } catch (err) {\n throw err;\n }\n};\n\nexport default ConnectToFrame;\n","const ConnectToBinanceChainWallet = async () => {\n let provider = null;\n if (typeof window.BinanceChain !== 'undefined') {\n provider = window.BinanceChain;\n try {\n await provider.request({ method: 'eth_requestAccounts' })\n } catch (error) {\n throw new Error(\"User Rejected\");\n }\n } else {\n throw new Error(\"No Binance Chain Wallet found\");\n }\n return provider;\n};\n\nexport default ConnectToBinanceChainWallet;\n","import { IAbstractConnectorOptions } from \"../../helpers\";\n\nexport interface ICoinbaseWalletSdkConnectorOptions\n extends IAbstractConnectorOptions {\n infuraId?: string;\n rpc?: { [chainId: number]: string };\n chainId?: number;\n appName?: string;\n appLogoUrl?: string;\n darkMode?: boolean;\n}\n\nconst ConnectToCoinbaseWalletSdk = (\n CoinbaseWalletSdk: any,\n opts: ICoinbaseWalletSdkConnectorOptions\n) => {\n return new Promise(async (resolve, reject) => {\n const options = opts || {};\n const infuraId = options.infuraId || \"\";\n const chainId = options.chainId || 1;\n const appName = options.appName || \"\";\n const appLogoUrl = options.appLogoUrl;\n const darkMode = options.darkMode || false;\n\n let rpc = options.rpc || undefined;\n if (options.infuraId && !options.rpc) {\n rpc = `https://mainnet.infura.io/v3/${infuraId}`;\n }\n\n const coinbaseWalletSdk = new CoinbaseWalletSdk({\n appName,\n appLogoUrl,\n darkMode\n });\n\n try {\n const provider = coinbaseWalletSdk.makeWeb3Provider(rpc, chainId);\n await provider.send(\"eth_requestAccounts\");\n resolve(provider);\n } catch (e) {\n reject(e);\n }\n });\n};\n\n/**\n * @deprecated WalletLink is deprecated in favor of CoinbaseWalletSdk\n */\nexport const walletlink = ConnectToCoinbaseWalletSdk;\nexport default ConnectToCoinbaseWalletSdk;\n","import { IAbstractConnectorOptions } from \"../../helpers\";\n\nexport interface ISequenceConnectorOptions extends IAbstractConnectorOptions {\n appName: string;\n defaultNetwork?: string;\n}\n\nconst ConnectToSequence = async (\n sequence: any,\n opts?: ISequenceConnectorOptions\n) => {\n let provider;\n if (window?.ethereum?.isSequence) {\n provider = window.ethereum;\n try {\n await provider.request({ method: 'eth_requestAccounts' })\n return provider;\n } catch (error) {\n throw new Error(\"User Rejected\");\n }\n }\n\n const wallet = new sequence.Wallet(opts?.defaultNetwork || 'mainnet');\n\n if (!wallet.isConnected()) {\n const connectDetails = await wallet.connect({\n app: opts?.appName,\n authorize: true\n });\n\n if (!connectDetails.connected) {\n throw new Error(\"Failed to connect\");\n }\n }\n\n provider = wallet.getProvider();\n provider.sequence = wallet;\n\n return provider;\n};\n\nexport default ConnectToSequence;\n","const ConnectToClvWallet = async () => {\n let provider = null;\n if (typeof window.clover !== 'undefined') {\n provider = window.clover;\n try {\n await provider.request({ method: 'eth_requestAccounts' })\n } catch (error) {\n throw new Error(\"User Rejected\");\n }\n } else {\n throw new Error(\"No CLV Wallet found\");\n }\n return provider;\n};\n\nexport default ConnectToClvWallet;\n","const ConnectToOpera = async () => {\n let provider = null;\n if (typeof (window as any).ethereum?.isOpera !== \"undefined\") {\n provider = window.ethereum;\n try {\n await provider.request({ method: \"eth_requestAccounts\" });\n } catch (error) {\n throw new Error(\"User Rejected\");\n }\n } else {\n throw new Error(\"Opera not found\");\n }\n return provider;\n};\n\nexport default ConnectToOpera;\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxyYWRpYWxHcmFkaWVudCBpZD0iYSIgY3g9IjEuODEzMTMyJSIgY3k9IjUwJSIgcj0iOTguMTg2ODY4JSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNDI0MjQyIi8+PHN0b3Agb2Zmc2V0PSIxIi8+PC9yYWRpYWxHcmFkaWVudD48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Im0yNTYgMGMxNDEuMzg0ODk2IDAgMjU2IDExNC42MTUxMDQgMjU2IDI1NiAwIDE0MS4zODQ4OTYtMTE0LjYxNTEwNCAyNTYtMjU2IDI1Ni0xNDEuMzg0ODk2IDAtMjU2LTExNC42MTUxMDQtMjU2LTI1NiAwLTE0MS4zODQ4OTYgMTE0LjYxNTEwNC0yNTYgMjU2LTI1NnoiIGZpbGw9InVybCgjYSkiLz48cGF0aCBkPSJtMTM3LjkwMjM0NCAyNDIuNzYxNzE5LTE1LjgyMDMxMyA1NS45NTcwMzFoLTE2LjY5OTIxOWwtMjIuMzgyODEyLTg0LjU1MDc4MWgxOC4zOTg0MzhsMTMuMTgzNTkzIDU5LjU4OTg0M2guOTM3NWwxNS40MTAxNTctNTkuNTg5ODQzaDE0Ljk0MTQwNmwxNS43MDMxMjUgNTkuNTg5ODQzaC45Mzc1bDEzLjA2NjQwNi01OS41ODk4NDNoMTguMjgxMjVsLTIyLjQ0MTQwNiA4NC41NTA3ODFoLTE2LjU4MjAzMWwtMTUuOTk2MDk0LTU1Ljk1NzAzMXptMTI3LjMyNDIxOCA0MC44Mzk4NDN2MTUuMTE3MTg4aC01Ni4wMTU2MjR2LTg0LjU1MDc4MWg1Ni4wMTU2MjR2MTUuMTE3MTg3aC0zOC4zMjAzMTJ2MTkuNzQ2MDk0aDM2LjE1MjM0NHYxNC4wMDM5MDZoLTM2LjE1MjM0NHYyMC41NjY0MDZ6bTU2LjYwMTU2MyAxNS4xMTcxODhoLTM3Ljk2ODc1di04NC41NTA3ODFoMzYuOTcyNjU2YzE2LjQwNjI1IDAgMjYuMTkxNDA3IDguMDI3MzQzIDI2LjE5MTQwNyAyMS4wOTM3NSAwIDguOTY0ODQzLTYuNjIxMDk0IDE2Ljc1NzgxMi0xNS4yOTI5NjkgMTguMDQ2ODc1djEuMDU0Njg3YzExLjE5MTQwNi44MjAzMTMgMTkuMzM1OTM3IDkuMjU3ODEzIDE5LjMzNTkzNyAyMC4xNTYyNSAwIDE0LjgyNDIxOS0xMS4xOTE0MDYgMjQuMTk5MjE5LTI5LjIzODI4MSAyNC4xOTkyMTl6bS0yMC4yNzM0MzctNzEuMDE1NjI1djIxLjUwMzkwNmgxMy4zMDA3ODFjOS41NTA3ODEgMCAxNC43NjU2MjUtMy45MjU3ODEgMTQuNzY1NjI1LTEwLjcyMjY1NiAwLTYuNzM4MjgxLTQuODYzMjgyLTEwLjc4MTI1LTEzLjMwMDc4Mi0xMC43ODEyNXptMCA1Ny40ODA0NjloMTUuNzYxNzE4YzEwLjE5NTMxMyAwIDE1LjcwMzEyNS00LjI3NzM0NCAxNS43MDMxMjUtMTIuMTg3NSAwLTcuNzM0Mzc1LTUuNjgzNTkzLTExLjgzNTkzOC0xNi4xMTMyODEtMTEuODM1OTM4aC0xNS4zNTE1NjJ6bTg0LjQzMzU5My0yMy4xNDQ1MzJ2LTEzLjE4MzU5M2gxMC4zMTI1YzguMDI3MzQ0IDAgMTMuNDc2NTYzLTQuNjg3NSAxMy40NzY1NjMtMTEuNjAxNTYzIDAtNi43OTY4NzUtNS4yNzM0MzgtMTEuMTMyODEyLTEzLjUzNTE1Ni0xMS4xMzI4MTItOC4yMDMxMjYgMC0xMy42NTIzNDQgNC42Mjg5MDYtMTQuMTIxMDk0IDExLjk1MzEyNWgtMTYuMzQ3NjU2Yy41ODU5MzctMTUuOTk2MDk0IDEyLjQ4MDQ2OC0yNi4wNzQyMTkgMzAuOTM3NS0yNi4wNzQyMTkgMTcuMzQzNzUgMCAyOS44MjQyMTggOS40OTIxODggMjkuODI0MjE4IDIyLjc5Mjk2OSAwIDkuNzg1MTU2LTYuMTUyMzQ0IDE3LjQwMjM0My0xNS41ODU5MzcgMTkuMzM1OTM3djEuMDU0Njg4YzExLjYwMTU2MiAxLjI4OTA2MiAxOC44NjcxODcgOS4wMjM0MzcgMTguODY3MTg3IDIwLjE1NjI1IDAgMTQuODI0MjE4LTEzLjk0NTMxMiAyNS41NDY4NzUtMzMuMjIyNjU2IDI1LjU0Njg3NS0xOC44NjcxODggMC0zMS42NDA2MjUtMTAuNDI5Njg4LTMyLjQwMjM0NC0yNi4zNjcxODhoMTYuOTMzNTk0Yy41MjczNDQgNy4xNDg0MzggNi41NjI1IDExLjY2MDE1NyAxNS42NDQ1MzEgMTEuNjYwMTU3IDguODQ3NjU3IDAgMTUtNC45ODA0NjkgMTUtMTIuMTg3NSAwLTcuMzgyODEzLTUuODAwNzgxLTExLjk1MzEyNi0xNS4yOTI5NjktMTEuOTUzMTI2eiIgZmlsbD0iI2ZmZiIvPjwvZz48L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjM1NSIgdmlld0JveD0iMCAwIDM5NyAzNTUiIHdpZHRoPSIzOTciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMSAtMSkiPjxwYXRoIGQ9Im0xMTQuNjIyNjQ0IDMyNy4xOTU0NzIgNTIuMDA0NzE3IDEzLjgxMDE5OHYtMTguMDU5NDlsNC4yNDUyODMtNC4yNDkyOTJoMjkuNzE2OTgydjIxLjI0NjQ1OSAxNC44NzI1MjNoLTMxLjgzOTYyNGwtMzkuMjY4ODY4LTE2Ljk5NzE2OXoiIGZpbGw9IiNjZGJkYjIiLz48cGF0aCBkPSJtMTk5LjUyODMwNSAzMjcuMTk1NDcyIDUwLjk0MzM5NyAxMy44MTAxOTh2LTE4LjA1OTQ5bDQuMjQ1MjgzLTQuMjQ5MjkyaDI5LjcxNjk4MXYyMS4yNDY0NTkgMTQuODcyNTIzaC0zMS44Mzk2MjNsLTM5LjI2ODg2OC0xNi45OTcxNjl6IiBmaWxsPSIjY2RiZGIyIiB0cmFuc2Zvcm09Im1hdHJpeCgtMSAwIDAgMSA0ODMuOTYyMjcgMCkiLz48cGF0aCBkPSJtMTcwLjg3MjY0NCAyODcuODg5NTIzLTQuMjQ1MjgzIDM1LjA1NjY1NyA1LjMwNjYwNC00LjI0OTI5Mmg1NS4xODg2OGw2LjM2NzkyNSA0LjI0OTI5Mi00LjI0NTI4NC0zNS4wNTY2NTctOC40OTA1NjUtNS4zMTE2MTUtNDIuNDUyODMyIDEuMDYyMzIzeiIgZmlsbD0iIzM5MzkzOSIvPjxwYXRoIGQ9Im0xNDIuMjE2OTg0IDUwLjk5MTUwMjIgMjUuNDcxNjk4IDU5LjQ5MDA4NTggMTEuNjc0NTI4IDE3My4xNTg2NDNoNDEuMzkxNTExbDEyLjczNTg0OS0xNzMuMTU4NjQzIDIzLjM0OTA1Ni01OS40OTAwODU4eiIgZmlsbD0iI2Y4OWMzNSIvPjxwYXRoIGQ9Im0zMC43NzgzMDIzIDE4MS42NTcyMjYtMjkuNzE2OTgxNTMgODYuMDQ4MTYxIDc0LjI5MjQ1MzkzLTQuMjQ5MjkzaDQ3Ljc1OTQzNDN2LTM3LjE4MTMwM2wtMi4xMjI2NDEtNzYuNDg3MjUzLTEwLjYxMzIwOCA4LjQ5ODU4M3oiIGZpbGw9IiNmODlkMzUiLz48cGF0aCBkPSJtODcuMDI4MzAzMiAxOTEuMjE4MTM0IDg3LjAyODMwMjggMi4xMjQ2NDYtOS41NTE4ODYgNDQuNjE3NTYzLTQxLjM5MTUxMS0xMC42MjMyMjl6IiBmaWxsPSIjZDg3YzMwIi8+PHBhdGggZD0ibTg3LjAyODMwMzIgMTkyLjI4MDQ1NyAzNi4wODQ5MDU4IDMzLjk5NDMzNHYzMy45OTQzMzR6IiBmaWxsPSIjZWE4ZDNhIi8+PHBhdGggZD0ibTEyMy4xMTMyMDkgMjI3LjMzNzExNCA0Mi40NTI4MzEgMTAuNjIzMjI5IDEzLjc5NzE3IDQ1LjY3OTg4OC05LjU1MTg4NiA1LjMxMTYxNS00Ni42OTgxMTUtMjcuNjIwMzk4eiIgZmlsbD0iI2Y4OWQzNSIvPjxwYXRoIGQ9Im0xMjMuMTEzMjA5IDI2MS4zMzE0NDgtOC40OTA1NjUgNjUuODY0MDI0IDU2LjI1LTM5LjMwNTk0OXoiIGZpbGw9IiNlYjhmMzUiLz48cGF0aCBkPSJtMTc0LjA1NjYwNiAxOTMuMzQyNzggNS4zMDY2MDQgOTAuMjk3NDUxLTE1LjkxOTgxMi00Ni4yMTEwNDl6IiBmaWxsPSIjZWE4ZTNhIi8+PHBhdGggZD0ibTc0LjI5MjQ1MzkgMjYyLjM5Mzc3MSA0OC44MjA3NTUxLTEuMDYyMzIzLTguNDkwNTY1IDY1Ljg2NDAyNHoiIGZpbGw9IiNkODdjMzAiLz48cGF0aCBkPSJtMjQuNDEwMzc3NyAzNTUuODc4MTkzIDkwLjIxMjI2NjMtMjguNjgyNzIxLTQwLjMzMDE5MDEtNjQuODAxNzAxLTczLjIzMTEzMzEzIDUuMzExNjE2eiIgZmlsbD0iI2ViOGYzNSIvPjxwYXRoIGQ9Im0xNjcuNjg4NjgyIDExMC40ODE1ODgtNDUuNjM2NzkzIDM4LjI0MzYyNy0zNS4wMjM1ODU4IDQyLjQ5MjkxOSA4Ny4wMjgzMDI4IDMuMTg2OTY5eiIgZmlsbD0iI2U4ODIxZSIvPjxwYXRoIGQ9Im0xMTQuNjIyNjQ0IDMyNy4xOTU0NzIgNTYuMjUtMzkuMzA1OTQ5LTQuMjQ1MjgzIDMzLjk5NDMzNHYxOS4xMjE4MTNsLTM4LjIwNzU0OC03LjQzNjI2eiIgZmlsbD0iI2RmY2VjMyIvPjxwYXRoIGQ9Im0yMjkuMjQ1Mjg2IDMyNy4xOTU0NzIgNTUuMTg4NjgtMzkuMzA1OTQ5LTQuMjQ1MjgzIDMzLjk5NDMzNHYxOS4xMjE4MTNsLTM4LjIwNzU0OC03LjQzNjI2eiIgZmlsbD0iI2RmY2VjMyIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgNTEzLjY3OTI1MiAwKSIvPjxwYXRoIGQ9Im0xMzIuNjY1MDk2IDIxMi40NjQ1OTMtMTEuNjc0NTI4IDI0LjQzMzQyNyA0MS4zOTE1MS0xMC42MjMyMjl6IiBmaWxsPSIjMzkzOTM5IiB0cmFuc2Zvcm09Im1hdHJpeCgtMSAwIDAgMSAyODMuMzcyNjQ2IDApIi8+PHBhdGggZD0ibTIzLjM0OTA1NyAxLjA2MjMyMjk2IDE0NC4zMzk2MjUgMTA5LjQxOTI2NTA0LTI0LjQxMDM3OC01OS40OTAwODU4eiIgZmlsbD0iI2U4OGYzNSIvPjxwYXRoIGQ9Im0yMy4zNDkwNTcgMS4wNjIzMjI5Ni0xOS4xMDM3NzM5MiA1OC40Mjc3NjI5NCAxMC42MTMyMDc3MiA2My43MzkzNzgxLTcuNDI5MjQ1NDEgNC4yNDkyOTIgMTAuNjEzMjA3NzEgOS41NjA5MDYtOC40OTA1NjYxNyA3LjQzNjI2MSAxMS42NzQ1Mjg0NyAxMC42MjMyMjktNy40MjkyNDU0IDYuMzczOTM4IDE2Ljk4MTEzMjMgMjEuMjQ2NDU5IDc5LjU5OTA1NzctMjQuNDMzNDI4YzM4LjkxNTA5Ni0zMS4xNjE0NzMgNTguMDE4ODY5LTQ3LjA5NjMxOCA1Ny4zMTEzMjItNDcuODA0NTMzLS43MDc1NDgtLjcwODIxNS00OC44MjA3NTYtMzcuMTgxMzAzNi0xNDQuMzM5NjI1LTEwOS40MTkyNjUwNHoiIGZpbGw9IiM4ZTVhMzAiLz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgtMSAwIDAgMSAzOTkuMDU2NjExIDApIj48cGF0aCBkPSJtMzAuNzc4MzAyMyAxODEuNjU3MjI2LTI5LjcxNjk4MTUzIDg2LjA0ODE2MSA3NC4yOTI0NTM5My00LjI0OTI5M2g0Ny43NTk0MzQzdi0zNy4xODEzMDNsLTIuMTIyNjQxLTc2LjQ4NzI1My0xMC42MTMyMDggOC40OTg1ODN6IiBmaWxsPSIjZjg5ZDM1Ii8+PHBhdGggZD0ibTg3LjAyODMwMzIgMTkxLjIxODEzNCA4Ny4wMjgzMDI4IDIuMTI0NjQ2LTkuNTUxODg2IDQ0LjYxNzU2My00MS4zOTE1MTEtMTAuNjIzMjI5eiIgZmlsbD0iI2Q4N2MzMCIvPjxwYXRoIGQ9Im04Ny4wMjgzMDMyIDE5Mi4yODA0NTcgMzYuMDg0OTA1OCAzMy45OTQzMzR2MzMuOTk0MzM0eiIgZmlsbD0iI2VhOGQzYSIvPjxwYXRoIGQ9Im0xMjMuMTEzMjA5IDIyNy4zMzcxMTQgNDIuNDUyODMxIDEwLjYyMzIyOSAxMy43OTcxNyA0NS42Nzk4ODgtOS41NTE4ODYgNS4zMTE2MTUtNDYuNjk4MTE1LTI3LjYyMDM5OHoiIGZpbGw9IiNmODlkMzUiLz48cGF0aCBkPSJtMTIzLjExMzIwOSAyNjEuMzMxNDQ4LTguNDkwNTY1IDY1Ljg2NDAyNCA1NS4xODg2OC0zOC4yNDM2MjZ6IiBmaWxsPSIjZWI4ZjM1Ii8+PHBhdGggZD0ibTE3NC4wNTY2MDYgMTkzLjM0Mjc4IDUuMzA2NjA0IDkwLjI5NzQ1MS0xNS45MTk4MTItNDYuMjExMDQ5eiIgZmlsbD0iI2VhOGUzYSIvPjxwYXRoIGQ9Im03NC4yOTI0NTM5IDI2Mi4zOTM3NzEgNDguODIwNzU1MS0xLjA2MjMyMy04LjQ5MDU2NSA2NS44NjQwMjR6IiBmaWxsPSIjZDg3YzMwIi8+PHBhdGggZD0ibTI0LjQxMDM3NzcgMzU1Ljg3ODE5MyA5MC4yMTIyNjYzLTI4LjY4MjcyMS00MC4zMzAxOTAxLTY0LjgwMTcwMS03My4yMzExMzMxMyA1LjMxMTYxNnoiIGZpbGw9IiNlYjhmMzUiLz48cGF0aCBkPSJtMTY3LjY4ODY4MiAxMTAuNDgxNTg4LTQ1LjYzNjc5MyAzOC4yNDM2MjctMzUuMDIzNTg1OCA0Mi40OTI5MTkgODcuMDI4MzAyOCAzLjE4Njk2OXoiIGZpbGw9IiNlODgyMWUiLz48cGF0aCBkPSJtMTMyLjY2NTA5NiAyMTIuNDY0NTkzLTExLjY3NDUyOCAyNC40MzM0MjcgNDEuMzkxNTEtMTAuNjIzMjI5eiIgZmlsbD0iIzM5MzkzOSIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMjgzLjM3MjY0NiAwKSIvPjxwYXRoIGQ9Im0yMy4zNDkwNTcgMS4wNjIzMjI5NiAxNDQuMzM5NjI1IDEwOS40MTkyNjUwNC0yNC40MTAzNzgtNTkuNDkwMDg1OHoiIGZpbGw9IiNlODhmMzUiLz48cGF0aCBkPSJtMjMuMzQ5MDU3IDEuMDYyMzIyOTYtMTkuMTAzNzczOTIgNTguNDI3NzYyOTQgMTAuNjEzMjA3NzIgNjMuNzM5Mzc4MS03LjQyOTI0NTQxIDQuMjQ5MjkyIDEwLjYxMzIwNzcxIDkuNTYwOTA2LTguNDkwNTY2MTcgNy40MzYyNjEgMTEuNjc0NTI4NDcgMTAuNjIzMjI5LTcuNDI5MjQ1NCA2LjM3MzkzOCAxNi45ODExMzIzIDIxLjI0NjQ1OSA3OS41OTkwNTc3LTI0LjQzMzQyOGMzOC45MTUwOTYtMzEuMTYxNDczIDU4LjAxODg2OS00Ny4wOTYzMTggNTcuMzExMzIyLTQ3LjgwNDUzMy0uNzA3NTQ4LS43MDgyMTUtNDguODIwNzU2LTM3LjE4MTMwMzYtMTQ0LjMzOTYyNS0xMDkuNDE5MjY1MDR6IiBmaWxsPSIjOGU1YTMwIi8+PC9nPjwvZz48L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgNDQwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6IzAwOGM3Mzt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPnNhbnNfd2hpdGUgY29weTwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjIwLDkuODJDMTAzLjkyLDkuODIsOS44MiwxMDMuOTIsOS44MiwyMjBTMTAzLjkyLDQzMC4xOCwyMjAsNDMwLjE4LDQzMC4xOCwzMzYuMDgsNDMwLjE4LDIyMCwzMzYuMDgsOS44MiwyMjAsOS44MlpNMzczLjgzLDIzMS40N0gyNzYuM2E1OS40MSw1OS40MSwwLDEsMSwuNDUtMjAuNjdoOTcuMDhhMTAuMzQsMTAuMzQsMCwxLDEsMCwyMC42N1oiLz48L3N2Zz4=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxNTguOCAxODQiIHZpZXdCb3g9IjAgMCAxNTguOCAxODQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzU0IDM1MSkiPjxwYXRoIGQ9Im0tMjc0LjYtMzQzLjdjMjkuMyAyMi43IDYyLjkgMjEuMyA3Mi41IDIxLjMtMi4xIDEyOS4xLTE4LjEgMTExLjktNzIuNSAxNDguMS01NC40LTM2LjItNzAuMy0xOS03Mi40LTE0OC4xIDkuNSAwIDQzIDEuNCA3Mi40LTIxLjN6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0ibS0yNzQuNi0zNDMuNyA0LjItNS41Yy0yLjUtMS45LTYtMS45LTguNSAwem03Mi41IDIxLjMgNi45LjFjMC0xLjktLjctMy42LTItNS0xLjMtMS4zLTMuMS0yLjEtNC45LTIuMXptLTcyLjUgMTQ4LjEtMy44IDUuOGMyLjMgMS41IDUuMyAxLjUgNy43IDB6bS03Mi40LTE0OC4xdi02LjljLTEuOSAwLTMuNi43LTQuOSAyLjEtMS4zIDEuMy0yIDMuMS0yIDV6bTY4LjEtMTUuOGMzMS40IDI0LjMgNjcuMyAyMi43IDc2LjcgMjIuN3YtMTMuOGMtOS44IDAtNDEuMSAxLjItNjguMy0xOS45em02OS44IDE1LjdjLS41IDMyLjEtMS45IDU0LjgtNC41IDcxLjYtMi42IDE2LjYtNi4yIDI2LjYtMTEgMzMuNi00LjggNy4zLTEwLjggMTEuNi0xOS43IDE2LjktOSA1LjQtMjAuMyAxMS4yLTM0LjMgMjAuNGw3LjcgMTEuNWMxMy4zLTguOCAyNC4zLTE0LjUgMzMuNy0yMC4xIDkuNS01LjcgMTcuOC0xMS45IDI0LjEtMjEgNi4zLTkuNCAxMC41LTIxLjYgMTMuMi0zOS4yIDIuNy0xNy40IDQuMS00MSA0LjYtNzMuNXptLTYxLjcgMTQyLjRjLTEzLjktOS4zLTI1LjMtMTUuMS0zNC4yLTIwLjRzLTE0LjktOS42LTE5LjctMTYuOWMtNC43LTctOC40LTE2LjktMTAuOS0zMy42LTIuNi0xNi44LTMuOS0zOS40LTQuNS03MS42bC0xMy45LjNjLjUgMzIuNCAyIDU2IDQuNiA3My41IDIuNyAxNy42IDYuOCAyOS44IDEzLjEgMzkuMiA2LjMgOS4xIDE0LjYgMTUuMyAyNCAyMSA5LjQgNS42IDIwLjQgMTEuMiAzMy43IDIwLjF6bS03Ni4yLTEzNS40YzkuMyAwIDQ1LjMgMS42IDc2LjYtMjIuN2wtOC40LTExYy0yNy4yIDIxLjEtNTguNSAxOS45LTY4LjIgMTkuOXoiIGZpbGw9IiMzMzc1YmIiLz48L2c+PC9zdmc+\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTI4IDEyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGRlZnM+PGNpcmNsZSBpZD0iYSIgY3g9IjU5LjkyOCIgY3k9IjU5LjkyOCIgcj0iNTkuOTI4Ii8+PGxpbmVhckdyYWRpZW50IHgxPSI1MCUiIHkxPSIwJSIgeDI9IjUwJSIgeTI9IjEwMCUiIGlkPSJjIj48c3RvcCBzdG9wLWNvbG9yPSIjMkU2NkY4IiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzEyNEFEQiIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik0wIDBoMTI4djEyOEgweiIvPjxwYXRoIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTAgMGgxMjh2MTI4SDB6Ii8+PHBhdGggZD0iTTAgMGgxMjh2MTI4SDB6Ii8+PHBhdGggZD0iTTE5IDY0YzAgMjQuODUzIDIwLjE0NyA0NSA0NSA0NXM0NS0yMC4xNDcgNDUtNDUtMjAuMTQ3LTQ1LTQ1LTQ1LTQ1IDIwLjE0Ny00NSA0NXptMzMuNS0xNC41YTMgMyAwIDAgMC0zIDN2MjNhMyAzIDAgMCAwIDMgM2gyM2EzIDMgMCAwIDAgMy0zdi0yM2EzIDMgMCAwIDAtMy0zaC0yM3oiIGZpbGw9IiNGRkYiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0IDQpIj48bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+PHVzZSB4bGluazpocmVmPSIjYSIvPjwvbWFzaz48ZyBtYXNrPSJ1cmwoI2IpIj48cGF0aCBkPSJNMCAwaDExOS44NTZ2MTE5Ljg1NkgweiIvPjxyZWN0IGZpbGw9InVybCgjYykiIGZpbGwtcnVsZT0ibm9uemVybyIgd2lkdGg9IjExOS44NTYiIGhlaWdodD0iMTE5Ljg1NiIgcng9IjQ4Ii8+PHBhdGggZD0iTTI0Ljk3IDU5LjkyOGMwIDE5LjMwNyAxNS42NTEgMzQuOTU4IDM0Ljk1OCAzNC45NThzMzQuOTU4LTE1LjY1MSAzNC45NTgtMzQuOTU4Uzc5LjIzNSAyNC45NyA1OS45MjggMjQuOTcgMjQuOTcgNDAuNjIgMjQuOTcgNTkuOTI4em0yNi4wMjQtMTEuMjY0YTIuMzMgMi4zMyAwIDAgMC0yLjMzIDIuMzN2MTcuODY4YTIuMzMgMi4zMyAwIDAgMCAyLjMzIDIuMzNoMTcuODY4YTIuMzMgMi4zMyAwIDAgMCAyLjMzLTIuMzNWNTAuOTk0YTIuMzMgMi4zMyAwIDAgMC0yLjMzLTIuMzNINTAuOTk0eiIgZmlsbD0iI0ZGRiIvPjwvZz48L2c+PC9nPjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTA3MiIgaGVpZ2h0PSIxMDcyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzPjxsaW5lYXJHcmFkaWVudCB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIiBpZD0iYSI+PHN0b3Agc3RvcC1jb2xvcj0iIzM5NDlBQiIgb2Zmc2V0PSIwJSIvPjxzdG9wIHN0b3AtY29sb3I9IiMxQTIzN0UiIG9mZnNldD0iMTAwJSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PGNpcmNsZSBmaWxsPSJ1cmwoI2EpIiBjeD0iNTM1LjcxNCIgY3k9IjUzNS43MTQiIHI9IjUzNS43MTQiLz48ZyB0cmFuc2Zvcm09InJvdGF0ZSg0NSAxNjkuOTA2IDY4Ny4yMzcpIiBmaWxsPSIjRkZGIj48cGF0aCBkPSJNNjYuODE0IDBoMTc3LjljMzYuOSAwIDY2LjgxNCAyOS45MTQgNjYuODE0IDY2LjgxNHYxNzcuOWMwIDM2LjktMjkuOTEzIDY2LjgxNC02Ni44MTMgNjYuODE0SDY2LjgxNEMyOS45MTQgMzExLjUyOCAwIDI4MS42MTUgMCAyNDQuNzE1VjY2LjgxNEMwIDI5LjkxNCAyOS45MTQgMCA2Ni44MTQgMHptODguOTUgMjE0LjE3NmMzMi4yNiAwIDU4LjQxMi0yNi4xNTIgNTguNDEyLTU4LjQxMnMtMjYuMTUyLTU4LjQxMS01OC40MTItNTguNDExLTU4LjQxMSAyNi4xNTEtNTguNDExIDU4LjQxMWMwIDMyLjI2IDI2LjE1MSA1OC40MTIgNTguNDExIDU4LjQxMnoiLz48cGF0aCBkPSJNMzk3LjgxIDI1LjA1OGMtMjMuMDYzIDAtNDEuNzU5IDE4LjY5Ni00MS43NTkgNDEuNzU5djE3Ny45YzAgMjMuMDY0IDE4LjY5NiA0MS43NiA0MS43NTkgNDEuNzZoMTc3LjljMjMuMDYzIDAgNDEuNzYtMTguNjk2IDQxLjc2LTQxLjc2di0xNzcuOWMwLTIzLjA2My0xOC42OTctNDEuNzU5LTQxLjc2LTQxLjc1OWgtMTc3Ljl6bTAtMjUuMDU1aDE3Ny45YzM2LjkgMCA2Ni44MTQgMjkuOTE0IDY2LjgxNCA2Ni44MTR2MTc3LjljMCAzNi45MDEtMjkuOTEzIDY2LjgxNS02Ni44MTQgNjYuODE1aC0xNzcuOWMtMzYuOSAwLTY2LjgxNC0yOS45MTQtNjYuODE0LTY2LjgxNFY2Ni44MTdjMC0zNi45IDI5LjkxMy02Ni44MTQgNjYuODE0LTY2LjgxNHoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjxjaXJjbGUgY3g9IjQ4Ni43NiIgY3k9IjE1NS43NjciIHI9IjU4LjQxMiIvPjxwYXRoIGQ9Ik02Ni44MTQgMzMwLjk5OWgxNzcuOWMzNi45IDAgNjYuODE0IDI5LjkxNCA2Ni44MTQgNjYuODE0djE3Ny45YzAgMzYuOS0yOS45MTMgNjYuODE0LTY2LjgxMyA2Ni44MTRINjYuODE0QzI5LjkxNCA2NDIuNTI3IDAgNjEyLjYxNCAwIDU3NS43MTRWMzk3LjgxM2MwLTM2LjkgMjkuOTE0LTY2LjgxNCA2Ni44MTQtNjYuODE0em04OC45NSAyMTQuMTc2YzMyLjI2IDAgNTguNDEyLTI2LjE1MiA1OC40MTItNTguNDEycy0yNi4xNTItNTguNDExLTU4LjQxMi01OC40MTEtNTguNDExIDI2LjE1MS01OC40MTEgNTguNDExYzAgMzIuMjYgMjYuMTUxIDU4LjQxMiA1OC40MTEgNTguNDEyem0yNDIuMDQ5LTIxNC4xNzZoMTc3LjljMzYuOSAwIDY2LjgxNCAyOS45MTQgNjYuODE0IDY2LjgxNHYxNzcuOWMwIDM2LjktMjkuOTEzIDY2LjgxNC02Ni44MTMgNjYuODE0SDM5Ny44MTNjLTM2LjkgMC02Ni44MTQtMjkuOTEzLTY2LjgxNC02Ni44MTNWMzk3LjgxM2MwLTM2LjkgMjkuOTE0LTY2LjgxNCA2Ni44MTQtNjYuODE0em04OC45NSAyMTQuMTc2YzMyLjI2IDAgNTguNDEyLTI2LjE1MiA1OC40MTItNTguNDEycy0yNi4xNTItNTguNDExLTU4LjQxMi01OC40MTEtNTguNDExIDI2LjE1MS01OC40MTEgNTguNDExYzAgMzIuMjYgMjYuMTUxIDU4LjQxMiA1OC40MTEgNTguNDEyeiIvPjwvZz48L2c+PC9zdmc+\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA2NCA2NCIgdmlld0JveD0iMCAwIDY0IDY0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48bGluZWFyR3JhZGllbnQgaWQ9ImEiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMjMuOTg2NiAwIDAgLTE2Ljk0NiA2NTk3LjEzNTMgNTY5NS40OTA3KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSItMjcyLjUyNzIiIHgyPSItMjc1LjEyMDciIHkxPSIzMzUuNTUzMiIgeTI9IjMzMi45NTk3Ij48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMxMWM0ZDEiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDYyYWQiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGQ9Im02My44IDEwLjljMi4xIDI4LjYtMTYuMiA0Mi4xLTMyLjcgNDMuNi0xNS4zIDEuMy0yOS43LTguMS0zMS0yMi41LTEtMTEuOSA2LjMtMTcgMTIuMS0xNy41IDYtLjUgMTEgMy42IDExLjQgOC42LjQgNC44LTIuNiA3LTQuNiA3LjItMS42LjEtMy43LS45LTMuOS0zLS4yLTEuOC41LTIuMS40LTQtLjMtMy41LTMuMy0zLjktNS0zLjctMiAuMi01LjcgMi41LTUuMSA4LjQuNSA1LjkgNi4yIDEwLjYgMTMuNiA5LjkgOC0uNyAxMy42LTYuOSAxNC0xNS43IDAtLjUuMS0uOS4zLTEuMy4xLS4yLjItLjQuMy0uNS4yLS4zLjQtLjUuNy0uOC4yLS4yLjUtLjUuNy0uOCAzLjUtMy4zIDE2LjEtMTEuMSAyOC04LjYuNC0uMi44LjIuOC43IiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAwIiBoZWlnaHQ9IjIwMDAiPjxjaXJjbGUgY3g9IjEwMDAiIGN5PSIxMDAwIiByPSIxMDAwIiBmaWxsPSIjNWI2ZGVlIi8+PHBhdGggZD0iTTgzMS4yNyA5MzguNzlhNTcxLjUgNTcxLjUgMCAwIDAtMTA0IDguOTVjMjguMjUtMjYxLjI4IDI0Ni00NTkuMTIgNTA1LjI0LTQ1OS4xIDE1OC43MyAwIDI2Ny40OSA3Ny43MiAyNjcuNDkgMjM4LjY0cy0xMzAuNTQgMjM4LjY0LTMyMSAyMzguNjRjLTE0MC41OC0uMDEtMjA3LjEzLTI3LjEzLTM0Ny43My0yNy4xM20tMTAuMjcgOTUuM2MtMTkwLjQ1IDAtMzIxIDc3LjcyLTMyMSAyMzguNjRzMTA4Ljc2IDIzOC42NCAyNjcuNDkgMjM4LjY0YzI1OS4yNyAwIDQ3Ny0xOTcuODIgNTA1LjI0LTQ1OS4xYTU3MS41IDU3MS41IDAgMCAxLTEwNCA4Ljk1Yy0xNDAuNi0uMDEtMjA3LjE1LTI3LjEzLTM0Ny43My0yNy4xMyIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNDAgNDAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KICAgIC5zdDAgewogICAgICBmaWxsOiB1cmwoI1NWR0lEXzFfKTsKICAgIH0KICAgIC5zdDEgewogICAgICBmaWxsOiAjNDY0QUVCOwogICAgfQogIDwvc3R5bGU+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwIiB5MT0iMCIgeDI9IjMwIiB5Mj0iNDAiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCA0MCkiPgogICAgPHN0b3Agb2Zmc2V0PSIwLjE3NDciIHN0eWxlPSJzdG9wLWNvbG9yOiM0NTRBRUEiIC8+CiAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiM2MUMyRUQiIC8+CiAgPC9saW5lYXJHcmFkaWVudD4KICA8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjcuMjMzOTAwMjE5MTY5NjIzLDIuNzA5NDQ1ODYyMTcwNTc0NiBsLTEzLjU2MDEzODM5NzA3MDgwNywxNS40NDQ4NTA3NzM1NTg5ODYgYy0wLjI0NDc2Nzg0MTEwMjM2MTEzLDAuMjQ0NzY3ODQxMTAyMzYxMTMgLTAuMDI0NDc2Nzg0MTEwMjM2MTQ4LDAuNjYwODczMTcwOTc2Mzc1OCAwLjMxODE5ODE5MzQzMzA2OTY1LDAuNjYwODczMTcwOTc2Mzc1OCBoMy4yMzA5MzU1MDI1NTExNjY2IGMwLjM0MjY3NDk3NzU0MzMwNjEsMCAwLjUzODQ4OTI1MDQyNTE5NDcsMC40MTYxMDUzMjk4NzQwMTQzMyAwLjI5MzcyMTQwOTMyMjgzMzcsMC43MDk4MjY3MzkxOTY4NDc2IGwtMTcuNjcyMjM4MTI3NTkwNDcsMTguMTg2MjUwNTkzOTA1NDMgYy0wLjA5NzkwNzEzNjQ0MDk0NDU2LDAuMDk3OTA3MTM2NDQwOTQ0NTYgMC4wMjQ0NzY3ODQxMTAyMzYxNDgsMC4yOTM3MjE0MDkzMjI4MzM3IDAuMTQ2ODYwNzA0NjYxNDE2NzQsMC4xNzEzMzc0ODg3NzE2NTMgbDMwLjA1NzQ5MDg4NzM2OTk0NCwtMTkuNTA3OTk2OTM1ODU4MTc3IGMwLjM0MjY3NDk3NzU0MzMwNjEsLTAuMjIwMjkxMDU2OTkyMTI1MyAwLjE3MTMzNzQ4ODc3MTY1MywtMC43MzQzMDM1MjMzMDcwODM2IC0wLjIyMDI5MTA1Njk5MjEyNTMsLTAuNzM0MzAzNTIzMzA3MDgzNiBoLTYuNDM3Mzk0MjIwOTkyMDk4IGMtMC4zOTE2Mjg1NDU3NjM3NzgyLDAgLTAuNTYyOTY2MDM0NTM1NDMwNiwtMC40ODk1MzU2ODIyMDQ3MjIzIC0wLjI0NDc2Nzg0MTEwMjM2MTEzLC0wLjcwOTgyNjczOTE5Njg0NzYgbDE2LjQyMzkyMjEzNzk2ODQyNSwtMTMuNzA2OTk5MTAxNzMyMjIyIGMwLjYzNjM5NjM4Njg2NjEzOTEsLTAuNTM4NDg5MjUwNDI1MTk0NyAwLjI0NDc2Nzg0MTEwMjM2MTEzLC0xLjU5MDk5MDk2NzE2NTM0NzUgLTAuNTYyOTY2MDM0NTM1NDMwNiwtMS41OTA5OTA5NjcxNjUzNDc1IGgtOS40NDgwMzg2NjY1NTExMzggQzI4LjY1MzU1MzY5NzU2MzMwNywxLjY1Njk0NDE0NTQzMDQyMDggMjcuODQ1ODE5ODIxOTI1NTI0LDIuMDQ4NTcyNjkxMTk0MTk5MyAyNy4yMzM5MDAyMTkxNjk2MjMsMi43MDk0NDU4NjIxNzA1NzQ2IHoiIC8+CiAgPHBhdGggY2xhc3M9InN0MSIgZD0iTTE4LjEwODgyNzc4NTkwMTA3LDkuMTk0MDgyMDEwNjY1MzY5IGwtNC45NzQ0MTM3MTM4Mjk0MDY0LC02LjI4OTc2MzQ5MzkyODUzIGMtMC41OTc4ODYyNjM2ODE0MTk3LC0wLjcxNzQ2MzUxNjQxNzcwMzYgLTEuNDU4ODQyNDgzMzgyNjYzLC0xLjE3MTg1NzA3NjgxNTU4MTQgLTIuMzkxNTQ1MDU0NzI1Njc2NywtMS4xNzE4NTcwNzY4MTU1ODE0IGgtOS43MDk2NzI5MjIxODYyNDcgYy0wLjcxNzQ2MzUxNjQxNzcwMzYsMCAtMS4xNDc5NDE2MjYyNjgzMjQ2LDAuODM3MDQwNzY5MTUzOTg3MSAtMC42OTM1NDgwNjU4NzA0NDcsMS40MTEwMTE1ODIyODgxNDkzIGwxMS4wMDExMDcyNTE3MzgxMTIsMTMuNzk5MjE0OTY1NzY3MTUzIEwxOC4xMDg4Mjc3ODU5MDEwNyw5LjE5NDA4MjAxMDY2NTM2OSB6IiAvPgogIDxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xOS41Njc2NzAyNjkyODM3MzgsMjcuMjUwMjQ3MTczODQ0MjI2IGw3LjQzNzcwNTEyMDE5Njg1NDUsOS4zNTA5NDExNjM5NzczOTYgYzAuNTk3ODg2MjYzNjgxNDE5NywwLjcxNzQ2MzUxNjQxNzcwMzYgMS40ODI3NTc5MzM5Mjk5MTk3LDEuMTcxODU3MDc2ODE1NTgxNCAyLjQxNTQ2MDUwNTI3MjkzMywxLjE3MTg1NzA3NjgxNTU4MTQgaDkuMzk4NzcyMDY1MDcxOTEgYzAuNzE3NDYzNTE2NDE3NzAzNiwwIDEuMTQ3OTQxNjI2MjY4MzI0NiwtMC44NjA5NTYyMTk3MDEyNDM1IDAuNjkzNTQ4MDY1ODcwNDQ3LC0xLjQxMTAxMTU4MjI4ODE0OTMgbC0xMS40Nzk0MTYyNjI2ODMyNDYsLTE0LjU2NDUwOTM4MzI3OTM2OCBMMTkuNTY3NjcwMjY5MjgzNzM4LDI3LjI1MDI0NzE3Mzg0NDIyNiB6IiAvPgogIAo8L3N2Zz4=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyNC4xLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyNDYgMjQ2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNDYgMjQ2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDojMDBBMTRBO30NCgkuc3Qxe2ZpbGw6IzRBN0QzQjt9DQoJLnN0MntmaWxsOiM0MjQyNDM7fQ0KPC9zdHlsZT4NCjxnPg0KCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMDIuMSwxNS4ydjFjMTQuNywxMywyMi43LDI3LjEsMjMuMywzOS42YzAsMTEuMy02LjIsMjIuNy0xOC43LDMyLjlWNThjMC0yLjMtMS43LTQuNS00LjUtNC41VjE1LjJ6Ii8+DQoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTEwMi4xLDUzLjVjLTIuMywwLTQuNSwxLjctNC41LDQuNXYzMC42Qzg1LjEsNzcuOSw3OC45LDY3LjEsNzguOSw1NS44YzAuNi0xMi41LDguNS0yNi41LDIzLjMtMzkuNlY1My41eiIvPg0KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xODMuMywxMjYuMWMtMC42LTEuMS0xLjctMS43LTIuOC0xLjdjLTEuMS0wLjYtMi4zLDAtMy40LDAuNmwtNCwyLjNjNS4zLTE0LjcsMTguMi0xMC4yLDIzLjMtOS4xDQoJCUwxODMuMywxMjYuMXoiLz4NCgk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTk2LjMsMTE4LjJjLTEuNyw1LjEtNC40LDE4LjctMTguNywxNS45bDQtMi4zYzEuMS0wLjYsMS43LTEuMSwyLjMtMi44YzAuNi0xLjEsMC0yLjMtMC42LTIuOEwxOTYuMywxMTguMnoiDQoJCS8+DQoJPHBhdGggY2xhc3M9InN0MiIgZD0iTTE3Ny42LDEzNC4xbDQtMi4zYzEuMS0wLjYsMS43LTEuMSwyLjMtMi44YzAuNi0yLjMtMS4xLTQuNS0yLjgtNS4xYy0xLjEtMC42LTIuMywwLTMuNCwwLjZsLTQsMi4zDQoJCWM0LjUtMTMsMTcuNi05LjYsMjIuNy04LjVDMTk0LjYsMTIzLjksMTkxLjgsMTM2LjMsMTc3LjYsMTM0LjF6IE0xNDguNywxNTIuMmMtMy40LDAtNi4yLTIuOC02LjItNi4yczIuOC02LjIsNi4yLTYuMg0KCQlzNi4yLDIuOCw2LjIsNi4yQzE1NS41LDE0OS40LDE1Mi42LDE1Mi4yLDE0OC43LDE1Mi4yeiBNMTU1LjUsMTk4LjdjMCwzLjQtMi44LDYuMi02LjIsNi4ycy02LjItMi44LTYuMi02LjJzMi44LTYuMiw2LjItNi4yDQoJCUMxNTIuMSwxOTIuNSwxNTUuNSwxOTUuMywxNTUuNSwxOTguN3ogTTExNi4zLDE3NS41YzAtMS4xLDAuNi0xLjcsMC42LTIuOGMwLTEuMSwwLTIuMy0wLjYtMi44bDIyLjctMTNjMS43LDEuMSwzLjQsMi4zLDUuNywzLjQNCgkJdjI2LjFjLTEuNywwLjYtMy40LDEuNy01LjEsMi44TDExNi4zLDE3NS41eiBNMTM0LjUsMjAxLjZsLTIzLjMsMTNjLTEuNy0xLjEtMy40LTIuMy01LjEtMi44di0yNi4xYzEuNy0wLjYsNC0xLjcsNS4xLTIuOGwyMy4zLDEzDQoJCWMwLDEuMS0wLjYsMi4zLTAuNiwzLjRDMTM0LjUsMTk5LjksMTM0LjUsMjAxLDEzNC41LDIwMS42eiBNMTAyLjEsMjMxLjZjLTMuNCwwLTYuMi0yLjgtNi4yLTYuMnMyLjgtNi4yLDYuMi02LjINCgkJYzMuNCwwLDYuMiwyLjgsNi4yLDYuMlMxMDUuNSwyMzEuNiwxMDIuMSwyMzEuNnogTTY5LjgsMjAxLjZjMC0xLjEsMC0xLjcsMC0yLjhjMC0xLjEsMC0yLjMtMC42LTMuNGwyMy4zLTEzDQoJCWMxLjcsMS4xLDMuNCwyLjMsNS4xLDIuOHYyNi4xYy0xLjcsMC42LTQsMS43LTUuMSwyLjhMNjkuOCwyMDEuNnogTTY0LjcsMTg4LjVjLTEuNy0xLjEtMy40LTIuMy01LjEtMi44di0yNi4xDQoJCWMyLjMtMC42LDQtMS43LDUuMS0zLjRsMjIuNywxM2MwLDEuMS0wLjYsMS43LTAuNiwyLjhjMCwxLjEsMCwyLjMsMC42LDIuOEw2NC43LDE4OC41eiBNNTUuNiwyMDUuNWMtMy40LDAtNi4yLTIuOC02LjItNi4yDQoJCXMyLjgtNi4yLDYuMi02LjJzNi4yLDIuOCw2LjIsNi4yUzU5LDIwNS41LDU1LjYsMjA1LjV6IE00OS40LDE0NmMwLTMuNCwyLjgtNi4yLDYuMi02LjJzNi4yLDIuOCw2LjIsNi4ycy0yLjgsNi4yLTYuMiw2LjINCgkJUzQ5LjQsMTQ5LjQsNDkuNCwxNDZ6IE05Mi41LDEyOS41YzEuNywxLjEsMy40LDIuMyw1LjEsMi44djI2LjFjLTIuMywwLjYtNCwxLjctNS4xLDIuOGwtMjIuNy0xM2MwLTEuMSwwLTEuNywwLTIuOA0KCQljMC0xLjEsMC0yLjMtMC42LTMuNEw5Mi41LDEyOS41eiBNMTAyLjEsMTEzLjFjMy40LDAsNi4yLDIuOCw2LjIsNi4ycy0yLjgsNi4yLTYuMiw2LjJjLTMuNCwwLTYuMi0yLjgtNi4yLTYuMg0KCQlTOTguNywxMTMuMSwxMDIuMSwxMTMuMXogTTc4LjksNTUuMmMwLjYtMTIuNSw4LjUtMjUuNSwyMy4zLTM4LjZsMCwwYzE0LjcsMTMsMjIuNywyNi4xLDIzLjMsMzguNmMwLDExLjMtNi4yLDIyLjctMTguNywzMi45VjU4DQoJCWMwLTIuMy0xLjctNC41LTQuNS00LjVjLTIuMywwLTQuNSwxLjctNC41LDQuNXYzMC42Qzg1LjEsNzcuOSw3OC45LDY3LjEsNzguOSw1NS4yeiBNMTA4LjQsMTcyLjFjMCwzLjQtMi44LDYuMi02LjIsNi4yDQoJCWMtMy40LDAtNi4yLTIuOC02LjItNi4yczIuOC02LjIsNi4yLTYuMkMxMDUuNSwxNjUuOCwxMDguNCwxNjguNywxMDguNCwxNzIuMXogTTEzNSwxNDMuMWMwLDEuMS0wLjYsMi4zLTAuNiwzLjQNCgkJYzAsMS4xLDAsMS43LDAsMi44bC0yMi43LDEzYy0xLjctMS4xLTMuNC0yLjMtNS4xLTIuOHYtMjYuMWMxLjctMC42LDMuNC0xLjcsNS4xLTIuOEwxMzUsMTQzLjF6IE0yMDIuNSwxMTEuNGMwLDAtMTUuOS02LjItMjYuNywwDQoJCWMtNi4yLDMuNC0xMC44LDEwLjItMTEuOSwyMWwtNS43LDMuNGMtMi4zLTIuMy01LjctMy40LTkuNi0zLjRjLTMuNCwwLTYuOCwxLjEtOS42LDMuNGwwLDBsLTIzLjMtMTNjMC0xLjEsMC42LTIuMywwLjYtMy40DQoJCWMwLTYuMi00LTExLjMtMTAuMi0xMy42di02LjJsMi4zLTEuN2wwLDBDMTI2LDg0LjEsMTM0LjUsNzAsMTMzLjksNTQuNmMwLTE1LjMtOS42LTMxLjItMjguOS00Ny43Yy0wLjYtMC42LTEuNy0xLjEtMi4zLTEuMWgtMC42DQoJCWMtMS4xLDAtMS43LDAuNi0yLjMsMS4xQzgwLDI0LDcwLjQsMzkuOSw3MC40LDU1LjJDNjkuOCw3MCw3OC4zLDg0LjcsOTUuOSw5OC4zbDIuMywxLjd2Ni4yQzkyLjUsMTA4LDg4LDExMy42LDg4LDExOS45DQoJCWMwLDEuMSwwLDIuMywwLjYsMy40bC0yMy4zLDEyLjVjLTIuMy0yLjMtNS43LTMuNC05LjYtMy40Yy03LjksMC0xNC4yLDYuMi0xNC4yLDE0LjJjMCw2LjIsNCwxMS4zLDEwLjIsMTMuNnYyNi4xDQoJCWMtNS43LDEuNy0xMC4yLDcuNC0xMC4yLDEzLjZjMCw3LjksNi4yLDE0LjIsMTQuMiwxNC4yYzQsMCw3LjQtMS43LDkuNi00bDIyLjcsMTNjMCwxLjEtMC42LDIuMy0wLjYsMi44YzAsNy45LDYuMiwxNC4yLDE0LjIsMTQuMg0KCQlzMTQuMi02LjIsMTQuMi0xNC4yYzAtMS4xLDAtMi4zLTAuNi0yLjhsMjIuNy0xM2MyLjgsMi4zLDYuMiw0LDkuNiw0YzcuOSwwLDE0LjItNi4yLDE0LjItMTQuMmMwLTYuMi00LTExLjMtMTAuMi0xMy42di0yNi4xDQoJCWM1LjctMS43LDEwLjItNy40LDEwLjItMTMuNmMwLTEuMSwwLTIuMy0wLjYtMy40bDUuMS0yLjhjMTAuOCw0LjUsMTkuMyw0LDI1LDBjMTAuMi02LjIsMTMtMjMuMywxMy0yMy4zDQoJCUMyMDYsMTE0LjgsMjA0LjIsMTExLjksMjAyLjUsMTExLjR6Ii8+DQo8L2c+DQo8L3N2Zz4NCg==\"","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTI4cHgiIGhlaWdodD0iMTI4cHgiIHZpZXdCb3g9IjAgMCAxMjggMTI4IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPHRpdGxlPmljb25fbG9nb0AyeDwvdGl0bGU+CiAgICA8ZGVmcz4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjUyLjU0NTc1MDElIiB5MT0iMTAwJSIgeDI9IjUyLjU0NTc1MDQlIiB5Mj0iMCUiIGlkPSJsaW5lYXJHcmFkaWVudC0xIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzFFM0RBMCIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMzc1MERFIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIiBpZD0ibGluZWFyR3JhZGllbnQtMiI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMxRDNCQTMiIHN0b3Atb3BhY2l0eT0iMCIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMTczNzkzIiBzdG9wLW9wYWNpdHk9IjAuNjUyOTM4MTc5IiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iNTAlIiB5MT0iMTAwJSIgeDI9IjUwJSIgeTI9IjAlIiBpZD0ibGluZWFyR3JhZGllbnQtMyI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMxRTNEQTAiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzM3NTBERSIgb2Zmc2V0PSIxMDAlIj48L3N0b3A+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSLorr7orqEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJpY29uX2xvZ28iPgogICAgICAgICAgICA8cGF0aCBkPSJNMzUsMCBMOTMsMCBDMTEyLjMyOTk2NiwtMy41NTA4NTcxOWUtMTUgMTI4LDE1LjY3MDAzMzggMTI4LDM1IEwxMjgsOTMgQzEyOCwxMTIuMzI5OTY2IDExMi4zMjk5NjYsMTI4IDkzLDEyOCBMMzUsMTI4IEMxNS42NzAwMzM4LDEyOCAyLjM2NzIzODEzZS0xNSwxMTIuMzI5OTY2IDAsOTMgTDAsMzUgQy0yLjM2NzIzODEzZS0xNSwxNS42NzAwMzM4IDE1LjY3MDAzMzgsMy41NTA4NTcxOWUtMTUgMzUsMCBaIiBpZD0iQ29tYmluZWQtU2hhcGUiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC01IiBmaWxsPSIjRkZGRkZGIiBjeD0iNjQuNTcxNDI4NiIgY3k9IjY0LjU3MTQyODYiIHI9IjQ4LjU3MTQyODYiPjwvY2lyY2xlPgogICAgICAgICAgICA8cGF0aCBkPSJNNjQsMCBDOTkuMzQ2MjI0LDAgMTI4LDI4LjY1Mzc3NiAxMjgsNjQgQzEyOCw5OS4zNDYyMjQgOTkuMzQ2MjI0LDEyOCA2NCwxMjggQzI4LjY1Mzc3NiwxMjggMCw5OS4zNDYyMjQgMCw2NCBDMCwyOC42NTM3NzYgMjguNjUzNzc2LDAgNjQsMCBaIE02My43MTMwMDQ1LDE1LjIxMDc2MjMgQzM2Ljc2NzQ1MjYsMTUuMjEwNzYyMyAxNC45MjM3NjY4LDM3LjA1NDQ0ODEgMTQuOTIzNzY2OCw2NCBDMTQuOTIzNzY2OCw5MC45NDU1NTE5IDM2Ljc2NzQ1MjYsMTEyLjc4OTIzOCA2My43MTMwMDQ1LDExMi43ODkyMzggQzkwLjY1ODU1NjQsMTEyLjc4OTIzOCAxMTIuNTAyMjQyLDkwLjk0NTU1MTkgMTEyLjUwMjI0Miw2NCBDMTEyLjUwMjI0MiwzNy4wNTQ0NDgxIDkwLjY1ODU1NjQsMTUuMjEwNzYyMyA2My43MTMwMDQ1LDE1LjIxMDc2MjMgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTIpIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik01OC4xODE4MTgyLDg4LjcyNzI3MjcgQzU4LjE4MTgxODIsOTIuNzQzODg5MSA1NC45MjU3MDczLDk2IDUwLjkwOTA5MDksOTYgQzQ2Ljg5MjQ3NDUsOTYgNDMuNjM2MzYzNiw5Mi43NDM4ODkxIDQzLjYzNjM2MzYsODguNzI3MjcyNyBMNDMuNjM2LDg0LjM2MyBMMzkuMjcyNzI3Myw4NC4zNjM2MzY0IEMzNS4yNTYxMTA5LDg0LjM2MzYzNjQgMzIsODEuMTA3NTI1NSAzMiw3Ny4wOTA5MDkxIEMzMiw3My4wNzQyOTI3IDM1LjI1NjExMDksNjkuODE4MTgxOCAzOS4yNzI3MjczLDY5LjgxODE4MTggTDQzLjYzNiw2OS44MTggTDQzLjYzNiw1OC4xODEgTDM5LjI3MjcyNzMsNTguMTgxODE4MiBDMzUuMjU2MTEwOSw1OC4xODE4MTgyIDMyLDU0LjkyNTcwNzMgMzIsNTAuOTA5MDkwOSBDMzIsNDYuODkyNDc0NSAzNS4yNTYxMTA5LDQzLjYzNjM2MzYgMzkuMjcyNzI3Myw0My42MzYzNjM2IEw0My42MzYsNDMuNjM2IEw0My42MzYzNjM2LDM5LjI3MjcyNzMgQzQzLjYzNjM2MzYsMzUuMjU2MTEwOSA0Ni44OTI0NzQ1LDMyIDUwLjkwOTA5MDksMzIgQzU0LjkyNTcwNzMsMzIgNTguMTgxODE4MiwzNS4yNTYxMTA5IDU4LjE4MTgxODIsMzkuMjcyNzI3MyBMNTguMTgxLDQzLjYzNiBMNjkuODE4LDQzLjYzNiBMNjkuODE4MTgxOCwzOS4yNzI3MjczIEM2OS44MTgxODE4LDM1LjI1NjExMDkgNzMuMDc0MjkyNywzMiA3Ny4wOTA5MDkxLDMyIEM4MS4xMDc1MjU1LDMyIDg0LjM2MzYzNjQsMzUuMjU2MTEwOSA4NC4zNjM2MzY0LDM5LjI3MjcyNzMgTDg0LjM2Myw0My42MzYgTDg4LjcyNzI3MjcsNDMuNjM2MzYzNiBDOTIuNzQzODg5MSw0My42MzYzNjM2IDk2LDQ2Ljg5MjQ3NDUgOTYsNTAuOTA5MDkwOSBDOTYsNTQuOTI1NzA3MyA5Mi43NDM4ODkxLDU4LjE4MTgxODIgODguNzI3MjcyNyw1OC4xODE4MTgyIEw4NC4zNjMsNTguMTgxIEw4NC4zNjMsNjkuODE4IEw4OC43MjcyNzI3LDY5LjgxODE4MTggQzkyLjc0Mzg4OTEsNjkuODE4MTgxOCA5Niw3My4wNzQyOTI3IDk2LDc3LjA5MDkwOTEgQzk2LDgxLjEwNzUyNTUgOTIuNzQzODg5MSw4NC4zNjM2MzY0IDg4LjcyNzI3MjcsODQuMzYzNjM2NCBMODQuMzYzLDg0LjM2MyBMODQuMzYzNjM2NCw4OC43MjcyNzI3IEM4NC4zNjM2MzY0LDkyLjc0Mzg4OTEgODEuMTA3NTI1NSw5NiA3Ny4wOTA5MDkxLDk2IEM3My4wNzQyOTI3LDk2IDY5LjgxODE4MTgsOTIuNzQzODg5MSA2OS44MTgxODE4LDg4LjcyNzI3MjcgTDY5LjgxOCw4NC4zNjMgTDU4LjE4MSw4NC4zNjMgTDU4LjE4MTgxODIsODguNzI3MjcyNyBaIE01OC4xODEsNjkuODE4IEw2OS44MTgsNjkuODE4IEw2OS44MTgsNTguMTgxIEw1OC4xODEsNTguMTgxIEw1OC4xODEsNjkuODE4IFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0zKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjQuMDAwMDAwLCA2NC4wMDAwMDApIHJvdGF0ZSgtMzAuMDAwMDAwKSB0cmFuc2xhdGUoLTY0LjAwMDAwMCwgLTY0LjAwMDAwMCkgIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMTQuMjYyNyAxMy40MDEzQzEyLjQyMjcgMTQuNTMwNyA5Ljk1OTg3IDE1LjExMjQgNy40NjU1OCAxNC45ODgxQzUuMzY4NDQgMTQuODg2NSAzLjY0ODQ0IDE0LjE0MTEgMi42MDg0NCAxMi45MTU3QzEuNjk0MTYgMTEuODIwMSAxLjMzOTg3IDEwLjM3NDUgMS41Nzk4NyA4LjcxMTQzQzEuNjYxMjEgOC4xNTg3NCAxLjgyNzkxIDcuNjIxNjYgMi4wNzQxNSA3LjExODk2TDIuMTA4NDQgNy4wNDgzN0MyLjk3MTcgNS40MDU5NSA0LjI1MjgyIDQuMDEzOTcgNS44MjU3MyAzLjAwOTQyQzcuMzk4NjQgMi4wMDQ4NiA5LjIwOTEzIDEuNDIyMzYgMTEuMDc5IDEuMzE5MjRDMTIuOTQ4OSAxLjIxNjExIDE0LjgxMzcgMS41OTU5MiAxNi40OSAyLjQyMTI4QzE4LjE2NjIgMy4yNDY2NSAxOS41OTYxIDQuNDg5MTIgMjAuNjM4OSA2LjAyNjQxQzIxLjY4MTcgNy41NjM3MSAyMi4zMDE1IDkuMzQyODUgMjIuNDM3MyAxMS4xODg3QzIyLjU3MzEgMTMuMDM0NiAyMi4yMjAyIDE0Ljg4MzYgMjEuNDEzMyAxNi41NTM4QzIwLjYwNjQgMTguMjI0IDE5LjM3MzQgMTkuNjU3NyAxNy44MzU1IDIwLjcxNEMxNi4yOTc3IDIxLjc3MDIgMTQuNTA4IDIyLjQxMjYgMTIuNjQyNyAyMi41Nzc4TDEyLjc1NyAyMy44NzM4QzE0Ljg1MTMgMjMuNjg5NCAxNi44NjA4IDIyLjk2OTEgMTguNTg3NyAyMS43ODM3QzIwLjMxNDYgMjAuNTk4NCAyMS42OTkyIDE4Ljk4ODkgMjIuNjA1MSAxNy4xMTM4QzIzLjUxMSAxNS4yMzg3IDIzLjkwNyAxMy4xNjI3IDIzLjc1NDEgMTEuMDkwNEMyMy42MDExIDkuMDE4MDggMjIuOTA0NSA3LjAyMDg4IDIxLjczMjggNS4yOTU1NUMyMC41NjEyIDMuNTcwMjIgMTguOTU0OSAyLjE3NjMgMTcuMDcyMyAxLjI1MTExQzE1LjE4OTYgMC4zMjU5MDkgMTMuMDk1NiAtMC4wOTg2NDExIDEwLjk5NjQgMC4wMTkyNzg3QzguODk3MjIgMC4xMzcxOTggNi44NjUzMyAwLjc5MzUyIDUuMTAwOTEgMS45MjM1OUMzLjMzNjQ5IDMuMDUzNjUgMS45MDA0MiA0LjYxODQ4IDAuOTM0MTU3IDYuNDYzOUwwLjg4ODQ0MSA2LjU1NzA3QzAuNTgyOTc2IDcuMTgwOSAwLjM3Njc0IDcuODQ3NTYgMC4yNzcwMTMgOC41MzM1NEMtMC4wMDg3MDEzMiAxMC41NjA4IDAuNDM0MTUzIDEyLjM2NTEgMS41OTEzIDEzLjc1NDJDMi44NTcwMSAxNS4yNzMzIDQuOTE3MDEgMTYuMTc2OCA3LjM4ODQ0IDE2LjI5NTRDMTAuMzk3IDE2LjQ0NTEgMTMuMzg4NCAxNS42MzQ3IDE1LjUxMTMgMTQuMTQzOUwxNC4yNjI3IDEzLjQwMTNaIiBmaWxsPSIjMjA0MUUwIi8+CjxwYXRoIGQ9Ik0xNi43OCAxNC44NzVDMTUuNTgyOSAxNS45MDI4IDEyLjggMTcuNzY2MyA4LjE4Mjg2IDE4LjAyMDRDMy4wMTQyOSAxOC4zMDI4IDAuODYwMDAxIDE2LjY0MjUgMC44NDAwMDEgMTYuNjI1NkwwLjQyMjg1NiAxNy4xMzM4TDAuODQyODU2IDE2LjYzNDFMMCAxNy42MzM2QzAuMDkxNDI4NiAxNy43MDk4IDIuMTU3MTQgMTkuMzU4OCA3LjAwODU3IDE5LjM1ODhDNy40MDU3MSAxOS4zNTg4IDcuODIyODYgMTkuMzU4OCA4LjI1NzE0IDE5LjMyNDlDMTMuODM3MSAxOS4wMTcxIDE2LjkwMjkgMTYuNjExNSAxNy45NzE0IDE1LjU4MzdMMTYuNzggMTQuODc1WiIgZmlsbD0iIzIwNDFFMCIvPgo8cGF0aCBkPSJNMTkuMDE5OSAxNi4yMTkxQzE4LjMxMiAxNy4xMzg2IDE3LjQ0MDcgMTcuOTIzMiAxNi40NDg1IDE4LjUzNDRDMTIuOTUxMyAyMC43NjQ5IDguNTAyNzUgMjEuMDUyOSA1LjM4ODQ3IDIwLjg5NzZMNS4zMjI3NSAyMi4xOTkzQzUuODQ1NjEgMjIuMjI0NyA2LjM0ODQ3IDIyLjIzNiA2LjgzNzA0IDIyLjIzNkMxNS42MTk5IDIyLjIzNiAxOS4xNjg1IDE4LjI4MzEgMjAuMTU5OSAxNi44NzEzTDE5LjAxNyAxNi4yMDc4IiBmaWxsPSIjMjA0MUUwIi8+CjxwYXRoIGQ9Ik0xOC42ODU2IDExLjI5MjNDMTkuMjY3OSAxMS4yOTIzIDE5LjczOTkgMTAuODI1OCAxOS43Mzk5IDEwLjI1MDRDMTkuNzM5OSA5LjY3NDk2IDE5LjI2NzkgOS4yMDg1IDE4LjY4NTYgOS4yMDg1QzE4LjEwMzQgOS4yMDg1IDE3LjYzMTMgOS42NzQ5NiAxNy42MzEzIDEwLjI1MDRDMTcuNjMxMyAxMC44MjU4IDE4LjEwMzQgMTEuMjkyMyAxOC42ODU2IDExLjI5MjNaIiBmaWxsPSIjMjA0MUUwIi8+Cjwvc3ZnPgo=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyBpZD0iQ2Vsb19SaW5ncyIgZGF0YS1uYW1lPSJDZWxvIFJpbmdzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA5NTAgOTUwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZiY2M1Yzt9LmNscy0ye2ZpbGw6IzM1ZDA3Zjt9LmNscy0ze2ZpbGw6IzVlYTMzYjt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPkFydGJvYXJkIDE8L3RpdGxlPjxwYXRoIGlkPSJCb3R0b21fUmluZyIgZGF0YS1uYW1lPSJCb3R0b20gUmluZyIgY2xhc3M9ImNscy0xIiBkPSJNMzc1LDg1MGMxNTEuODgsMCwyNzUtMTIzLjEyLDI3NS0yNzVTNTI2Ljg4LDMwMCwzNzUsMzAwLDEwMCw0MjMuMTIsMTAwLDU3NSwyMjMuMTIsODUwLDM3NSw4NTBabTAsMTAwQzE2Ny45LDk1MCwwLDc4Mi4xLDAsNTc1UzE2Ny45LDIwMCwzNzUsMjAwLDc1MCwzNjcuOSw3NTAsNTc1LDU4Mi4xLDk1MCwzNzUsOTUwWiIvPjxwYXRoIGlkPSJUb3BfUmluZyIgZGF0YS1uYW1lPSJUb3AgUmluZyIgY2xhc3M9ImNscy0yIiBkPSJNNTc1LDY1MGMxNTEuODgsMCwyNzUtMTIzLjEyLDI3NS0yNzVTNzI2Ljg4LDEwMCw1NzUsMTAwLDMwMCwyMjMuMTIsMzAwLDM3NSw0MjMuMTIsNjUwLDU3NSw2NTBabTAsMTAwYy0yMDcuMSwwLTM3NS0xNjcuOS0zNzUtMzc1UzM2Ny45LDAsNTc1LDAsOTUwLDE2Ny45LDk1MCwzNzUsNzgyLjEsNzUwLDU3NSw3NTBaIi8+PHBhdGggaWQ9IlJpbmdzX092ZXJsYXAiIGRhdGEtbmFtZT0iUmluZ3MgT3ZlcmxhcCIgY2xhc3M9ImNscy0zIiBkPSJNNTg3LjM5LDc1MGEyNzQuMzgsMjc0LjM4LDAsMCwwLDU0LjU1LTEwOC4wNkEyNzQuMzYsMjc0LjM2LDAsMCwwLDc1MCw1ODcuNGEzNzMuNjMsMzczLjYzLDAsMCwxLTI5LjE2LDEzMy40NUEzNzMuNjIsMzczLjYyLDAsMCwxLDU4Ny4zOSw3NTBaTTMwOC4wNiwzMDguMDZBMjc0LjM2LDI3NC4zNiwwLDAsMCwyMDAsMzYyLjZhMzczLjYzLDM3My42MywwLDAsMSwyOS4xNi0xMzMuNDVBMzczLjYyLDM3My42MiwwLDAsMSwzNjIuNjEsMjAwLDI3NC4zOCwyNzQuMzgsMCwwLDAsMzA4LjA2LDMwOC4wNloiLz48L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDg2IiBoZWlnaHQ9IjQ4NiIgdmlld0JveD0iMCAwIDQ4NiA0ODYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSI0ODYiIGhlaWdodD0iNDg2IiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTI0MyA0ODZDMzc3LjIwNSA0ODYgNDg2IDM3Ny4yMDUgNDg2IDI0M0M0ODYgMTA4Ljc5NSAzNzcuMjA1IDAgMjQzIDBDMTA4Ljc5NSAwIDAgMTA4Ljc5NSAwIDI0M0MwIDM3Ny4yMDUgMTA4Ljc5NSA0ODYgMjQzIDQ4NlpNMzc4IDEwOEgxMDhWMzc4SDM3OFYxMDhaIiBmaWxsPSIjMEExMjFFIi8+Cjwvc3ZnPgo=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDMwMCAzMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8Y2lyY2xlIGN4PSIxNTAiIGN5PSIxNTAiIHI9IjE1MCIgZmlsbD0iI0QwOEUzOSIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNDEuMzc3IDEzOS44NTdDMjQzLjUzNiAxNDEuNjIgMjQ0Ljk4OSAxNDQuMDk5IDI0NS40NzMgMTQ2Ljg0NEMyNDUuNTkgMTQ3LjY2MyAyNDUuNTggMTQ4LjQ5NiAyNDUuNDQzIDE0OS4zMTNDMjQ1LjQwNiAxNDkuODg5IDI0NS4zMzUgMTUwLjQ2MiAyNDUuMjMyIDE1MS4wMjlDMjQ1LjA2NiAxNTIuMTQ5IDI0NC44MjUgMTUzLjI1NSAyNDQuNTA5IDE1NC4zNDJDMjQzLjgzMiAxNTYuNTcyIDI0Mi44MTYgMTU4LjY4NSAyNDEuNDk4IDE2MC42MDZDMjQxLjI0OCAxNjAuOTY4IDI0MC45MzEgMTYxLjM4MiAyNDAuNzEyIDE2MS42NjdDMjQwLjY0IDE2MS43NjEgMjQwLjU3OSAxNjEuODQxIDI0MC41MzQgMTYxLjkwMVYxNjIuMDUxQzI0MC41MzggMTYyLjA3NyAyNDAuNTQyIDE2Mi4xMDcgMjQwLjU0NiAxNjIuMTQyQzI0MC41OCAxNjIuMzg1IDI0MC42NDMgMTYyLjgzNyAyNDAuNzc1IDE2My40OTdDMjQxLjEzOCAxNjUuNjg1IDI0MS4yNDkgMTY3LjkwOCAyNDEuMTA2IDE3MC4xMjJDMjQwLjgxOCAxNzQuNDI5IDIzOS44IDE3OC42NTUgMjM4LjA5NSAxODIuNjJDMjM2LjQxOCAxODYuNzQ5IDIzMy43NzQgMTkwLjQxNiAyMzAuMzg1IDE5My4zMUwyMjkuOTk0IDE5My42NzJMMjI5LjQ1MiAxOTMuODUyQzIyNS4yNDYgMTk1LjQzMSAyMjAuOTI4IDE5Ni42ODkgMjE2LjUzMyAxOTcuNjE3QzIxMi4wMzEgMTk4LjY0NSAyMDcuNDE2IDE5OS4wOTEgMjAyLjggMTk4Ljk0MkgyMDIuNDA5SDIwMi4wMTdDMTkyLjQ0IDE5NS44NTkgMTgyLjU1NCAxOTMuODQgMTcyLjUzNSAxOTIuOTE5QzE2OS44MTEgMTkyLjcxNyAxNjcuMTA0IDE5Mi4zMjUgMTY0LjQzNCAxOTEuNzQ0QzE2MS44MTcgMTkxLjA3OSAxNTkuMjQyIDE5MC4yNTUgMTU2LjcyNSAxODkuMjc1QzE1Mi43MDUgMTg3LjgxMiAxNDguNTkgMTg2LjYyNCAxNDQuNDA4IDE4NS43MjFDMTQyLjQ0MiAxODguNDYxIDE0MS41MzIgMTkxLjgyIDE0MS44NDggMTk1LjE3N0MxNDIuNDc5IDE5OS45NzUgMTQ0LjAwMSAyMDQuNjEyIDE0Ni4zMzUgMjA4Ljg1QzE0OS4yNyAyMTMuNDU3IDE1MS42ODMgMjE4LjM3NiAxNTMuNTMzIDIyMy41MTVDMTU1LjMxIDIyOS4wMjQgMTU1Ljc2NCAyMzQuODc0IDE1NC44NTggMjQwLjU5TDE1NC4wNDUgMjQ1LjhMMTQ5LjY0OCAyNDIuNzg5QzE0OS4xMTkgMjQyLjMzNiAxNDguMTI3IDI0MS43MzUgMTQ3LjE4MiAyNDEuMTYzQzE0Ni45OTcgMjQxLjA1MSAxNDYuODE0IDI0MC45NCAxNDYuNjM2IDI0MC44MzFMMTQzLjYyNSAyMzkuMTc1QzE0NC42OTUgMjQzLjExNyAxNDUuNCAyNDcuMTUgMTQ1LjczMyAyNTEuMjIxQzE0NS45MzQgMjU0Ljc0NCAxNDUuODY0IDI1OC4yNzggMTQ1LjUyMiAyNjEuNzkxQzE0NS4yNTEgMjY1LjI4NiAxNDQuNDggMjY4LjcyNCAxNDMuMjMzIDI3MkMxMzAuNzQ5IDI1My4wMyAxMjAuNTYgMjQ3LjU5NiAxMTEuNjM1IDI0Mi44MzZDMTA1LjY0MSAyMzkuNjM5IDEwMC4yMTYgMjM2Ljc0NiA5NS4wNSAyMzAuMjYxQzg3LjQwMDggMjE5LjM5IDg1LjQ3MzYgMjA2Ljg5MiA5Ni4xMzQyIDE4My4yNTJDOTkuMDg1NyAxNzUuOTQ3IDEwMC45MDcgMTY3LjkzNSAxMDIuMzk2IDE2MS4zODNDMTAzLjY1OCAxNTUuODM1IDEwNC42ODEgMTUxLjMzMyAxMDUuOTUxIDE0OS4xOTJWMTQ5LjM3M0MxMDUuMDg2IDE1NC4zNTUgMTA1LjA4NiAxNTkuNDQ5IDEwNS45NTEgMTY0LjQzQzEwNi4zMzIgMTY2Ljc3NSAxMDcuMjA0IDE2OS4wMTIgMTA4LjUxMSAxNzAuOTk1QzEwOS44ODcgMTcyLjc5NCAxMTEuNzMxIDE3NC4xOCAxMTMuODQyIDE3NS4wMDFDMTE4LjM5IDE3Ni43NTIgMTIzLjE4OCAxNzcuNzY5IDEyOC4wNTYgMTc4LjAxMkMxMzAuNTI1IDE3OC40MDQgMTMzLjAyNSAxNzguNDA0IDEzNS41ODQgMTc4LjQwNEMxMzYuOTExIDE3OC4zODIgMTM4LjIzOCAxNzguNDMzIDEzOS41NiAxNzguNTU0QzE0MC45MTUgMTc4LjY3NSAxNDIuMjQgMTc4Ljg1NSAxNDMuNTY1IDE3OS4wMzZDMTQ4LjgyIDE3OS44ODcgMTUzLjk5NyAxODEuMTY2IDE1OS4wNDQgMTgyLjg2MUMxNjMuNTk4IDE4NC42MDYgMTY4LjQxMyAxODUuNTczIDE3My4yODggMTg1LjcyMUMxODMuNjQ1IDE4Ni41NDggMTkzLjg3MSAxODguNTY5IDIwMy43NjQgMTkxLjc0NEMyMDcuNjcgMTkxLjg2OSAyMTEuNTc4IDE5MS41NjYgMjE1LjQxOCAxOTAuODQxQzIxNi44MDQgMTkwLjYgMjE4LjE4OSAxOTAuMjY5IDIxOS41NzQgMTg5LjkzOEMyMjYuMzggMTg3Ljk1IDIzNC4wMjkgMTc2LjM4NiAyMjUuMTc1IDE3Ny4zNUMyMjIuNzE3IDE3Ny40NjUgMjIwLjI3IDE3Ny43NjcgMjE3Ljg1OCAxNzguMjUzQzIxNi40NzYgMTc4LjU4IDIxNS4xMDggMTc5LjA5OCAyMTMuNjU4IDE3OS42NDdDMjEyLjE2OSAxODAuMjEgMjEwLjU5MyAxODAuODA3IDIwOC44MjMgMTgxLjI2NUMyMDUuNDgxIDE4Mi4wMjQgMjAyLjAwMiAxODEuOTMgMTk4LjcwNSAxODAuOTk0QzE5NS44MjIgMTc5LjgyNCAxOTIuNzczIDE3OS4xMTIgMTg5LjY3IDE3OC44ODVDMTkxLjEyMiAxNzguMDY0IDE5Mi43MzYgMTc3LjU3MSAxOTQuMzk4IDE3Ny40NEMxOTUuNjE2IDE3Ny4zMTggMTk2LjY5NiAxNzcuMzYgMTk3LjczMiAxNzcuNDAxQzE5OC4yMzQgMTc3LjQyMSAxOTguNzI1IDE3Ny40NCAxOTkuMjE3IDE3Ny40NEMyMDIuMDI2IDE3Ny44MjYgMjA0Ljg4MiAxNzcuNzA0IDIwNy42NDkgMTc3LjA3OUMyMDkuMDcgMTc2LjY3NyAyMTAuNTA5IDE3NS45MDUgMjEyLjA1NSAxNzUuMDc1QzIxMy4yOTQgMTc0LjQxMSAyMTQuNjAxIDE3My43MSAyMTYuMDIxIDE3My4xMzRDMjE5LjE2MyAxNzEuODIgMjIyLjUyMyAxNzEuMTA1IDIyNS45MjggMTcxLjAyNkgyMjUuODY4QzIyNy4xIDE3MC45MTkgMjI4LjM0IDE3MC45MTkgMjI5LjU3MiAxNzEuMDI2QzIzMC43MTMgMTY5Ljc1NyAyMzEuNTcxIDE2OC4yNjEgMjMyLjA5IDE2Ni42MzZDMjMyLjYxIDE2NS4wMTEgMjMyLjc3OCAxNjMuMjk0IDIzMi41ODQgMTYxLjZDMjMxLjcyMSAxNjAuMjkzIDIzMC40MTcgMTU5LjM0MiAyMjguOTEgMTU4LjkxOUMyMjguMzA1IDE1OC43ODYgMjI3LjUzNSAxNTguNjM2IDIyNi42NTQgMTU4LjQ2NkMyMjIuMTg0IDE1Ny41OTkgMjE0Ljg2OCAxNTYuMTgxIDIxMS45MjUgMTUzLjQzOUMyMDkuOTA3IDE1MS40ODEgMjA4LjgyMyAxNDUuNjA5IDIxNS45MyAxNDMuOTgzQzIxOS42OTkgMTQzLjMyOSAyMjMuNTQxIDE0My4yMDcgMjI3LjM0NCAxNDMuNjIxTDIyNy40ODkgMTQzLjYzNUMyMjkuMTk0IDE0My43OTcgMjMzLjQyNiAxNDQuMTk4IDIzNC40MjEgMTQzLjM1QzIzMy45MzkgMTQzLjAyOSAyMzMuNTEgMTQyLjcwOCAyMzMuMDgyIDE0Mi4zODZDMjMyLjg2OCAxNDIuMjI2IDIzMi42NTQgMTQyLjA2NSAyMzIuNDMzIDE0MS45MDVMMjIzLjA5OCAxMzQuNzk4QzIyMi40NTQgMTM0LjM0NSAyMjEuODI5IDEzMy44ODcgMjIxLjIxNiAxMzMuNDM4QzIyMC4yNzkgMTMyLjc1MiAyMTkuMzcgMTMyLjA4NSAyMTguNDYgMTMxLjQ4NUMyMTguMTUyIDEzMS4yNjQgMjE3LjgzIDEzMS4wNjMgMjE3LjQ5NiAxMzAuODgzQzIxNy4xNjggMTMwLjcwNCAyMTYuODI1IDEzMC41NTMgMjE2LjQ3MiAxMzAuNDMxQzIxNS40NDMgMTMwLjAzNyAyMTQuNDM4IDEyOS41ODUgMjEzLjQ2MSAxMjkuMDc2QzIwOS44MTkgMTI3LjIgMjA2LjUwNCAxMjQuNzQ5IDIwMy42NDMgMTIxLjgxOEMxOTUuMDAyIDExMi45OTEgMTg3Ljc0MiAxMDIuOTA5IDE4Mi4xMTIgOTEuOTE0M0MxNzkuODEzIDg3LjQ0OTUgMTc1Ljk3MSA4My45NzE1IDE3MS4zIDgyLjEyNzFDMTczLjcyNiA4MS45ODEyIDE3Ni4xNTUgODIuMzMzNCAxNzguNDM5IDgzLjE2MjFDMTgwLjcyMyA4My45OTA3IDE4Mi44MTMgODUuMjc4MyAxODQuNTgxIDg2Ljk0NTRDMTg1LjE4NCA4Ny40NDU2IDE4NS45NTMgODguODIwNiAxODYuOTM4IDkwLjU4MjFDMTg5LjY4OSA5NS41MDI1IDE5NC4xMjYgMTAzLjQzOSAyMDEuMzU1IDEwMy43NDlDMjAyLjYwMSAxMDMuNjQ5IDIwMy44MjggMTAzLjM3NSAyMDQuOTk5IDEwMi45MzZDMjAxLjQxIDk5LjUzODggMTk4Ljk4IDk1LjQ0NzUgMTk2LjcwNiA5MS42MTc1QzE5My4yNTYgODUuODA2NCAxOTAuMTYyIDgwLjU5NyAxODMuOTE4IDc5LjMyNjRDMTgyLjM1MiA3OC43NTQzIDE4MC45NjcgNzguMTgyMSAxNzkuMzQxIDc3LjM2OUwxNzUuMTI1IDc1LjI5MTFMMTY2LjY5MyA3MS4xNjU0QzE2MS4xMTggNjguNDk5MSAxNTUuMzg2IDY2LjE3NiAxNDkuNTI3IDY0LjIwODlDMTQzLjcyNiA2Mi4zMDE1IDEzNy43NDEgNjEuMDA5NSAxMzEuNjY5IDYwLjM1NDJDMTMwLjIzMSA2MC4xNjQyIDEyOC43ODMgNjAuMDUzNSAxMjcuMzMzIDYwLjAyMjlDMTI2LjE2MyA2MC4wMTk0IDEyNS4wMDkgNjAuMjg3NSAxMjMuOTYgNjAuODA1OUMxMjMuMzUgNjEuMDY3NCAxMjIuNjYzIDYxLjQzNCAxMjEuOTU2IDYxLjgxMUMxMjEuMTk3IDYyLjIxNTYgMTIwLjQxNiA2Mi42MzIzIDExOS42ODQgNjIuOTQ0MUMxMTguMjY4IDYzLjU0NjMgMTE2Ljg4MyA2NC4xNzg4IDExNS40OTggNjQuODcxNEMxMTAuMDEgNjcuNTMwNCAxMDQuODI5IDcwLjc4MjEgMTAwLjA0OSA3NC41Njg0Qzk2LjQ1ODYgNzcuMTAyMSA5My4zMDUyIDgwLjIwNDQgOTAuNzEzNCA4My43NTMzQzk1LjIzMjEgODMuNDQ3NSA5OS43NjY3IDg0LjA0MTEgMTA0LjA1NCA4NS40OTk5Qzk4LjYyNTkgODUuMzk5OCA5My4yMTY3IDg2LjE3MjUgODguMDMzNCA4Ny43ODg2Qzg1LjQ5MTMgODguNTIyMyA4My4wMDU0IDg5LjQzODEgODAuNTk1IDkwLjUyOTFDNzguMTg1NiA5MS41NjI0IDc1Ljg1OTggOTIuNzgwNiA3My42Mzg1IDk0LjE3MjlDNzEuNDQ5NSA5NS40MzIzIDY5LjQyNjIgOTYuOTU5OSA2Ny42MTU2IDk4LjcyMDNDNjYuODg0NCA5OS40NjA5IDY2LjMxMDcgMTAwLjM0MiA2NS45MjkxIDEwMS4zMUM2NS40MTc4IDEwMi40NTMgNjQuOTY2NiAxMDMuNjg2IDY0LjUxNTMgMTA0LjkyTDY0LjUxMzggMTA0LjkyNEM2Mi43NjM0IDEwOS45ODEgNjEuMzY0NyAxMTUuMTUzIDYwLjMyNzkgMTIwLjQwM0M1OC4xNjU2IDEzMC44ODcgNTcuMzU2IDE0MS42MDUgNTcuOTE4NyAxNTIuMjk0QzU4LjM2NzQgMTYwLjkxNSA2MC42MTM4IDE2OS4zNDcgNjQuNTEzOCAxNzcuMDQ5QzY4LjIxNzkgMTcyLjE3IDcxLjgzMTYgMTY3LjIwMSA3NS4zMjQ5IDE2Mi4yMDJDNzkuODI5OCAxNTUuNzIzIDg0LjAwMTIgMTQ5LjAxOSA4Ny44MjI2IDE0Mi4xMTVDODkuODA3IDEzOC41NTYgOTEuNTY5IDEzNC44MzIgOTMuMzQ5OCAxMzEuMDY4Qzk0Ljk3NDIgMTI3LjYzNSA5Ni42MTQyIDEyNC4xNjkgOTguNDUyOSAxMjAuNzY0QzEwMC4yOTkgMTE3LjA5NCAxMDIuNDg3IDExMy42MDUgMTA0Ljk4OCAxMTAuMzQ0QzEwNi4yNTcgMTA4LjY2OCAxMDcuNzM1IDEwNy4xNjEgMTA5LjM4NSAxMDUuODU3QzExMS4wMiAxMDQuNDk2IDExMy4wNDMgMTAzLjY4NCAxMTUuMTY3IDEwMy41MzlDMTA4LjQyMSAxMDkuNTkyIDEwMy4xODEgMTI1Ljg1NCA5Ny45NDEgMTQ0LjA3M0M5My43MjUgMTU4Ljg1OSA3OS4zOTA1IDE5Mi41NTggNzAuMzU2MSAxOTMuNDAxQzY2Ljg2MjggMTkzLjU4MSA2NS41Njc5IDE5MS45MjUgNjMuMTg4OCAxODguNDkyTDYxLjIwMTEgMTg1Ljc4MkM1Ny43MzI3IDE4MC45NDkgNTUuMDg3MiAxNzUuNTc3IDUzLjM3MTQgMTY5Ljg4MUM1MS43NDcxIDE2NC4zMDYgNTAuNzM3MyAxNTguNTcgNTAuMzU5OSAxNTIuNzc2QzUwLjA4MjkgMTQ3LjA4MiA1MC4yMTM3IDE0MS4zNzYgNTAuNzUxNCAxMzUuNzAxQzUxLjQxOTggMTMwLjA3NSA1Mi40MjU0IDEyNC40OTMgNTMuNzYyOSAxMTguOTg3QzU1LjAxNzUgMTEzLjQ1OSA1Ni42NTc3IDEwOC4wMjUgNTguNjcxNiAxMDIuNzI1QzU5LjIxMzcgMTAxLjM3IDU5Ljc1NTYgMTAwLjA0NSA2MC40MTgxIDk4LjY5MDFDNjAuNzgxOCA5Ny45NDEyIDYxLjE5NDQgOTcuMjE2OCA2MS42NTI5IDk2LjUyMTlDNjIuMTc4NSA5NS44MTEgNjIuNzUyIDk1LjEzNyA2My4zNjk1IDk0LjUwNDJDNjUuNTU2OCA5Mi40MjQ5IDY4LjAzMTQgOTAuNjcwNCA3MC43MTc1IDg5LjI5NDRDNzQuNjcxOCA4Ny4yMjY2IDc4Ljg4NSA4NS42OTcyIDgzLjI0NTEgODQuNzQ3Qzg0LjYwOTYgODEuNjc0NSA4Ni40ODMgNzguODU0MyA4OC43ODYyIDc2LjQwNTNDOTEuMDkwOCA3NC4wMDYgOTMuNTg4NyA3MS44MDAyIDk2LjI1NDYgNjkuODEwMkMxMDEuMzY3IDY1Ljc3MzUgMTA2LjkgNjIuMzAwMyAxMTIuNzU3IDU5LjQ1MDdDMTEzLjY4NiA1OC45ODY1IDExNC44MTcgNTguNDgxOCAxMTUuODE2IDU4LjAzNjFDMTE2LjMwNyA1Ny44MTY5IDExNi43NjcgNTcuNjExOSAxMTcuMTU0IDU3LjQzMzFDMTE3LjY3NCA1Ny4xOTMzIDExOC4yMjkgNTYuOTA2MyAxMTguODMgNTYuNTk1NkMxMTkuNTg3IDU2LjIwNDEgMTIwLjQxNyA1NS43NzQ5IDEyMS4zNCA1NS4zNTUyQzEyMy4xNDggNTQuNDkzNSAxMjUuMTIgNTQuMDMxMyAxMjcuMTIyIDU0QzEyOC42OTYgNTQgMTI5Ljg1NSA1NC4xMjA5IDEzMS4wNDUgNTQuMjQ1QzEzMS40MjYgNTQuMjg0OCAxMzEuODEgNTQuMzI0OCAxMzIuMjEyIDU0LjM2MTRDMTM4LjY4MiA1NS4wNjkzIDE0NS4wNjEgNTYuNDUyMSAxNTEuMjQ0IDU4LjQ4NzFDMTU3LjM0MiA2MC41MzMxIDE2My4zMDYgNjIuOTU3IDE2OS4xMDIgNjUuNzQ0N0wxNzcuNjg1IDY5LjkwMDVMMTgxLjkzMSA3Mi4wMDg2QzE4Mi45NjggNzIuNTY5IDE4NC4yOTEgNzMuMDc3MyAxODUuNzMyIDczLjYzMDRDMTg1LjgzOSA3My42NzE4IDE4NS45NDggNzMuNzEzMyAxODYuMDU3IDczLjc1NTJDMTg3LjYyMiA3NC4zNTc1IDE4OS4wMzggNzQuOTU5OCAxOTAuNjM0IDc1Ljc3MjlDMTkxLjQ4MSA3Ni4yMDY5IDE5Mi4yOTYgNzYuNyAxOTMuMDczIDc3LjI0ODVDMTkzLjgxNCA3Ny44NDc5IDE5NC41MTggNzguNDkxNiAxOTUuMTgxIDc5LjE3NTlDMTk3LjUwMSA4MS42NzMyIDE5OS41MjIgODQuNDMyMiAyMDEuMjA0IDg3LjM5NzFDMjAxLjQyMSA4Ny43NzQgMjAxLjYzNyA4OC4xNDk3IDIwMS44NTEgODguNTIzNkMyMDQuNzg5IDkzLjY0ODUgMjA3LjUzOCA5OC40NDMyIDIxMS44MDUgMTAxLjI1TDIxNC44MTYgMTAzLjIzN0MyMTQuNzcgMTAzLjQwMyAyMTQuNzA5IDEwMy41NjQgMjE0LjYzNSAxMDMuNzE5TDIxNC4wMDMgMTA0Ljg2NEwyMTAuOTkxIDEwNi4zOTlDMjEwLjY5NCAxMDYuNTMyIDIxMC40MjYgMTA2LjcyMyAyMTAuMjA0IDEwNi45NjFDMjA5Ljk4MSAxMDcuMTk5IDIwOS44MDkgMTA3LjQ3OSAyMDkuNjk2IDEwNy43ODVDMjA5LjU4NSAxMDguMDczIDIwOS41MjMgMTA4LjM3OSAyMDkuNTE2IDEwOC42ODhWMTEwLjYxNkMyMDkuNTMxIDExMS42MzMgMjA5LjM5OSAxMTIuNjQ3IDIwOS4xMjQgMTEzLjYyN0MyMDguOTk5IDExNC4wMTUgMjA4Ljg0OCAxMTQuMzYxIDIwOC43MTQgMTE0LjY2OEMyMDguNTI2IDExNS4xIDIwOC4zNzEgMTE1LjQ1MyAyMDguMzcxIDExNS43MzVDMjA4LjI3NiAxMTYuMDQ5IDIwOC4yNzYgMTE2LjM4NSAyMDguMzcxIDExNi42OTlDMjEwLjc2NCAxMTkuMTI5IDIxMy41MjkgMTIxLjE2MiAyMTYuNTYzIDEyMi43MjJMMjE4Ljk3MiAxMjMuODM2QzIxOS41MzkgMTI0LjA0IDIyMC4wOTMgMTI0LjI4MSAyMjAuNjI4IDEyNC41NTlMMjIyLjE2NCAxMjUuNDkyQzIyMy41MTEgMTI2LjM0NyAyMjQuNjE1IDEyNy4xODcgMjI1LjcxMyAxMjguMDIzQzIyNi4xNjIgMTI4LjM2NCAyMjYuNjEgMTI4LjcwNSAyMjcuMDczIDEyOS4wNDZMMjM2LjQzOCAxMzYuMTgzTDIzOC42NjcgMTM3LjgzOUMyMzkuNjExIDEzOC40NTUgMjQwLjUxNiAxMzkuMTI5IDI0MS4zNzcgMTM5Ljg1N1pNMTY3LjM4NCAxMTIuMDYxQzE2Ny42ODUgMTE1Ljc5NSAxNjMuMjI4IDExOC43MTYgMTU3Ljc3OCAxMTkuMzE5QzE1MC45MTEgMTIwLjAxMSAxNDcuMjM3IDExNi4wMzYgMTQ4LjIwMSAxMTEuNDI5QzE1MC4wMDggMTAzLjcxOSAxNDYuMDMzIDEwNi4zMzkgMTQzLjM4MyAxMDkuMzUxQzE0My4zMzkgMTA5LjQyNiAxNDMuMjY5IDEwOS40ODMgMTQzLjE4NyAxMDkuNTExQzE0My4xMDQgMTA5LjUzOSAxNDMuMDE0IDEwOS41MzYgMTQyLjkzNCAxMDkuNTAzQzE0Mi44NTMgMTA5LjQ3IDE0Mi43ODcgMTA5LjQwOSAxNDIuNzQ4IDEwOS4zMzFDMTQyLjcwOCAxMDkuMjU0IDE0Mi42OTkgMTA5LjE2NCAxNDIuNzIgMTA5LjA4QzE0My44MzQgMTAxLjEyOSAxNDguNTAyIDEwMC43OTggMTUwLjU4IDEwMC43OThDMTU2Ljg3MyAxMDEuMjMxIDE2My4xMDggMTAyLjI5MSAxNjkuMTkxIDEwMy45NkMxNjkuMzU5IDEwMy45OTcgMTY5LjUxMyAxMDQuMDgxIDE2OS42MzUgMTA0LjIwMkMxNjkuNzU3IDEwNC4zMjMgMTY5Ljg0MSAxMDQuNDc2IDE2OS44NzkgMTA0LjY0M0MxNjkuOTE3IDEwNC44MTEgMTY5LjkwNyAxMDQuOTg2IDE2OS44NDkgMTA1LjE0N0MxNjkuNzkxIDEwNS4zMDkgMTY5LjY4OCAxMDUuNDUxIDE2OS41NTIgMTA1LjU1NkMxNjguNjQ1IDEwNi4zNSAxNjcuOTY2IDEwNy4zNzEgMTY3LjU4NSAxMDguNTE0QzE2Ny4yMDQgMTA5LjY1OCAxNjcuMTM0IDExMC44ODIgMTY3LjM4NCAxMTIuMDYxWiIgZmlsbD0iIzAwMjUyMiIvPgogICAgPC9zdmc+\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyBpZD0ibG9nby1yaXBpby1wb3J0YWwiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIwIDAgMzIgMzIiPgogIDxwYXRoIGlkPSJjb250YWluZXIiIGQ9Ik0zMiwxNkExNiwxNiwwLDEsMSwxNiwwLDE2LDE2LDAsMCwxLDMyLDE2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDApIiBmaWxsPSIjNjRmZmI1Ii8+CiAgPHBhdGggaWQ9ImlzbyIgZD0iTTc0LjA4LDYwLjA1NmwtMTIuMTY4LDQuOVY1My4zNjVsMTIuMTg4LTQuOVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01Mi4wMDYgLTQwLjcxMSkiIGZpbGw9IiMyNjI2M2YiLz4KPC9zdmc+Cg==\"","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjE4cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyMTggMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCA1MS4yICg1NzUxOSkgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+YnVpbGQtaWNvbnMvU3RhYmxlIENvcHkgMzwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iMCUiIHkxPSI1MC43MDU1MTYzJSIgeDI9IjEwMCUiIHkyPSI1MC43MDU1MTYzJSIgaWQ9ImxpbmVhckdyYWRpZW50LTEiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjRkY1NTAwIiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNGRjU1MDAiIG9mZnNldD0iNDAuOTg3NzIzMiUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0ZGMjAwMCIgb2Zmc2V0PSI1OC4xOTgxMjE1JSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjRkYyMDAwIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iMi4xNDg0Mzc1JSIgeTE9IjUwLjcwNTUxNjMlIiB4Mj0iMTAwJSIgeTI9IjUwLjcwNTUxNjMlIiBpZD0ibGluZWFyR3JhZGllbnQtMiI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNGRjQ1MkEiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0ZGMjAwMCIgb2Zmc2V0PSIxMDAlIj48L3N0b3A+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgICA8cGF0aCBkPSJNMTcwLjI3MjEwOSwyNS4zMzU5Mzg3IEwxNDcuOTY4MTA5LDAuMDAwMTA4OTM2MTcgTDEwOC44MDAxMDksMC4wMDAxMDg5MzYxNyBMNjkuNjMyMTA4OCwwLjAwMDEwODkzNjE3IEw0Ny4zMjgxMDg4LDI1LjMzNTkzODcgQzQ3LjMyODEwODgsMjUuMzM1OTM4NyAyNy43NDQxMDg4LDE5Ljg4OTEzMDIgMTguNDk2MTA4OCwyOS4xNDg3MDQ3IEMxOC40OTYxMDg4LDI5LjE0ODcwNDcgNDQuNjA4MTA4OCwyNi43ODg2MDI2IDUzLjU4NDEwODgsNDEuNDA0MDIzOCBDNTMuNTg0MTA4OCw0MS40MDQwMjM4IDc3Ljc5MjEwODgsNDYuMDMzODExMSA4MS4wNTYxMDg4LDQ2LjAzMzgxMTEgQzg0LjMyMDEwODgsNDYuMDMzODExMSA5MS4zOTIxMDg4LDQzLjMxMDQwNjggOTcuOTIwMTA4OCw0MS4xMzE2ODM0IEMxMDQuNDQ4MTA5LDM4Ljk1Mjk2IDEwOC44MDAxMDksMzguOTM3MTY0MyAxMDguODAwMTA5LDM4LjkzNzE2NDMgQzEwOC44MDAxMDksMzguOTM3MTY0MyAxMTMuMTUyMTA5LDM4Ljk1Mjk2IDExOS42ODAxMDksNDEuMTMxNjgzNCBDMTI2LjIwODEwOSw0My4zMTA0MDY4IDEzMy4yODAxMDksNDYuMDMzODExMSAxMzYuNTQ0MTA5LDQ2LjAzMzgxMTEgQzEzOS44MDgxMDksNDYuMDMzODExMSAxNjQuMDE2MTA5LDQxLjQwNDAyMzggMTY0LjAxNjEwOSw0MS40MDQwMjM4IEMxNzIuOTkyMTA5LDI2Ljc4ODYwMjYgMTk5LjEwNDEwOSwyOS4xNDg3MDQ3IDE5OS4xMDQxMDksMjkuMTQ4NzA0NyBDMTg5Ljg1NjEwOSwxOS44ODkxMzAyIDE3MC4yNzIxMDksMjUuMzM1OTM4NyAxNzAuMjcyMTA5LDI1LjMzNTkzODciIGlkPSJwYXRoLTMiPjwvcGF0aD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJzdGFydGluZy1jb2xsZWN0aW9uIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iQnVpbGQtSWNvbnMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC03MC4wMDAwMDAsIC0zNTAuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJidWlsZC1pY29ucy9TdGFibGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwLjAwMDAwMCwgMzUwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPGcgaWQ9IkxvZ28iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIwLjExNDI4NiwgMC4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjA5Ljk4NDEwOSw2MS4yODQ4NzQ5IEwyMTUuOTY4MTA5LDQ2LjU3ODQ5MTkgQzIxNS45NjgxMDksNDYuNTc4NDkxOSAyMDguMzUyMTA5LDM4LjQwODI3OTEgMTk5LjEwNDEwOSwyOS4xNDg3MDQ3IEMxODkuODU2MTA5LDE5Ljg4OTEzMDIgMTcwLjI3MjEwOSwyNS4zMzU5Mzg3IDE3MC4yNzIxMDksMjUuMzM1OTM4NyBMMTQ3Ljk2ODEwOSwwLjAwMDEwODkzNjE3IEwxMDguODAwMTA5LDAuMDAwMTA4OTM2MTcgTDY5LjYzMjEwODgsMC4wMDAxMDg5MzYxNyBMNDcuMzI4MTA4OCwyNS4zMzU5Mzg3IEM0Ny4zMjgxMDg4LDI1LjMzNTkzODcgMjcuNzQ0MTA4OCwxOS44ODkxMzAyIDE4LjQ5NjEwODgsMjkuMTQ4NzA0NyBDOS4yNDgxMDg4LDM4LjQwODI3OTEgMS42MzIxMDg4LDQ2LjU3ODQ5MTkgMS42MzIxMDg4LDQ2LjU3ODQ5MTkgTDcuNjE2MTA4OCw2MS4yODQ4NzQ5IEwwLjAwMDEwODgsODMuMDcyMTA4OSBDMC4wMDAxMDg4LDgzLjA3MjEwODkgMjIuMzk5MzA4OCwxNjguMDE3ODExIDI1LjAyNDEwODgsMTc4LjM5MTI1OCBDMzAuMTkyMTA4OCwxOTguODE2NzkgMzMuNzI4MTA4OCwyMDYuNzE0NjYyIDQ4LjQxNjEwODgsMjE3LjA2MzU5OCBDNjMuMTA0MTA4OCwyMjcuNDEyNTM0IDg5Ljc2MDEwODgsMjQ1LjM4NzAwMyA5NC4xMTIxMDg4LDI0OC4xMTA0MDcgQzk4LjQ2NDEwODgsMjUwLjgzMzgxMSAxMDMuOTA0MTA5LDI1NS40NzI4NTggMTA4LjgwMDEwOSwyNTUuNDcyODU4IEMxMTMuNjk2MTA5LDI1NS40NzI4NTggMTE5LjEzNjEwOSwyNTAuODMzODExIDEyMy40ODgxMDksMjQ4LjExMDQwNyBDMTI3Ljg0MDEwOSwyNDUuMzg3MDAzIDE1NC40OTYxMDksMjI3LjQxMjUzNCAxNjkuMTg0MTA5LDIxNy4wNjM1OTggQzE4My44NzIxMDksMjA2LjcxNDY2MiAxODcuNDA4MTA5LDE5OC44MTY3OSAxOTIuNTc2MTA5LDE3OC4zOTEyNTggQzE5NS4yMDAzNjUsMTY4LjAxNzgxMSAyMTcuNjAwMTA5LDgzLjA3MjEwODkgMjE3LjYwMDEwOSw4My4wNzIxMDg5IEwyMDkuOTg0MTA5LDYxLjI4NDg3NDkgWiIgaWQ9IkhlYWQiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTY0LjAxNjEwOSw0MS40MDQwMjM4IEMxNjQuMDE2MTA5LDQxLjQwNDAyMzggMTkyLjcwNDQ5Myw3Ni4xMjc0MjgxIDE5Mi43MDQ0OTMsODMuNTQ4NzA0NyBDMTkyLjcwNDQ5Myw5MC45Njk5ODEzIDE4OS4wOTU1OTcsOTIuOTI4NjUzNiAxODUuNDY3MTE3LDk2Ljc4NjYyODEgQzE4MS44Mzg2MzcsMTAwLjY0NDYwMyAxNjUuOTkxMzczLDExNy40OTM3NiAxNjMuOTU2MjY5LDExOS42NTcyMzIgQzE2MS45MjExNjUsMTIxLjgyMTI0OSAxNTcuNjg0NDkzLDEyNS4xMDE4NjIgMTYwLjE3NjU1NywxMzEuMDA2NzQ3IEMxNjIuNjY4NjIxLDEzNi45MTE2MzIgMTY2LjM0NDk3MywxNDQuNDI1NTA1IDE2Mi4yNTY4MTMsMTUyLjA0NjY3OSBDMTU4LjE2ODEwOSwxNTkuNjY3ODU0IDE1MS4xNjQxMDksMTY0Ljc1NDYyOCAxNDYuNjc2MTA5LDE2My45MTM2NDEgQzE0Mi4xODgxMDksMTYzLjA3MjEwOSAxMzEuNjQ4MTA5LDE1Ny41NTcyMTUgMTI3Ljc3MjEwOSwxNTUuMDM4MDY2IEMxMjMuODk2MTA5LDE1Mi41MTg5MTcgMTExLjYxMTUwMSwxNDIuMzc0NzgxIDExMS42MTE1MDEsMTM4LjQ5MzM4NiBDMTExLjYxMTUwMSwxMzQuNjEyNTM0IDEyNC4zMTAwOTMsMTI3LjY0Mzg4OCAxMjYuNjU1ODIxLDEyNi4wNjA1IEMxMjkuMDAyNjM3LDEyNC40Nzc2NTggMTM5LjcwMzExNywxMTguMzQ5NDU0IDEzOS45MjIzNDksMTE1Ljk0NDE0MyBDMTQwLjE0MTAzNywxMTMuNTM4Mjg4IDE0MC4wNTc4MDUsMTEyLjgzMjkyNiAxMzYuODk5ODg1LDEwNi44ODkzNjkgQzEzMy43NDE5NjUsMTAwLjk0NTI2NiAxMjguMDU0OTg5LDkzLjAxMzYyMzggMTI5LjAwMTU0OSw4Ny43MzYyMTExIEMxMjkuOTQ4MTA5LDgyLjQ1OTM0MyAxMzkuMTE5OTQ5LDc5LjcxNTI0MDkgMTQ1LjY2NTM1Nyw3Ny4yNDAyMTExIEMxNTIuMjA5Njc3LDc0Ljc2NTcyNiAxNjQuODExNDM3LDcwLjA5MTgxOTYgMTY2LjM4NTIyOSw2OS4zNjUyMTUzIEMxNjcuOTYwMTA5LDY4LjYzODA2NjQgMTY3LjU1MzE5Nyw2Ny45NDU3NzcgMTYyLjc4Mzk0OSw2Ny40OTMxNDcyIEMxNTguMDE1Nzg5LDY3LjA0MDUxNzQgMTQ0LjQ4MzI0NSw2NS4yNDE5ODEzIDEzOC4zODIyODUsNjYuOTQ0NjUzNiBDMTMyLjI4MTMyNSw2OC42NDczMjYgMTIxLjg1ODI4NSw3MS4yMzc4MjgxIDEyMS4wMTM5OTcsNzIuNjExNTEzMiBDMTIwLjE2OTcwOSw3My45ODUxOTgzIDExOS40MjQ5NzMsNzQuMDMxNDk2MiAxMjAuMjkyMTA5LDc4Ljc3MDIxOTYgQzEyMS4xNTg3MDEsODMuNTA4OTQzIDEyNS42MjI3NjUsMTA2LjI0NzE5IDEyNi4wNTU3ODksMTEwLjI4NTk5OCBDMTI2LjQ4OTM1NywxMTQuMzI0ODA3IDEyNy4zMzY5MDksMTE2Ljk5NDgzMiAxMjIuOTg3NjI5LDExNy45OTA1MDkgQzExOC42Mzc4MDUsMTE4Ljk4NjE4NiAxMTEuMzE2MTA5LDEyMC43MTUwMDMgMTA4LjgwMDEwOSwxMjAuNzE1MDAzIEMxMDYuMjg0MTA5LDEyMC43MTUwMDMgOTguOTYxODY4OCwxMTguOTg2MTg2IDk0LjYxMjU4ODgsMTE3Ljk5MDUwOSBDOTAuMjYyNzY0OCwxMTYuOTk0ODMyIDkxLjExMDMxNjgsMTE0LjMyNDgwNyA5MS41NDM4ODQ4LDExMC4yODU5OTggQzkxLjk3NzQ1MjgsMTA2LjI0NzE5IDk2LjQ0MDk3MjgsODMuNTA4OTQzIDk3LjMwODEwODgsNzguNzcwMjE5NiBDOTguMTc0NzAwOCw3NC4wMzE0OTYyIDk3LjQyOTk2NDgsNzMuOTg1MTk4MyA5Ni41ODYyMjA4LDcyLjYxMTUxMzIgQzk1Ljc0MTkzMjgsNzEuMjM3ODI4MSA4NS4zMTgzNDg4LDY4LjY0NzMyNiA3OS4yMTczODg4LDY2Ljk0NDY1MzYgQzczLjExNjQyODgsNjUuMjQxOTgxMyA1OS41ODQ0Mjg4LDY3LjA0MDUxNzQgNTQuODE1NzI0OCw2Ny40OTMxNDcyIEM1MC4wNDcwMjA4LDY3Ljk0NTc3NyA0OS42NDAxMDg4LDY4LjYzODA2NjQgNTEuMjE0NDQ0OCw2OS4zNjUyMTUzIEM1Mi43ODg3ODA4LDcwLjA5MTgxOTYgNjUuMzkwNTQwOCw3NC43NjU3MjYgNzEuOTM0ODYwOCw3Ny4yNDAyMTExIEM3OC40Nzk3MjQ4LDc5LjcxNTI0MDkgODcuNjUyMTA4OCw4Mi40NTkzNDMgODguNTk4NjY4OCw4Ny43MzYyMTExIEM4OS41NDUyMjg4LDkzLjAxMzYyMzggODMuODU3NzA4OCwxMDAuOTQ1MjY2IDgwLjcwMDMzMjgsMTA2Ljg4OTM2OSBDNzcuNTQyNDEyOCwxMTIuODMyOTI2IDc3LjQ1ODYzNjgsMTEzLjUzODI4OCA3Ny42Nzc4Njg4LDExNS45NDQxNDMgQzc3Ljg5NjU1NjgsMTE4LjM0OTQ1NCA4OC41OTc1ODA4LDEyNC40Nzc2NTggOTAuOTQzODUyOCwxMjYuMDYwNSBDOTMuMjkwMTI0OCwxMjcuNjQzODg4IDEwNS45ODgxNzMsMTM0LjYxMjUzNCAxMDUuOTg4MTczLDEzOC40OTMzODYgQzEwNS45ODgxNzMsMTQyLjM3NDc4MSA5My43MDQxMDg4LDE1Mi41MTg5MTcgODkuODI4MTA4OCwxNTUuMDM4MDY2IEM4NS45NTIxMDg4LDE1Ny41NTcyMTUgNzUuNDEyMTA4OCwxNjMuMDcyMTA5IDcwLjkyNDEwODgsMTYzLjkxMzY0MSBDNjYuNDM2MTA4OCwxNjQuNzU0NjI4IDU5LjQzMjEwODgsMTU5LjY2Nzg1NCA1NS4zNDM0MDQ4LDE1Mi4wNDY2NzkgQzUxLjI1NTI0NDgsMTQ0LjQyNTUwNSA1NC45MzE1OTY4LDEzNi45MTE2MzIgNTcuNDIzMTE2OCwxMzEuMDA2NzQ3IEM1OS45MTUxODA4LDEyNS4xMDE4NjIgNTUuNjc5MDUyOCwxMjEuODIxMjQ5IDUzLjY0MzQwNDgsMTE5LjY1NzIzMiBDNTEuNjA4ODQ0OCwxMTcuNDkzNzYgMzUuNzYxMDM2OCwxMDAuNjQ0NjAzIDMyLjEzMjU1NjgsOTYuNzg2NjI4MSBDMjguNTA0MDc2OCw5Mi45Mjg2NTM2IDI0Ljg5NTcyNDgsOTAuOTY5OTgxMyAyNC44OTU3MjQ4LDgzLjU0ODcwNDcgQzI0Ljg5NTcyNDgsNzYuMTI3NDI4MSA1My41ODQxMDg4LDQxLjQwNDAyMzggNTMuNTg0MTA4OCw0MS40MDQwMjM4IEM1My41ODQxMDg4LDQxLjQwNDAyMzggNzcuNzkyMTA4OCw0Ni4wMzM4MTExIDgxLjA1NjEwODgsNDYuMDMzODExMSBDODQuMzIwMTA4OCw0Ni4wMzM4MTExIDkxLjM5MjEwODgsNDMuMzEwNDA2OCA5Ny45MjAxMDg4LDQxLjEzMTY4MzQgQzEwNC40NDgxMDksMzguOTUyOTYgMTA4LjgwMDEwOSwzOC45MzcxNjQzIDEwOC44MDAxMDksMzguOTM3MTY0MyBDMTA4LjgwMDEwOSwzOC45MzcxNjQzIDExMy4xNTIxMDksMzguOTUyOTYgMTE5LjY4MDEwOSw0MS4xMzE2ODM0IEMxMjYuMjA4MTA5LDQzLjMxMDQwNjggMTMzLjI4MDEwOSw0Ni4wMzM4MTExIDEzNi41NDQxMDksNDYuMDMzODExMSBDMTM5LjgwODEwOSw0Ni4wMzM4MTExIDE2NC4wMTYxMDksNDEuNDA0MDIzOCAxNjQuMDE2MTA5LDQxLjQwNDAyMzggWiBNMTQyLjUwOTUwNCwxNzQuMjI3OTM1IEMxNDQuMjg1MTIsMTc1LjM0MTI2MyAxNDMuMjAyMDE2LDE3Ny40Mzk5MTggMTQxLjU4NDcwNCwxNzguNTg0ODM3IEMxMzkuOTY2ODQ4LDE3OS43Mjk3NTcgMTE4LjIyODA2NCwxOTYuNTg0MzYxIDExNi4xMTg0MzIsMTk4LjQ0NzE2OSBDMTE0LjAwODI1NiwyMDAuMzEwNTIzIDExMC45MDgsMjAzLjM4NzQyNSAxMDguOCwyMDMuMzg3NDI1IEMxMDYuNjkyLDIwMy4zODc0MjUgMTAzLjU5MTIsMjAwLjMxMDUyMyAxMDEuNDgxNTY4LDE5OC40NDcxNjkgQzk5LjM3MTM5MiwxOTYuNTg0MzYxIDc3LjYzMzE1MiwxNzkuNzI5NzU3IDc2LjAxNTI5NiwxNzguNTg0ODM3IEM3NC4zOTc0NCwxNzcuNDM5OTE4IDczLjMxNDg4LDE3NS4zNDEyNjMgNzUuMDkwNDk2LDE3NC4yMjc5MzUgQzc2Ljg2NjY1NiwxNzMuMTE1MTUyIDgyLjQyMjUyOCwxNzAuMzA2MjMzIDkwLjA4OTEyLDE2Ni4zMzM4NzYgQzk3Ljc1NDYyNCwxNjIuMzYyMDYzIDEwNy4zMDg4OTYsMTU4Ljk4NTA0MiAxMDguOCwxNTguOTg1MDQyIEMxMTAuMjkxMTA0LDE1OC45ODUwNDIgMTE5Ljg0NDgzMiwxNjIuMzYyMDYzIDEyNy41MTE0MjQsMTY2LjMzMzg3NiBDMTM1LjE3NzQ3MiwxNzAuMzA2MjMzIDE0MC43MzMzNDQsMTczLjExNTE1MiAxNDIuNTA5NTA0LDE3NC4yMjc5MzUgWiIgaWQ9IkZhY2UiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8bWFzayBpZD0ibWFzay00IiBmaWxsPSJ3aGl0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3BhdGgtMyI+PC91c2U+CiAgICAgICAgICAgICAgICAgICAgPC9tYXNrPgogICAgICAgICAgICAgICAgICAgIDx1c2UgaWQ9IlRvcC1IZWFkIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTIpIiB4bGluazpocmVmPSIjcGF0aC0zIj48L3VzZT4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIwIiBoZWlnaHQ9IjMyMCIgdmlld0JveD0iMCAwIDMyMCAzMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0zMTAuMTQyIDE3OC45NDFDMzIyLjA1NyAxNTIuMzIyIDI2My4xNDkgNzcuOTUxMyAyMDYuODcyIDQ2Ljk2NzFDMTcxLjM5OSAyMi45NjQxIDEzNC40MzUgMjYuMjYxNyAxMjYuOTQ5IDM2LjgwMDhDMTEwLjUyIDU5LjkzIDE4MS4zNTEgNzkuNTI4NCAyMjguNzIxIDEwMi4zOThDMjE4LjUzOCAxMDYuODIxIDIwOC45NDMgMTE0Ljc1OCAyMDMuMyAxMjQuOTA4QzE4NS42NCAxMDUuNjI3IDE0Ni44NzggODkuMDI0NSAxMDEuMzk2IDEwMi4zOThDNzAuNzQ2NCAxMTEuNDExIDQ1LjI3NDEgMTMyLjY1OCAzNS40MjkzIDE2NC43NDlDMzMuMDM3MSAxNjMuNjg2IDMwLjM4ODYgMTYzLjA5NSAyNy42MDIxIDE2My4wOTVDMTYuOTQ2NyAxNjMuMDk1IDguMzA4NyAxNzEuNzMzIDguMzA4NyAxODIuMzg5QzguMzA4NyAxOTMuMDQ0IDE2Ljk0NjcgMjAxLjY4MiAyNy42MDIxIDIwMS42ODJDMjkuNTc3MiAyMDEuNjgyIDM1Ljc1MjYgMjAwLjM1NyAzNS43NTI2IDIwMC4zNTdMMTM0LjQzNSAyMDEuMDczQzk0Ljk3IDI2My42OCA2My43ODEyIDI3Mi44MzIgNjMuNzgxMiAyODMuNjc5QzYzLjc4MTIgMjk0LjUyNSA5My42MjM0IDI5MS41ODYgMTA0LjgyOCAyODcuNTQzQzE1OC40NjggMjY4LjE4OSAyMTYuMDggMjA3Ljg2OSAyMjUuOTY2IDE5MC41MDVDMjY3LjQ4MiAxOTUuNjg1IDMwMi4zNzIgMTk2LjI5OCAzMTAuMTQyIDE3OC45NDFaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXIpIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjI4LjcxNyAxMDIuNDAxQzIyOC43MiAxMDIuNDAzIDIyOC43MjIgMTAyLjQwNCAyMjguNzI1IDEwMi40MDVDMjMwLjkyIDEwMS41NCAyMzAuNTY1IDk4LjI5NyAyMjkuOTYyIDk1Ljc1MDVDMjI4LjU3NyA4OS44OTcyIDIwNC42NjcgNjYuMjg3MiAxODIuMjE1IDU1LjcxMjJDMTUxLjYyIDQxLjMwMjMgMTI5LjA5MSA0Mi4wNDUyIDEyNS43NjMgNDguNjg2OEMxMzEuOTk1IDYxLjQ1OTUgMTYwLjg4NiA3My40NTE1IDE5MS4wNjEgODUuOTc2MUMyMDMuOTM0IDkxLjMxOTYgMjE3LjA0MSA5Ni43NTk5IDIyOC43MjIgMTAyLjM5OUMyMjguNzIgMTAyLjQgMjI4LjcxOSAxMDIuNDAxIDIyOC43MTcgMTAyLjQwMVoiIGZpbGw9InVybCgjcGFpbnQxX2xpbmVhcikiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xODkuODkyIDIzMC45NTRDMTgzLjcwNSAyMjguNTkgMTc2LjcxNiAyMjYuNDIgMTY4Ljc3IDIyNC40NTJDMTc3LjI0MiAyMDkuMjkyIDE3OS4wMiAxODYuODQ5IDE3MS4wMTkgMTcyLjY1OUMxNTkuNzg5IDE1Mi43NDUgMTQ1LjY5MyAxNDIuMTQ2IDExMi45MzcgMTQyLjE0NkM5NC45MjA3IDE0Mi4xNDYgNDYuNDEzNiAxNDguMjE0IDQ1LjU1MjUgMTg4LjcwN0M0NS40NjIxIDE5Mi45NTYgNDUuNTUwMiAxOTYuODQ5IDQ1Ljg1NzggMjAwLjQzTDEzNC40MzUgMjAxLjA3MkMxMjIuNDk0IDIyMC4wMTYgMTExLjMxIDIzNC4wNjYgMTAxLjUxOSAyNDQuNzVDMTEzLjI3NSAyNDcuNzYyIDEyMi45NzYgMjUwLjI5MSAxMzEuODgzIDI1Mi42MTNDMTQwLjMzNCAyNTQuODE2IDE0OC4wNjkgMjU2LjgzMiAxNTYuMTY1IDI1OC44OThDMTY4LjM3OCAyNTAgMTc5Ljg2IDI0MC4yOTggMTg5Ljg5MiAyMzAuOTU0WiIgZmlsbD0idXJsKCNwYWludDJfbGluZWFyKSIvPgo8cGF0aCBkPSJNMzQuMjQ3MyAxOTYuMjY5QzM3Ljg2NTggMjI3LjAzIDU1LjM0NzYgMjM5LjA4NSA5MS4wNjk4IDI0Mi42NTJDMTI2Ljc5MiAyNDYuMjIgMTQ3LjI4MyAyNDMuODI2IDE3NC41NjMgMjQ2LjMwOEMxOTcuMzQ3IDI0OC4zODEgMjE3LjY5MSAyNTkuOTkyIDIyNS4yMzggMjU1Ljk4QzIzMi4wMyAyNTIuMzY5IDIyOC4yMyAyMzkuMzIzIDIxOS4xNDIgMjMwLjk1M0MyMDcuMzYxIDIyMC4xMDMgMTkxLjA1NiAyMTIuNTYgMTYyLjM2NiAyMDkuODgzQzE2OC4wODQgMTk0LjIyOCAxNjYuNDgyIDE3Mi4yNzkgMTU3LjYwMiAxNjAuMzM3QzE0NC43NjMgMTQzLjA3IDEyMS4wNjQgMTM1LjI2MyA5MS4wNjk5IDEzOC42NzRDNTkuNzMzIDE0Mi4yMzggMjkuNzA2MiAxNTcuNjY2IDM0LjI0NzMgMTk2LjI2OVoiIGZpbGw9InVybCgjcGFpbnQzX2xpbmVhcikiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhciIgeDE9Ijk3LjgyNzEiIHkxPSIxNTUuMzY4IiB4Mj0iMzA3LjU3NiIgeTI9IjIxNC44NDkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzg3OTdGRiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNBQUE4RkYiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDFfbGluZWFyIiB4MT0iMjcyLjI1NyIgeTE9IjE1MS4zOCIgeDI9IjEyMC45MTQiIHkyPSItMC4zMzI5MjciIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzNCMjJBMCIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM1MTU2RDgiIHN0b3Atb3BhY2l0eT0iMCIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50Ml9saW5lYXIiIHgxPSIxOTQuMTAzIiB5MT0iMjM2LjIzOSIgeDI9IjQ4LjcyMTYiIHkyPSIxNTIuNjU1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMzQjFFOEYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNkE2RkZCIiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDNfbGluZWFyIiB4MT0iMTEwLjM0OSIgeTE9IjE1My44MDMiIHgyPSIyMDguNjE2IiB5Mj0iMjc4LjY2MSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjODg5OEZGIi8+CjxzdG9wIG9mZnNldD0iMC45ODM4OTUiIHN0b3AtY29sb3I9IiM1RjQ3RjEiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCAzNiAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMTgiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl82MTU3XzEzMDQ5MykiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMS43NDkyIDYuNzVIMTQuMjQ5M1YxNC4zMjgzSDYuNzVWMjEuOTA3MkgxNC4yNDkzVjI5LjI1MDZIMjEuNzQ5MlYyMS42NzE3SDE0LjI1VjE0LjMyODlIMjEuNzQ5MlY2Ljc1Wk0yOS4yNTAyIDE0LjMyODNIMjEuNzUwMlYyMS45MDcySDI5LjI1MDJWMTQuMzI4M1oiIGZpbGw9ImJsYWNrIi8+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfNjE1N18xMzA0OTMiIHgxPSIzNiIgeTE9Ii0yLjE0NTc3ZS0wNiIgeDI9IjIuMTQ1NzdlLTA2IiB5Mj0iMzYiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agb2Zmc2V0PSIwLjM5NTgzMyIgc3RvcC1jb2xvcj0iI0E5RkZFMCIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4NkQ1RkYiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K\"","// @ts-ignore\nimport WalletConnectLogo from \"../logos/walletconnect-circle.svg\";\n// @ts-ignore\nimport PortisLogo from \"../logos/portis.svg\";\n// @ts-ignore\nimport FortmaticLogo from \"../logos/fortmatic.svg\";\n// @ts-ignore\nimport VenlyLogo from \"../logos/venly.svg\";\n// @ts-ignore\nimport TorusLogo from \"../logos/torus.svg\";\n// @ts-ignore\nimport AuthereumLogo from \"../logos/authereum.svg\";\n// @ts-ignore\nimport BurnerWalletLogo from \"../logos/burnerwallet.png\";\n// @ts-ignore\nimport MEWwallet from \"../logos/mewwallet.png\";\n// @ts-ignore\nimport DcentWalletLogo from \"../logos/dcentwallet.png\";\n// @ts-ignore\nimport BitskiLogo from \"../logos/bitski.svg\";\n// @ts-ignore\nimport OperaLogo from \"../logos/opera.svg\";\n// @ts-ignore\nimport FrameLogo from \"../logos/frame.svg\";\n// @ts-ignore\nimport BinanceChainWalletLogo from \"../logos/binancechainwallet.svg\";\n// @ts-ignore\nimport CoinbaseWalletLogo from \"../logos/coinbasewallet.svg\";\n// @ts-ignore\nimport WalletLinkLogo from \"../logos/walletlink.svg\";\n// @ts-ignore\nimport SequenceLogo from \"../logos/sequence.svg\";\n\nimport { IProviderInfo } from \"../../helpers\";\n\nexport * from \"../injected\";\n\nexport const WALLETCONNECT: IProviderInfo = {\n id: \"walletconnect\",\n name: \"WalletConnect\",\n logo: WalletConnectLogo,\n type: \"qrcode\",\n check: \"isWalletConnect\",\n package: {\n required: [[\"infuraId\", \"rpc\"]]\n }\n};\n\nexport const PORTIS: IProviderInfo = {\n id: \"portis\",\n name: \"Portis\",\n logo: PortisLogo,\n type: \"web\",\n check: \"isPortis\",\n package: {\n required: [\"id\"]\n }\n};\n\nexport const FORTMATIC: IProviderInfo = {\n id: \"fortmatic\",\n name: \"Fortmatic\",\n logo: FortmaticLogo,\n type: \"web\",\n check: \"isFortmatic\",\n package: {\n required: [\"key\"]\n }\n};\n\nexport const TORUS: IProviderInfo = {\n id: \"torus\",\n name: \"Torus\",\n logo: TorusLogo,\n type: \"web\",\n check: \"isTorus\"\n};\n\nexport const VENLY: IProviderInfo = {\n id: \"venly\",\n name: \"Venly\",\n logo: VenlyLogo,\n type: \"web\",\n check: \"isVenly\",\n package: {\n required: [\"clientId\"]\n }\n};\n\nexport const AUTHEREUM: IProviderInfo = {\n id: \"authereum\",\n name: \"Authereum\",\n logo: AuthereumLogo,\n type: \"web\",\n check: \"isAuthereum\"\n};\n\nexport const BURNERCONNECT: IProviderInfo = {\n id: \"burnerconnect\",\n name: \"Burner Connect\",\n logo: BurnerWalletLogo,\n type: \"web\",\n check: \"isBurnerProvider\"\n};\n\nexport const MEWCONNECT: IProviderInfo = {\n id: \"mewconnect\",\n name: \"MEW wallet\",\n logo: MEWwallet,\n type: \"qrcode\",\n check: \"isMEWconnect\",\n package: {\n required: [[\"infuraId\", \"rpc\"]]\n }\n};\n\nexport const DCENT: IProviderInfo = {\n id: \"dcentwallet\",\n name: \"D'CENT\",\n logo: DcentWalletLogo,\n type: \"hardware\",\n check: \"isDcentWallet\",\n package: {\n required: [\"rpcUrl\"]\n }\n};\n\nexport const BITSKI: IProviderInfo = {\n id: \"bitski\",\n name: \"Bitski\",\n logo: BitskiLogo,\n type: \"web\",\n check: \"isBitski\",\n package: {\n required: [\"clientId\", \"callbackUrl\"]\n }\n};\n\nexport const FRAME: IProviderInfo = {\n id: \"frame\",\n name: \"Frame\",\n logo: FrameLogo,\n type: \"web\",\n check: \"isFrameNative\"\n};\n\nexport const BINANCECHAINWALLET: IProviderInfo = {\n id: \"binancechainwallet\",\n name: \"Binance Chain\",\n logo: BinanceChainWalletLogo,\n type: \"injected\",\n check: \"isBinanceChainWallet\"\n};\n\n/**\n * @deprecated Use CoinbaseWalletSdk\n */\nexport const WALLETLINK: IProviderInfo = {\n id: \"walletlink\",\n name: \"Coinbase Wallet\",\n logo: CoinbaseWalletLogo,\n type: \"qrcode\",\n check: \"isWalletLink\",\n package: {\n required: [[\"appName\", \"infuraId\", \"rpc\"]]\n }\n};\n\nexport const COINBASEWALLET: IProviderInfo = {\n id: \"coinbasewallet\",\n name: \"Coinbase\",\n logo: CoinbaseWalletLogo,\n type: \"injected\",\n check: \"isWalletLink\",\n package: {\n required: [[\"appName\", \"infuraId\", \"rpc\"]]\n }\n};\n\nexport const SEQUENCE: IProviderInfo = {\n id: \"sequence\",\n name: \"Sequence\",\n logo: SequenceLogo,\n type: \"web\",\n check: \"isSequenceWeb\"\n};\n\nexport const OPERA: IProviderInfo = {\n id: \"opera\",\n name: \"Opera\",\n logo: OperaLogo,\n type: \"injected\",\n check: \"isOpera\"\n};","module.exports = \"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxyYWRpYWxHcmFkaWVudCBpZD0iYSIgY3g9IjAlIiBjeT0iNTAlIiByPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1ZDlkZjYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDZmZmYiLz48L3JhZGlhbEdyYWRpZW50PjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PHBhdGggZD0ibTI1NiAwYzE0MS4zODQ4OTYgMCAyNTYgMTE0LjYxNTEwNCAyNTYgMjU2cy0xMTQuNjE1MTA0IDI1Ni0yNTYgMjU2LTI1Ni0xMTQuNjE1MTA0LTI1Ni0yNTYgMTE0LjYxNTEwNC0yNTYgMjU2LTI1NnoiIGZpbGw9InVybCgjYSkiLz48cGF0aCBkPSJtNjQuNjkxNzU1OCAzNy43MDg4Mjk4YzUxLjUzMjgwNzItNTAuMjc4NDM5NyAxMzUuMDgzOTk0Mi01MC4yNzg0Mzk3IDE4Ni42MTY3OTkyIDBsNi4yMDIwNTcgNi4wNTEwOTA2YzIuNTc2NjQgMi41MTM5MjE4IDIuNTc2NjQgNi41ODk3OTQ4IDAgOS4xMDM3MTc3bC0yMS4yMTU5OTggMjAuNjk5NTc1OWMtMS4yODgzMjEgMS4yNTY5NjE5LTMuMzc3MSAxLjI1Njk2MTktNC42NjU0MjEgMGwtOC41MzQ3NjYtOC4zMjcwMjA1Yy0zNS45NTA1NzMtMzUuMDc1NDk2Mi05NC4yMzc5NjktMzUuMDc1NDk2Mi0xMzAuMTg4NTQ0IDBsLTkuMTQwMDI4MiA4LjkxNzU1MTljLTEuMjg4MzIxNyAxLjI1Njk2MDktMy4zNzcxMDE2IDEuMjU2OTYwOS00LjY2NTQyMDggMGwtMjEuMjE1OTk3My0yMC42OTk1NzU5Yy0yLjU3NjY0MDMtMi41MTM5MjI5LTIuNTc2NjQwMy02LjU4OTc5NTggMC05LjEwMzcxNzd6bTIzMC40OTM0ODUyIDQyLjgwODkxMTcgMTguODgyMjc5IDE4LjQyMjcyNjJjMi41NzY2MjcgMi41MTM5MTAzIDIuNTc2NjQyIDYuNTg5NzU5My4wMDAwMzIgOS4xMDM2ODYzbC04NS4xNDE0OTggODMuMDcwMzU4Yy0yLjU3NjYyMyAyLjUxMzk0MS02Ljc1NDE4MiAyLjUxMzk2OS05LjMzMDg0LjAwMDA2Ni0uMDAwMDEtLjAwMDAxLS4wMDAwMjMtLjAwMDAyMy0uMDAwMDMzLS4wMDAwMzRsLTYwLjQyODI1Ni01OC45NTc0NTFjLS42NDQxNi0uNjI4NDgxLTEuNjg4NTUtLjYyODQ4MS0yLjMzMjcxIDAtLjAwMDAwNC4wMDAwMDQtLjAwMDAwOC4wMDAwMDctLjAwMDAxMi4wMDAwMTFsLTYwLjQyNjk2ODMgNTguOTU3NDA4Yy0yLjU3NjYxNDEgMi41MTM5NDctNi43NTQxNzQ2IDIuNTEzOTktOS4zMzA4NDA4LjAwMDA5Mi0uMDAwMDE1MS0uMDAwMDE0LS4wMDAwMzA5LS4wMDAwMjktLjAwMDA0NjctLjAwMDA0NmwtODUuMTQzODY3NzQtODMuMDcxNDYzYy0yLjU3NjYzOTI4LTIuNTEzOTIxLTIuNTc2NjM5MjgtNi41ODk3OTUgMC05LjEwMzcxNjNsMTguODgyMzEyNjQtMTguNDIyNjk1NWMyLjU3NjYzOTMtMi41MTM5MjIyIDYuNzU0MTk5My0yLjUxMzkyMjIgOS4zMzA4Mzk3IDBsNjAuNDI5MTM0NyA1OC45NTgyNzU4Yy42NDQxNjA4LjYyODQ4IDEuNjg4NTQ5NS42Mjg0OCAyLjMzMjcxMDMgMCAuMDAwMDA5NS0uMDAwMDA5LjAwMDAxODItLjAwMDAxOC4wMDAwMjc3LS4wMDAwMjVsNjAuNDI2MTA2NS01OC45NTgyNTA4YzIuNTc2NTgxLTIuNTEzOTggNi43NTQxNDItMi41MTQwNzQzIDkuMzMwODQtLjAwMDIxMDMuMDAwMDM3LjAwMDAzNTQuMDAwMDcyLjAwMDA3MDkuMDAwMTA3LjAwMDEwNjNsNjAuNDI5MDU2IDU4Ljk1ODM1NDhjLjY0NDE1OS42Mjg0NzkgMS42ODg1NDkuNjI4NDc5IDIuMzMyNzA5IDBsNjAuNDI4MDc5LTU4Ljk1NzE5MjVjMi41NzY2NC0yLjUxMzkyMzEgNi43NTQxOTktMi41MTM5MjMxIDkuMzMwODM5IDB6IiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDk4IDE2MCkiLz48L2c+PC9zdmc+\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzAxLjM4IDQ1NS44NyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtNC40NSAyNjIuMTEgMTAuOTMtNC43NSAxMzUuMzEtNTguODIgMTQ2LjI0IDYzLjU3LTU0Ljk1IDExMy40My0xMzQuMzMgMTktMTAxLTEwOXoiIGZpbGw9IiMxMzM0NDQiLz48cGF0aCBkPSJtMjY2LjUxIDE5Mi4xNmExNTAuNDMgMTUwLjQzIDAgMCAwIC05NS44Mi01M3EtMS4yLS4xNy0yLjQtLjNhMTUyLjM2IDE1Mi4zNiAwIDAgMCAtMzUuMiAwcS0xLjIuMTQtMi40LjNhMTUwLjQzIDE1MC40MyAwIDAgMCAtOTUuODIgNTNsLTYuMDggMTAuMDgtMTAuMTMgMTYuNzYtNy40MSAxMi4zMWMtLjE0LjMzLS4yOC42Ny0uNDEgMWwtLjA5LjIzIDE2LjM1IDkuNjcgMTAzLjYgNjEuMjggMjAgMTEuODN2LTE0Ni40N2wtMjAgOS4wOHYtMjEuOTNsMjAtOS4wOSAyMCA5LjA5IDEwMS45IDQ2LjI4eiIgZmlsbD0iI2M0MjM3MCIvPjxwYXRoIGQ9Im0zMDEuMzggMjk4LjU2YzAgNDguNzgtMjMuMTggOTQuNDItNTkuMTIgMTIzLjg0YTE0OS40NSAxNDkuNDUgMCAwIDEgLTQ3LjY0IDI2LjM3IDEzOS41MSAxMzkuNTEgMCAwIDEgLTQzLjkzIDcuMWMtODMuMjIgMC0xNTAuNjktNzQuMDktMTUwLjY5LTE1Ny4zMWExNTAuNDkgMTUwLjQ5IDAgMCAxIDQuNDUtMzYuNDVsMTQ2LjI0IDg2LjUxIDE0Ni4yNC04Ni41MWExNTAuNDkgMTUwLjQ5IDAgMCAxIDQuNDUgMzYuNDV6IiBmaWxsPSIjMWM0ZDZiIi8+PHBhdGggZD0ibTEzMy4wOSAxMzguODkgMTcuNiA3Ljk5LTIwIDkuMDl2LTE4LjE3eiIvPjxwYXRoIGQ9Im0xMzAuNjkgMTc3LjkzIDIwLTkuMDh2MTQ2LjUzbC0yMC0xMS44M3oiLz48cGF0aCBkPSJtMTUwLjY5IDE2OC44NXYxNDYuNTNsMTQwLjEzLTgyLjg5eiIgZmlsbD0iIzFkNDI1OSIvPjxwYXRoIGQ9Im0xNTAuNjkgMHYxNjguODVsMTQwLjEzIDYzLjY0eiIgZmlsbD0iIzRiNmI5YSIvPjxwYXRoIGQ9Im0xNTAuNjkgMTY4Ljg1djE0Ni41M2wtMjAtMTEuODMtMTE5Ljk1LTcxLS4xOC0uMTEuMjctLjEyYy4xMy0uMzMuMjctLjY3LjQxLTFsMTcuNTMtMjkuMDkgMTAxLjkyLTQ2LjIzdjIyeiIgZmlsbD0iIzM0MzUzNSIvPjxwYXRoIGQ9Im0xNTAuNjkgMTY4Ljg1djE0Ni41M2wtMjAtMTEuODMtMTE5Ljk1LTcwLjk1LS4xOC0uMTEuMjctLjEyIDExOS44Ni01NC40NHoiIGZpbGw9IiMzZTU1NzgiLz48cGF0aCBkPSJtMTUwLjY5IDB2MTY4Ljg1bC0xNDAuMTMgNjMuNjR6IiBmaWxsPSIjNmRiMmQ4Ii8+PGcgZmlsbD0iIzMzNWY4YSI+PHBhdGggZD0ibTk0IDQ0My44NWMyLjA5LjkyIDQuMjEgMS43OSA2LjM0IDIuNjFxLTMuMjYtMS4yMy02LjM0LTIuNjF6Ii8+PHBhdGggZD0ibTEwMC4yOSA0NDYuNDZjMi4xNC44MiA0LjI5IDEuNTkgNi40NyAyLjMxcS0zLjI3LTEuMDctNi40Ny0yLjMxeiIvPjxwYXRoIGQ9Im0xMTIuMzMgNDUwLjQ5YzEuNjYuNDcgMy4zMy45MiA1IDEuMzNxLTIuNTEtLjYyLTUtMS4zM3oiLz48L2c+PHBhdGggZD0ibTQuNDUgMjYyLjExIDE0Ni4yNCA4Ni41MWExNjcuNDggMTY3LjQ4IDAgMCAxIC0xMC40NyAzOC4zOGMtMTEuNyAyOC4yOC0zNS4zNCA1OC4xOS04MS4wOCAzNS40NC0zNS45Ni0yOS40NC01OS4xNC03NS4xLTU5LjE0LTEyMy44OGExNTAuNDkgMTUwLjQ5IDAgMCAxIDQuNDUtMzYuNDV6IiBmaWxsPSIjNmRiMmQ4Ii8+PHBhdGggZD0ibTI0Mi4yNCA0MjIuNDEtLjM2LjI5Yy0uNzYuNjItMS41MiAxLjIzLTIuMjkgMS44M2wtLjIuMTZxLTEuMjUgMS0yLjUyIDEuOTJjLS45MS42OC0xLjgzIDEuMzYtMi43NiAycy0xLjg2IDEuMzEtMi44IDEuOTUtMS42NiAxLjEyLTIuNDkgMS42NmwtLjQ2LjNjLS44OC41Ny0xLjc2IDEuMTMtMi42NCAxLjY3YTIuNjMgMi42MyAwIDAgMSAtLjMzLjJjLS45MS41Ny0xLjgyIDEuMTItMi43NCAxLjY1cy0yIDEuMTUtMyAxLjctMiAxLjA4LTMgMS42bC0uMTEuMDZjLTEgLjUyLTIgMS0zIDEuNTJzLTIgMS0zLjA4IDEuNDktMi4wOCAxLTMuMTIgMS40MmMtMi4wOS45Mi00LjIxIDEuNzktNi4zNCAyLjYxcy00LjI5IDEuNTktNi40NyAyLjMxYy0uODcuMjktMS43NC41Ny0yLjYyLjg0cy0yIC42LTIuOTUuODhjLTEuNjYuNDctMy4zMy45Mi01IDEuMzMtLjYzLjE2LTEuMjcuMzEtMS45MS40NWwtMS4wNy4yNWMtLjg5LjItMS43OC4zOS0yLjY4LjU3cy0xLjY0LjMzLTIuNDcuNDgtMS41MS4yOC0yLjI3LjQtMS42OC4yNy0yLjUyLjM5Yy0uNDEuMDctLjgyLjEzLTEuMjQuMThsLTEuODkuMjUtMS4wNS4xM2MtLjY5LjA5LTEuMzkuMTYtMi4wOS4yMy0uODYuMDktMS43MS4xNy0yLjU3LjI0LS42Ny4wNS0xLjM0LjExLTIgLjE1cy0xLjE2LjA4LTEuNzUuMWgtLjA4Yy0uNjggMC0xLjM2LjA4LTIgLjEtLjk0IDAtMS44OS4wNy0yLjg0LjA5cy0xLjkgMC0yLjg2IDAtMS45MSAwLTIuODYgMC0xLjkgMC0yLjg0LS4wOWMtLjY5IDAtMS4zNy0uMDYtMi4wNS0uMWgtLjA4Yy0uNTkgMC0xLjE3LS4wNi0xLjc1LS4xcy0xLjM0LS4xLTItLjE1Yy0uODYtLjA3LTEuNzEtLjE1LTIuNTctLjI0LS43LS4wNy0xLjQtLjE0LTIuMDktLjIzbC0xLS4xM2MtLjYzLS4wNy0xLjI2LS4xNi0xLjg5LS4yNS0uNDIgMC0uODMtLjExLTEuMjQtLjE4cS0xLjI3LS4xOC0yLjUyLS4zOWMtLjc2LS4xMi0xLjUyLS4yNi0yLjI3LS40cy0xLjY1LS4zMS0yLjQ3LS40OC0xLjc5LS4zNy0yLjY4LS41N2wtMS4wNy0uMjVjLS42NC0uMTQtMS4yOC0uMjktMS45MS0uNDUtMS42OC0uNDEtMy4zNS0uODYtNS0xLjMzbC0zLS44OGMtLjg4LS4yNy0xLjc1LS41NS0yLjYyLS44NC0yLjE4LS43Mi00LjMzLTEuNDktNi40Ny0yLjMxcy00LjI5LTEuNjctNi4yOS0yLjU5Yy0xLS40Ni0yLjA4LS45NC0zLjEyLTEuNDJzLTIuMDYtMS0zLjA4LTEuNDktMi0xLTMtMS41MmwtLjExLS4wNmMtMS0uNTItMi0xLjA2LTMtMS42cy0yLTEuMTItMy0xLjctMS43OS0xLjA2LTIuNjktMS42NWwtLjMzLS4yYy0uODgtLjU0LTEuNzYtMS4xLTIuNjQtMS42N2wtLjQ2LS4zYy0uODMtLjU0LTEuNjctMS4xLTIuNDktMS42NnMtMS44OC0xLjI5LTIuOC0xLjk1LTEuODUtMS4zNC0yLjc2LTItMS42OS0xLjI3LTIuNTItMS45MmwtLjItLjE2Yy0uNzctLjYtMS41My0xLjIxLTIuMjktMS44M2wtLjM2LS4yOWM0NS43NCAyMi43NSA2OS4zOC03LjE2IDgxLjA4LTM1LjQ0YTE2Ny40OCAxNjcuNDggMCAwIDAgMTAuNDctMzguMzUgMTY3LjQ3IDE2Ny40NyAwIDAgMCAxMC40NiAzOC4zNmMxMS43IDI4LjI1IDM1LjM0IDU4LjE2IDgxLjA4IDM1LjQxeiIgZmlsbD0iIzUyOWJiYSIvPjxwYXRoIGQ9Im0xODQgNDUxLjgyYzEuNjgtLjQxIDMuMzUtLjg2IDUtMS4zM3EtMi40NC43Mi01IDEuMzN6IiBmaWxsPSIjMzM1ZjhhIi8+PHBhdGggZD0ibTE5NC42MiA0NDguNzdjMi4xOC0uNzIgNC4zMy0xLjQ5IDYuNDctMi4zMXEtMy4xOSAxLjI0LTYuNDcgMi4zMXoiIGZpbGw9IiMzMzVmOGEiLz48cGF0aCBkPSJtMjAxLjA5IDQ0Ni40NmMyLjEzLS44MiA0LjI1LTEuNjkgNi4zNC0yLjYxcS0zLjEzIDEuMzgtNi4zNCAyLjYxeiIgZmlsbD0iIzMzNWY4YSIvPjxwYXRoIGQ9Im0zMDEuMzggMjk4LjU2YzAgNDguNzgtMjMuMTkgOTQuNDMtNTkuMTQgMTIzLjg1LTQ1Ljc0IDIyLjc1LTY5LjM4LTcuMTYtODEuMDgtMzUuNDRhMTY3LjQ3IDE2Ny40NyAwIDAgMSAtMTAuNDctMzguMzVsMTQ2LjI0LTg2LjUxYTE1MC40OSAxNTAuNDkgMCAwIDEgNC40NSAzNi40NXoiIGZpbGw9IiM0YjZiOWEiLz48L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjYzIiB2aWV3Qm94PSIwIDAgNjMgNjMiIHdpZHRoPSI2MyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0zMS42MzkzLjk4NDM3NWgxNS4zMjc0IDE1LjMyNzV2MTUuMjk5MDI1aC0xNS4zMjc1LTE1LjMyNzQtMTUuMzI3NXYxNS4yOTg5Ljk4MSAxNC4yMjg5LjA4OTEgMTUuMjA5OWgtMTUuMzI3NDI1di0xNS4yMDk5LS4wODkxLTE0LjIyODktLjk4MS0xNS4yOTg5LTE1LjI5OTAyNWgxNS4zMjc0MjV6bTE1LjMyNzQgNDUuODA4MzI1aC0xNS4yMzgxdi0xNS4yMDk4aDMwLjU1NjZ2MTUuNzQ0OWMwIDMuOTE0LTEuNTU3MSA3LjY2OC00LjMyOTEgMTAuNDM2NXMtNi41MzE5IDQuMzI1LTEwLjQ1MzMgNC4zMjc0aC0uNTM2MXoiIGZpbGw9IiM2MTdiZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjUxNyIgdmlld0JveD0iMCAwIDU2MCA1MTciIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik01NTQuNTU1IDE2OS4yNzZMNDg1Ljg2NyAxOTUuMzY1QzQ4Mi45NzkgMTk2LjQxNSA0ODAuMTc5IDE5My42MTQgNDgxLjQwNCAxOTAuNzI1TDU1Ny45NjggNC44NjA4M0M1NTkuMTA1IDIuMDU5MyA1NTYuMzkzIC0wLjgyOTc3OCA1NTMuNTkzIDAuMjIwNzk1TDQwOC4wNzggNTEuMTczNkM0MDUuMjc4IDUyLjEzNjYgNDAzLjAwMyA1NC4zMjUzIDQwMS44NjYgNTcuMTI2OEwzMDMuMjUyIDMwNi4wMjVDMzAyLjAyNyAzMDkuMTc3IDMwNS4wODkgMzEyLjMyOSAzMDguMjM5IDMxMS4xOUwzNjkuODQgMjg4LjYwM0MzNzMuMjUzIDI4Ny4zNzcgMzc2LjQwMyAyOTEuMDU0IDM3NC41NjUgMjk0LjI5NEwyODQuMDg5IDQ0Ny45NEMyODIuMTY0IDQ1MS4yNjcgMjc3LjI2NCA0NTEuMjY3IDI3NS4zMzkgNDQ3Ljk0TDE4NC44NjMgMjk0LjIwNkMxODMuMDI1IDI5MS4wNTQgMTg2LjA4OCAyODcuMjkgMTg5LjU4OCAyODguNTE2TDI1MS4xODkgMzExLjEwM0MyNTQuMzM5IDMxMi4yNDEgMjU3LjQwMSAzMDkuMDg5IDI1Ni4xNzYgMzA1LjkzOEwxNTcuNDc1IDU3LjEyNjhDMTU2LjMzNyA1NC4zMjUzIDE1NC4xNSA1Mi4yMjQyIDE1MS4yNjIgNTEuMTczNkw1LjkyMjY3IDAuMjIwNzk1QzMuMDM1MTMgLTAuNzQyMjMgMC40MTAwOTIgMi4wNTkzIDEuNTQ3NjEgNC44NjA4M0w3OC4wMjM3IDE5MC43MjVDNzkuMTYxMiAxOTMuNTI2IDc2LjM2MTIgMTk2LjQxNSA3My41NjExIDE5NS4zNjVMNS4zMTAxNiAxNjkuMjc2QzEuODEwMTEgMTY3Ljk2MiAtMS4zMzk5MyAxNzEuNzI3IDAuNTg1MDk1IDE3NC45NjZMMjAzLjc2MyA1MTEuNUMyMDUuNzc1IDUxNC44MjYgMjA5LjM2MyA1MTYuODQgMjEzLjMwMSA1MTYuODRIMzQ2LjQ3N0MzNTAuMzI4IDUxNi44NCAzNTQuMDAzIDUxNC44MjYgMzU2LjAxNSA1MTEuNUw1NTkuNTQzIDE3NC45NjZDNTYxLjIwNSAxNzEuNzI3IDU1OC4wNTUgMTY3Ljk2MiA1NTQuNTU1IDE2OS4yNzZaIiBmaWxsPSIjNzkyN0ZGIi8+Cjwvc3ZnPgo=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU3IiBoZWlnaHQ9IjI3NyIgdmlld0JveD0iMCAwIDI1NyAyNzciIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8cmVjdCB3aWR0aD0iMTUzLjg4OSIgaGVpZ2h0PSI4Mi4wNzQxIiBmaWxsPSIjMDM2NEZGIiAvPgogICAgPHJlY3QgeD0iNzEuODEzNSIgd2lkdGg9IjgyLjA3NDEiIGhlaWdodD0iMjc3IiBmaWxsPSIjMDM2NEZGIiAvPgogICAgPHBhdGggZD0iTTIxNS40NDMgODIuMDc0MUMyMzguMTA3IDgyLjA3NDEgMjU2LjQ4IDYzLjcwMTIgMjU2LjQ4IDQxLjAzN0MyNTYuNDggMTguMzcyOSAyMzguMTA3IDAgMjE1LjQ0MyAwQzE5Mi43NzkgMCAxNzQuNDA2IDE4LjM3MjkgMTc0LjQwNiA0MS4wMzdDMTc0LjQwNiA2My43MDEyIDE5Mi43NzkgODIuMDc0MSAyMTUuNDQzIDgyLjA3NDFaIiBmaWxsPSIjMDM2NEZGIiAvPgo8L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzgycHgiIGhlaWdodD0iNDcycHgiIHZpZXdCb3g9IjAgMCAzODIgNDcyIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCA1Mi42ICg2NzQ5MSkgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+YXV0aGVyZXVtPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9ImF1dGhlcmV1bSIgZmlsbD0iI0ZGNEMyRiI+CiAgICAgICAgICAgIDxnIGlkPSJHcm91cCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTkwLjk1MDAwMCwgMjM1LjkwMDAwMCkgc2NhbGUoLTEsIDEpIHJvdGF0ZSgtMTgwLjAwMDAwMCkgdHJhbnNsYXRlKC0xOTAuOTUwMDAwLCAtMjM1LjkwMDAwMCkgdHJhbnNsYXRlKC0wLjAwMDAwMCwgMC4xMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04MCw0NTQuMSBDNTAsNDQ0LjUgMTkuOCw0MzQuOSAxMi43LDQzMi43IEwwLDQyOC42IEwwLDM0MC40IEMwLDI4Ny42IDAuNCwyNDcuOCAxLDI0MS4yIEM1LjQsMTk1IDI1LjQsMTUxLjIgNTguOCwxMTQuOCBDNjYuNCwxMDYuNSAxODcsMS40IDE5MC40LDAuMSBDMTkxLjgsLTAuNCAyOTcuOCw5MCAzMTUuMiwxMDYuNiBDMzQ1LjQsMTM1LjMgMzY5LDE3Ny4zIDM3Ny40LDIxNy41IEMzODEuOCwyMzguNyAzODIuMSwyNDYuNiAzODEuOCwzNDAuNiBMMzgxLjUsNDI5IEwzMTMuNiw0NTAuNCBDMjc2LjMsNDYyLjEgMjQ1LjYsNDcxLjYgMjQ1LjQsNDcxLjUgQzI0NS4zLDQ3MS4zIDI1MC45LDQ2MC4yIDI1OCw0NDYuNyBMMjcwLjksNDIyLjIgTDI5MC4yLDQxNiBDMzAwLjgsNDEyLjYgMzE2LjgsNDA3LjUgMzI1LjgsNDA0LjcgTDM0Mi4xLDM5OS42IEwzNDEuNywzMTguNCBDMzQxLjQsMjQwLjQgMzQxLjMsMjM2LjggMzM5LjMsMjI3LjcgQzMzMS43LDE5My40IDMxNiwxNjQuMyAyOTEuOSwxMzkuNyBDMjg3LjMsMTM1IDI2My45LDExNC4zIDI0MCw5My44IEMyMTYuMSw3My4yIDE5NS4zLDU1LjMgMTkzLjgsNTMuOSBMMTkxLjIsNTEuNSBMMTQ1LjMsOTEgQzg5LjIsMTM5LjQgODAuOCwxNDcuNiA2Ny40LDE2OC4yIEM1Ny4xLDE4NC4xIDQ5LjUsMjAxLjIgNDQuOSwyMTguOSBDNDAuNCwyMzYuOSA0MCwyNDMuNiA0MCwzMjMuOCBMNDAsMzk5LjUgTDU0LjMsNDA0IEM2Mi4xLDQwNi41IDc4LjEsNDExLjYgODkuOCw0MTUuMyBDMTAxLjQsNDE5IDExMSw0MjIuNCAxMTEsNDIyLjcgQzExMSw0MjMgMTE2LjYsNDM0IDEyMy41LDQ0Ny4xIEMxMzAuNCw0NjAuMyAxMzYsNDcxLjIgMTM2LDQ3MS40IEMxMzYsNDcyIDEzNC44LDQ3MS42IDgwLDQ1NC4xIFoiIGlkPSJQYXRoIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTg4LjQsNDY4LjUgQzE4Ny41LDQ2Ni43IDE2Mi4zLDQxOC42IDEzMi41LDM2MS43IEw3OC4zLDI1OC4yIEw3OS4xLDI0OS44IEM4MC45LDIzMi42IDg3LjMsMjE0LjQgOTcuNywxOTcuOSBDMTAxLjQsMTkxLjkgMTAyLjUsMTkwLjggMTAzLjUsMTkxLjkgQzEwNC4xLDE5Mi42IDEyMy45LDIzMCAxNDcuNSwyNzUgQzE3MSwzMTkuOSAxOTAuNSwzNTYuNyAxOTAuOSwzNTYuNyBDMTkxLjIsMzU2LjcgMjExLDMyMC4zIDIzNC44LDI3NS45IEMyNTguNiwyMzEuNSAyNzguNSwxOTQuNCAyNzkuMSwxOTMuNCBDMjgwLjEsMTkxLjcgMjgwLjMsMTkxLjggMjgxLjksMTkzLjkgQzI5Mi4yLDIwNy40IDMwMC43LDIyOS43IDMwMy4xLDI0OS40IEwzMDQuMywyNTkuNCBMMjQ3LjUsMzY1LjMgQzIxNi4zLDQyMy41IDE5MC42LDQ3MS40IDE5MC40LDQ3MS41IEMxOTAuMyw0NzEuNyAxODkuNCw0NzAuNCAxODguNCw0NjguNSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2MywyMTMuOCBMMTM1LjUsMTU4LjkgTDE1MSwxNDUuNCBDMTU5LjUsMTM4IDE3MiwxMjcuMyAxNzguNywxMjEuNyBMMTkxLDExMS41IEwxOTMuNywxMTMuNyBDMTk1LjMsMTE0LjkgMjA3LjYsMTI1LjYgMjIxLjEsMTM3LjUgTDI0NS44LDE1OS4xIEwyMTguNCwyMTMuOSBDMjAzLjMsMjQ0IDE5MC45LDI2OC43IDE5MC43LDI2OC43IEMxOTAuNiwyNjguNyAxNzguMSwyNDQgMTYzLDIxMy44IFoiIGlkPSJQYXRoIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAMAAADDpiTIAAAB+FBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9tbnFtycSkp6psbXCjpqlpam1rxsGhpKdNTlBmZ2pqw75hs65RlZHn6OhbqKRmvLhVnZlVVVjT4+JhYmVbXF5PUFKRk5WGiYtXWFqfoqVdXmFRUlR+gINfYGONkJJ4en1jY2aYm55ZWlyeoaSWmZyEh4nS0tNkZWhSU1ZOkY1WV1l9f4GdoKNNTU9Oj4xlZmmQ1dGam52QkZP19fVNjor29/d2eHqcnqFSmJR7fX90dnjt7e6Ag4VowLuVl5pcXV9NjYqDhYdQk5BzdHZZpaGTlZder6pUmpddrKdkubWmp6manZ+8vb6Ii43p6erIycpYop5pwr1jt7KKjY9lvLeMj5Hd3d7T1NRWoJy2trjExMZhtbCeoKPZ2tvOz9B6env5+frj5OSwsrP2/Pva29t2zMizs7W55eJYlJGqrK56qqfa8fCo39zp8vG3ubtjm5nt+PelxsWtr7Dy8/N/0MtVnJjI6+m+v8COuLa81NNXoZ2Csa6J08+bv72wzMtvoqDd6enk9fTR7uzf3+DH29qb2tfR09SJx8NjnJmPmkzKAAAAHnRSTlMA8ecEY9maz1anHDMl+IU+Eg2Qe0pyCbG+uWrgxyu5h1bwAAAc+klEQVR42uzbCZaDIBAE0BJc0aC4oDMm3P+YOUMUFXj1r9BQTfMAntk2101VZY78e1XVWuZ1KxEi2+flJhzdoGqm2SAgQz2+Hd2rKGuFELTT5ugZle7xrFYz9Z8lxh5PUXp39DyhO9xP1n+OQrHVErcyC6M/LGIxuM0wcdAPTzYZ3GIYWf4wZXrA5dT4chSqbFS4lNUsf9iyReI6M+e+8BUzLtKtjmKwKlzATkz/WGT/8G4uHMVjU/DKjo6iImZ41HL7x0dL+LKw+8foreCF4eE/Un7awIfxHy+N03pe/MeskTgnZ/uP2zbgjMVR5AqFwySn/wTsHQ6yjaMEiA8OGfjWPxGiwwGG9U/GkRVg+d0jIbvCjySv/5JSGPzmy74d9aQNRXEAvw7nGCtuinFkDycs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\"","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDFweCIgaGVpZ2h0PSI0NHB4IiB2aWV3Qm94PSIwIDAgNDEgNDQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Yml0c2tpLWljb248L3RpdGxlPgogICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSI1MS4yNjgwMjQ3JSIgeTE9IjEyLjE0Mjk4NSUiIHgyPSI0OC42MTExMTExJSIgeTI9Ijg4LjMxMTMxNzclIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNDRjBCQzMiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0NGMEJDMyIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjQ0YwQkMzIiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNGRjM1NjgiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSI1MS4yNjgwMjQ3JSIgeTE9IjQ4Ljg5ODI2MjclIiB4Mj0iNDguNjExMTExMSUiIHkyPSI1MS4xMTQ5NTg3JSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjQ0YwQkMzIiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNDRjBCQzMiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0NGMEJDMyIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjRkYzNTY4IiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9ImJpdHNraS1pY29uIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgLTcuMDAwMDAwKSIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9IlJlY3RhbmdsZS0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMi41MTIyNDksIDQwLjQ3MDQyOSkgcm90YXRlKC00NS4wMDAwMDApIHRyYW5zbGF0ZSgtMTIuNTEyMjQ5LCAtNDAuNDcwNDI5KSB0cmFuc2xhdGUoMTAuMDEyMjQ5LCAyNi45NzA0MjkpIj4KICAgICAgICAgICAgICAgIDxnIGlkPSJwYXRoLTItbGluayIgZmlsbD0iIzQxMDBFQSI+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEuNzExODkxLDAuNzc4MzUyIEwzLjIyODk2NywwLjc3ODM1MiBDMy43MDA3NTksMC43NzgzNTIgMy44NzE4NDIsMC44Mjc0NzYgNC4wNDQzMjIsMC45MTk3MTkgQzQuMjE2ODAyLDEuMDExOTYyIDQuMzUyMTY1LDEuMTQ3MzI2IDQuNDQ0NDA5LDEuMzE5ODA2IEM0LjUzNjY1MiwxLjQ5MjI4NiA0LjU4NTc3NSwxLjY2MzM2OSA0LjU4NTc3NSwyLjEzNTE2IEw0LjU4NTc3NSwyNC44MDU2OTggQzQuNTg1Nzc1LDI1LjI3NzQ4OSA0LjUzNjY1MiwyNS40NDg1NzMgNC40NDQ0MDksMjUuNjIxMDUzIEM0LjM1MjE2NSwyNS43OTM1MzMgNC4yMTY4MDIsMjUuOTI4ODk2IDQuMDQ0MzIyLDI2LjAyMTEzOSBDMy44NzE4NDIsMjYuMTEzMzgyIDMuNzAwNzU5LDI2LjE2MjUwNiAzLjIyODk2NywyNi4xNjI1MDYgTDEuNzExODkxLDI2LjE2MjUwNiBDMS4yNDAwOTksMjYuMTYyNTA2IDEuMDY5MDE2LDI2LjExMzM4MiAwLjg5NjUzNiwyNi4wMjExMzkgQzAuNzI0MDU2LDI1LjkyODg5NiAwLjU4ODY5MywyNS43OTM1MzMgMC40OTY0NSwyNS42MjEwNTMgQzAuNDA0MjA2LDI1LjQ0ODU3MyAwLjM1NTA4MywyNS4yNzc0ODkgMC4zNTUwODMsMjQuODA1Njk4IEwwLjM1NTA4MywyLjEzNTE2IEMwLjM1NTA4MywxLjY2MzM2OSAwLjQwNDIwNiwxLjQ5MjI4NiAwLjQ5NjQ1LDEuMzE5ODA2IEMwLjU4ODY5MywxLjE0NzMyNiAwLjcyNDA1NiwxLjAxMTk2MiAwLjg5NjUzNiwwLjkxOTcxOSBDMS4wNjkwMTYsMC44Mjc0NzYgMS4yNDAwOTksMC43NzgzNTIgMS43MTE4OTEsMC43NzgzNTIgWiIgaWQ9InBhdGgtMiI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPGcgaWQ9InBhdGgtMi1saW5rIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTIpIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMS43MTE4OTEsMC43NzgzNTIgTDMuMjI4OTY3LDAuNzc4MzUyIEMzLjcwMDc1OSwwLjc3ODM1MiAzLjg3MTg0MiwwLjgyNzQ3NiA0LjA0NDMyMiwwLjkxOTcxOSBDNC4yMTY4MDIsMS4wMTE5NjIgNC4zNTIxNjUsMS4xNDczMjYgNC40NDQ0MDksMS4zMTk4MDYgQzQuNTM2NjUyLDEuNDkyMjg2IDQuNTg1Nzc1LDEuNjYzMzY5IDQuNTg1Nzc1LDIuMTM1MTYgTDQuNTg1Nzc1LDI0LjgwNTY5OCBDNC41ODU3NzUsMjUuMjc3NDg5IDQuNTM2NjUyLDI1LjQ0ODU3MyA0LjQ0NDQwOSwyNS42MjEwNTMgQzQuMzUyMTY1LDI1Ljc5MzUzMyA0LjIxNjgwMiwyNS45Mjg4OTYgNC4wNDQzMjIsMjYuMDIxMTM5IEMzLjg3MTg0MiwyNi4xMTMzODIgMy43MDA3NTksMjYuMTYyNTA2IDMuMjI4OTY3LDI2LjE2MjUwNiBMMS43MTE4OTEsMjYuMTYyNTA2IEMxLjI0MDA5OSwyNi4xNjI1MDYgMS4wNjkwMTYsMjYuMTEzMzgyIDAuODk2NTM2LDI2LjAyMTEzOSBDMC43MjQwNTYsMjUuOTI4ODk2IDAuNTg4NjkzLDI1Ljc5MzUzMyAwLjQ5NjQ1LDI1LjYyMTA1MyBDMC40MDQyMDYsMjUuNDQ4NTczIDAuMzU1MDgzLDI1LjI3NzQ4OSAwLjM1NTA4MywyNC44MDU2OTggTDAuMzU1MDgzLDIuMTM1MTYgQzAuMzU1MDgzLDEuNjYzMzY5IDAuNDA0MjA2LDEuNDkyMjg2IDAuNDk2NDUsMS4zMTk4MDYgQzAuNTg4NjkzLDEuMTQ3MzI2IDAuNzI0MDU2LDEuMDExOTYyIDAuODk2NTM2LDAuOTE5NzE5IEMxLjA2OTAxNiwwLjgyNzQ3NiAxLjI0MDA5OSwwLjc3ODM1MiAxLjcxMTg5MSwwLjc3ODM1MiBaIiBpZD0icGF0aC0yIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTkuNTY5OTQ3NjUsNC43MjE1NzQxNSBMMjAuMzgzNTk2Niw0LjcyMTU3NDE1IEMyNy41NDE5Mjc2LDQuNzIxNTc0MTUgMzEuMzQ5NTUwNiw5LjA4NzY0OTE1IDMxLjM0OTU1MDYsMTUuNDg0NDU1MSBDMzEuMzQ5NTUwNiwxNi4yOTY3NDgxIDMxLjE0NjQ3NzYsMTcuNTE1MTg4MSAzMC45OTQxNzI2LDE4LjI3NjcxMjEgQzMwLjk0MzQwNDYsMTguNTgxMzIyMSAzMC44OTI2MzU2LDE4Ljc4NDM5NTEgMzAuODkyNjM1NiwxOC45ODc0NjkxIEMzMC44OTI2MzU2LDE5LjM5MzYxNTEgMzEuMDQ0OTQwNiwxOS42NDc0NTcxIDMxLjYwMzM5MjYsMTkuOTUyMDY2MSBDMzUuMDA0ODY4NiwyMS44ODEyNjIxIDM2LjUyNzkxODYsMjUuMDI4ODk3MSAzNi41Mjc5MTg2LDI5LjQ5NjUwODEgQzM2LjUyNzkxODYsMzUuNzQxMDEwMSAzMi42Njk1MjY2LDQwLjI1OTM4OTEgMjQuNzQ5NjcwNiw0MC4yNTkzODkxIEw5LjU2OTk0NzY1LDQwLjI1OTM4OTEgQzguNzU3NjU0NjUsNDAuMjU5Mzg5MSA4LjQ1MzA0NDY1LDM5LjkwNDAxMTEgOC40NTMwNDQ2NSwzOS4wOTE3MTgxIEw4LjQ1MzA0NDY1LDUuODg5MjQ1MTUgQzguNDUzMDQ0NjUsNS4wNzY5NTIxNSA4Ljc1NzY1NDY1LDQuNzIxNTc0MTUgOS41Njk5NDc2NSw0LjcyMTU3NDE1IFogTTE3Ljc5NDQxMjYsMTguNjgyODU5MSBMMjAuMzgzNTk2NiwxOC42ODI4NTkxIEMyMS43MDM1NzI2LDE4LjY4Mjg1OTEgMjIuNzE4OTM4NiwxNy44NzA1NjYxIDIyLjcxODkzODYsMTYuMjk2NzQ4MSBDMjIuNzE4OTM4NiwxNC43NzM2OTkxIDIxLjcwMzU3MjYsMTMuOTEwNjM4MSAyMC4zODM1OTY2LDEzLjkxMDYzODEgTDE3Ljc5NDQxMjYsMTMuOTEwNjM4MSBDMTYuOTgyMTE5NiwxMy45MTA2MzgxIDE2LjY3NzUxMDYsMTQuMjY2MDE2MSAxNi42Nzc1MTA2LDE1LjA3ODMwOTEgTDE2LjY3NzUxMDYsMTcuNTE1MTg4MSBDMTYuNjc3NTEwNiwxOC4zMjc0ODExIDE2Ljk4MjExOTYsMTguNjgyODU5MSAxNy43OTQ0MTI2LDE4LjY4Mjg1OTEgWiBNMTcuNzk0NDEyNiwzMS4wNzAzMjYxIEwyNC41OTczNjU2LDMxLjA3MDMyNjEgQzI2LjU3NzMyOTYsMzEuMDcwMzI2MSAyNy42OTQyMzI2LDMwLjM1OTU2OTEgMjcuNjk0MjMyNiwyOC42ODQyMTUxIEMyNy42OTQyMzI2LDI3LjA1OTYyOTEgMjYuNTc3MzI5NiwyNi4yOTgxMDUxIDI0LjU5NzM2NTYsMjYuMjk4MTA1MSBMMTcuNzk0NDEyNiwyNi4yOTgxMDUxIEMxNi45ODIxMTk2LDI2LjI5ODEwNTEgMTYuNjc3NTEwNiwyNi42NTM0ODMxIDE2LjY3NzUxMDYsMjcuNDY1Nzc2MSBMMTYuNjc3NTEwNiwyOS45MDI2NTQxIEMxNi42Nzc1MTA2LDMwLjcxNDk0NzEgMTYuOTgyMTE5NiwzMS4wNzAzMjYxIDE3Ljc5NDQxMjYsMzEuMDcwMzI2MSBaIiBpZD0iYml0c2tpIiBmaWxsPSIjMjkyNkNGIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMi40OTA0ODIsIDIyLjQ5MDQ4Mikgcm90YXRlKC00NS4wMDAwMDApIHRyYW5zbGF0ZSgtMjIuNDkwNDgyLCAtMjIuNDkwNDgyKSAiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPgo=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGcgZmlsbD0iI2YwYjkwYiI+PHBhdGggZD0iTTIwLjI0NSAwTDkuNjM0IDYuMTI1bDMuOTAxIDIuMjYyIDYuNzEtMy44NjIgNi43MSAzLjg2MiAzLjkwMi0yLjI2MkwyMC4yNDUgMHptNi43MTEgMTEuNTg2bDMuOSAyLjI2M3Y0LjUyNmwtNi43MSAzLjg2MnY3LjcyNGwtMy45IDIuMjYzLTMuOTAyLTIuMjYzdi03LjcyNGwtNi43MS0zLjg2MnYtNC41MjZsMy45MDEtMi4yNjMgNi43MSAzLjg2MyA2LjcxLTMuODYzaC4wMDF6Ii8+PHBhdGggZD0iTTMwLjg1NyAyMS41NzNWMjYuMWwtMy45MDEgMi4yNjJ2LTQuNTI1bDMuOS0yLjI2My4wMDEtLjAwMXoiLz48cGF0aCBkPSJNMjYuOTE2IDMxLjU2bDYuNzEtMy44NjJ2LTcuNzI0bDMuOTAyLTIuMjYzdjEyLjI1bC0xMC42MTEgNi4xMjVWMzEuNTZoLS4wMDF6bTYuNzExLTE5LjMxbC0zLjkwMi0yLjI2MyAzLjkwMi0yLjI2MyAzLjkgMi4yNjN2NC41MjVsLTMuOSAyLjI2M1YxMi4yNXpNMTYuMzQ0IDM3LjcyNFYzMy4ybDMuOTAxIDIuMjYzIDMuOTAyLTIuMjYzdjQuNTI1bC0zLjkwMiAyLjI2My0zLjktMi4yNjMtLjAwMS0uMDAxem0tMi44MDktOS4zNjNMOS42MzQgMjYuMXYtNC41MjZsMy45MDEgMi4yNjN2NC41MjUtLjAwMXptNi43MS0xNi4xMTFsLTMuOS0yLjI2MyAzLjktMi4yNjMgMy45MDIgMi4yNjMtMy45MDIgMi4yNjN6bS05LjQ4LTIuMjYzbC0zLjkgMi4yNjN2NC41MjVsLTMuOTAyLTIuMjYzVjkuOTg3bDMuOTAxLTIuMjYzIDMuOTAxIDIuMjYzeiIvPjxwYXRoIGQ9Ik0yLjk2MyAxNy43MTFsMy45MDEgMi4yNjN2Ny43MjRsNi43MSAzLjg2MnY0LjUyNkwyLjk2MyAyOS45NlYxNy43MXYuMDAxeiIvPjwvZz48L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzgzcHgiIGhlaWdodD0iMzgzcHgiIHZpZXdCb3g9IjAgMCAzODMgMzgzIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCA1NC4xICg3NjQ5MCkgLSBodHRwczovL3NrZXRjaGFwcC5jb20gLS0+CiAgICA8dGl0bGU+Q29pbmJhc2UgV2FsbGV0IFNESzwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxyZWN0IGlkPSJwYXRoLTEiIHg9IjAiIHk9IjAiIHdpZHRoPSIzODMiIGhlaWdodD0iMzgzIiByeD0iNjQiPjwvcmVjdD4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjQ5Ljk5OTk5MzglIiB5MT0iMCUiIHgyPSI0OS45OTk5OTM4JSIgeTI9IjEwMCUiIGlkPSJsaW5lYXJHcmFkaWVudC0zIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzJFNjZGOCIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMTI0QURCIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9ImNvaW5iYXNld2FsbGV0Ij4KICAgICAgICAgICAgPGcgaWQ9IlBhdGgiPgogICAgICAgICAgICAgICAgPG1hc2sgaWQ9Im1hc2stMiIgZmlsbD0id2hpdGUiPgogICAgICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+CiAgICAgICAgICAgICAgICA8L21hc2s+CiAgICAgICAgICAgICAgICA8cmVjdCBzdHJva2U9IiM5Nzk3OTciIHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMzgyIiBoZWlnaHQ9IjM4MiIgcng9IjY0Ij48L3JlY3Q+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTMpIiBmaWxsLXJ1bGU9Im5vbnplcm8iIG1hc2s9InVybCgjbWFzay0yKSIgcG9pbnRzPSIwIDAgMzgzIDAgMzgzIDM4NCAwIDM4NCI+PC9wb2x5Z29uPgogICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02MC4xMDc0LDE5MS41NzIgQzYwLjEwNzQsMjY0Ljk2NiAxMTkuNjA1LDMyNC40NjMgMTkyLjk5OCwzMjQuNDYzIEMyNjYuMzkyLDMyNC40NjMgMzI1Ljg4OSwyNjQuOTY2IDMyNS44ODksMTkxLjU3MiBDMzI1Ljg4OSwxMTguMTc5IDI2Ni4zOTIsNTguNjgxNiAxOTIuOTk4LDU4LjY4MTYgQzExOS42MDUsNTguNjgxNiA2MC4xMDc0LDExOC4xNzkgNjAuMTA3NCwxOTEuNTcyIFogTTE1OS4wMzcsMTQ4Ljc1MiBDMTU0LjE0NCwxNDguNzUyIDE1MC4xNzgsMTUyLjcxOCAxNTAuMTc4LDE1Ny42MTEgTDE1MC4xNzgsMjI1LjUzMyBDMTUwLjE3OCwyMzAuNDI2IDE1NC4xNDQsMjM0LjM5MyAxNTkuMDM3LDIzNC4zOTMgTDIyNi45NTksMjM0LjM5MyBDMjMxLjg1MiwyMzQuMzkzIDIzNS44MTgsMjMwLjQyNiAyMzUuODE4LDIyNS41MzMgTDIzNS44MTgsMTU3LjYxMSBDMjM1LjgxOCwxNTIuNzE4IDIzMS44NTIsMTQ4Ljc1MiAyMjYuOTU5LDE0OC43NTIgTDE1OS4wMzcsMTQ4Ljc1MiBaIiBpZD0iU2hhcGUiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","import * as React from \"react\";\nimport * as PropTypes from \"prop-types\";\nimport styled from \"styled-components\";\n\nimport { Provider } from \"./Provider\";\nimport {\n MODAL_LIGHTBOX_CLASSNAME,\n MODAL_CONTAINER_CLASSNAME,\n MODAL_HITBOX_CLASSNAME,\n MODAL_CARD_CLASSNAME\n} from \"../constants\";\nimport { SimpleFunction, IProviderUserOptions, ThemeColors } from \"../helpers\";\n\ndeclare global {\n // tslint:disable-next-line\n interface Window {\n ethereum: any;\n BinanceChain: any;\n web3: any;\n celo: any;\n updateWeb3Modal: any;\n clover: any;\n opera: any;\n }\n}\n\ninterface ILightboxStyleProps {\n show: boolean;\n offset: number;\n opacity?: number;\n}\n\nconst SLightbox = styled.div`\n transition: opacity 0.1s ease-in-out;\n text-align: center;\n position: fixed;\n width: 100%;\n height: 100%;\n margin-left: -50vw;\n top: ${({ offset }) => (offset ? `-${offset}px` : 0)};\n left: 50%;\n z-index: 2;\n will-change: opacity;\n background-color: ${({ opacity }) => {\n let alpha = 0.4;\n if (typeof opacity === \"number\") {\n alpha = opacity;\n }\n return `rgba(0, 0, 0, ${alpha})`;\n }};\n opacity: ${({ show }) => (show ? 1 : 0)};\n visibility: ${({ show }) => (show ? \"visible\" : \"hidden\")};\n pointer-events: ${({ show }) => (show ? \"auto\" : \"none\")};\n display: flex;\n justify-content: center;\n align-items: center;\n\n & * {\n box-sizing: border-box !important;\n }\n`;\n\ninterface IModalContainerStyleProps {\n show: boolean;\n}\n\nconst SModalContainer = styled.div`\n position: relative;\n width: 100%;\n height: 100%;\n padding: 15px;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: ${({ show }) => (show ? 1 : 0)};\n visibility: ${({ show }) => (show ? \"visible\" : \"hidden\")};\n pointer-events: ${({ show }) => (show ? \"auto\" : \"none\")};\n`;\n\nconst SHitbox = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n`;\n\ninterface IModalCardStyleProps {\n show: boolean;\n themeColors: ThemeColors;\n maxWidth?: number;\n}\n\nconst SModalCard = styled.div`\n position: relative;\n width: 100%;\n background-color: ${({ themeColors }) => themeColors.background};\n border-radius: 12px;\n margin: 10px;\n padding: 0;\n opacity: ${({ show }) => (show ? 1 : 0)};\n visibility: ${({ show }) => (show ? \"visible\" : \"hidden\")};\n pointer-events: ${({ show }) => (show ? \"auto\" : \"none\")};\n\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n max-width: ${({ maxWidth }) => (maxWidth ? `${maxWidth}px` : \"800px\")};\n min-width: fit-content;\n max-height: 100%;\n overflow: auto;\n\n @media screen and (max-width: 768px) {\n max-width: ${({ maxWidth }) => (maxWidth ? `${maxWidth}px` : \"500px\")};\n grid-template-columns: 1fr;\n }\n`;\n\ninterface IModalProps {\n themeColors: ThemeColors;\n userOptions: IProviderUserOptions[];\n onClose: SimpleFunction;\n resetState: SimpleFunction;\n lightboxOpacity: number;\n}\n\ninterface IModalState {\n show: boolean;\n lightboxOffset: number;\n}\n\nconst INITIAL_STATE: IModalState = {\n show: false,\n lightboxOffset: 0\n};\n\nexport class Modal extends React.Component {\n constructor(props: IModalProps) {\n super(props);\n window.updateWeb3Modal = async (state: IModalState) => {\n this.setState(state);\n };\n }\n public static propTypes = {\n userOptions: PropTypes.object.isRequired,\n onClose: PropTypes.func.isRequired,\n resetState: PropTypes.func.isRequired,\n lightboxOpacity: PropTypes.number.isRequired\n };\n\n public lightboxRef?: HTMLDivElement | null;\n public mainModalCard?: HTMLDivElement | null;\n\n public state: IModalState = {\n ...INITIAL_STATE\n };\n\n public componentDidUpdate(prevProps: IModalProps, prevState: IModalState) {\n if (prevState.show && !this.state.show) {\n this.props.resetState();\n }\n if (this.lightboxRef) {\n const lightboxRect = this.lightboxRef.getBoundingClientRect();\n const lightboxOffset = lightboxRect.top > 0 ? lightboxRect.top : 0;\n\n if (\n lightboxOffset !== INITIAL_STATE.lightboxOffset &&\n lightboxOffset !== this.state.lightboxOffset\n ) {\n this.setState({ lightboxOffset });\n }\n }\n }\n\n public render = () => {\n const { show, lightboxOffset } = this.state;\n\n const { onClose, lightboxOpacity, userOptions, themeColors } = this.props;\n\n return (\n (this.lightboxRef = c)}\n show={show}\n >\n \n \n (this.mainModalCard = c)}\n >\n {userOptions.map(provider =>\n !!provider ? (\n \n ) : null\n )}\n \n \n \n );\n };\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","import * as list from \"../providers\";\nimport {\n CONNECT_EVENT,\n ERROR_EVENT,\n SELECT_EVENT,\n INJECTED_PROVIDER_ID,\n CACHED_PROVIDER_KEY\n} from \"../constants\";\nimport {\n isMobile,\n IProviderControllerOptions,\n IProviderOptions,\n IProviderDisplayWithConnector,\n getLocal,\n setLocal,\n removeLocal,\n getProviderInfoById,\n getProviderDescription,\n IProviderInfo,\n filterMatches,\n IProviderUserOptions,\n getInjectedProvider,\n findMatchingRequiredOptions\n} from \"../helpers\";\nimport { EventController } from \"./events\";\n\nexport class ProviderController {\n public cachedProvider: string = \"\";\n public shouldCacheProvider: boolean = false;\n public disableInjectedProvider: boolean = false;\n\n private eventController: EventController = new EventController();\n private injectedProvider: IProviderInfo | null = null;\n private providers: IProviderDisplayWithConnector[] = [];\n private providerOptions: IProviderOptions;\n private network: string = \"\";\n\n constructor(opts: IProviderControllerOptions) {\n this.cachedProvider = getLocal(CACHED_PROVIDER_KEY) || \"\";\n\n this.disableInjectedProvider = opts.disableInjectedProvider;\n this.shouldCacheProvider = opts.cacheProvider;\n this.providerOptions = opts.providerOptions;\n this.network = opts.network;\n\n this.injectedProvider = getInjectedProvider();\n\n this.providers = Object.keys(list.connectors).map((id: string) => {\n let providerInfo: IProviderInfo;\n if (id === INJECTED_PROVIDER_ID) {\n providerInfo = this.injectedProvider || list.providers.FALLBACK;\n } else {\n providerInfo = getProviderInfoById(id);\n }\n // parse custom display options\n if (this.providerOptions[id]) {\n const options = this.providerOptions[id];\n if (typeof options.display !== \"undefined\") {\n providerInfo = {\n ...providerInfo,\n ...this.providerOptions[id].display\n };\n }\n }\n return {\n ...providerInfo,\n connector: list.connectors[id],\n package: providerInfo.package\n };\n });\n // parse custom providers\n Object.keys(this.providerOptions)\n .filter(key => key.startsWith(\"custom-\"))\n .map(id => {\n if (id && this.providerOptions[id]) {\n const options = this.providerOptions[id];\n if (\n typeof options.display !== \"undefined\" &&\n typeof options.connector !== \"undefined\"\n ) {\n this.providers.push({\n ...list.providers.FALLBACK,\n id,\n ...options.display,\n connector: options.connector\n });\n }\n }\n });\n }\n\n public shouldDisplayProvider(id: string) {\n const provider = this.getProvider(id);\n if (typeof provider !== \"undefined\") {\n const providerPackageOptions = this.providerOptions[id];\n if (providerPackageOptions) {\n const isProvided = !!providerPackageOptions.package;\n if (isProvided) {\n const requiredOptions = provider.package\n ? provider.package.required\n : undefined;\n if (requiredOptions && requiredOptions.length) {\n const providedOptions = providerPackageOptions.options;\n if (providedOptions && Object.keys(providedOptions).length) {\n const matches = findMatchingRequiredOptions(\n requiredOptions,\n providedOptions\n );\n if (requiredOptions.length === matches.length) {\n return true;\n }\n }\n } else {\n return true;\n }\n }\n }\n }\n return false;\n }\n\n public getUserOptions = () => {\n const mobile = isMobile();\n\n const defaultProviderList = this.providers.map(({ id }) => id);\n\n const displayInjected =\n !!this.injectedProvider && !this.disableInjectedProvider;\n const onlyInjected = displayInjected && mobile;\n\n const providerList = [];\n\n if (onlyInjected) {\n providerList.push(INJECTED_PROVIDER_ID);\n } else {\n if (displayInjected) {\n providerList.push(INJECTED_PROVIDER_ID);\n }\n\n defaultProviderList.forEach((id: string) => {\n if (id !== INJECTED_PROVIDER_ID) {\n const result = this.shouldDisplayProvider(id);\n if (result) {\n providerList.push(id);\n }\n }\n });\n }\n\n const userOptions: IProviderUserOptions[] = [];\n\n providerList.forEach((id: string) => {\n let provider = this.getProvider(id);\n if (typeof provider !== \"undefined\") {\n const { id, name, logo, connector } = provider;\n userOptions.push({\n id,\n name,\n logo,\n description: getProviderDescription(provider),\n onClick: () => this.connectTo(id, connector)\n });\n }\n });\n\n return userOptions;\n };\n\n public getProvider(id: string) {\n return filterMatches(\n this.providers,\n x => x.id === id,\n undefined\n );\n }\n\n public getProviderOption(id: string, key: string) {\n return this.providerOptions &&\n this.providerOptions[id] &&\n this.providerOptions[id][key]\n ? this.providerOptions[id][key]\n : {};\n }\n\n public clearCachedProvider() {\n this.cachedProvider = \"\";\n removeLocal(CACHED_PROVIDER_KEY);\n }\n\n public setCachedProvider(id: string) {\n this.cachedProvider = id;\n setLocal(CACHED_PROVIDER_KEY, id);\n }\n\n public connectTo = async (\n id: string,\n connector: (providerPackage: any, opts: any) => Promise\n ) => {\n try {\n this.eventController.trigger(SELECT_EVENT, id);\n const providerPackage = this.getProviderOption(id, \"package\");\n const providerOptions = this.getProviderOption(id, \"options\");\n const opts = { network: this.network || undefined, ...providerOptions };\n const provider = await connector(providerPackage, opts);\n this.eventController.trigger(CONNECT_EVENT, provider);\n if (this.shouldCacheProvider && this.cachedProvider !== id) {\n this.setCachedProvider(id);\n }\n } catch (error) {\n this.eventController.trigger(ERROR_EVENT, error);\n }\n };\n\n public async connectToCachedProvider() {\n const provider = this.getProvider(this.cachedProvider);\n if (typeof provider !== \"undefined\") {\n await this.connectTo(provider.id, provider.connector);\n }\n }\n\n public on(event: string, callback: (result: any) => void): () => void {\n this.eventController.on({\n event,\n callback\n });\n\n return () =>\n this.eventController.off({\n event,\n callback\n });\n }\n\n public off(event: string, callback?: (result: any) => void): void {\n this.eventController.off({\n event,\n callback\n });\n }\n}\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tif (typeof g[typedArray] === 'function') {\n\t\t\tvar arr = new g[typedArray]();\n\t\t\tif (Symbol.toStringTag in arr) {\n\t\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t\t}\n\t\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t\t}\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar foundName = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!foundName) {\n\t\t\ttry {\n\t\t\t\tvar name = getter.call(value);\n\t\t\t\tif (name === typedArray) {\n\t\t\t\t\tfoundName = name;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\t});\n\treturn foundName;\n};\n\nvar isTypedArray = require('is-typed-array');\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!isTypedArray(value)) { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) { return $slice($toString(value), 8, -1); }\n\treturn tryTypedArrays(value);\n};\n","// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n","var queryString = require('query-string')\nvar setQuery = require('url-set-query')\nvar assign = require('object-assign')\nvar ensureHeader = require('./lib/ensure-header.js')\n\n// this is replaced in the browser\nvar request = require('./lib/request.js')\n\nvar mimeTypeJson = 'application/json'\nvar noop = function () {}\n\nmodule.exports = xhrRequest\nfunction xhrRequest (url, opt, cb) {\n if (!url || typeof url !== 'string') {\n throw new TypeError('must specify a URL')\n }\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (cb && typeof cb !== 'function') {\n throw new TypeError('expected cb to be undefined or a function')\n }\n\n cb = cb || noop\n opt = opt || {}\n\n var defaultResponse = opt.json ? 'json' : 'text'\n opt = assign({ responseType: defaultResponse }, opt)\n\n var headers = opt.headers || {}\n var method = (opt.method || 'GET').toUpperCase()\n var query = opt.query\n if (query) {\n if (typeof query !== 'string') {\n query = queryString.stringify(query)\n }\n url = setQuery(url, query)\n }\n\n // allow json response\n if (opt.responseType === 'json') {\n ensureHeader(headers, 'Accept', mimeTypeJson)\n }\n\n // if body content is json\n if (opt.json && method !== 'GET' && method !== 'HEAD') {\n ensureHeader(headers, 'Content-Type', mimeTypeJson)\n opt.body = JSON.stringify(opt.body)\n }\n\n opt.method = method\n opt.url = url\n opt.headers = headers\n delete opt.query\n delete opt.json\n\n return request(opt, cb)\n}\n","module.exports = ensureHeader\nfunction ensureHeader (headers, key, value) {\n var lower = key.toLowerCase()\n if (!headers[key] && !headers[lower]) {\n headers[key] = value\n }\n}\n","module.exports = getResponse\nfunction getResponse (opt, resp) {\n if (!resp) return null\n return {\n statusCode: resp.statusCode,\n headers: resp.headers,\n method: opt.method,\n url: opt.url,\n // the XHR object in browser, http response in Node\n rawRequest: resp.rawRequest ? resp.rawRequest : resp\n }\n}\n","var xhr = require('xhr')\nvar normalize = require('./normalize-response')\nvar noop = function () {}\n\nmodule.exports = xhrRequest\nfunction xhrRequest (opt, cb) {\n delete opt.uri\n\n // for better JSON.parse error handling than xhr module\n var useJson = false\n if (opt.responseType === 'json') {\n opt.responseType = 'text'\n useJson = true\n }\n\n var req = xhr(opt, function xhrRequestResult (err, resp, body) {\n if (useJson && !err) {\n try {\n var text = resp.rawRequest.responseText\n body = JSON.parse(text)\n } catch (e) {\n err = e\n }\n }\n\n resp = normalize(opt, resp)\n if (err) cb(err, null, resp)\n else cb(err, body, resp)\n cb = noop\n })\n\n // Patch abort() so that it also calls the callback, but with an error\n var onabort = req.onabort\n req.onabort = function () {\n var ret = onabort.apply(req, Array.prototype.slice.call(arguments))\n cb(new Error('XHR Aborted'))\n cb = noop\n return ret\n }\n\n return req\n}\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\nvar decodeComponent = require('decode-uri-component');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nfunction extract(str) {\n\tvar queryStart = str.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\treturn str.slice(queryStart + 1);\n}\n\nfunction parse(str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^[?#&]/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeComponent(val);\n\n\t\tformatter(decodeComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tif (opts.sort === false) {\n\t\topts.sort = function () {};\n\t}\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort(opts.sort).map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n\nexports.parseUrl = function (str, opts) {\n\treturn {\n\t\turl: str.split('?')[0] || '',\n\t\tquery: parse(extract(str), opts)\n\t};\n};\n","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n","\"use strict\";\nvar window = require(\"global/window\")\nvar isFunction = require(\"is-function\")\nvar parseHeaders = require(\"parse-headers\")\nvar xtend = require(\"xtend\")\n\nmodule.exports = createXHR\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = createXHR;\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop\ncreateXHR.XDomainRequest = \"withCredentials\" in (new createXHR.XMLHttpRequest()) ? createXHR.XMLHttpRequest : window.XDomainRequest\n\nforEachArray([\"get\", \"put\", \"post\", \"patch\", \"head\", \"delete\"], function(method) {\n createXHR[method === \"delete\" ? \"del\" : method] = function(uri, options, callback) {\n options = initParams(uri, options, callback)\n options.method = method.toUpperCase()\n return _createXHR(options)\n }\n})\n\nfunction forEachArray(array, iterator) {\n for (var i = 0; i < array.length; i++) {\n iterator(array[i])\n }\n}\n\nfunction isEmpty(obj){\n for(var i in obj){\n if(obj.hasOwnProperty(i)) return false\n }\n return true\n}\n\nfunction initParams(uri, options, callback) {\n var params = uri\n\n if (isFunction(options)) {\n callback = options\n if (typeof uri === \"string\") {\n params = {uri:uri}\n }\n } else {\n params = xtend(options, {uri: uri})\n }\n\n params.callback = callback\n return params\n}\n\nfunction createXHR(uri, options, callback) {\n options = initParams(uri, options, callback)\n return _createXHR(options)\n}\n\nfunction _createXHR(options) {\n if(typeof options.callback === \"undefined\"){\n throw new Error(\"callback argument missing\")\n }\n\n var called = false\n var callback = function cbOnce(err, response, body){\n if(!called){\n called = true\n options.callback(err, response, body)\n }\n }\n\n function readystatechange() {\n if (xhr.readyState === 4) {\n setTimeout(loadFunc, 0)\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined\n\n if (xhr.response) {\n body = xhr.response\n } else {\n body = xhr.responseText || getXml(xhr)\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body)\n } catch (e) {}\n }\n\n return body\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer)\n if(!(evt instanceof Error)){\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\") )\n }\n evt.statusCode = 0\n return callback(evt, failureResponse)\n }\n\n // will load the data & process the response in a special response object\n function loadFunc() {\n if (aborted) return\n var status\n clearTimeout(timeoutTimer)\n if(options.useXDR && xhr.status===undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200\n } else {\n status = (xhr.status === 1223 ? 204 : xhr.status)\n }\n var response = failureResponse\n var err = null\n\n if (status !== 0){\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n }\n if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders())\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\")\n }\n return callback(err, response, response.body)\n }\n\n var xhr = options.xhr || null\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest()\n }else{\n xhr = new createXHR.XMLHttpRequest()\n }\n }\n\n var key\n var aborted\n var uri = xhr.url = options.uri || options.url\n var method = xhr.method = options.method || \"GET\"\n var body = options.body || options.data\n var headers = xhr.headers = options.headers || {}\n var sync = !!options.sync\n var isJson = false\n var timeoutTimer\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n }\n\n if (\"json\" in options && options.json !== false) {\n isJson = true\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\") //Don't override existing accept header declared by user\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\") //Don't override existing accept header declared by user\n body = JSON.stringify(options.json === true ? body : options.json)\n }\n }\n\n xhr.onreadystatechange = readystatechange\n xhr.onload = loadFunc\n xhr.onerror = errorFunc\n // IE9 must have onprogress be set to a unique function.\n xhr.onprogress = function () {\n // IE must die\n }\n xhr.onabort = function(){\n aborted = true;\n }\n xhr.ontimeout = errorFunc\n xhr.open(method, uri, !sync, options.username, options.password)\n //has to be after open\n if(!sync) {\n xhr.withCredentials = !!options.withCredentials\n }\n // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n if (!sync && options.timeout > 0 ) {\n timeoutTimer = setTimeout(function(){\n if (aborted) return\n aborted = true//IE9 may still call readystatechange\n xhr.abort(\"timeout\")\n var e = new Error(\"XMLHttpRequest timeout\")\n e.code = \"ETIMEDOUT\"\n errorFunc(e)\n }, options.timeout )\n }\n\n if (xhr.setRequestHeader) {\n for(key in headers){\n if(headers.hasOwnProperty(key)){\n xhr.setRequestHeader(key, headers[key])\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\")\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType\n }\n\n if (\"beforeSend\" in options &&\n typeof options.beforeSend === \"function\"\n ) {\n options.beforeSend(xhr)\n }\n\n // Microsoft Edge browser sends \"undefined\" when send is called with undefined value.\n // XMLHttpRequest spec says to pass null as body to indicate no body\n // See https://github.com/naugtur/xhr/issues/100.\n xhr.send(body || null)\n\n return xhr\n\n\n}\n\nfunction getXml(xhr) {\n // xhr.responseXML will throw Exception \"InvalidStateError\" or \"DOMException\"\n // See https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML.\n try {\n if (xhr.responseType === \"document\") {\n return xhr.responseXML\n }\n var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === \"parsererror\"\n if (xhr.responseType === \"\" && !firefoxBugTakenEffect) {\n return xhr.responseXML\n }\n } catch (e) {}\n\n return null\n}\n\nfunction noop() {}\n",null,null,null,null,null,null,"module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","// extracted by mini-css-extract-plugin\nexport default {};","'use strict';\n\nvar possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\nmodule.exports = function availableTypedArrays() {\n\tvar out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\";\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return generator._invoke = function (innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }(innerFn, self, context), generator;\n }\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n exports.wrap = wrap;\n var ContinueSentinel = {};\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {}\n\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n\n reject(record.arg);\n }\n\n var previousPromise;\n\n this._invoke = function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n };\n }\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n\n return next.value = undefined, next.done = !0, next;\n };\n\n return next.next = next;\n }\n }\n\n return {\n next: doneResult\n };\n }\n\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, \"constructor\", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n }\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","'use strict';\n\n// This is free and unencumbered software released into the public domain.\n// See LICENSE.md for more information.\n\n//\n// Utilities\n//\n\n/**\n * @param {number} a The number to test.\n * @param {number} min The minimum value in the range, inclusive.\n * @param {number} max The maximum value in the range, inclusive.\n * @return {boolean} True if a >= min and a <= max.\n */\nfunction inRange(a, min, max) {\n return min <= a && a <= max;\n}\n\n/**\n * @param {*} o\n * @return {Object}\n */\nfunction ToDictionary(o) {\n if (o === undefined) return {};\n if (o === Object(o)) return o;\n throw TypeError('Could not convert argument to dictionary');\n}\n\n/**\n * @param {string} string Input string of UTF-16 code units.\n * @return {!Array.} Code points.\n */\nfunction stringToCodePoints(string) {\n // https://heycam.github.io/webidl/#dfn-obtain-unicode\n\n // 1. Let S be the DOMString value.\n var s = String(string);\n\n // 2. Let n be the length of S.\n var n = s.length;\n\n // 3. Initialize i to 0.\n var i = 0;\n\n // 4. Initialize U to be an empty sequence of Unicode characters.\n var u = [];\n\n // 5. While i < n:\n while (i < n) {\n\n // 1. Let c be the code unit in S at index i.\n var c = s.charCodeAt(i);\n\n // 2. Depending on the value of c:\n\n // c < 0xD800 or c > 0xDFFF\n if (c < 0xD800 || c > 0xDFFF) {\n // Append to U the Unicode character with code point c.\n u.push(c);\n }\n\n // 0xDC00 ≤ c ≤ 0xDFFF\n else if (0xDC00 <= c && c <= 0xDFFF) {\n // Append to U a U+FFFD REPLACEMENT CHARACTER.\n u.push(0xFFFD);\n }\n\n // 0xD800 ≤ c ≤ 0xDBFF\n else if (0xD800 <= c && c <= 0xDBFF) {\n // 1. If i = n−1, then append to U a U+FFFD REPLACEMENT\n // CHARACTER.\n if (i === n - 1) {\n u.push(0xFFFD);\n }\n // 2. Otherwise, i < n−1:\n else {\n // 1. Let d be the code unit in S at index i+1.\n var d = string.charCodeAt(i + 1);\n\n // 2. If 0xDC00 ≤ d ≤ 0xDFFF, then:\n if (0xDC00 <= d && d <= 0xDFFF) {\n // 1. Let a be c & 0x3FF.\n var a = c & 0x3FF;\n\n // 2. Let b be d & 0x3FF.\n var b = d & 0x3FF;\n\n // 3. Append to U the Unicode character with code point\n // 2^16+2^10*a+b.\n u.push(0x10000 + (a << 10) + b);\n\n // 4. Set i to i+1.\n i += 1;\n }\n\n // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a\n // U+FFFD REPLACEMENT CHARACTER.\n else {\n u.push(0xFFFD);\n }\n }\n }\n\n // 3. Set i to i+1.\n i += 1;\n }\n\n // 6. Return U.\n return u;\n}\n\n/**\n * @param {!Array.} code_points Array of code points.\n * @return {string} string String of UTF-16 code units.\n */\nfunction codePointsToString(code_points) {\n var s = '';\n for (var i = 0; i < code_points.length; ++i) {\n var cp = code_points[i];\n if (cp <= 0xFFFF) {\n s += String.fromCharCode(cp);\n } else {\n cp -= 0x10000;\n s += String.fromCharCode((cp >> 10) + 0xD800,\n (cp & 0x3FF) + 0xDC00);\n }\n }\n return s;\n}\n\n\n//\n// Implementation of Encoding specification\n// https://encoding.spec.whatwg.org/\n//\n\n//\n// 3. Terminology\n//\n\n/**\n * End-of-stream is a special token that signifies no more tokens\n * are in the stream.\n * @const\n */ var end_of_stream = -1;\n\n/**\n * A stream represents an ordered sequence of tokens.\n *\n * @constructor\n * @param {!(Array.|Uint8Array)} tokens Array of tokens that provide the\n * stream.\n */\nfunction Stream(tokens) {\n /** @type {!Array.} */\n this.tokens = [].slice.call(tokens);\n}\n\nStream.prototype = {\n /**\n * @return {boolean} True if end-of-stream has been hit.\n */\n endOfStream: function() {\n return !this.tokens.length;\n },\n\n /**\n * When a token is read from a stream, the first token in the\n * stream must be returned and subsequently removed, and\n * end-of-stream must be returned otherwise.\n *\n * @return {number} Get the next token from the stream, or\n * end_of_stream.\n */\n read: function() {\n if (!this.tokens.length)\n return end_of_stream;\n return this.tokens.shift();\n },\n\n /**\n * When one or more tokens are prepended to a stream, those tokens\n * must be inserted, in given order, before the first token in the\n * stream.\n *\n * @param {(number|!Array.)} token The token(s) to prepend to the stream.\n */\n prepend: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.unshift(tokens.pop());\n } else {\n this.tokens.unshift(token);\n }\n },\n\n /**\n * When one or more tokens are pushed to a stream, those tokens\n * must be inserted, in given order, after the last token in the\n * stream.\n *\n * @param {(number|!Array.)} token The tokens(s) to prepend to the stream.\n */\n push: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.push(tokens.shift());\n } else {\n this.tokens.push(token);\n }\n }\n};\n\n//\n// 4. Encodings\n//\n\n// 4.1 Encoders and decoders\n\n/** @const */\nvar finished = -1;\n\n/**\n * @param {boolean} fatal If true, decoding errors raise an exception.\n * @param {number=} opt_code_point Override the standard fallback code point.\n * @return {number} The code point to insert on a decoding error.\n */\nfunction decoderError(fatal, opt_code_point) {\n if (fatal)\n throw TypeError('Decoder error');\n return opt_code_point || 0xFFFD;\n}\n\n/** @interface */\nfunction Decoder() {}\nDecoder.prototype = {\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point, or |finished|.\n */\n handler: function(stream, bite) {}\n};\n\n/** @interface */\nfunction Encoder() {}\nEncoder.prototype = {\n /**\n * @param {Stream} stream The stream of code points being encoded.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit, or |finished|.\n */\n handler: function(stream, code_point) {}\n};\n\n//\n// 7. API\n//\n\n/** @const */ var DEFAULT_ENCODING = 'utf-8';\n\n// 7.1 Interface TextDecoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextDecoder(encoding, options) {\n if (!(this instanceof TextDecoder)) {\n return new TextDecoder(encoding, options);\n }\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {boolean} */\n this._BOMseen = false;\n /** @private @type {?Decoder} */\n this._decoder = null;\n /** @private @type {boolean} */\n this._fatal = Boolean(options['fatal']);\n /** @private @type {boolean} */\n this._ignoreBOM = Boolean(options['ignoreBOM']);\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n Object.defineProperty(this, 'fatal', {value: this._fatal});\n Object.defineProperty(this, 'ignoreBOM', {value: this._ignoreBOM});\n}\n\nTextDecoder.prototype = {\n /**\n * @param {ArrayBufferView=} input The buffer of bytes to decode.\n * @param {Object=} options\n * @return {string} The decoded string.\n */\n decode: function decode(input, options) {\n var bytes;\n if (typeof input === 'object' && input instanceof ArrayBuffer) {\n bytes = new Uint8Array(input);\n } else if (typeof input === 'object' && 'buffer' in input &&\n input.buffer instanceof ArrayBuffer) {\n bytes = new Uint8Array(input.buffer,\n input.byteOffset,\n input.byteLength);\n } else {\n bytes = new Uint8Array(0);\n }\n\n options = ToDictionary(options);\n\n if (!this._streaming) {\n this._decoder = new UTF8Decoder({fatal: this._fatal});\n this._BOMseen = false;\n }\n this._streaming = Boolean(options['stream']);\n\n var input_stream = new Stream(bytes);\n\n var code_points = [];\n\n /** @type {?(number|!Array.)} */\n var result;\n\n while (!input_stream.endOfStream()) {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n }\n if (!this._streaming) {\n do {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n } while (!input_stream.endOfStream());\n this._decoder = null;\n }\n\n if (code_points.length) {\n // If encoding is one of utf-8, utf-16be, and utf-16le, and\n // ignore BOM flag and BOM seen flag are unset, run these\n // subsubsteps:\n if (['utf-8'].indexOf(this.encoding) !== -1 &&\n !this._ignoreBOM && !this._BOMseen) {\n // If token is U+FEFF, set BOM seen flag.\n if (code_points[0] === 0xFEFF) {\n this._BOMseen = true;\n code_points.shift();\n } else {\n // Otherwise, if token is not end-of-stream, set BOM seen\n // flag and append token to output.\n this._BOMseen = true;\n }\n }\n }\n\n return codePointsToString(code_points);\n }\n};\n\n// 7.2 Interface TextEncoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextEncoder(encoding, options) {\n if (!(this instanceof TextEncoder))\n return new TextEncoder(encoding, options);\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {?Encoder} */\n this._encoder = null;\n /** @private @type {{fatal: boolean}} */\n this._options = {fatal: Boolean(options['fatal'])};\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n}\n\nTextEncoder.prototype = {\n /**\n * @param {string=} opt_string The string to encode.\n * @param {Object=} options\n * @return {Uint8Array} Encoded bytes, as a Uint8Array.\n */\n encode: function encode(opt_string, options) {\n opt_string = opt_string ? String(opt_string) : '';\n options = ToDictionary(options);\n\n // NOTE: This option is nonstandard. None of the encodings\n // permitted for encoding (i.e. UTF-8, UTF-16) are stateful,\n // so streaming is not necessary.\n if (!this._streaming)\n this._encoder = new UTF8Encoder(this._options);\n this._streaming = Boolean(options['stream']);\n\n var bytes = [];\n var input_stream = new Stream(stringToCodePoints(opt_string));\n /** @type {?(number|!Array.)} */\n var result;\n while (!input_stream.endOfStream()) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n if (!this._streaming) {\n while (true) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n this._encoder = null;\n }\n return new Uint8Array(bytes);\n }\n};\n\n//\n// 8. The encoding\n//\n\n// 8.1 utf-8\n\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Decoder(options) {\n var fatal = options.fatal;\n\n // utf-8's decoder's has an associated utf-8 code point, utf-8\n // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8\n // lower boundary (initially 0x80), and a utf-8 upper boundary\n // (initially 0xBF).\n var /** @type {number} */ utf8_code_point = 0,\n /** @type {number} */ utf8_bytes_seen = 0,\n /** @type {number} */ utf8_bytes_needed = 0,\n /** @type {number} */ utf8_lower_boundary = 0x80,\n /** @type {number} */ utf8_upper_boundary = 0xBF;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function(stream, bite) {\n // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,\n // set utf-8 bytes needed to 0 and return error.\n if (bite === end_of_stream && utf8_bytes_needed !== 0) {\n utf8_bytes_needed = 0;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream, return finished.\n if (bite === end_of_stream)\n return finished;\n\n // 3. If utf-8 bytes needed is 0, based on byte:\n if (utf8_bytes_needed === 0) {\n\n // 0x00 to 0x7F\n if (inRange(bite, 0x00, 0x7F)) {\n // Return a code point whose value is byte.\n return bite;\n }\n\n // 0xC2 to 0xDF\n if (inRange(bite, 0xC2, 0xDF)) {\n // Set utf-8 bytes needed to 1 and utf-8 code point to byte\n // − 0xC0.\n utf8_bytes_needed = 1;\n utf8_code_point = bite - 0xC0;\n }\n\n // 0xE0 to 0xEF\n else if (inRange(bite, 0xE0, 0xEF)) {\n // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.\n if (bite === 0xE0)\n utf8_lower_boundary = 0xA0;\n // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.\n if (bite === 0xED)\n utf8_upper_boundary = 0x9F;\n // 3. Set utf-8 bytes needed to 2 and utf-8 code point to\n // byte − 0xE0.\n utf8_bytes_needed = 2;\n utf8_code_point = bite - 0xE0;\n }\n\n // 0xF0 to 0xF4\n else if (inRange(bite, 0xF0, 0xF4)) {\n // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.\n if (bite === 0xF0)\n utf8_lower_boundary = 0x90;\n // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.\n if (bite === 0xF4)\n utf8_upper_boundary = 0x8F;\n // 3. Set utf-8 bytes needed to 3 and utf-8 code point to\n // byte − 0xF0.\n utf8_bytes_needed = 3;\n utf8_code_point = bite - 0xF0;\n }\n\n // Otherwise\n else {\n // Return error.\n return decoderError(fatal);\n }\n\n // Then (byte is in the range 0xC2 to 0xF4) set utf-8 code\n // point to utf-8 code point << (6 × utf-8 bytes needed) and\n // return continue.\n utf8_code_point = utf8_code_point << (6 * utf8_bytes_needed);\n return null;\n }\n\n // 4. If byte is not in the range utf-8 lower boundary to utf-8\n // upper boundary, run these substeps:\n if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {\n\n // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8\n // bytes seen to 0, set utf-8 lower boundary to 0x80, and set\n // utf-8 upper boundary to 0xBF.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Return error.\n return decoderError(fatal);\n }\n\n // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary\n // to 0xBF.\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 6. Increase utf-8 bytes seen by one and set utf-8 code point\n // to utf-8 code point + (byte − 0x80) << (6 × (utf-8 bytes\n // needed − utf-8 bytes seen)).\n utf8_bytes_seen += 1;\n utf8_code_point += (bite - 0x80) << (6 * (utf8_bytes_needed - utf8_bytes_seen));\n\n // 7. If utf-8 bytes seen is not equal to utf-8 bytes needed,\n // continue.\n if (utf8_bytes_seen !== utf8_bytes_needed)\n return null;\n\n // 8. Let code point be utf-8 code point.\n var code_point = utf8_code_point;\n\n // 9. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes\n // seen to 0.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n\n // 10. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Encoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function(stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream)\n return finished;\n\n // 2. If code point is in the range U+0000 to U+007F, return a\n // byte whose value is code point.\n if (inRange(code_point, 0x0000, 0x007f))\n return code_point;\n\n // 3. Set count and offset based on the range code point is in:\n var count, offset;\n // U+0080 to U+07FF: 1 and 0xC0\n if (inRange(code_point, 0x0080, 0x07FF)) {\n count = 1;\n offset = 0xC0;\n }\n // U+0800 to U+FFFF: 2 and 0xE0\n else if (inRange(code_point, 0x0800, 0xFFFF)) {\n count = 2;\n offset = 0xE0;\n }\n // U+10000 to U+10FFFF: 3 and 0xF0\n else if (inRange(code_point, 0x10000, 0x10FFFF)) {\n count = 3;\n offset = 0xF0;\n }\n\n // 4.Let bytes be a byte sequence whose first byte is (code\n // point >> (6 × count)) + offset.\n var bytes = [(code_point >> (6 * count)) + offset];\n\n // 5. Run these substeps while count is greater than 0:\n while (count > 0) {\n\n // 1. Set temp to code point >> (6 × (count − 1)).\n var temp = code_point >> (6 * (count - 1));\n\n // 2. Append to bytes 0x80 | (temp & 0x3F).\n bytes.push(0x80 | (temp & 0x3F));\n\n // 3. Decrease count by one.\n count -= 1;\n }\n\n // 6. Return bytes bytes, in order.\n return bytes;\n };\n}\n\nexport {TextEncoder, TextDecoder};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"123\":\"cb6d1a42\",\"126\":\"da4d9b9e\",\"193\":\"90226f53\",\"431\":\"d1eba662\",\"489\":\"a6ce8ccf\",\"608\":\"786006d9\",\"787\":\"0e3d155a\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"app-front-end:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkapp_front_end\"] = self[\"webpackChunkapp_front_end\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","import * as React from \"react\";\nimport type { History, Location } from \"history\";\nimport { Action as NavigationType } from \"history\";\n\nimport type { RouteMatch } from \"./router\";\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport type Navigator = Pick;\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\ninterface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n","import type { Location, Path, To } from \"history\";\nimport { parsePath } from \"history\";\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n\nexport function warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nconst alreadyWarned: Record = {};\nexport function warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n\ntype ParamParseFailed = { failed: true };\n\ntype ParamParseSegment =\n // Check here if there exists a forward slash in the string.\n Segment extends `${infer LeftSegment}/${infer RightSegment}`\n ? // If there is a forward slash, then attempt to parse each side of the\n // forward slash.\n ParamParseSegment extends infer LeftResult\n ? ParamParseSegment extends infer RightResult\n ? LeftResult extends string\n ? // If the left side is successfully parsed as a param, then check if\n // the right side can be successfully parsed as well. If both sides\n // can be parsed, then the result is a union of the two sides\n // (read: \"foo\" | \"bar\").\n RightResult extends string\n ? LeftResult | RightResult\n : LeftResult\n : // If the left side is not successfully parsed as a param, then check\n // if only the right side can be successfully parse as a param. If it\n // can, then the result is just right, else it's a failure.\n RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If the left side didn't parse into a param, then just check the right\n // side.\n ParamParseSegment extends infer RightResult\n ? RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If there's no forward slash, then check if this segment starts with a\n // colon. If it does, then this is a dynamic segment, so the result is\n // just the remainder of the string. Otherwise, it's a failure.\n Segment extends `:${infer Remaining}`\n ? Remaining\n : ParamParseFailed;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n ParamParseSegment extends string\n ? ParamParseSegment\n : string;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport interface RouteObject {\n caseSensitive?: boolean;\n children?: RouteObject[];\n element?: React.ReactNode;\n index?: boolean;\n path?: string;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/api#generatepath\n */\nexport function generatePath(path: string, params: Params = {}): string {\n return path\n .replace(/:(\\w+)/g, (_, key) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/\\/*\\*$/, (_) =>\n params[\"*\"] == null ? \"\" : params[\"*\"].replace(/^\\/*/, \"/\")\n );\n}\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface RouteMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObject;\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchroutes\n */\nexport function matchRoutes(\n routes: RouteObject[],\n locationArg: Partial | string,\n basename = \"/\"\n): RouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(branches[i], pathname);\n }\n\n return matches;\n}\n\ninterface RouteMeta {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObject;\n}\n\ninterface RouteBranch {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes(\n routes: RouteObject[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta = {\n relativePath: route.path || \"\",\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch(\n branch: RouteBranch,\n pathname: string\n): RouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: RouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchpath\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else {\n regexpSource += end\n ? \"\\\\/*$\" // When matching to the end, ignore trailing slashes\n : // Otherwise, match a word boundary or a proceeding /. The word boundary restricts\n // parent routes to matching only their own words and nothing more, e.g. parent\n // route \"/home\" should not match \"/home2\".\n // Additionally, allow paths starting with `.`, `-`, `~`, and url-encoded entities,\n // but do not consume the character in the matched path so they can match against\n // nested paths.\n \"(?:(?=[.~-]|%[0-9A-F]{2})|\\\\b|\\\\/|$)\";\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/api#resolvepath\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string\n): Path {\n let to = typeof toArg === \"string\" ? parsePath(toArg) : toArg;\n let toPathname = toArg === \"\" || to.pathname === \"\" ? \"/\" : to.pathname;\n\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n let from: string;\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original to value had one.\n if (\n toPathname &&\n toPathname !== \"/\" &&\n toPathname.endsWith(\"/\") &&\n !path.pathname.endsWith(\"/\")\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n let nextChar = pathname.charAt(basename.length);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(basename.length) || \"/\";\n}\n\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\nconst normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\nconst normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n","import * as React from \"react\";\nimport type { Location, Path, To } from \"history\";\nimport { Action as NavigationType, parsePath } from \"history\";\n\nimport { LocationContext, NavigationContext, RouteContext } from \"./context\";\nimport type {\n ParamParseKey,\n Params,\n PathMatch,\n PathPattern,\n RouteMatch,\n RouteObject,\n} from \"./router\";\nimport {\n getToPathname,\n invariant,\n joinPaths,\n matchPath,\n matchRoutes,\n resolveTo,\n warning,\n warningOnce,\n} from \"./router\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usehref\n */\nexport function useHref(to: To): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to);\n\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n let toPathname = getToPathname(to);\n let endsWithSlash = toPathname != null && toPathname.endsWith(\"/\");\n joinedPathname =\n pathname === \"/\"\n ? basename + (endsWithSlash ? \"/\" : \"\")\n : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/docs/en/v6/api#useinroutercontext\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/docs/en/v6/api#uselocation\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigationtype\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/docs/en/v6/api#usematch\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname\n );\n\n if (basename !== \"/\") {\n path.pathname = joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/docs/en/v6/api#useoutletcontext\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useoutlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useparams\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useresolvedpath\n */\nexport function useResolvedPath(to: To): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname),\n [to, routePathnamesJson, locationPathname]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useroutes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n return _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase]),\n })\n ),\n parentMatches\n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = []\n): React.ReactElement | null {\n if (matches == null) return null;\n\n return matches.reduceRight((outlet, match, index) => {\n return (\n \n );\n }, null as React.ReactElement | null);\n}\n","import * as React from \"react\";\nimport type { InitialEntry, Location, MemoryHistory, To } from \"history\";\nimport {\n Action as NavigationType,\n createMemoryHistory,\n parsePath,\n} from \"history\";\n\nimport { LocationContext, NavigationContext, Navigator } from \"./context\";\nimport {\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\nimport type { RouteMatch, RouteObject } from \"./router\";\nimport { invariant, normalizePathname, stripBasename, warning } from \"./router\";\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/api#memoryrouter\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({ initialEntries, initialIndex });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/api#navigate\n */\nexport function Navigate({ to, replace, state }: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n ` may be used only in the context of a component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n ` must not be used on the initial render in a . ` +\n `This is a no-op, but you should modify your code so the is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let navigate = useNavigate();\n React.useEffect(() => {\n navigate(to, { replace, state });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/api#outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface RouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: boolean;\n path?: string;\n}\n\nexport interface PathRouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: false;\n path: string;\n}\n\nexport interface LayoutRouteProps {\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n}\n\nexport interface IndexRouteProps {\n element?: React.ReactNode | null;\n index: true;\n}\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#route\n */\nexport function Route(\n _props: PathRouteProps | LayoutRouteProps | IndexRouteProps\n): React.ReactElement | null {\n invariant(\n false,\n `A is only ever to be used as the child of element, ` +\n `never rendered directly. Please wrap your in a .`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a directly. Instead, you'll render a\n * router that is more specific to your environment such as a \n * in web browsers or a for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/api#router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a inside another .` +\n ` You should never have more than one in your app.`\n );\n\n let basename = normalizePathname(basenameProp);\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n ` is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n \n \n \n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial | string;\n}\n\n/**\n * A container for a nested tree of elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `` element or an array of them. Used internally by\n * `` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/api#createroutesfromchildren\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a component. All component children of must be a or `\n );\n\n let route: RouteObject = {\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children);\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type { BrowserHistory, HashHistory, History } from \"history\";\nimport { createBrowserHistory, createHashHistory } from \"history\";\nimport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n resolvePath,\n renderMatches,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n} from \"react-router\";\nimport type { To } from \"react-router\";\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// RE-EXPORTS\n////////////////////////////////////////////////////////////////////////////////\n\n// Note: Keep in sync with react-router exports!\nexport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n renderMatches,\n resolvePath,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n};\n\nexport { NavigationType } from \"react-router\";\nexport type {\n Hash,\n Location,\n Path,\n To,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigator,\n OutletProps,\n Params,\n PathMatch,\n RouteMatch,\n RouteObject,\n RouteProps,\n PathRouteProps,\n LayoutRouteProps,\n IndexRouteProps,\n RouterProps,\n Pathname,\n Search,\n RoutesProps,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n} from \"react-router\";\n\n////////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nfunction isModifiedEvent(event: React.MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport interface LinkProps\n extends Omit, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n to: To;\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nexport const Link = React.forwardRef(\n function LinkWithRef(\n { onClick, reloadDocument, replace = false, state, target, to, ...rest },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, { replace, state, target });\n function handleClick(\n event: React.MouseEvent\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n \n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?: string | ((props: { isActive: boolean }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: { isActive: boolean }) => React.CSSProperties);\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let location = useLocation();\n let path = useResolvedPath(to);\n\n let locationPathname = location.pathname;\n let toPathname = path.pathname;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\" ? styleProp({ isActive }) : styleProp;\n\n return (\n \n {typeof children === \"function\" ? children({ isActive }) : children}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// HOOKS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Handles the click behavior for router `` components. This is useful if\n * you need to create custom `` components with the same click behavior we\n * use in our exported ``.\n */\nexport function useLinkClickHandler(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n } = {}\n): (event: React.MouseEvent) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\n\n return React.useCallback(\n (event: React.MouseEvent) => {\n if (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular will do a replace instead of\n // a push, so do the same here.\n let replace =\n !!replaceProp || createPath(location) === createPath(path);\n\n navigate(to, { replace, state });\n }\n },\n [location, navigate, path, replaceProp, state, target, to]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(defaultInit?: URLSearchParamsInit) {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n let location = useLocation();\n let searchParams = React.useMemo(() => {\n let searchParams = createSearchParams(location.search);\n\n for (let key of defaultSearchParamsRef.current.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParamsRef.current.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\n }, [location.search]);\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback(\n (\n nextInit: URLSearchParamsInit,\n navigateOptions?: { replace?: boolean; state?: any }\n ) => {\n navigate(\"?\" + createSearchParams(nextInit), navigateOptions);\n },\n [navigate]\n );\n\n return [searchParams, setSearchParams] as const;\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = string & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import {\n BaseSignerWalletAdapter,\n scopePollingDetectionStrategy,\n WalletAccountError,\n WalletDisconnectionError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { PublicKey, Transaction } from '@solana/web3.js';\n\ninterface BitKeepWallet {\n isBitKeep?: boolean;\n connect(): Promise;\n disconnect(): Promise;\n getAccount(): Promise;\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transactions: Transaction[]): Promise;\n}\n\ninterface BitKeepWindow extends Window {\n bitkeep?: {\n solana?: BitKeepWallet;\n };\n}\n\ndeclare const window: BitKeepWindow;\n\nexport interface BitKeepWalletAdapterConfig {}\n\nexport const BitKeepWalletName = 'BitKeep' as WalletName<'BitKeep'>;\n\nexport class BitKeepWalletAdapter extends BaseSignerWalletAdapter {\n name = BitKeepWalletName;\n url = 'https://bitkeep.com';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDEyOCAxMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiByeD0iNjQiIGZpbGw9IiM3NTI0RjkiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMDIgNDUuNjAyN1Y0OS44MjA0QzEwMi4wMDEgNTAuMjI4MyAxMDEuODkzIDUwLjYyOTIgMTAxLjY4NyA1MC45ODI3QzEwMS40ODEgNTEuMzM2MSAxMDEuMTg1IDUxLjYyOTYgMTAwLjgyOCA1MS44MzM1TDg3LjA5MDggNTkuNjgwMUw5OS4zNjMzIDY2LjY3MUMxMDAuMTY1IDY3LjEyOTUgMTAwLjgzMSA2Ny43ODkyIDEwMS4yOTQgNjguNTgzNkMxMDEuNzU3IDY5LjM3OCAxMDIuMDAxIDcwLjI3OTEgMTAyIDcxLjE5NjJWODIuNDQyNEMxMDIuMDAxIDgzLjM2IDEwMS43NTggODQuMjYxNyAxMDEuMjk1IDg1LjA1NjdDMTAwLjgzMiA4NS44NTE2IDEwMC4xNjYgODYuNTExNyA5OS4zNjMzIDg2Ljk3MDVMNjcuMDg2OSAxMDUuM0M2Ni4yODUzIDEwNS43NTkgNjUuMzc1OSAxMDYgNjQuNDUwMiAxMDZDNjMuNTI0NSAxMDYgNjIuNjE1MSAxMDUuNzU5IDYxLjgxMzUgMTA1LjNMNTEuMjUyIDk5LjI2MTFDNTEuMDczNyA5OS4xNTkzIDUwLjkyNTYgOTkuMDEyOCA1MC44MjI3IDk4LjgzNjNDNTAuNzE5OCA5OC42NTk5IDUwLjY2NTYgOTguNDU5NyA1MC42NjU2IDk4LjI1NkM1MC42NjU2IDk4LjA1MjIgNTAuNzE5OCA5Ny44NTIgNTAuODIyNyA5Ny42NzU2QzUwLjkyNTYgOTcuNDk5MSA1MS4wNzM3IDk3LjM1MjcgNTEuMjUyIDk3LjI1MDhMODYuMTE1MiA3Ny4zODM1Qzg2LjIwNCA3Ny4zMzI1IDg2LjI3NzcgNzcuMjU5MyA4Ni4zMjkgNzcuMTcxMkM4Ni4zODAyIDc3LjA4MzIgODYuNDA3MiA3Ni45ODMzIDg2LjQwNzIgNzYuODgxN0M4Ni40MDcyIDc2Ljc4IDg2LjM4MDIgNzYuNjgwMiA4Ni4zMjkgNzYuNTkyMUM4Ni4yNzc3IDc2LjUwNCA4Ni4yMDQgNzYuNDMwOCA4Ni4xMTUyIDc2LjM3OThMNzMuMTcxOSA2OC45NzcxQzcyLjgxNTYgNjguNzczNCA3Mi40MTE0IDY4LjY2NjIgNzIgNjguNjY2MkM3MS41ODg2IDY4LjY2NjIgNzEuMTg0NCA2OC43NzM0IDcwLjgyODEgNjguOTc3MUwzNS40MTcgODkuMTcyMkMzNS4xNDk4IDg5LjMyNSAzNC44NDY3IDg5LjQwNTQgMzQuNTM4MSA4OS40MDU0QzM0LjIyOTUgODkuNDA1NCAzMy45MjY0IDg5LjMyNSAzMy42NTkyIDg5LjE3MjJMMjkuNjQ4NCA4Ni45MDA5QzI4Ljg0MjQgODYuNDQyOCAyOC4xNzI5IDg1Ljc4MiAyNy43MDc4IDg0Ljk4NTNDMjcuMjQyNyA4NC4xODg2IDI2Ljk5ODUgODMuMjg0MyAyNyA4Mi4zNjQxVjc3Ljc2NjRDMjYuOTk5OCA3Ny40NjA3IDI3LjA4MDkgNzcuMTYwMyAyNy4yMzUyIDc2Ljg5NTVDMjcuMzg5NSA3Ni42MzA3IDI3LjYxMTUgNzYuNDEwOSAyNy44Nzg5IDc2LjI1OEw3OC42NTA0IDQ3LjM2OTNDNzguNzM5MiA0Ny4zMTgzIDc4LjgxMjkgNDcuMjQ1MSA3OC44NjQxIDQ3LjE1N0M3OC45MTU0IDQ3LjA2ODkgNzguOTQyMyA0Ni45NjkxIDc4Ljk0MjMgNDYuODY3NEM3OC45NDIzIDQ2Ljc2NTggNzguOTE1NCA0Ni42NjU5IDc4Ljg2NDEgNDYuNTc3OUM3OC44MTI5IDQ2LjQ4OTggNzguNzM5MiA0Ni40MTY2IDc4LjY1MDQgNDYuMzY1Nkw2NS42ODY1IDM4LjkzNjdDNjUuMzMwMiAzOC43MzMxIDY0LjkyNjEgMzguNjI1OCA2NC41MTQ2IDM4LjYyNThDNjQuMTAzMiAzOC42MjU4IDYzLjY5OTEgMzguNzMzMSA2My4zNDI4IDM4LjkzNjdMMjguNzU3OCA1OC42M0MyOC41Nzk4IDU4LjczMTggMjguMzc3OCA1OC43ODU0IDI4LjE3MjIgNTguNzg1NUMyNy45NjY2IDU4Ljc4NTUgMjcuNzY0NiA1OC43MzIgMjcuNTg2NSA1OC42MzAzQzI3LjQwODQgNTguNTI4NiAyNy4yNjA0IDU4LjM4MjMgMjcuMTU3NSA1OC4yMDYxQzI3LjA1NDUgNTguMDI5OSAyNy4wMDAyIDU3LjgzIDI3IDU3LjYyNjRWNDUuNTQ3NkMyNi45OTg5IDQ0LjYzIDI3LjI0MiA0My43MjgzIDI3LjcwNDkgNDIuOTMzNEMyOC4xNjc4IDQyLjEzODQgMjguODM0MSA0MS40NzgzIDI5LjYzNjcgNDEuMDE5NUw2MS45MDcyIDIyLjY5NTRDNjIuNzA3MSAyMi4yMzk4IDYzLjYxMzggMjIgNjQuNTM2NiAyMkM2NS40NTk0IDIyIDY2LjM2NjEgMjIuMjM5OCA2Ny4xNjYgMjIuNjk1NEw5OS4zNjMzIDQxLjA4MzNDMTAwLjE2NSA0MS41NDE0IDEwMC44MyA0Mi4yMDAxIDEwMS4yOTMgNDIuOTkzNEMxMDEuNzU2IDQzLjc4NjcgMTAyIDQ0LjY4NjYgMTAyIDQ1LjYwMjdaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K';\n\n private _connecting: boolean;\n private _wallet: BitKeepWallet | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(config: BitKeepWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window.bitkeep?.solana?.isBitKeep) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window!.bitkeep!.solana!;\n\n let account: string;\n try {\n account = await wallet.getAccount();\n } catch (error: any) {\n throw new WalletAccountError(error?.message, error);\n }\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(account);\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n this._wallet = null;\n this._publicKey = null;\n\n try {\n await wallet.disconnect();\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n }\n }\n\n this.emit('disconnect');\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signTransaction(transaction)) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signAllTransactions(transactions)) || transactions;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import {\n BaseSignerWalletAdapter,\n scopePollingDetectionStrategy,\n WalletAccountError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { PublicKey, Transaction } from '@solana/web3.js';\n\ninterface BitpieWallet {\n getAccount(): Promise;\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transactions: Transaction[]): Promise;\n}\n\ninterface BitpieWalletWindow extends Window {\n bitpie?: BitpieWallet;\n}\n\ndeclare const window: BitpieWalletWindow;\n\nexport interface BitpieWalletAdapterConfig {}\n\nexport const BitpieWalletName = 'Bitpie' as WalletName<'Bitpie'>;\n\nexport class BitpieWalletAdapter extends BaseSignerWalletAdapter {\n name = BitpieWalletName;\n url = 'https://bitpiecn.com';\n icon = `data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgNjQgNjQiIHdpZHRoPSI2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGxpbmVhckdyYWRpZW50IGlkPSJhIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMxZTNkYTAiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzNzUwZGUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9IjUyLjU0NTc1JSIgeDI9IjUyLjU0NTc1JSIgeGxpbms6aHJlZj0iI2EiIHkxPSIxMDAlIiB5Mj0iMCUiLz48bGluZWFyR3JhZGllbnQgaWQ9ImMiIHgxPSI1MCUiIHgyPSI1MCUiIHkxPSIwJSIgeTI9IjEwMCUiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzFkM2JhMyIgc3RvcC1vcGFjaXR5PSIwIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMTczNzkzIiBzdG9wLW9wYWNpdHk9Ii42NTI5MzgiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iZCIgeDE9IjUwJSIgeDI9IjUwJSIgeGxpbms6aHJlZj0iI2EiIHkxPSIxMDAlIiB5Mj0iMCUiLz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Im0xOCAwaDI4YzkuOTQxMTI1NSAwIDE4IDguMDU4ODc0NSAxOCAxOHYyOGMwIDkuOTQxMTI1NS04LjA1ODg3NDUgMTgtMTggMThoLTI4Yy05Ljk0MTEyNTUgMC0xOC04LjA1ODg3NDUtMTgtMTh2LTI4YzAtOS45NDExMjU1IDguMDU4ODc0NS0xOCAxOC0xOHoiIGZpbGw9InVybCgjYikiLz48Y2lyY2xlIGN4PSIzMi4yODU3MTQiIGN5PSIzMi4yODU3MTQiIGZpbGw9IiNmZmYiIHI9IjI0LjI4NTcxNCIvPjxwYXRoIGQ9Im0zMiAwYzE3LjY3MzExMiAwIDMyIDE0LjMyNjg4OCAzMiAzMnMtMTQuMzI2ODg4IDMyLTMyIDMyLTMyLTE0LjMyNjg4OC0zMi0zMiAxNC4zMjY4ODgtMzIgMzItMzJ6bS0uMTQzNDk3OCA3LjYwNTM4MTE3Yy0xMy40NzI3NzU5IDAtMjQuMzk0NjE4NzkgMTAuOTIxODQyODMtMjQuMzk0NjE4NzkgMjQuMzk0NjE4ODNzMTAuOTIxODQyODkgMjQuMzk0NjE4OCAyNC4zOTQ2MTg3OSAyNC4zOTQ2MTg4YzEzLjQ3Mjc3NiAwIDI0LjM5NDYxODktMTAuOTIxODQyOCAyNC4zOTQ2MTg5LTI0LjM5NDYxODhzLTEwLjkyMTg0MjktMjQuMzk0NjE4ODMtMjQuMzk0NjE4OS0yNC4zOTQ2MTg4M3oiIGZpbGw9InVybCgjYykiLz48cGF0aCBkPSJtMjkuMDkwOTA5MSA0NC4zNjM2MzY0YzAgMi4wMDgzMDgxLTEuNjI4MDU1NSAzLjYzNjM2MzYtMy42MzYzNjM2IDMuNjM2MzYzNi0yLjAwODMwODIgMC0zLjYzNjM2MzctMS42MjgwNTU1LTMuNjM2MzYzNy0zLjYzNjM2MzZsLS4wMDAxODE4LTIuMTgyNjM2NC0yLjE4MTYzNjQuMDAwODE4MmMtMi4wMDgzMDgxIDAtMy42MzYzNjM2LTEuNjI4MDU1NS0zLjYzNjM2MzYtMy42MzYzNjM3IDAtMi4wMDgzMDgxIDEuNjI4MDU1NS0zLjYzNjM2MzYgMy42MzYzNjM2LTMuNjM2MzYzNmwyLjE4MTYzNjQtLjAwMDA5MDl2LTUuODE5bC0yLjE4MTYzNjQuMDAwOTA5MWMtMi4wMDgzMDgxIDAtMy42MzYzNjM2LTEuNjI4MDU1NS0zLjYzNjM2MzYtMy42MzYzNjM2IDAtMi4wMDgzMDgyIDEuNjI4MDU1NS0zLjYzNjM2MzcgMy42MzYzNjM2LTMuNjM2MzYzN2wyLjE4MTYzNjQtLjAwMDE4MTguMDAwMTgxOC0yLjE4MTYzNjRjMC0yLjAwODMwODEgMS42MjgwNTU1LTMuNjM2MzYzNiAzLjYzNjM2MzctMy42MzYzNjM2IDIuMDA4MzA4MSAwIDMuNjM2MzYzNiAxLjYyODA1NTUgMy42MzYzNjM2IDMuNjM2MzYzNmwtLjAwMDkwOTEgMi4xODE2MzY0aDUuODE5bC4wMDAwOTA5LTIuMTgxNjM2NGMwLTIuMDA4MzA4MSAxLjYyODA1NTUtMy42MzYzNjM2IDMuNjM2MzYzNi0zLjYzNjM2MzYgMi4wMDgzMDgyIDAgMy42MzYzNjM3IDEuNjI4MDU1NSAzLjYzNjM2MzcgMy42MzYzNjM2bC0uMDAwODE4MiAyLjE4MTYzNjQgMi4xODI2MzY0LjAwMDE4MThjMi4wMDgzMDgxIDAgMy42MzYzNjM2IDEuNjI4MDU1NSAzLjYzNjM2MzYgMy42MzYzNjM3IDAgMi4wMDgzMDgxLTEuNjI4MDU1NSAzLjYzNjM2MzYtMy42MzYzNjM2IDMuNjM2MzYzNmwtMi4xODI2MzY0LS4wMDA5MDkxdjUuODE5bDIuMTgyNjM2NC4wMDAwOTA5YzIuMDA4MzA4MSAwIDMuNjM2MzYzNiAxLjYyODA1NTUgMy42MzYzNjM2IDMuNjM2MzYzNiAwIDIuMDA4MzA4Mi0xLjYyODA1NTUgMy42MzYzNjM3LTMuNjM2MzYzNiAzLjYzNjM2MzdsLTIuMTgyNjM2NC0uMDAwODE4Mi4wMDA4MTgyIDIuMTgyNjM2NGMwIDIuMDA4MzA4MS0xLjYyODA1NTUgMy42MzYzNjM2LTMuNjM2MzYzNyAzLjYzNjM2MzYtMi4wMDgzMDgxIDAtMy42MzYzNjM2LTEuNjI4MDU1NS0zLjYzNjM2MzYtMy42MzYzNjM2bC0uMDAwMDkwOS0yLjE4MjYzNjRoLTUuODE5em0tLjAwMDkwOTEtOS40NTQ2MzY0aDUuODE5di01LjgxOWgtNS44MTl6IiBmaWxsPSJ1cmwoI2QpIiB0cmFuc2Zvcm09Im1hdHJpeCguODY2MDI1NCAtLjUgLjUgLjg2NjAyNTQgLTExLjcxMjgxMyAyMC4yODcxODcpIi8+PC9nPjwvc3ZnPg==`;\n\n private _connecting: boolean;\n private _wallet: BitpieWallet | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(config: BitpieWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window.bitpie) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window!.bitpie!;\n\n let account: string;\n try {\n account = await wallet.getAccount();\n } catch (error: any) {\n throw new WalletAccountError(error?.message, error);\n }\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(account);\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n if (this._wallet) {\n this._wallet = null;\n this._publicKey = null;\n }\n\n this.emit('disconnect');\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signTransaction(transaction)) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signAllTransactions(transactions)) || transactions;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import type { default as Blocto, SolanaProviderInterface } from '@blocto/sdk';\nimport {\n BaseWalletAdapter,\n SendTransactionOptions,\n WalletAccountError,\n WalletAdapterNetwork,\n WalletConfigError,\n WalletConnectionError,\n WalletDisconnectionError,\n WalletLoadError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSendTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { Connection, PublicKey, Transaction, TransactionSignature } from '@solana/web3.js';\n\nexport interface BloctoWalletAdapterConfig {\n network?: WalletAdapterNetwork;\n}\n\nexport const BloctoWalletName = 'Blocto' as WalletName<'Blocto'>;\n\nexport class BloctoWalletAdapter extends BaseWalletAdapter {\n name = BloctoWalletName;\n url = 'https://blocto.app';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PHBhdGggZD0ibTE5LjQ4MzggMTUuMjQ5Yy4yNzY5IDAgLjUwNDguMjA5OS41MzI1LjQ3ODhsLjAwMjIuMDQyOS0uMDA0My4xMTQyYy0uMzM1IDMuOTgzMy0zLjc5MDQgNy4xMTUxLTguMDAzNyA3LjExNTEtNC4xNzA2IDAtNy41OTg2My0zLjA2ODctNy45OTI2OS02Ljk5NDZsLS4wMTYzOC0uMTgxMS0uMDAxMDYtLjA1MzIuMDAxNzgtLjAzOThjLjAyNTk4LS4yNzA2LjI1NDg3LS40ODIzLjUzMjg5LS40ODIzeiIgZmlsbD0iI2FmZDhmNyIvPjxwYXRoIGQ9Im00LjMwMDA5IDFjMy43ODc1NSAwIDYuODI1ODEgMi45MDkxMSA2LjgyNTgxIDYuNTAyNzd2Ni4zNTM0M2MtLjAwMDQuMjkxNy0uMjM5Mi41Mjg0LS41MzQuNTI4OGwtNi4wNTc1OC4wMDMyYy0uMjk1MTEuMDAwNy0uNTM0MzItLjIzNjEtLjUzNDMyLS41Mjc4bC4wMDAzNi0xMi41NjM3NWMwLS4xNTE0OS4xMTQyNi0uMjc2MjIuMjYxOTktLjI5NDE4eiIgZmlsbD0iIzE4MmE3MSIvPjxwYXRoIGQ9Im0xOS42OTIxIDEyLjIzODMuMDM4OC4xMjgzLS4wMjg4LS4wODQ2Yy4xNjE2LjQ1MzQuMjY2Ni43NzY5LjMxNTMgMS4zNDEzLjAzMzUuMzg3OS0uMjU3LjcyODktLjY0ODUuNzYybC0uMDMwMy4wMDIyLTMuMDgwOS4wMDA3Yy0yLjEwNjMgMC0zLjgyMDQtMS40NzQxLTMuODc1Mi0zLjU0MjNsLS4wMDE0LS4xMDIxdi0zLjQ2NThjMC0uMjAxNTMuMTY5NC0uMzY5NTkuMzc0MS0uMzYwMDcgMy4zMDAzLjE1NDY2IDUuOTk3OCAyLjM0MTUxIDYuOTM2OSA1LjMyMDM3eiIgZmlsbD0iIzM0ODVjNCIvPjwvZz48L3N2Zz4=';\n\n private _connecting: boolean;\n private _wallet: SolanaProviderInterface | null;\n private _publicKey: PublicKey | null;\n private _network: string;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' ? WalletReadyState.Unsupported : WalletReadyState.Loadable;\n\n constructor(config: BloctoWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n this._network = config.network || WalletAdapterNetwork.Mainnet;\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Loadable) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n let BloctoClass: typeof Blocto;\n try {\n ({ default: BloctoClass } = await import('@blocto/sdk'));\n } catch (error: any) {\n throw new WalletLoadError(error?.message, error);\n }\n\n let wallet: SolanaProviderInterface | undefined;\n try {\n wallet = new BloctoClass({ solana: { net: this._network } }).solana;\n } catch (error: any) {\n throw new WalletConfigError(error?.message, error);\n }\n\n if (!wallet) throw new WalletConfigError();\n\n if (!wallet.connected) {\n try {\n await wallet.connect();\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n }\n\n const account = wallet.accounts[0];\n if (!account) throw new WalletAccountError();\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(account);\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n this._wallet = null;\n this._publicKey = null;\n\n try {\n await wallet.disconnect();\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n }\n }\n\n this.emit('disconnect');\n }\n\n async sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options: SendTransactionOptions = {}\n ): Promise {\n try {\n const wallet = this._wallet;\n const publicKey = this.publicKey;\n if (!wallet || !publicKey) throw new WalletNotConnectedError();\n\n try {\n transaction.feePayer = transaction.feePayer || publicKey;\n transaction.recentBlockhash =\n transaction.recentBlockhash || (await connection.getRecentBlockhash('finalized')).blockhash;\n\n const { signers } = options;\n if (signers?.length) {\n transaction = await wallet.convertToProgramWalletTransaction(transaction);\n transaction.partialSign(...signers);\n }\n\n return await wallet.signAndSendTransaction(transaction, connection);\n } catch (error: any) {\n throw new WalletSendTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import {\n BaseMessageSignerWalletAdapter,\n scopePollingDetectionStrategy,\n WalletAccountError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignMessageError,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { PublicKey, Transaction } from '@solana/web3.js';\n\ninterface CloverWallet {\n isCloverWallet?: boolean;\n getAccount(): Promise;\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transactions: Transaction[]): Promise;\n signMessage(message: Uint8Array): Promise<{ signature: Uint8Array }>;\n}\n\ninterface CloverWalletWindow extends Window {\n clover_solana?: CloverWallet;\n}\n\ndeclare const window: CloverWalletWindow;\n\nexport interface CloverWalletAdapterConfig {}\n\nexport const CloverWalletName = 'Clover' as WalletName<'Clover'>;\n\nexport class CloverWalletAdapter extends BaseMessageSignerWalletAdapter {\n name = CloverWalletName;\n url = 'https://clover.finance';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNzQiIGhlaWdodD0iNzQiIHZpZXdCb3g9IjAgMCA3NCA3NCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTczLjg5NDcgMTguNTc4OEM3My44OTQ3IDI4Ljc4MTUgNjUuNjIzOCAzNy4wNTI1IDU1LjQyMTEgMzcuMDUyNUM0NS4yNTczIDM3LjA1MjUgMzcuMDEwNiAyOC44NDQ2IDM2Ljk0NzcgMTguNjk1NkMzNi44ODUzIDI4LjgxMyAyOC42ODk5IDM3LjAwMTUgMTguNTY5OSAzNy4wNTI3QzI4LjcyODQgMzcuMTA0NSAzNi45NDc0IDQ1LjM1NTUgMzYuOTQ3NCA1NS41MjYyQzM2Ljk0NzQgNjUuNzI4OSAyOC42NzY0IDczLjk5OTggMTguNDczNyA3My45OTk4QzguMjcwOTUgNzMuOTk5OCAwIDY1LjcyODkgMCA1NS41MjYyQzAgNDUuMzU1MyA4LjIxOTM5IDM3LjEwNDEgMTguMzc4MiAzNy4wNTI3QzguMjE5NzIgMzcuMDAwOSAwLjAwMDcxOTU3MiAyOC43NDk5IDAuMDAwNzE5NTcyIDE4LjU3OTNDMC4wMDA3MTk1NzIgOC4zNzY1NCA4LjI3MTY3IDAuMTA1NTkxIDE4LjQ3NDQgMC4xMDU1OTFDMjguNjM4MiAwLjEwNTU5MSAzNi44ODQ5IDguMzEzNDggMzYuOTQ3NyAxOC40NjI1QzM3LjAxMDMgOC4zMTMyNiA0NS4yNTcxIDAuMTA1MTAzIDU1LjQyMTEgMC4xMDUxMDNDNjUuNjIzOCAwLjEwNTEwMyA3My44OTQ3IDguMzc2MDUgNzMuODk0NyAxOC41Nzg4Wk01NS40MjExIDM3LjA1MjVDNDUuMjE4MyAzNy4wNTI1IDM2Ljk0NzQgNDUuMzIzNCAzNi45NDc0IDU1LjUyNjJDMzYuOTQ3NCA2NS43Mjg5IDQ1LjIxODMgNzMuOTk5OCA1NS40MjExIDczLjk5OThDNjUuNjIzOCA3My45OTk4IDczLjg5NDcgNjUuNzI4OSA3My44OTQ3IDU1LjUyNjJDNzMuODk0NyA0NS4zMjM0IDY1LjYyMzggMzcuMDUyNSA1NS40MjExIDM3LjA1MjVaIiBmaWxsPSIjMjdBNTc3Ii8+PC9zdmc+Cg==';\n\n private _connecting: boolean;\n private _wallet: CloverWallet | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(config: CloverWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window.clover_solana?.isCloverWallet) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window!.clover_solana!;\n\n let account: string;\n try {\n account = await wallet.getAccount();\n } catch (error: any) {\n throw new WalletAccountError(error?.message, error);\n }\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(account);\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n if (this._wallet) {\n this._wallet = null;\n this._publicKey = null;\n }\n\n this.emit('disconnect');\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signTransaction(transaction)) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signAllTransactions(transactions)) || transactions;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signMessage(message: Uint8Array): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const { signature } = await wallet.signMessage(message);\n return Uint8Array.from(signature);\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import {\n BaseSignerWalletAdapter,\n scopePollingDetectionStrategy,\n WalletAccountError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { PublicKey, Transaction } from '@solana/web3.js';\n\ninterface CoinhubWallet {\n isCoinhubWallet?: boolean;\n getAccount(): Promise;\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transactions: Transaction[]): Promise;\n}\n\ninterface CoinhubWalletWindow extends Window {\n coinhub?: CoinhubWallet;\n}\n\ndeclare const window: CoinhubWalletWindow;\n\nexport interface CoinhubWalletAdapterConfig {}\n\nexport const CoinhubWalletName = 'Coinhub' as WalletName<'Coinhub'>;\n\nexport class CoinhubWalletAdapter extends BaseSignerWalletAdapter {\n name = CoinhubWalletName;\n url = 'https://coinhub.org';\n icon =\n 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTAwcHgiIGhlaWdodD0iMTAwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPHRpdGxlPuefqeW9ojwvdGl0bGU+CiAgICA8ZyBpZD0i6aG16Z2iLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSLkuIvovb3pobVpb3MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMzguMDAwMDAwLCAtOTQuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJDb2luaHViLSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM4LjAwMDAwMCwgOTQuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0i55+p5b2iIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCI+PC9yZWN0PgogICAgICAgICAgICAgICAgPGcgaWQ9Iue8lue7hCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMy4zMzMzMzMsIDMuMzMzMzMzKSIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNTcuOTU2MzU0Miw0MC43MDQ2MzE2IEM1Ny45NTYzNTQyLDQwLjcwNDYzMTYgNjIuNzc2ODc1LDU2LjM0NTIxMDUgODEuNjE1OTg5Niw1OC41MTY2ODQyIEM4NC43MzEzNTQyLDU4Ljg3NTUyNjMgODguMjYwNTIwOCw1OS4yNjM4NDIxIDkxLjg2ODQzNzUsNTguMTg4MDUyNiBDOTIuMDIyMjkxNyw1OC4xOTc2MzE2IDkyLjE3MjUsNTguMjQwNzM2OCA5Mi4zMDgxMjUsNTguMzE0MDUyNiBDOTIuNDQ0MTE0Niw1OC4zODczNjg0IDkyLjU2Mjk2ODgsNTguNDg5MDUyNiA5Mi42NTY2NjY3LDU4LjYxMjg0MjEgQzkyLjc1LDU4LjczNjYzMTYgOTIuODE1OTg5Niw1OC44Nzk1Nzg5IDkyLjg1MDI2MDQsNTkuMDMxMzY4NCBDOTIuODg0NTMxMyw1OS4xODMxNTc5IDkyLjg4NTYyNSw1OS4zNDA0NzM3IDkyLjg1NDI3MDgsNTkuNDkzIEM5Mi4zMjM4MDIxLDYzLjE1MTc4OTUgOTEuMTIzNTkzNyw2Ni42Nzg2ODQyIDg5LjMxNTI2MDQsNjkuODkzNTI2MyBDODQuNzQxMTk3OSw3OC4xMTE4OTQ3IDc0LjY5NTQ2ODgsODguOTgwNjg0MiA1Mi4wMTE4MjI5LDkyLjgwNiBDNTAuODA5MDYyNSw5Mi44MDYgNDguNDMzMDcyOSw5MS43NDAxNTc5IDQ3LjMyOTExNDYsOTEuOTI5NTI2MyBDNDcuMzI5MTE0Niw5MS45MDkyNjMyIDE5Ljk3MjUzMTIsNjcuNjUyMDUyNiA1Ny45NTYzNTQyLDQwLjcwNDYzMTYgWiIgaWQ9Iui3r+W+hCIgZmlsbD0iI0NGQkZBMyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Mi4wMTE0NTgzLDkyLjgwNiBDNTIuMDExNDU4Myw5Mi44MDYgMzIuMTk2NSw2NC4xNzUyNjMyIDYzLjMwOTE2NjcsNDkuNTExIEw1OS40MzQ3Mzk2LDQ0LjQxMDU3ODkgQzU5LjQzNDczOTYsNDQuNDEwNTc4OSAxOS4xNDQxOTc5LDY1LjE5MTM2ODQgNTIuMDExNDU4Myw5Mi44MDYgWiIgaWQ9Iui3r+W+hCIgZmlsbD0iI0I5QTc5OCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik05Mi44NTQ2MzU0LDU5LjUzMzE1NzkgQzkyLjIzOTU4MzMsNjMuMzYxMDUyNiA5MC45NDAyMDgzLDY3LjA0Mzc4OTUgODkuMDE5OTQ3OSw3MC40MDE1Nzg5IEw4My4yNjI0NDc5LDU4LjY5NjEwNTMgQzg1LjkzMDEwNDIsNTkuMDU0OTQ3NCA4OC42Mzk2ODc1LDU4LjkxNjQyMTEgOTEuMjU3NzYwNCw1OC4yODc4OTQ3IEM5Mi41MDk3Mzk2LDU3Ljk5OTA1MjYgOTMuMDUxODc1LDU4LjQxNzIxMDUgOTIuODU0NjM1NCw1OS41MzMxNTc5IFoiIGlkPSLot6/lvoQiIGZpbGw9IiM4QzY3NDIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNTkuNzk5Njg3NSw2Ny41MzIzMTU4IEM2Mi4wMTU2MjUsNjcuNTMyMzE1OCA2My44MTE5MjcxLDY1LjcxNzEwNTMgNjMuODExOTI3MSw2My40Nzc4NDIxIEM2My44MTE5MjcxLDYxLjIzODU3ODkgNjIuMDE1NjI1LDU5LjQyMzM2ODQgNTkuNzk5Njg3NSw1OS40MjMzNjg0IEM1Ny41ODM3NSw1OS40MjMzNjg0IDU1Ljc4NzQ0NzksNjEuMjM4NTc4OSA1NS43ODc0NDc5LDYzLjQ3Nzg0MjEgQzU1Ljc4NzQ0NzksNjUuNzE3MTA1MyA1Ny41ODM3NSw2Ny41MzIzMTU4IDU5Ljc5OTY4NzUsNjcuNTMyMzE1OCBaIiBpZD0i6Lev5b6EIiBmaWxsPSIjMjIyMjIyIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTYwLjU1OTExNDYsNi44MTQwMjEwNSBMNjMuODkxMDQxNywxLjI3NTEzNDc0IEM1OC4yNzI4MTI1LDIuMjE4NjEzMTYgNTIuNzc3MDgzMywzLjc5NTg0MjExIDQ3LjUwNjY2NjcsNS45NzcxODk0NyBDNDYuMTIzODAyMSw2LjEwODQ5NDc0IDQ0Ljc0ODU5MzcsNi4zMTEzMTA1MyA0My4zODYxNDU4LDYuNTg0ODYzMTYgTDUwLjA2MDIwODMsMy40NjI0NjIyOWUtMTMgQzQzLjQ2MzA3MjksMS42MzEzMDk0NyAzNy40ODkzNzUsNS4xOTM3NDIxMSAzMi44ODcwNTczLDEwLjI0MDkyNjMgQzMyLjIwNjgxNzcsMTAuNTc5NjUyNiAzMS41MzY0NTgzLDEwLjk0ODI1NzkgMzAuOTE1MzkwNiwxMS4zMzY3NTc5IEwzNi4xNTAxMTQ2LDEuNTkzOTI1NzkgQzI5LjA0OTE5NzksNS40NjMyNDIxMSAyMy40ODAzMzMzLDExLjY4MTYzNjggMjAuMzc2OTYzNSwxOS4yMDY3NDc0IEwyMy42MTA0NTMxLDcuODUwMDU3ODkgQzIzLjYxMDQ1MzEsNy44NTAwNTc4OSAxNS40Mzc5ODk2LDE0LjEwNjIxNTggMTMuOTg4ODQzNywyOS41MzczNDc0IEMxMy44MDE1MjA4LDI5LjkxNTkgMTMuNjE0MTk3OSwzMC4yOTQ0NTI2IDEzLjQzNjc1NTIsMzAuNjgyOTUyNiBMMTIuNTQ5NTQxNywxNi44NTU3MDUzIEMxMi41NDk1NDE3LDE2Ljg1NTcwNTMgNC42MDM4MTI1LDI5LjY1Njg2MzIgOS43MTAzNDg5Niw0NC4xMzE2ODQyIEw0LjE2MDE4NzUsMzAuMTg0ODQ3NCBDNC4xNjAxODc1LDMwLjE4NDg0NzQgMC43MTk2NTEwNDIsNDEuMTQzMDUyNiA5LjA4OTI4MTI1LDU1LjM0OSBMLTIuNzYzMjIxNzVlLTE0LDQ0LjcwOTM2ODQgQy0yLjc2MzIyMTc1ZS0xNCw0NC43MDkzNjg0IDAuODc3MzgwNzI5LDYzLjA2OTI2MzIgMTEuMjY3OTU4Myw3My4wMDE1MjYzIEMxMS4yNjc5NTgzLDczLjAwMTUyNjMgMTUuMDA0MjA4Myw3MS44NzYgMTcuMzAxMTkyNyw3NC41NDU1Nzg5IEMyMC45NjAyMjQsNzkuOTIzNDIxMSAyNS44MDI5NDc5LDg0LjM3MSAzMS40NDkxNzcxLDg3LjUzOTQyMTEgQzM3LjA5NTI2MDQsOTAuNzA3NDczNyA0My4zOTE2MTQ2LDkyLjUxMDUyNjMgNDkuODQzMjgxMiw5Mi44MDYgQzUwLjM4NTQxNjcsOTIuODA2IDUxLjQ2OTY4NzUsOTIuODA2IDUxLjQ2OTY4NzUsOTIuODA2IEM1MS40Njk2ODc1LDkyLjgwNiAzMi4xODcwOTM3LDc1Ljk4MDIxMDUgNTAuNzY5Njg3NSw1MS45NjE3MzY4IEM2OS4zNjIzNDM3LDI5Ljg1NjEwNTMgOTMuMzg2OTI3MSw0NS4yMjczNjg0IDkzLjE2MDE1NjIsNDMuMjQ0ODk0NyBDOTIuMDM3NjA0MiwzNC41NDI2Nzg5IDg4LjMxNTU3MjksMjYuMzkzMjA1MyA4Mi40OTA2MjUsMTkuODgzOTc4OSBDNzYuNjY1Njc3MSwxMy4zNzQ3NTI2IDY5LjAxNDg5NTgsOC44MTUzMjEwNSA2MC41NTkxMTQ2LDYuODE0MDIxMDUgTDYwLjU1OTExNDYsNi44MTQwMjEwNSBaIiBpZD0i6Lev5b6EIiBmaWxsPSIjMjJBMDc5Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQzLjM0NjQwNjMsNzguNTgwMTU3OSBDNDMuMzQ2NDA2Myw3OC41ODAxNTc5IDIyLjA2MjQzMjMsODYuMDgxNTc4OSAyLjI4NjgzNDM4LDU3LjAzMjMxNTggQzQuNDA4MTc3MDgsNjQuNjU0MjEwNSA4LjIwNjE1MTA0LDcxLjY5MzI2MzIgMTMuMzk3MDUyMSw3Ny42MjM3MzY4IEMyMC42MjMxMzAyLDg2LjAyMTg5NDcgMzQuOTc2NzM5Niw5My4zMTQwNTI2IDUyLjAxMTgyMjksOTIuNzg2MTA1MyBDNDkuOTUzNzUsOTEuMTc5NDIxMSA0OC4yMzcyOTE3LDg5LjE3MDQyMTEgNDYuOTY0MTY2Nyw4Ni44Nzg0NzM3IEM0NS40OTM4MDIxLDg0LjIzOCA0NC4yODE5MjcxLDgxLjQ1OSA0My4zNDY0MDYzLDc4LjU4MDE1NzkgTDQzLjM0NjQwNjMsNzguNTgwMTU3OSBaIiBpZD0i6Lev5b6EIiBmaWxsPSIjMUI4MDYxIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==';\n\n private _connecting: boolean;\n private _wallet: CoinhubWallet | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(config: CoinhubWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window.coinhub?.isCoinhubWallet) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window!.coinhub!;\n\n let account: string;\n try {\n account = await wallet.getAccount();\n } catch (error: any) {\n throw new WalletAccountError(error?.message, error);\n }\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(account);\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n if (this._wallet) {\n this._wallet = null;\n this._publicKey = null;\n }\n\n this.emit('disconnect');\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return wallet.signTransaction(transaction);\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return wallet.signAllTransactions(transactions);\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import {\n BaseMessageSignerWalletAdapter,\n EventEmitter,\n scopePollingDetectionStrategy,\n SendTransactionOptions,\n WalletAccountError,\n WalletConnectionError,\n WalletDisconnectedError,\n WalletDisconnectionError,\n WalletError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignMessageError,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { Connection, PublicKey, SendOptions, Transaction, TransactionSignature } from '@solana/web3.js';\n\ninterface ExodusWalletEvents {\n connect(...args: unknown[]): unknown;\n disconnect(...args: unknown[]): unknown;\n}\n\ninterface ExodusWallet extends EventEmitter {\n isExodus: boolean;\n publicKey?: { toBytes(): Uint8Array };\n isConnected: boolean;\n connect(): Promise;\n disconnect(): Promise;\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transactions: Transaction[]): Promise;\n signAndSendTransaction(\n transaction: Transaction,\n options?: SendOptions\n ): Promise<{ signature: TransactionSignature }>;\n signMessage(message: Uint8Array): Promise<{ signature: Uint8Array }>;\n}\n\ninterface ExodusWindow extends Window {\n exodus?: {\n solana?: ExodusWallet;\n };\n}\n\ndeclare const window: ExodusWindow;\n\nexport interface ExodusWalletAdapterConfig {}\n\nexport const ExodusWalletName = 'Exodus' as WalletName<'Exodus'>;\n\nexport class ExodusWalletAdapter extends BaseMessageSignerWalletAdapter {\n name = ExodusWalletName;\n url = 'https://www.exodus.com/browser-extension';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIyIiBoZWlnaHQ9IjEyNCIgdmlld0JveD0iMCAwIDEyMiAxMjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxtYXNrIGlkPSJtYXNrMF8zMF8xMTAiIHN0eWxlPSJtYXNrLXR5cGU6YWxwaGEiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjAiIHk9IjAiIHdpZHRoPSIxMjIiIGhlaWdodD0iMTI0Ij4KPHBhdGggZD0iTTEyMS43ODcgMzQuODMzMUw2OS4zODc2IDAuNDc2NTYyVjE5LjY4NTVMMTAzLjAwMiA0MS41Mjg4TDk5LjA0NzQgNTQuMDQySDY5LjM4NzZWNjkuOTU4SDk5LjA0NzRMMTAzLjAwMiA4Mi40NzEyTDY5LjM4NzYgMTA0LjMxNFYxMjMuNTIzTDEyMS43ODcgODkuMjc2N0wxMTMuMjE4IDYyLjA1NDlMMTIxLjc4NyAzNC44MzMxWiIgZmlsbD0iIzFEMUQxQiIvPgo8cGF0aCBkPSJNMjMuNzk5MyA2OS45NThINTMuMzQ5M1Y1NC4wNDJIMjMuNjg5NEwxOS44NDQ2IDQxLjUyODhMNTMuMzQ5MyAxOS42ODU1VjAuNDc2NTYyTDAuOTUwMTk1IDM0LjgzMzFMOS41MTg2IDYyLjA1NDlMMC45NTAxOTUgODkuMjc2N0w1My40NTkxIDEyMy41MjNWMTA0LjMxNEwxOS44NDQ2IDgyLjQ3MTJMMjMuNzk5MyA2OS45NThaIiBmaWxsPSIjMUQxRDFCIi8+CjwvbWFzaz4KPGcgbWFzaz0idXJsKCNtYXNrMF8zMF8xMTApIj4KPHBhdGggZD0iTTEyMS43ODcgMzQuODMzMUw2OS4zODc2IDAuNDc2NTYyVjE5LjY4NTVMMTAzLjAwMiA0MS41Mjg4TDk5LjA0NzQgNTQuMDQySDY5LjM4NzZWNjkuOTU4SDk5LjA0NzRMMTAzLjAwMiA4Mi40NzEyTDY5LjM4NzYgMTA0LjMxNFYxMjMuNTIzTDEyMS43ODcgODkuMjc2N0wxMTMuMjE4IDYyLjA1NDlMMTIxLjc4NyAzNC44MzMxWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTIzLjc5OTMgNjkuOTU4SDUzLjM0OTNWNTQuMDQySDIzLjY4OTRMMTkuODQ0NiA0MS41Mjg4TDUzLjM0OTMgMTkuNjg1NVYwLjQ3NjU2MkwwLjk1MDE5NSAzNC44MzMxTDkuNTE4NiA2Mi4wNTQ5TDAuOTUwMTk1IDg5LjI3NjdMNTMuNDU5MSAxMjMuNTIzVjEwNC4zMTRMMTkuODQ0NiA4Mi40NzEyTDIzLjc5OTMgNjkuOTU4WiIgZmlsbD0id2hpdGUiLz4KPHJlY3QgeD0iMS4xMDYzMiIgeT0iMC40NzY1NjIiIHdpZHRoPSIxMzMuNzQ0IiBoZWlnaHQ9IjEzNi4wODUiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8zMF8xMTApIi8+CjxlbGxpcHNlIGN4PSI4LjQzMTc2IiBjeT0iMjcuNDYwMiIgcng9IjExNy42MzkiIHJ5PSIxMjcuNTQ1IiB0cmFuc2Zvcm09InJvdGF0ZSgtMzMuOTMwMyA4LjQzMTc2IDI3LjQ2MDIpIiBmaWxsPSJ1cmwoI3BhaW50MV9yYWRpYWxfMzBfMTEwKSIvPgo8L2c+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMzBfMTEwIiB4MT0iMTA1LjA4NCIgeTE9IjEzMi41OTQiIHgyPSI2OS44NDM5IiB5Mj0iLTEyLjI3NjUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzBCNDZGOSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNCQkZCRTAiLz4KPC9saW5lYXJHcmFkaWVudD4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDFfcmFkaWFsXzMwXzExMCIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSg4LjQzMTc1IDI3LjQ2MDIpIHJvdGF0ZSg3Mi4yNTU3KSBzY2FsZSg5Ni40OTc5IDkwLjQ1NDMpIj4KPHN0b3Agb2Zmc2V0PSIwLjExOTc5MiIgc3RvcC1jb2xvcj0iIzg5NTJGRiIgc3RvcC1vcGFjaXR5PSIwLjg3Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0RBQkRGRiIgc3RvcC1vcGFjaXR5PSIwIi8+CjwvcmFkaWFsR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==';\n\n private _connecting: boolean;\n private _wallet: ExodusWallet | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(config: ExodusWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window.exodus?.solana) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get connected(): boolean {\n return !!this._wallet?.isConnected;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window!.exodus!.solana!;\n\n if (!wallet.isConnected) {\n try {\n await new Promise((resolve, reject) => {\n const connect = () => {\n wallet.off('connect', connect);\n resolve();\n };\n\n wallet.on('connect', connect);\n\n wallet.connect().catch((reason: any) => {\n wallet.off('connect', connect);\n reject(reason);\n });\n });\n } catch (error: any) {\n if (error instanceof WalletError) throw error;\n throw new WalletConnectionError(error?.message, error);\n }\n }\n\n if (!wallet.publicKey) throw new WalletAccountError();\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(wallet.publicKey.toBytes());\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n wallet.on('disconnect', this._disconnected);\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n try {\n await wallet.disconnect();\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n }\n }\n\n this.emit('disconnect');\n }\n\n async sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise {\n try {\n const wallet = this._wallet;\n // HACK: Exodus doesn't handle partial signers, so if they are provided, don't use `signAndSendTransaction`\n if (wallet && 'signAndSendTransaction' in wallet && !options?.signers) {\n const { signature } = await wallet.signAndSendTransaction(transaction, options);\n return signature;\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n\n return await super.sendTransaction(transaction, connection, options);\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return await wallet.signTransaction(transaction);\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return await wallet.signAllTransactions(transactions);\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signMessage(message: Uint8Array): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const { signature } = await wallet.signMessage(message);\n return signature;\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n private _disconnected = () => {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n this.emit('error', new WalletDisconnectedError());\n this.emit('disconnect');\n }\n };\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import { Connection, Transaction, TransactionSignature } from '@solana/web3.js';\nimport { BaseWalletAdapter, SendTransactionOptions, WalletAdapter } from './adapter';\nimport { WalletError, WalletSendTransactionError } from './errors';\n\nexport interface SignerWalletAdapterProps {\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transaction: Transaction[]): Promise;\n}\n\nexport type SignerWalletAdapter = WalletAdapter & SignerWalletAdapterProps;\n\nexport abstract class BaseSignerWalletAdapter extends BaseWalletAdapter implements SignerWalletAdapter {\n async sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options: SendTransactionOptions = {}\n ): Promise {\n let emit = true;\n try {\n try {\n transaction.feePayer = transaction.feePayer || this.publicKey || undefined;\n transaction.recentBlockhash =\n transaction.recentBlockhash || (await connection.getRecentBlockhash('finalized')).blockhash;\n\n const { signers, ...sendOptions } = options;\n\n signers?.length && transaction.partialSign(...signers);\n\n transaction = await this.signTransaction(transaction);\n\n const rawTransaction = transaction.serialize();\n\n return await connection.sendRawTransaction(rawTransaction, sendOptions);\n } catch (error: any) {\n // If the error was thrown by `signTransaction`, rethrow it and don't emit a duplicate event\n if (error instanceof WalletError) {\n emit = false;\n throw error;\n }\n throw new WalletSendTransactionError(error?.message, error);\n }\n } catch (error: any) {\n if (emit) {\n this.emit('error', error);\n }\n throw error;\n }\n }\n\n abstract signTransaction(transaction: Transaction): Promise;\n abstract signAllTransactions(transaction: Transaction[]): Promise;\n}\n\nexport interface MessageSignerWalletAdapterProps {\n signMessage(message: Uint8Array): Promise;\n}\n\nexport type MessageSignerWalletAdapter = WalletAdapter & MessageSignerWalletAdapterProps;\n\nexport abstract class BaseMessageSignerWalletAdapter\n extends BaseSignerWalletAdapter\n implements MessageSignerWalletAdapter\n{\n abstract signMessage(message: Uint8Array): Promise;\n}\n","import {\n BaseMessageSignerWalletAdapter,\n EventEmitter,\n scopePollingDetectionStrategy,\n SendTransactionOptions,\n WalletAccountError,\n WalletAdapterNetwork,\n WalletConnectionError,\n WalletDisconnectedError,\n WalletDisconnectionError,\n WalletError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignMessageError,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { Connection, PublicKey, SendOptions, Transaction, TransactionSignature } from '@solana/web3.js';\n\ninterface GlowWalletEvents {\n connect(...args: unknown[]): unknown;\n disconnect(...args: unknown[]): unknown;\n}\n\ninterface GlowWallet extends EventEmitter {\n isGlow?: boolean;\n publicKey?: { toBytes(): Uint8Array };\n isConnected: boolean;\n signTransaction(transaction: Transaction, network?: WalletAdapterNetwork | null): Promise;\n signAllTransactions(transactions: Transaction[], network?: WalletAdapterNetwork | null): Promise;\n signAndSendTransaction(\n transaction: Transaction,\n options?: SendOptions & { network?: WalletAdapterNetwork | null }\n ): Promise<{ signature: TransactionSignature }>;\n signMessage(message: Uint8Array): Promise<{ signature: Uint8Array }>;\n connect(): Promise;\n disconnect(): Promise;\n}\n\ninterface GlowWindow extends Window {\n glowSolana?: GlowWallet;\n}\n\ndeclare const window: GlowWindow;\n\nexport interface GlowWalletAdapterConfig {\n network?: WalletAdapterNetwork;\n}\n\nexport const GlowWalletName = 'Glow' as WalletName<'Glow'>;\n\nexport class GlowWalletAdapter extends BaseMessageSignerWalletAdapter {\n name = GlowWalletName;\n url = 'https://glow.app';\n icon =\n 'data:image/png;base64,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';\n\n private _connecting: boolean;\n private _wallet: GlowWallet | null;\n private _publicKey: PublicKey | null;\n private _network: WalletAdapterNetwork | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(_config: GlowWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n this._network = _config.network ?? null;\n if (this._readyState !== WalletReadyState.Unsupported) {\n const handler = (event: MessageEvent) => {\n if (typeof event.data === 'object' && event.data.__glow_loaded) {\n if (this._readyState !== WalletReadyState.Installed) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n }\n window.removeEventListener('message', handler);\n }\n };\n\n window.addEventListener('message', handler);\n\n scopePollingDetectionStrategy(() => {\n if (window.glowSolana?.isGlow) {\n window.removeEventListener('message', handler);\n if (this._readyState !== WalletReadyState.Installed) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n }\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get connected(): boolean {\n return !!this._wallet?.isConnected;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window!.glowSolana!;\n\n try {\n await wallet.connect();\n } catch (error: any) {\n if (error instanceof WalletError) {\n throw error;\n }\n throw new WalletConnectionError(error?.message, error);\n }\n\n if (!wallet.publicKey) {\n throw new WalletAccountError();\n }\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(wallet.publicKey.toBytes());\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n wallet.on('disconnect', this._disconnected);\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n try {\n await wallet.disconnect();\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n }\n }\n\n this.emit('disconnect');\n }\n\n async sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise {\n try {\n const wallet = this._wallet;\n const publicKey = this.publicKey;\n if (!wallet || !publicKey) throw new WalletNotConnectedError();\n\n // HACK: Glow doesn't handle partial signers, so if they are provided, don't use `signAndSendTransaction`\n if (wallet && 'signAndSendTransaction' in wallet && !options?.signers) {\n // TODO: update glow to fix this\n // HACK: Glow's `signAndSendTransaction` should always set these, but doesn't yet\n transaction.feePayer = transaction.feePayer || publicKey;\n transaction.recentBlockhash =\n transaction.recentBlockhash || (await connection.getRecentBlockhash('finalized')).blockhash;\n\n const { signature } = await wallet.signAndSendTransaction(transaction, {\n ...options,\n network: this._network,\n });\n return signature;\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n\n return await super.sendTransaction(transaction, connection, options);\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signTransaction(transaction, this._network)) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signAllTransactions(transactions, this._network)) || transactions;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signMessage(message: Uint8Array): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const { signature } = await wallet.signMessage(message);\n return signature;\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n private _disconnected = () => {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n this.emit('error', new WalletDisconnectedError());\n this.emit('disconnect');\n }\n };\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import {\n BaseMessageSignerWalletAdapter,\n EventEmitter,\n scopePollingDetectionStrategy,\n WalletAccountError,\n WalletConnectionError,\n WalletDisconnectedError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignMessageError,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { PublicKey, Transaction } from '@solana/web3.js';\n\ninterface HuobiWalletEvents {\n connect(...args: unknown[]): unknown;\n disconnect(...args: unknown[]): unknown;\n}\n\ninterface HuobiWallet extends EventEmitter {\n isHuobiWallet?: boolean;\n publicKey?: { toBytes(): Uint8Array };\n isConnected: boolean;\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transactions: Transaction[]): Promise;\n signMessage(message: Uint8Array): Promise<{ signature: Uint8Array }>;\n connect(): Promise;\n disconnect(): Promise;\n}\n\ninterface HuobiWalletWindow extends Window {\n huobiWallet?: HuobiWallet;\n}\n\ndeclare const window: HuobiWalletWindow;\n\nexport interface HuobiWalletAdapterConfig {}\n\nexport const HuobiWalletName = 'HuobiWallet' as WalletName<'HuobiWallet'>;\n\nexport class HuobiWalletAdapter extends BaseMessageSignerWalletAdapter {\n name = HuobiWalletName;\n url = 'https://www.huobiwallet.io';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjI0IiBoZWlnaHQ9IjIyNCIgdmlld0JveD0iMCAwIDIyNCAyMjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMCAwTDIyNCAwVjIyNEgwTDAgMFoiIGZpbGw9IiMyMTU3RTIiLz4KPHBhdGggZD0iTTEzMS4wNTkgODEuMTc3MUMxMzEuMDU5IDU3Ljc1MzEgMTE5LjQ1OCAzNy42MzE1IDExMC42MjUgMzEuMDcyOEMxMTAuNjI1IDMxLjA3MjggMTA5Ljk1MyAzMC43MDQyIDExMCAzMS42MjU4VjMxLjYyNThDMTA5LjI2NSA3Ni44MzAzIDg1Ljc2NzIgODkuMDg3NSA3Mi44MzggMTA1LjU4NEM0My4wMjQxIDE0My42NzcgNzAuNzU4NyAxODUuNDU2IDk4Ljk5MzUgMTkzLjEzNkMxMTQuNzk5IDE5Ny40NTIgOTUuMzUwOCAxODUuNDU2IDkyLjg0OTQgMTYwLjIzNUM4OS44MDA3IDEyOS43NDUgMTMxLjA1OSAxMDYuNDQ0IDEzMS4wNTkgODEuMTc3MVoiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8xMTAxXzEyNSkiLz4KPHBhdGggZD0iTTE0My41OTcgOTYuMzE3NEMxNDMuNDA5IDk2LjE5NDMgMTQzLjE1OCA5Ni4xMDIgMTQyLjk4NiA5Ni4zOTQzQzE0Mi40ODQgMTAyLjEwMiAxMzYuNTYgMTE0LjI4NiAxMjkuMDM3IDEyNS40ODZDMTAzLjU1MiAxNjMuNDU1IDExOC4wNjUgMTgxLjc2MiAxMjYuMjQ3IDE5MS42MzlDMTMwLjk0OSAxOTcuMzQ3IDEyNi4yNDcgMTkxLjYzOSAxMzguMDk2IDE4NS44MDhDMTUyLjczNSAxNzcuMDkyIDE2Mi4yMzQgMTYyLjAyIDE2My42NDMgMTQ1LjI3QzE2NS4yMzMgMTI2Ljc1OCAxNTcuNzk4IDEwOC42IDE0My41OTcgOTYuMzE3NFoiIGZpbGw9InVybCgjcGFpbnQxX2xpbmVhcl8xMTAxXzEyNSkiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8xMTAxXzEyNSIgeDE9IjEyMi40MDEiIHkxPSIyMDkuMjk1IiB4Mj0iMTc4LjY2MiIgeTI9IjExMC40NDciIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0Y3RjZGRiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IndoaXRlIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8xMTAxXzEyNSIgeDE9IjE1Ny44NjEiIHkxPSIyMDMuMTc3IiB4Mj0iMTg5LjAxNCIgeTI9IjE0MC4wMjIiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0Y3RjZGRiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IndoaXRlIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==';\n\n private _connecting: boolean;\n private _wallet: HuobiWallet | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(config: HuobiWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window.huobiWallet?.isHuobiWallet) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get connected(): boolean {\n return !!this._wallet?.isConnected;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window!.huobiWallet!;\n\n try {\n await wallet.connect();\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n\n if (!wallet.publicKey) throw new WalletAccountError();\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(wallet.publicKey.toBytes());\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n wallet.on('disconnect', this._disconnected);\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n this.emit('disconnect');\n }\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signTransaction(transaction)) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signAllTransactions(transactions)) || transactions;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signMessage(message: Uint8Array): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const { signature } = await wallet.signMessage(message);\n return signature;\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n private _disconnected = () => {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n this.emit('error', new WalletDisconnectedError());\n this.emit('disconnect');\n }\n };\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import { Connection, Transaction, TransactionSignature } from '@solana/web3.js';\nimport { BaseWalletAdapter, SendTransactionOptions, WalletAdapter } from './adapter';\nimport { WalletError, WalletSendTransactionError } from './errors';\n\nexport interface SignerWalletAdapterProps {\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transaction: Transaction[]): Promise;\n}\n\nexport type SignerWalletAdapter = WalletAdapter & SignerWalletAdapterProps;\n\nexport abstract class BaseSignerWalletAdapter extends BaseWalletAdapter implements SignerWalletAdapter {\n async sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options: SendTransactionOptions = {}\n ): Promise {\n let emit = true;\n try {\n try {\n transaction.feePayer = transaction.feePayer || this.publicKey || undefined;\n transaction.recentBlockhash =\n transaction.recentBlockhash || (await connection.getRecentBlockhash('finalized')).blockhash;\n\n const { signers, ...sendOptions } = options;\n\n signers?.length && transaction.partialSign(...signers);\n\n transaction = await this.signTransaction(transaction);\n\n const rawTransaction = transaction.serialize();\n\n return await connection.sendRawTransaction(rawTransaction, sendOptions);\n } catch (error: any) {\n // If the error was thrown by `signTransaction`, rethrow it and don't emit a duplicate event\n if (error instanceof WalletError) {\n emit = false;\n throw error;\n }\n throw new WalletSendTransactionError(error?.message, error);\n }\n } catch (error: any) {\n if (emit) {\n this.emit('error', error);\n }\n throw error;\n }\n }\n\n abstract signTransaction(transaction: Transaction): Promise;\n abstract signAllTransactions(transaction: Transaction[]): Promise;\n}\n\nexport interface MessageSignerWalletAdapterProps {\n signMessage(message: Uint8Array): Promise;\n}\n\nexport type MessageSignerWalletAdapter = WalletAdapter & MessageSignerWalletAdapterProps;\n\nexport abstract class BaseMessageSignerWalletAdapter\n extends BaseSignerWalletAdapter\n implements MessageSignerWalletAdapter\n{\n abstract signMessage(message: Uint8Array): Promise;\n}\n","import { Buffer } from 'buffer';\n\nif (typeof window !== 'undefined' && window.Buffer === undefined) {\n (window as any).Buffer = Buffer;\n}\n\nexport {};\n","import Transport, { StatusCodes, TransportStatusError } from '@ledgerhq/hw-transport';\nimport { PublicKey, Transaction } from '@solana/web3.js';\nimport './polyfills/index';\n\nexport function getDerivationPath(account?: number, change?: number): Buffer {\n const length = account !== undefined ? (change === undefined ? 3 : 4) : 2;\n const derivationPath = Buffer.alloc(1 + length * 4);\n\n let offset = derivationPath.writeUInt8(length, 0);\n offset = derivationPath.writeUInt32BE(harden(44), offset); // Using BIP44\n offset = derivationPath.writeUInt32BE(harden(501), offset); // Solana's BIP44 path\n\n if (account !== undefined) {\n offset = derivationPath.writeUInt32BE(harden(account), offset);\n if (change !== undefined) {\n derivationPath.writeUInt32BE(harden(change), offset);\n }\n }\n\n return derivationPath;\n}\n\nconst BIP32_HARDENED_BIT = (1 << 31) >>> 0;\n\nfunction harden(n: number): number {\n return (n | BIP32_HARDENED_BIT) >>> 0;\n}\n\nconst INS_GET_PUBKEY = 0x05;\nconst INS_SIGN_MESSAGE = 0x06;\n\nconst P1_NON_CONFIRM = 0x00;\nconst P1_CONFIRM = 0x01;\n\nconst P2_EXTEND = 0x01;\nconst P2_MORE = 0x02;\n\nconst MAX_PAYLOAD = 255;\n\nconst LEDGER_CLA = 0xe0;\n\n/** @internal */\nexport async function getPublicKey(transport: Transport, derivationPath: Buffer): Promise {\n const bytes = await send(transport, INS_GET_PUBKEY, P1_NON_CONFIRM, derivationPath);\n return new PublicKey(bytes);\n}\n\n/** @internal */\nexport async function signTransaction(\n transport: Transport,\n transaction: Transaction,\n derivationPath: Buffer\n): Promise {\n const paths = Buffer.alloc(1);\n paths.writeUInt8(1, 0);\n\n const message = transaction.serializeMessage();\n const data = Buffer.concat([paths, derivationPath, message]);\n\n return await send(transport, INS_SIGN_MESSAGE, P1_CONFIRM, data);\n}\n\nasync function send(transport: Transport, instruction: number, p1: number, data: Buffer): Promise {\n let p2 = 0;\n let offset = 0;\n\n if (data.length > MAX_PAYLOAD) {\n while (data.length - offset > MAX_PAYLOAD) {\n const buffer = data.slice(offset, offset + MAX_PAYLOAD);\n const response = await transport.send(LEDGER_CLA, instruction, p1, p2 | P2_MORE, buffer);\n // @ts-ignore\n if (response.length !== 2) throw new TransportStatusError(StatusCodes.INCORRECT_DATA);\n\n p2 |= P2_EXTEND;\n offset += MAX_PAYLOAD;\n }\n }\n\n const buffer = data.slice(offset);\n const response = await transport.send(LEDGER_CLA, instruction, p1, p2, buffer);\n\n return response.slice(0, response.length - 2);\n}\n","import type Transport from '@ledgerhq/hw-transport';\nimport type TransportWebHID from '@ledgerhq/hw-transport-webhid';\nimport {\n BaseSignerWalletAdapter,\n WalletConnectionError,\n WalletDisconnectedError,\n WalletDisconnectionError,\n WalletLoadError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { PublicKey, Transaction } from '@solana/web3.js';\nimport './polyfills/index';\nimport { getDerivationPath, getPublicKey, signTransaction } from './util';\n\nexport interface LedgerWalletAdapterConfig {\n derivationPath?: Buffer;\n}\n\nexport const LedgerWalletName = 'Ledger' as WalletName<'Ledger'>;\n\nexport class LedgerWalletAdapter extends BaseSignerWalletAdapter {\n name = LedgerWalletName;\n url = 'https://ledger.com';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzUgMzUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiI+PHBhdGggZD0ibTIzLjU4OCAwaC0xNnYyMS41ODNoMjEuNnYtMTZhNS41ODUgNS41ODUgMCAwIDAgLTUuNi01LjU4M3oiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUuNzM5KSIvPjxwYXRoIGQ9Im04LjM0MiAwaC0yLjc1N2E1LjU4NSA1LjU4NSAwIDAgMCAtNS41ODUgNS41ODV2Mi43NTdoOC4zNDJ6Ii8+PHBhdGggZD0ibTAgNy41OWg4LjM0MnY4LjM0MmgtOC4zNDJ6IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDUuNzM5KSIvPjxwYXRoIGQ9Im0xNS4xOCAyMy40NTFoMi43NTdhNS41ODUgNS41ODUgMCAwIDAgNS41ODUtNS42di0yLjY3MWgtOC4zNDJ6IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMS40NzggMTEuNDc4KSIvPjxwYXRoIGQ9Im03LjU5IDE1LjE4aDguMzQydjguMzQyaC04LjM0MnoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUuNzM5IDExLjQ3OCkiLz48cGF0aCBkPSJtMCAxNS4xOHYyLjc1N2E1LjU4NSA1LjU4NSAwIDAgMCA1LjU4NSA1LjU4NWgyLjc1N3YtOC4zNDJ6IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDExLjQ3OCkiLz48L2c+PC9zdmc+';\n\n private _derivationPath: Buffer;\n private _connecting: boolean;\n private _transport: Transport | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof navigator === 'undefined' || !navigator.hid ? WalletReadyState.Unsupported : WalletReadyState.Loadable;\n\n constructor(config: LedgerWalletAdapterConfig = {}) {\n super();\n this._derivationPath = config.derivationPath || getDerivationPath(0, 0);\n this._connecting = false;\n this._transport = null;\n this._publicKey = null;\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState === WalletReadyState.Unsupported) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n let TransportWebHIDClass: typeof TransportWebHID;\n try {\n ({ default: TransportWebHIDClass } = await import('@ledgerhq/hw-transport-webhid'));\n } catch (error: any) {\n throw new WalletLoadError(error?.message, error);\n }\n\n let transport: Transport;\n try {\n transport = await TransportWebHIDClass.create();\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n\n let publicKey: PublicKey;\n try {\n publicKey = await getPublicKey(transport, this._derivationPath);\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n transport.on('disconnect', this._disconnected);\n\n this._transport = transport;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const transport = this._transport;\n if (transport) {\n transport.off('disconnect', this._disconnected);\n\n this._transport = null;\n this._publicKey = null;\n\n try {\n await transport.close();\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n }\n }\n\n this.emit('disconnect');\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const transport = this._transport;\n const publicKey = this._publicKey;\n if (!transport || !publicKey) throw new WalletNotConnectedError();\n\n try {\n const signature = await signTransaction(transport, transaction, this._derivationPath);\n transaction.addSignature(publicKey, signature);\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n\n return transaction;\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const transport = this._transport;\n const publicKey = this._publicKey;\n if (!transport || !publicKey) throw new WalletNotConnectedError();\n\n try {\n const derivationPath = this._derivationPath;\n for (const transaction of transactions) {\n const signature = await signTransaction(transport, transaction, derivationPath);\n transaction.addSignature(publicKey, signature);\n }\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n\n return transactions;\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n private _disconnected = () => {\n const transport = this._transport;\n if (transport) {\n transport.off('disconnect', this._disconnected);\n\n this._transport = null;\n this._publicKey = null;\n\n this.emit('error', new WalletDisconnectedError());\n this.emit('disconnect');\n }\n };\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import {\n BaseSignerWalletAdapter,\n scopePollingDetectionStrategy,\n WalletAccountError,\n WalletDisconnectedError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { PublicKey, Transaction } from '@solana/web3.js';\n\ninterface MathWallet {\n isMathWallet?: boolean;\n getAccount(): Promise;\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transactions: Transaction[]): Promise;\n}\n\ninterface MathWalletWindow extends Window {\n solana?: MathWallet;\n}\n\ndeclare const window: MathWalletWindow;\n\nexport interface MathWalletAdapterConfig {}\n\nexport const MathWalletName = 'MathWallet' as WalletName<'MathWallet'>;\n\nexport class MathWalletAdapter extends BaseSignerWalletAdapter {\n name = MathWalletName;\n url = 'https://mathwallet.org';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDEyOCAxMjgiIHdpZHRoPSIxMjgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMCAwaDEyOHYxMjhoLTEyOHoiIG9wYWNpdHk9IjAiLz48cGF0aCBkPSJtOTAuODQ3MDA4NiA1Ny43NjEwMDIzYy0yLjI3NzAzNjMtMi4yNzcwMzYzLTIuMjc3MDM2My01Ljk2ODg0MTYgMC04LjI0NTg3NzggMi4yNzcwMzYyLTIuMjc3MDM2MyA1Ljk2ODg0MTUtMi4yNzcwMzYzIDguMjQ1ODc3OCAwIDIuMjc3MDM2NiAyLjI3NzAzNjIgMi4yNzcwMzY2IDUuOTY4ODQxNSAwIDguMjQ1ODc3OC0yLjI3NzAzNjMgMi4yNzcwMzYyLTUuOTY4ODQxNiAyLjI3NzAzNjItOC4yNDU4Nzc4IDB6bS0xOS41ODM5NTk4IDE5LjU4Mzk1OTdjLTEuNzA3Nzc3Mi0xLjcwNzc3NzItMS43MDc3NzcyLTQuNDc2NjMxMSAwLTYuMTg0NDA4M3M0LjQ3NjYzMTEtMS43MDc3NzcyIDYuMTg0NDA4MyAwIDEuNzA3Nzc3MiA0LjQ3NjYzMTEgMCA2LjE4NDQwODMtNC40NzY2MzExIDEuNzA3Nzc3Mi02LjE4NDQwODMgMHptMzAuOTIyMDQyMi0xMC4zMDczNDcyYy0xLjcwNzc3OC0xLjcwNzc3NzItMS43MDc3NzgtNC40NzY2MzEyIDAtNi4xODQ0MDg0IDEuNzA3Nzc3LTEuNzA3Nzc3MiA0LjQ3NjYzMS0xLjcwNzc3NzIgNi4xODQ0MDggMHMxLjcwNzc3NyA0LjQ3NjYzMTIgMCA2LjE4NDQwODQtNC40NzY2MzEgMS43MDc3NzcyLTYuMTg0NDA4IDB6bS0xMC4zMDczNDc3IDEwLjMwNzM0NzJjLTEuNzA3Nzc3Mi0xLjcwNzc3NzItMS43MDc3NzcyLTQuNDc2NjMxMSAwLTYuMTg0NDA4M3M0LjQ3NjYzMTEtMS43MDc3NzcyIDYuMTg0NDA4MyAwIDEuNzA3Nzc3MiA0LjQ3NjYzMTEgMCA2LjE4NDQwODMtNC40NzY2MzExIDEuNzA3Nzc3Mi02LjE4NDQwODMgMHptMjEuNjQ1NDI4Ny0xLjAzMDczNDdjLTEuMTM4NTE4LTEuMTM4NTE4MS0xLjEzODUxOC0yLjk4NDQyMDggMC00LjEyMjkzODkgMS4xMzg1MTktMS4xMzg1MTgxIDIuOTg0NDIxLTEuMTM4NTE4MSA0LjEyMjkzOSAwIDEuMTM4NTE5IDEuMTM4NTE4MSAxLjEzODUxOSAyLjk4NDQyMDggMCA0LjEyMjkzODktMS4xMzg1MTggMS4xMzg1MTgxLTIuOTg0NDIgMS4xMzg1MTgxLTQuMTIyOTM5IDB6bS0xMC4zMDczNDcgMTAuMzA3MzQ3MmMtMS4xMzg1MTgtMS4xMzg1MTgxLTEuMTM4NTE4LTIuOTg0NDIwNyAwLTQuMTIyOTM4OSAxLjEzODUxOC0xLjEzODUxODEgMi45ODQ0MjEtMS4xMzg1MTgxIDQuMTIyOTM5IDAgMS4xMzg1MTggMS4xMzg1MTgyIDEuMTM4NTE4IDIuOTg0NDIwOCAwIDQuMTIyOTM4OS0xLjEzODUxOCAxLjEzODUxODItMi45ODQ0MjEgMS4xMzg1MTgyLTQuMTIyOTM5IDB6bS0yMi42NzYxNjM3LTE4LjU1MzIyNWMtMi4yNzcwMzYzLTIuMjc3MDM2My0yLjI3NzAzNjMtNS45Njg4NDE1IDAtOC4yNDU4Nzc4czUuOTY4ODQxNS0yLjI3NzAzNjMgOC4yNDU4Nzc4IDAgMi4yNzcwMzYzIDUuOTY4ODQxNSAwIDguMjQ1ODc3OC01Ljk2ODg0MTUgMi4yNzcwMzYzLTguMjQ1ODc3OCAwem0wLTIwLjYxNDY5NDVjLTIuMjc3MDM2My0yLjI3NzAzNjMtMi4yNzcwMzYzLTUuOTY4ODQxNSAwLTguMjQ1ODc3OHM1Ljk2ODg0MTUtMi4yNzcwMzYzIDguMjQ1ODc3OCAwIDIuMjc3MDM2MyA1Ljk2ODg0MTUgMCA4LjI0NTg3NzgtNS45Njg4NDE1IDIuMjc3MDM2My04LjI0NTg3NzggMHptLTEwLjMwNzM0NzIgMTAuMzA3MzQ3M2MtMi4yNzcwMzYzLTIuMjc3MDM2My0yLjI3NzAzNjMtNS45Njg4NDE2IDAtOC4yNDU4Nzc4IDIuMjc3MDM2Mi0yLjI3NzAzNjMgNS45Njg4NDE1LTIuMjc3MDM2MyA4LjI0NTg3NzggMCAyLjI3NzAzNjIgMi4yNzcwMzYyIDIuMjc3MDM2MiA1Ljk2ODg0MTUgMCA4LjI0NTg3NzgtMi4yNzcwMzYzIDIuMjc3MDM2Mi01Ljk2ODg0MTYgMi4yNzcwMzYyLTguMjQ1ODc3OCAwem0tMjAuNzEwNTA2IDBjLTIuMjc3MDM2Mi0yLjI3NzAzNjMtMi4yNzcwMzYyLTUuOTY4ODQxNiAwLTguMjQ1ODc3OCAyLjI3NzAzNjMtMi4yNzcwMzYzIDUuOTY4ODQxNi0yLjI3NzAzNjMgOC4yNDU4Nzc4IDAgMi4yNzcwMzYzIDIuMjc3MDM2MiAyLjI3NzAzNjMgNS45Njg4NDE1IDAgOC4yNDU4Nzc4LTIuMjc3MDM2MiAyLjI3NzAzNjItNS45Njg4NDE1IDIuMjc3MDM2Mi04LjI0NTg3NzggMHptLTE5LjU4Mzk1OTcgMTkuNTgzOTU5N2MtMS43MDc3NzcyLTEuNzA3Nzc3Mi0xLjcwNzc3NzItNC40NzY2MzExIDAtNi4xODQ0MDgzczQuNDc2NjMxMS0xLjcwNzc3NzIgNi4xODQ0MDgzIDAgMS43MDc3NzcyIDQuNDc2NjMxMSAwIDYuMTg0NDA4My00LjQ3NjYzMTEgMS43MDc3NzcyLTYuMTg0NDA4MyAwem0zMC45MjIwNDE3LTEwLjMwNzM0NzJjLTEuNzA3Nzc3Mi0xLjcwNzc3NzItMS43MDc3NzcyLTQuNDc2NjMxMiAwLTYuMTg0NDA4NHM0LjQ3NjYzMTItMS43MDc3NzcyIDYuMTg0NDA4NCAwIDEuNzA3Nzc3MiA0LjQ3NjYzMTIgMCA2LjE4NDQwODQtNC40NzY2MzEyIDEuNzA3Nzc3Mi02LjE4NDQwODQgMHptLTEwLjMwNzM0NzIgMTAuMzA3MzQ3MmMtMS43MDc3NzcyLTEuNzA3Nzc3Mi0xLjcwNzc3NzItNC40NzY2MzExIDAtNi4xODQ0MDgzczQuNDc2NjMxMS0xLjcwNzc3NzIgNi4xODQ0MDgzIDAgMS43MDc3NzcyIDQuNDc2NjMxMSAwIDYuMTg0NDA4My00LjQ3NjYzMTEgMS43MDc3NzcyLTYuMTg0NDA4MyAwem0tNDAuMTk4NjU0My0xLjAzMDczNDdjLTEuMTM4NTE4MTMtMS4xMzg1MTgxLTEuMTM4NTE4MTMtMi45ODQ0MjA4IDAtNC4xMjI5Mzg5IDEuMTM4NTE4MS0xLjEzODUxODEgMi45ODQ0MjA4LTEuMTM4NTE4MSA0LjEyMjkzODkgMHMxLjEzODUxODEgMi45ODQ0MjA4IDAgNC4xMjI5Mzg5LTIuOTg0NDIwOCAxLjEzODUxODEtNC4xMjI5Mzg5IDB6bTEwLjMwNzM0NzMgMTAuMzA3MzQ3MmMtMS4xMzg1MTgyLTEuMTM4NTE4MS0xLjEzODUxODItMi45ODQ0MjA3IDAtNC4xMjI5Mzg5IDEuMTM4NTE4MS0xLjEzODUxODEgMi45ODQ0MjA3LTEuMTM4NTE4MSA0LjEyMjkzODggMCAxLjEzODUxODIgMS4xMzg1MTgyIDEuMTM4NTE4MiAyLjk4NDQyMDggMCA0LjEyMjkzODktMS4xMzg1MTgxIDEuMTM4NTE4Mi0yLjk4NDQyMDcgMS4xMzg1MTgyLTQuMTIyOTM4OCAwem00MS4yMjkzODg5IDBjLTEuMTM4NTE4MS0xLjEzODUxODEtMS4xMzg1MTgxLTIuOTg0NDIwNyAwLTQuMTIyOTM4OSAxLjEzODUxODItMS4xMzg1MTgxIDIuOTg0NDIwOC0xLjEzODUxODEgNC4xMjI5Mzg5IDAgMS4xMzg1MTgyIDEuMTM4NTE4MiAxLjEzODUxODIgMi45ODQ0MjA4IDAgNC4xMjI5Mzg5LTEuMTM4NTE4MSAxLjEzODUxODItMi45ODQ0MjA3IDEuMTM4NTE4Mi00LjEyMjkzODkgMHptLTQyLjI2MDEyMzctMTkuNTgzOTU5N2MtMS43MDc3NzcyLTEuNzA3Nzc3Mi0xLjcwNzc3NzItNC40NzY2MzEyIDAtNi4xODQ0MDg0czQuNDc2NjMxMi0xLjcwNzc3NzIgNi4xODQ0MDg0IDAgMS43MDc3NzcyIDQuNDc2NjMxMiAwIDYuMTg0NDA4NC00LjQ3NjYzMTIgMS43MDc3NzcyLTYuMTg0NDA4NCAwem0xOS41ODM5NTk4IDEuMDMwNzM0N2MtMi4yNzcwMzYzLTIuMjc3MDM2My0yLjI3NzAzNjMtNS45Njg4NDE1IDAtOC4yNDU4Nzc4czUuOTY4ODQxNS0yLjI3NzAzNjMgOC4yNDU4Nzc4IDAgMi4yNzcwMzYzIDUuOTY4ODQxNSAwIDguMjQ1ODc3OC01Ljk2ODg0MTUgMi4yNzcwMzYzLTguMjQ1ODc3OCAwem0wLTIwLjYxNDY5NDVjLTIuMjc3MDM2My0yLjI3NzAzNjMtMi4yNzcwMzYzLTUuOTY4ODQxNSAwLTguMjQ1ODc3OHM1Ljk2ODg0MTUtMi4yNzcwMzYzIDguMjQ1ODc3OCAwIDIuMjc3MDM2MyA1Ljk2ODg0MTUgMCA4LjI0NTg3NzgtNS45Njg4NDE1IDIuMjc3MDM2My04LjI0NTg3NzggMHptLTEwLjMwNzM0NzMgMTAuMzA3MzQ3M2MtMi4yNzcwMzYyLTIuMjc3MDM2My0yLjI3NzAzNjItNS45Njg4NDE2IDAtOC4yNDU4Nzc4IDIuMjc3MDM2My0yLjI3NzAzNjMgNS45Njg4NDE2LTIuMjc3MDM2MyA4LjI0NTg3NzggMCAyLjI3NzAzNjMgMi4yNzcwMzYyIDIuMjc3MDM2MyA1Ljk2ODg0MTUgMCA4LjI0NTg3NzgtMi4yNzcwMzYyIDIuMjc3MDM2Mi01Ljk2ODg0MTUgMi4yNzcwMzYyLTguMjQ1ODc3OCAweiIvPjwvZz48L3N2Zz4=';\n\n private _connecting: boolean;\n private _wallet: MathWallet | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(config: MathWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window.solana?.isMathWallet) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window!.solana!;\n\n let account: string;\n try {\n // @TODO: handle if popup is blocked\n account = await wallet.getAccount();\n } catch (error: any) {\n throw new WalletAccountError(error?.message, error);\n }\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(account);\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n window.addEventListener('message', this._messaged);\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n if (this._wallet) {\n window.removeEventListener('message', this._messaged);\n\n this._wallet = null;\n this._publicKey = null;\n }\n\n this.emit('disconnect');\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signTransaction(transaction)) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signAllTransactions(transactions)) || transactions;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n private _messaged = (event: MessageEvent) => {\n const data = event.data;\n if (data && data.origin === 'mathwallet_internal' && data.type === 'lockStatusChanged' && !data.payload) {\n this._disconnected();\n }\n };\n\n private _disconnected = () => {\n if (this._wallet) {\n window.removeEventListener('message', this._messaged);\n\n this._wallet = null;\n this._publicKey = null;\n\n this.emit('error', new WalletDisconnectedError());\n this.emit('disconnect');\n }\n };\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import {\n BaseMessageSignerWalletAdapter,\n EventEmitter,\n scopePollingDetectionStrategy,\n WalletAccountError,\n WalletConnectionError,\n WalletDisconnectedError,\n WalletDisconnectionError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignMessageError,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { PublicKey, Transaction } from '@solana/web3.js';\n\ninterface NekoWalletEvents {\n connect(...args: unknown[]): unknown;\n disconnect(...args: unknown[]): unknown;\n}\n\ninterface NekoWallet extends EventEmitter {\n isNeko?: boolean;\n publicKey?: { toBytes(): Uint8Array };\n isConnected: boolean;\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transactions: Transaction[]): Promise;\n signMessage(message: Uint8Array): Promise<{ signature: Uint8Array }>;\n connect(): Promise;\n disconnect(): Promise;\n}\n\ninterface NekoWalletWindow extends Window {\n neko?: NekoWallet;\n}\n\ndeclare const window: NekoWalletWindow;\n\nexport interface NekoWalletAdapterConfig {}\n\nexport const NekoWalletName = 'Neko (Mobile)' as WalletName<'Neko (Mobile)'>;\n\nexport class NekoWalletAdapter extends BaseMessageSignerWalletAdapter {\n name = NekoWalletName;\n url = 'https://nekowallet.com';\n icon =\n 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNDRweCIgaGVpZ2h0PSIyNjBweCIgdmlld0JveD0iMCAwIDI0NCAyNjAiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0NCAyNjAiIHhtbDpzcGFjZT0icHJlc2VydmUiPiAgPGltYWdlIGlkPSJpbWFnZTAiIHdpZHRoPSIyNDQiIGhlaWdodD0iMjYwIiB4PSIwIiB5PSIwIgogICAgaHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFQUUFBQUVFQ0FNQUFBQW9GT2xoQUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk4KQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQjQxQk1WRVVBQUFEL2Z5RC9jQ0QvZ0NyLwpmeXIvZ0VEL2dBRC9iU1QvY0JEM2JCajViUnI0YlJuNGJScjViaHI0YmhuNWJCbjRiaG40YlJyNmJodjNiQmo0YlJyM2NCajRiUm41CmJoci9jUno0Ynh2NWJocjNhQmovY3huNWJocjFhaHYzYkJyL2JSdjNiUnIyYkJ2M2JSdjRiQnI0YmhydmNDRDRiUm40YlJyM2NCajQKYmhmM2JSdjRieG4zYkJyM2JCbjRiQm41YlJyNWJScjRiQm4vZGgzNGJocjZhaHY0YXhuL2RTRDNiaHIzYlJqL2JCMzNhQmowYWh2MwpiUnIvYnhINGJCbjRiUnYvYnhENGJSbjZhaFg0YlJyMWJCbjRiUnI2YmhqNGJScjRiUm40YkJuNGJCcjNiUmo0YmhuNGJCcjRiUnI0CmJodjRiUnY5MnNiN3Y1cjVkaWo2bW1INnJYNzh5S245MGJqOHY1djd0b3o1aUVYKzQ5VCs3T1ArOXZILy8vLzVrVlA1ZGluN28zRDcKdG8zNnBIRDVpRWI1ZnpiKzdlTDdyWC81ZnpmLzl2SCs3ZVA3djV2KzdlSC8vLzcrNU5UN3BIRCs0OVA4dG8zOTJzWDZtMkw1ZnpqLwo5dkQ1Z0RqN3JYNzZwSEg4eUtqKzdPSC8vdjc4djVuNGRpbi85ZkQ4djVyNmlFYjd0b3Y5NDlQOHRveis1TlA5MExmNmtWUDRkeW42CmtWVDZtbUQ0ZGlqOTBiZis3T0Q3dFl2KzlmRDdtbUQ4dnBuOHRZdjgwYmo2bzNEOTVOVDZtbUw3bzNIKzl2RDZpRVg4ckgvNm0ySDcKcllEOTI4WDdtbUg4ckg3N3JIN1dKTE5MQUFBQVQzUlNUbE1BQUFBQUFBQUFBQkJBbjkvdno1QlFiOTlmUWQ0Z3YzOEJqODRnQVlBeApnQUh1a0dIUHpoQncvaUZQWUkrZ29JK2VyNzRCenpCd0FZQmdBU0V3N3hDUWp4QytNTEJRcjErdTNyK3VYNC9Pd0xqT0dBQUFBQUZpClMwZEVYM1BSVVMwQUFBQUpjRWhaY3dBQUN4TUFBQXNUQVFDYW5CZ0FBQUFIZEVsTlJRZm1CaHdHRkNaaGFHR2lBQUFPMTBsRVFWUjQKMnUyZCsyTVVWeFhIbDFacU5vWGF0QW1VaDRhdEJiYUNiVVNMSWxTMFZTeDlPTTAweXo2U3pTNGh6UVBMMGhwVEVaWUVBelZxMGFxawppbS8rVkdkMlp2WTVNK2Q3WnM2ZG05MzAreVBNenIyZm5Edm5mdStkZSsra1Vnd05wWWVmM0dQczJUdWM1dnhLb1hhbG43SXFaT3dkCi9vcXlJcDYyN3U5cTVCbmR2RGJ5c3lQTkNvMnFxZERZUHFOZCszVWpwNTQ3MEZHaGc0Y1VNSThZblJyV3pIeDR1S3RDbytMVVE5M00KdW1QOTJGZDdLalE2SkZ6R0FhTlhPdFBaNDEvenFkQzRiQmxqUGtVWSt6UkNIeG54cVZCR050VFArMEZyRFBXWHZ1NWJJZGxRditCYgp4b2cyYU45QUc4WlJ5VEtPR2Y0NnJvazVJTkJHVnJKOXB3T2c5MGpuUzB5N1h4d0pnSmJzdFlLZ3BmTWxLSi91eW9YK2htQXBKNEtnCnRZUjY5NHRCMWNtZUVDeG1QS2dVNDZRRzZNUGZES3lPWk10N0tiQVVRNEhqSlJRY2FNTjRXYkNjZmNIRkpPOVFRZ0p0VENRRG5iaEQKMmZWc1NHVWtPK3FSa0hLU0R2V1JzTXFNQ2haa2hDblpVQWY1RWtkWnVZTEdRcUgzSmdvZEdtaEpTNVlPaFRhU25Eb0tEN1NrSlNPZwpFM1FvZ1FiVWc1YXpaQ2ZDb1JNMG80RUcxSU9XczJUakJIUmlvUTd6SmRKLy8rZVRLeXBjWWI3RWtad2wreFpWVkVKbWxBNjBvQ1hiClI1YVZ6SHd3SFdqamxGaGhJMlJaaVRnVTN4blFMc2xaTXJxc1JNem90NzlEMXlNalZkZ3h1cXdrUWszNEVrZGlsdXdWQkZwOXFJOEEKVDVtY0pVc0RoYWszbzFDZ2pheFVpNk1NbWFNUnhRNEZDclNjSlJ1SG9CVTdGTXFBZXRDbmhjb2pEWmtqcFdhVUdtazBKV1hKYUVPbQpQdFNBTDNFMElWUWdiY2pjVUtzem80QUJkU1ZseWNDR3BkS013b0VXczJSb2Vlb2NDaDVvS1VzR0dUSkhxaHpLZDlFblRNeVNRWVpNCmFhZ3hYK0pDeXlRV3pKQ3BERFhtUzF4b21iODdac2hjcVRDam5FQkxXYkp4RHJRS004b0p0SlFsQXcyWkszbUhBaHBRVHpLV0REVmsKanNUTktHeEFYVTJJbElwM0YwcENqZnNTUnpLV2pQZUhsamFqREYvaVNNYVNNUXNWTnFQY1FCdVpKd1JLWlJneVY1SU9oUjFvR1V2RwpNV1NPSkIwS3c0QjYwQktQRjhlUWlZZWE1VXRjYUluU1dZWk1PdFFzWCtKQ1MxaXljVDYwOGIwelFqckFMMXZFa3ZFTTJUYVFoQ1hqCkdiSnRvQWtCYUhiNjFDMEpTOFpQSlpvbFljbDBNN0FsWU1uNGhreTNCQ3daMzVEcGxvQWxpMkRJZEVQSHQyUVJESmx1NlBpV2JGdzMKQXg4NnZpWHJPME1tWWNuNnpwQkpXTEsrTTJTV0pkc1Zrem5kZDRiTWNpZnB4Mkl4NzljTkVFblovZC9mSFJsNXFBL2J0cU9EWjZOUwpuK3ZEcHUxcDlPeVhJekUvc3lkKzJmcjA2dkVvRDNaL1BzNHRaZmZ6cWZ1ZDJhWitic2N4V3pwNW1NVThITC9FN2FCaERuV0VtZGZ0CnFXRzhoUTlFMjNaMEVzMW1BOFJzWlRPc3YzNWFkMFZscVk4anc0LytteDhpcU5PMEl4M3JZKy9wcjh4WmFrNTRhT0NZZ2RPckJxYXoKYXRkd2VESWJyQ1RtS1hzODdMRWU2K3VCVmJBeVowT2dCL0NCZG5RdzJLTU1raXZwMG5oUUF4K0xmMjlWZXJkZGs1T1Q3QnNFdnVBaQo5bSthb041ci9XUXFkeWxmc1A0cFh5emxwcm4xdEg4OFU1NnRkR3UyYkJaSzFjdE04SDMrR1p4NmExVUJOZWRWK29yWldkbkMvQlJjCngycHhoaWhtcHZnK2h6dDczTStpa0xZRWhWNXdrV2Q5L2krL0FNWFk5N2U5V3B5L2pGTm5maEFsaTRITVp1UGlwYUJxMDlqTGVReTUKZ1gxbEdhWWU3dzAxbmNYQWV0aXRlOG9NL3YrclMrRlJMc0xFYnJUUlJ1NXp3T1pMNUkvQVdsaVJYUDU1NkJVZmhEemFTM2lVUFYxRApnMzF5Tnp2UUlMUkpNbHM1S0lqNnNnbVYwYVhhRWwxNVd6M2RGaDFvRUhxT1pnNmtmcC8rcGI4K3dKcjQrU2U0Z1FhaEY0enJ3RlY1CnZ3SSs1RGR0VHg5QmFid3JnZjlRQ3JwZy9BSzZ6cWRGWWo4TUVQWmdkeVp3WktRQkZUNVh4U3A1dGFmbmlzVU14anJ6STRZWnc2R24KME1mU2xHV3VWRllBaEk0MU9OQjdhS1RrQWw3M2FzZk5meG1YMmNwbUFNTnJqek9IVjBqQkpieU9IYUZlalo3RG1rSjZydXpyVFdocwoyUlJRN3RVOG81SnR3NjdKcUgxVmh6NEdqUDA0SzQxQjBOVElxRU9sMXExalA5Q09nTWM2NDAzOWc5UDdNaFZyYWJGNTUxOEozUkZvCjRNMkZvK0NpUUdub1p2dVdhZHkyUHFZSDdPZGQ2QmZJSzlWQTMzQnYvR3U1VzVaSWl0SGRyS2t4Y2VpYnJFRFhrSXZvVUx1akRuUngKc3pqMExVNmdiODFEbDVHaGR2MEp1dVJWSExyZUNNc2tOcHk4dlFaZHRrNWkvTGdCamI3VmtJZHU5S3RZNnE3bHNLZWdWcVV3TXZaRApEVy9TRUlldTVlemIzc0d1clU0V29BdnpGRWJqb2Y2SlB1aDVBMDVqOWFsSnpPMlI3YnV4MndGZXVpOFBiZmRadjhHdXJSc0c1dXZyCnBCYzlqNDZ3bEVCWE5xeTdMbUdYV3BuK2hoRDBhNHc4aGtNWDBlazlDeHA4VWl0M0RRUHJzOGptYldjeWZJY2RERDEvandIOUNYYnAKQ2pyay9pM0pZV1V5ZkRFUkRyMkpRLzhPdk5TQy9qMXlYZTBQTlBUcmpNMW1NSFQxVXh3YXpHT1YreUQwSDJrT0szMlBLNEEyd0dIVApCa2hTYWZoMHhNWFFhY3l3SnhLQVdYNCtORGlCc29HUHNERG8rcDhRa0FuR3Zpc0dOSlpvYldpd3g4S2dNV2JqZ2dyb0JXTVpoa1puCkVoRm9rTms0eWxoUXhJQTJzTWxOV2VqUC9neUNqQ3FDeHV5SlpQT3Uvd1ZlMnpIS09QSUFocmF1eGV3Skk1RVZER00xK0g5cm4vMFYKV3RmaEtLc0lHck1uRzR3M0d5Vmo3VUhBUXpPYnorRXJlQlJDWS9hRVlVNHNlMkxGY25xdWFKYmIvN0g4b0xqRlhxdWxDaHF6Snd3YgphdW1xTi8rMU1MM1owSUovazZibkJoVkFOeWJ4SVh1eXdaenpYbHdpbjl5RlMrWXRiZENRUGJHaE9XKy9MSm56d2R6VFczbTc3ZC9YCkJnM1pFOFlrUXB0bThwZXFuZVJUMC9hS1NqZk4xVzVRSUNxZ1AyOWNqZGdUR3hyUFpKMHFtNlpaeU9kTmM2YmMrUjgxTXJHcGdIWmUKUENQMnhJYVdlNUhsaW55a0ZVSWo5bVFEdlpDam14cWhFWHZTZ0VaSDFLRG8xcTBFdXRDNEdyRW5EV2p3dFE0cXVuVXJnWGJmTVFEUAphZ1BhK0pza2MyMk9CbEVJRFhUQURyUm9LZ01DclFUNmpuTTVZRThjYU9QdmNzeElvSlZBdXhZWnNDY3V0T0JUalFSYUpUUmdUMXhvCnVRUU9wRzdGMEhUOFBHandkUzJ0MnhDSUNtalArOUt1b3dtOXhscUFGcWhiMkZ5Q0N1aDU5M3JhbmpTaFJaWkpWaDZDVTBZcW9XbDcKMG9LVzZLeHJINElnS3FCejNnL0kvcmNOV3NDQ2I2QWdLcUNiUzExSWU5SlJ6YmpVTUxOYWFITHBRR2M5NDFIanpHcWgvOEdzNkQragpJOVBUSllxaFd3YUJTc25kMFltOFJlbmhKb05aQ1hTcjQ2RHNTVStUWEgwUWlYbUY4WHBET1RSbHRIeWV3emwrc0djNVRWczk5TC80CjBNWXljMDY0Y3BQMVNrY1ZkT3NYbEQzeHo3Z3M3QUw3cFk1cWFNcWVCSFV6eTNtc2tjL2VZMGM1QVdnaVppRjk2MmFlR29PVWk2eVUKblJ3MFlVL0NEY1Z5cnZUQUxQdjhyRHlUTC9KZXprYUhIaGg5QWIxVDlBWDBUaEVIdXN5Ui95Mm10MHI1d2t6WlRzbmw4b3haS0FWYgppNm5wcldMZTlMbXo5YlBpcFdxTTVLMW16VW1sZDB1NEJWRXRtajJqcnFDNStlb1ZreHFoelJUSmZUbEpRM2VOQWFhMi9DRjhOeFJOClhTbGpoU3plNUkydVZFTjNOTnRxTVNoczlkNVdXbVVOT0ZhaWhGc1I5R0xiejZvaG8rcTczV1h3QjlUTXNiUkM2TmFPc09WUWlxNkYKUU9qcFZKMWlOM0pGME0zOFJCeEYxR20rbzg0V1hadkhJUlJDdTMvN1pXSytxSlpydi8rL295SGJvcmROcTRkMkZsVVpWYXF4dHI5awp2TXlkTWVuUVI1d21yZ2JhZVMxUEw0dGJiMk8rSG9mWmF1SzZsejQ3TTkvQWlSYXQweXBXWXpLenFOVkFnOHl0MThtWEJaYWQ0TlJLCm9HMFBpaXo1Ykw2V21Md2VuNWxCclFUYVlwbEdydk5NNkNUeldNRWdJVWMyS1lPZVJnNmZxN1JNYUl5K3FsUHZZU0NLbGo1ank0WGMKcFVBaXF4QWFvZzlFVUFhZFJ6ZmdPYzFSY3UwY3R1aEVCZlFjMXJnOUV5cld1RzFCRFZ6SnV5elFXemttZEZWMHZUZlV3QlZBZnc1dQp0SFJNS0hjUEJ5WG8wRDE1NkRzb1J0MitLWG9xMXl6WUlKQlFLNENHYy9GZFRxRHo2UDVFSU5TcXBvc1EyVE1JYU9xdTVkQW1VYWNUCnVFYm9oZ2xGNDFlYmZoZHRRZlF5STUzUVZjYWk1enJlbmE5dloyaTdIY0k3TFcvQnA4QUFxVXdqdEIwUmVDUHhDcU52STl1M1J1Z1YKVGllOWdoOGtRT2R2amRDMzhUTjhHanZNWUdneWYrdUR0bDlqNFp1bmJ6TE9uQ1QzTkdpRXJuTDJiakJPVDNET2R0dWUwTFlKeFk5Ngo1a0NUT3puMFFkc21GRDhqbW5IS0ViM0ZWQiswYlVMeFRUb3NhQ3A5NjRObUhRMWdQNlk0OUYwQ1JCOTBUaDAwdFExUEUvVHN6SU9GCkhRTnRMM0RjeWkyNDdtSEFvV2ZOZk1tQzdicWhLdWh0a3NnS3ZqZGtRTi9vUTJqN0tUYUxwYTNxZEljdlZ0UlBVNmU3SkovSUxQcTgKVFcvZkVUZFpuUE9zdHE4ajQ1d0RYR0Y2YjJvamkxNUhwbWlVUlUyZDZJTmVOeml2c1FabFBGM2xwTy83REdqS2hlcWNPV0VkVWNXWgpJeVBQOGRFN1I3Ynpaa1B0UncrZTkxN25YTHFOb1J0dmF0SDJYVitBMzNEb09hVUtsZTBoMWtDVVdnNTlFb0RYbGpxaDdjRVFuSjVLCnFDSFRja3JWOWYrZzBJMnp1RkZIdlhnZHUwN1BLVlVsZENHQ1l4ZUZUeVBUZEVwVkNWeFBWWEdIZ0ZJZkNIUC9rSHBPcVNxQjM4dW8KZUoyTDFMbEZEWkZuaHFxQy9oVHRYSnhFdXlhNHZBZzZzbDhKdElGNkovZWxxdURKaXRoaEowcWcwYzl3ZVBNNllnMGNYQkdyQkJvOAp2TDQ1Q0p5VU9aZ0xYdnVzQmhvOWtNZDd2eWl6YWhBOW1Vc1JOTnkrUFo4c1FWMkRqMGhRQXcxMzFldmV2ZU5UdzZlUktZTkd1K3BXCkZ4T1grdUYvY1JCRjBPZ1hoZG9tTHVOUlgrT2M4WklWL3c2SHN4a09iZDl0bmN4YWpQWEFuN0MyVzJiRW9aMk5hR2dxVzIrZnVmeGYKMUgwTjJNbVpUUjJGUCtXSlFqc2JhbEVyMmpua1g0VzlYRWVZdVNmYm5NSS9kc2lDaGwxV1Y1RDRKM094RCtZeWpKZkZ2NHptUXFQdAp1MmVTbW9jZDVjaW03RS94RDVqeW9OR1BvL204anBpRGQ4dWJqNkljZ21GL1YxNzRFNDhlTkdoRmZWZTZMYytSaDE5WXhQZWlIUU5oCkplOFUvajA0SGpUYVZRZk4yRzQrS3BvQnAyQ1VaL0tQTnFNZmRETEIrUHkwSGkzMEtNNnhMcmFzUnpxVk9nYTM3OEZRcHZIOWFielQKR2doTk5LRHhiNWdPZ3R4dnlqTStlRGdBdXVBdzc2aFFlNEZPcFM3b3JrcHltdkNZVTJNN0pvRm5tb0ZPcFU3cnJreEN5cDVPdFdtSAo1TEkzMnBsVHg1N1VYWjhrZFBGUUIzVHEzQTU0ckROZHpEdWgzOHFlUy9Yb2pPNUtxV1kra2ZKUmVxQmJlQ2FkOHRYWUFHZXppK2RTCkFSb2JXR3QyYWlnVnJOTUQyY1F6cDFPaEdvTm5qL3BIYnh4S1VYcmxUZDJWbE5XYmFSTFppZmJBTlBKWG44S1FiUTJkZVN1VHplcXUKY1R4bHM1bUp0NGRnWkVmbnpyeHo2bWNXZWovcTRzVzMzbms3c0pOSy9SOXZRRFNYcURYRjdRQUFBQ1YwUlZoMFpHRjBaVHBqY21WaApkR1VBTWpBeU1pMHdOaTB5T0ZRd05Eb3lNRG96T0Nzd01qb3dNSmVEK2JFQUFBQWxkRVZZZEdSaGRHVTZiVzlrYVdaNUFESXdNakl0Ck1EWXRNamhVTURRNk1qQTZNemdyTURJNk1ERG0za0VOQUFBQUFFbEZUa1N1UW1DQyIgLz4KPC9zdmc+Cg==';\n\n private _connecting: boolean;\n private _wallet: NekoWallet | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(config: NekoWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window.neko?.isNeko) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get connected(): boolean {\n return !!this._wallet?.isConnected;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window!.neko!;\n\n if (!wallet.isConnected) {\n try {\n await wallet.connect();\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n }\n\n if (!wallet.publicKey) throw new WalletAccountError();\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(wallet.publicKey.toBytes());\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n wallet.on('disconnect', this._disconnected);\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n try {\n await wallet.disconnect();\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n }\n }\n\n this.emit('disconnect');\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signTransaction(transaction)) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signAllTransactions(transactions)) || transactions;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signMessage(message: Uint8Array): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const { signature } = await wallet.signMessage(message);\n return signature;\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n private _disconnected = () => {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n this.emit('error', new WalletDisconnectedError());\n this.emit('disconnect');\n }\n };\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import {\n BaseSignerWalletAdapter,\n scopePollingDetectionStrategy,\n WalletAccountError,\n WalletConnectionError,\n WalletDisconnectedError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { PublicKey, Transaction } from '@solana/web3.js';\n\ninterface SolanaNightly {\n publicKey: PublicKey;\n connect(): Promise;\n disconnect(): Promise;\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transactions: Transaction[]): Promise;\n}\n\ninterface NightlyWindow extends Window {\n nightly?: {\n solana?: SolanaNightly;\n };\n}\n\nexport const NightlyWalletName = 'Nightly' as WalletName;\n\ndeclare const window: NightlyWindow;\n\nexport class NightlyWalletAdapter extends BaseSignerWalletAdapter {\n name = NightlyWalletName;\n url = 'https://nightly.app';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQ4IDk2Qzc0LjUwOTcgOTYgOTYgNzQuNTA5NyA5NiA0OEM5NiAyMS40OTAzIDc0LjUwOTcgMCA0OCAwQzIxLjQ5MDMgMCAwIDIxLjQ5MDMgMCA0OEMwIDc0LjUwOTcgMjEuNDkwMyA5NiA0OCA5NloiIGZpbGw9IiM2RDczRjgiLz4KPHBhdGggZD0iTTQ4IDg1LjYzNTZDNDggODUuNjM1NiA1Mi40NTMzIDg1LjYzNTYgNTUuNDQgODIuNTg2N0M1OC45MTU1IDc5LjI4MDEgNTcuMzUxMSA3NS40MzEyIDYyLjI3NTUgNzEuNDMxMkM2Ni45ODY2IDY3LjY0NDUgNzIuOTI0NCA3MC4zMzc5IDcyLjkyNDQgNzAuMzM3OUM3Ny4wMjIyIDYyLjEyNDUgNzQuNzkxMSA1Mi41NjkgNzQuNzkxMSA1Mi41NjlDODEuNzY4OCAzNC4yNTc5IDc1Ljk2NDQgMjEuMTU1NyA3NC40NDQ0IDE3LjM2MDFDNjkuNDQ4OCAyNC4zMzc5IDYzLjE5MTEgMjkuMTczNCA1NS43OTU1IDMyLjQwOUM1My4yMjY2IDMxLjcwNjggNTAuNTk1NSAzMS4zMzM0IDQ4IDMxLjM2MDFDNDUuNDEzMyAzMS4zMzM0IDQyLjc3MzMgMzEuNzA2OCA0MC4yMDQ0IDMyLjQwOUMzMi44MTc3IDI5LjE2NDUgMjYuNTUxMSAyNC4zMzc5IDIxLjU1NTUgMTcuMzYwMUMyMC4wMzU1IDIxLjE1NTcgMTQuMjMxMSAzNC4yNTc5IDIxLjIwODkgNTIuNTY5QzIxLjIwODkgNTIuNTY5IDE4Ljk3NzggNjIuMTI0NSAyMy4wNzU1IDcwLjMzNzlDMjMuMDc1NSA3MC4zMzc5IDI5LjAxMzMgNjcuNjQ0NSAzMy43MjQ0IDcxLjQzMTJDMzguNjU3NyA3NS40MzEyIDM3LjA4NDQgNzkuMjgwMSA0MC41NiA4Mi41ODY3QzQzLjU0NjYgODUuNjM1NiA0OCA4NS42MzU2IDQ4IDg1LjYzNTZaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNDIuNDc5OSA2NS4yOThDNDIuMjkzMyA1OS4yMTggMzYuMzAyMSA1Ny4yNjI0IDMyLjIxMzMgNTkuODIyNEMzMi4yMTMzIDU5LjgyMjQgMzIuODUzMyA2Mi40MzU4IDM1LjgzOTkgNjMuNzUxM0MzOC4yNzU1IDY0LjgyNjkgMzkuMzI0NCA2My4zODY5IDQyLjQ3OTkgNjUuMjk4WiIgZmlsbD0iIzdCODFGOSIvPgo8cGF0aCBkPSJNMjIuNDk3NyAyMy4wOTM1QzIwLjA4ODggMzEuNTQ2OCAyMS4xMjg4IDQyLjI0MDIgMjQuOTMzMyA1MC4wMjY5QzI4LjgyNjYgNDcuMjcxMyAzMi45MTU1IDQzLjAxMzUgMzUuMDkzMyAzOC41MDY5QzI5Ljk2NDQgMzQuNzExMyAyNS42NjIyIDMxLjEwMjQgMjIuNDk3NyAyMy4wOTM1WiIgZmlsbD0iIzdCODFGOSIvPgo8cGF0aCBkPSJNNTMuNTE5OSA2NS4yOThDNTMuNzA2NiA1OS4yMTggNTkuNjk3NyA1Ny4yNjI0IDYzLjc4NjYgNTkuODIyNEM2My43ODY2IDU5LjgyMjQgNjMuMTQ2NiA2Mi40MzU4IDYwLjE1OTkgNjMuNzUxM0M1Ny43MjQzIDY0LjgyNjkgNTYuNjc1NSA2My4zODY5IDUzLjUxOTkgNjUuMjk4WiIgZmlsbD0iIzdCODFGOSIvPgo8cGF0aCBkPSJNNzMuNTAyMiAyMy4wOTM1Qzc1LjkxMTEgMzEuNTQ2OCA3NC44NzExIDQyLjI0MDIgNzEuMDY2NiA1MC4wMjY5QzY3LjE3MzMgNDcuMjcxMyA2My4wODQ0IDQzLjAxMzUgNjAuOTA2NiAzOC41MDY5QzY2LjAzNTUgMzQuNzExMyA3MC4zMzc3IDMxLjEwMjQgNzMuNTAyMiAyMy4wOTM1WiIgZmlsbD0iIzdCODFGOSIvPgo8cGF0aCBkPSJNNDcuOTk5OSA4NS4zMDY5QzUwLjE0MDQgODUuMzA2OSA1MS44NzU1IDgzLjc3ODcgNTEuODc1NSA4MS44OTM2QzUxLjg3NTUgODAuMDA4NCA1MC4xNDA0IDc4LjQ4MDIgNDcuOTk5OSA3OC40ODAyQzQ1Ljg1OTUgNzguNDgwMiA0NC4xMjQ0IDgwLjAwODQgNDQuMTI0NCA4MS44OTM2QzQ0LjEyNDQgODMuNzc4NyA0NS44NTk1IDg1LjMwNjkgNDcuOTk5OSA4NS4zMDY5WiIgZmlsbD0iIzdCODFGOSIvPgo8L3N2Zz4K';\n\n private _connecting: boolean;\n private _connected: boolean;\n private _publicKey: PublicKey | null;\n private _wallet: SolanaNightly | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor() {\n super();\n this._connecting = false;\n this._connected = false;\n this._publicKey = null;\n this._wallet = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window?.nightly?.solana) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get connected(): boolean {\n return this._connected;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n get publicKey() {\n return this._publicKey;\n }\n\n async connect() {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window!.nightly!.solana!;\n\n try {\n await wallet.connect();\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n\n if (wallet.publicKey.toString() === '11111111111111111111111111111111') throw new WalletAccountError();\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(wallet.publicKey.toBytes());\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n this._connected = true;\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect() {\n const wallet = this._wallet;\n\n if (wallet) {\n this._publicKey = null;\n this._wallet = null;\n this._connected = false;\n\n try {\n await wallet.disconnect();\n } catch (error) {\n this.emit('error', new WalletDisconnectedError());\n }\n }\n\n this.emit('disconnect');\n }\n\n async signTransaction(transaction: Transaction) {\n try {\n if (!this._wallet) {\n throw new WalletNotConnectedError();\n }\n\n try {\n return await this._wallet.signTransaction(transaction);\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n public async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n if (!this._wallet) {\n throw new WalletNotConnectedError();\n }\n\n try {\n return await this._wallet.signAllTransactions(transactions);\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import {\n BaseMessageSignerWalletAdapter,\n EventEmitter,\n scopePollingDetectionStrategy,\n SendTransactionOptions,\n WalletAccountError,\n WalletConnectionError,\n WalletDisconnectedError,\n WalletDisconnectionError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSendTransactionError,\n WalletSignMessageError,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { Connection, PublicKey, Transaction, TransactionSignature } from '@solana/web3.js';\n\ninterface NufiWalletEvents {\n connect(): void;\n disconnect(): void;\n}\n\ninterface NufiWallet extends EventEmitter {\n isNufi?: boolean;\n publicKey?: { toBytes(): Uint8Array };\n isConnected: boolean;\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transactions: Transaction[]): Promise;\n signAndSendTransaction(transaction: Transaction): Promise<{ signature: TransactionSignature }>;\n signMessage(message: Uint8Array): Promise<{ signature: Uint8Array }>;\n connect(): Promise;\n disconnect(): Promise;\n}\n\ninterface NufiWindow extends Window {\n nufiSolana?: NufiWallet;\n}\n\ndeclare const window: NufiWindow;\n\nexport interface NufiWalletAdapterConfig {}\n\nexport const NufiWalletName = 'NuFi' as WalletName<'NuFi'>;\n\nexport class NufiWalletAdapter extends BaseMessageSignerWalletAdapter {\n name = NufiWalletName;\n url = 'https://nu.fi';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjMiIHZpZXdCb3g9IjAgMCAyMiAyMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iIzIxMjEyMSIgLz4KPHBhdGggZD0iTTQuMzA5OTkgOS4wMDAwOEM1LjMwODc3IDYuMjA0MDEgNy45ODA2OSA0LjIwMzA4IDExLjEyIDQuMjAzMDhDMTQuMjU5MiA0LjIwMzA4IDE2LjkzMTEgNi4yMDQwMSAxNy45Mjk5IDkuMDAwMDhDMTcuOTc5IDkuMTM3NDcgMTguMTA3NCA5LjIzMjE4IDE4LjI1MzMgOS4yMzIxOEgyMS4wNTk0QzIxLjI3MjUgOS4yMzIxOCAyMS40MzE3IDkuMDM1NzYgMjEuMzc5NCA4LjgyOTE5QzIwLjIxOTUgNC4yNDM2MiAxNi4wNjYgMC44NTAzNDIgMTEuMTIgMC44NTAzNDJDNi4xNzM5MSAwLjg1MDM0MiAyLjAyMDQyIDQuMjQzNjIgMC44NjA0NjggOC44MjkxOEMwLjgwODIxMyA5LjAzNTc2IDAuOTY3NDM0IDkuMjMyMTggMS4xODA1MiA5LjIzMjE4SDMuOTg2NTlDNC4xMzI0OSA5LjIzMjE4IDQuMjYwOTEgOS4xMzc0NyA0LjMwOTk5IDkuMDAwMDhaIiBmaWxsPSIjQzZGRjAwIi8+CjxwYXRoIGQ9Ik0zLjk4NjU5IDEzLjYzMjdDNC4xMzI0OSAxMy42MzI3IDQuMjYwOTEgMTMuNzI3NCA0LjMwOTk5IDEzLjg2NDhDNS4zMDg3NyAxNi42NjA4IDcuOTgwNjkgMTguNjYxOCAxMS4xMiAxOC42NjE4QzE0LjI1OTIgMTguNjYxOCAxNi45MzExIDE2LjY2MDggMTcuOTI5OSAxMy44NjQ4QzE3Ljk3OSAxMy43Mjc0IDE4LjEwNzQgMTMuNjMyNyAxOC4yNTMzIDEzLjYzMjdIMjEuMDU5NEMyMS4yNzI1IDEzLjYzMjcgMjEuNDMxNyAxMy44MjkxIDIxLjM3OTQgMTQuMDM1N0MyMC4yMTk1IDE4LjYyMTIgMTYuMDY2IDIyLjAxNDUgMTEuMTIgMjIuMDE0NUM2LjE3MzkxIDIyLjAxNDUgMi4wMjA0MiAxOC42MjEyIDAuODYwNDY4IDE0LjAzNTdDMC44MDgyMTMgMTMuODI5MSAwLjk2NzQzNCAxMy42MzI3IDEuMTgwNTIgMTMuNjMyN0gzLjk4NjU5WiIgZmlsbD0iI0M2RkYwMCIvPgo8cGF0aCBkPSJNOS4yNTQ5OSA5LjIzMjE4QzkuMDY5ODMgOS4yMzIxOCA4LjkxOTcyIDkuMzgyMjkgOC45MTk3MiA5LjU2NzQ2VjEzLjI5NzRDOC45MTk3MiAxMy40ODI1IDkuMDY5ODMgMTMuNjMyNyA5LjI1NDk5IDEzLjYzMjdIMTIuOTg0OUMxMy4xNzAxIDEzLjYzMjcgMTMuMzIwMiAxMy40ODI1IDEzLjMyMDIgMTMuMjk3NFY5LjU2NzQ2QzEzLjMyMDIgOS4zODIyOSAxMy4xNzAxIDkuMjMyMTggMTIuOTg0OSA5LjIzMjE4SDkuMjU0OTlaIiBmaWxsPSIjQzZGRjAwIi8+Cjwvc3ZnPgo=';\n\n private _connecting = false;\n private _wallet: NufiWallet | null = null;\n private _publicKey: PublicKey | null = null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(config: NufiWalletAdapterConfig = {}) {\n super();\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window.nufiSolana?.isNufi) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get connected(): boolean {\n return !!this._wallet?.isConnected;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window!.nufiSolana!;\n\n if (!wallet.isConnected) {\n try {\n await wallet.connect();\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n }\n\n if (!wallet.publicKey) throw new WalletAccountError();\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(wallet.publicKey.toBytes());\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n wallet.on('disconnect', this._disconnected);\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n try {\n await wallet.disconnect();\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n }\n }\n\n this.emit('disconnect');\n }\n\n async sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const { signature } = await wallet.signAndSendTransaction(transaction);\n return signature;\n } catch (error: any) {\n throw new WalletSendTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signTransaction(transaction)) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signAllTransactions(transactions)) || transactions;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signMessage(message: Uint8Array): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const { signature } = await wallet.signMessage(message);\n return signature;\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n private _disconnected = () => {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n this.emit('error', new WalletDisconnectedError());\n this.emit('disconnect');\n }\n };\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import { Connection, Transaction, TransactionSignature } from '@solana/web3.js';\nimport { BaseWalletAdapter, SendTransactionOptions, WalletAdapter } from './adapter';\nimport { WalletError, WalletSendTransactionError } from './errors';\n\nexport interface SignerWalletAdapterProps {\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transaction: Transaction[]): Promise;\n}\n\nexport type SignerWalletAdapter = WalletAdapter & SignerWalletAdapterProps;\n\nexport abstract class BaseSignerWalletAdapter extends BaseWalletAdapter implements SignerWalletAdapter {\n async sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options: SendTransactionOptions = {}\n ): Promise {\n let emit = true;\n try {\n try {\n transaction.feePayer = transaction.feePayer || this.publicKey || undefined;\n transaction.recentBlockhash =\n transaction.recentBlockhash || (await connection.getRecentBlockhash('finalized')).blockhash;\n\n const { signers, ...sendOptions } = options;\n\n signers?.length && transaction.partialSign(...signers);\n\n transaction = await this.signTransaction(transaction);\n\n const rawTransaction = transaction.serialize();\n\n return await connection.sendRawTransaction(rawTransaction, sendOptions);\n } catch (error: any) {\n // If the error was thrown by `signTransaction`, rethrow it and don't emit a duplicate event\n if (error instanceof WalletError) {\n emit = false;\n throw error;\n }\n throw new WalletSendTransactionError(error?.message, error);\n }\n } catch (error: any) {\n if (emit) {\n this.emit('error', error);\n }\n throw error;\n }\n }\n\n abstract signTransaction(transaction: Transaction): Promise;\n abstract signAllTransactions(transaction: Transaction[]): Promise;\n}\n\nexport interface MessageSignerWalletAdapterProps {\n signMessage(message: Uint8Array): Promise;\n}\n\nexport type MessageSignerWalletAdapter = WalletAdapter & MessageSignerWalletAdapterProps;\n\nexport abstract class BaseMessageSignerWalletAdapter\n extends BaseSignerWalletAdapter\n implements MessageSignerWalletAdapter\n{\n abstract signMessage(message: Uint8Array): Promise;\n}\n","import {\n BaseMessageSignerWalletAdapter,\n EventEmitter,\n scopePollingDetectionStrategy,\n SendTransactionOptions,\n WalletAccountError,\n WalletConnectionError,\n WalletDisconnectedError,\n WalletDisconnectionError,\n WalletError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignMessageError,\n WalletSignTransactionError,\n WalletWindowClosedError,\n} from '@solana/wallet-adapter-base';\nimport { Connection, PublicKey, SendOptions, Transaction, TransactionSignature } from '@solana/web3.js';\n\ninterface PhantomWalletEvents {\n connect(...args: unknown[]): unknown;\n disconnect(...args: unknown[]): unknown;\n}\n\ninterface PhantomWallet extends EventEmitter {\n isPhantom?: boolean;\n publicKey?: { toBytes(): Uint8Array };\n isConnected: boolean;\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transactions: Transaction[]): Promise;\n signAndSendTransaction(\n transaction: Transaction,\n options?: SendOptions\n ): Promise<{ signature: TransactionSignature }>;\n signMessage(message: Uint8Array): Promise<{ signature: Uint8Array }>;\n connect(): Promise;\n disconnect(): Promise;\n _handleDisconnect(...args: unknown[]): unknown;\n}\n\ninterface PhantomWindow extends Window {\n // NOTE: If you are contributing a wallet adapter, **DO NOT COPY** this.\n // Multiple wallet adapters cannot be detected properly if they all try to write to the same window global.\n // All wallets that currently do this have committed to migrating away from using `window.solana`.\n // This must be changed to `window.yourWalletName` in your adapter, and must not use `window.solana`.\n solana?: PhantomWallet;\n}\n\ndeclare const window: PhantomWindow;\n\nexport interface PhantomWalletAdapterConfig {}\n\nexport const PhantomWalletName = 'Phantom' as WalletName<'Phantom'>;\n\nexport class PhantomWalletAdapter extends BaseMessageSignerWalletAdapter {\n name = PhantomWalletName;\n url = 'https://phantom.app';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjM0IiB3aWR0aD0iMzQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4MT0iLjUiIHgyPSIuNSIgeTE9IjAiIHkyPSIxIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1MzRiYjEiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM1NTFiZjkiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9Ii41IiB4Mj0iLjUiIHkxPSIwIiB5Mj0iMSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZmIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZmIiBzdG9wLW9wYWNpdHk9Ii44MiIvPjwvbGluZWFyR3JhZGllbnQ+PGNpcmNsZSBjeD0iMTciIGN5PSIxNyIgZmlsbD0idXJsKCNhKSIgcj0iMTciLz48cGF0aCBkPSJtMjkuMTcwMiAxNy4yMDcxaC0yLjk5NjljMC02LjEwNzQtNC45NjgzLTExLjA1ODE3LTExLjA5NzUtMTEuMDU4MTctNi4wNTMyNSAwLTEwLjk3NDYzIDQuODI5NTctMTEuMDk1MDggMTAuODMyMzctLjEyNDYxIDYuMjA1IDUuNzE3NTIgMTEuNTkzMiAxMS45NDUzOCAxMS41OTMyaC43ODM0YzUuNDkwNiAwIDEyLjg0OTctNC4yODI5IDEzLjk5OTUtOS41MDEzLjIxMjMtLjk2MTktLjU1MDItMS44NjYxLTEuNTM4OC0xLjg2NjF6bS0xOC41NDc5LjI3MjFjMCAuODE2Ny0uNjcwMzggMS40ODQ3LTEuNDkwMDEgMS40ODQ3LS44MTk2NCAwLTEuNDg5OTgtLjY2ODMtMS40ODk5OC0xLjQ4NDd2LTIuNDAxOWMwLS44MTY3LjY3MDM0LTEuNDg0NyAxLjQ4OTk4LTEuNDg0Ny44MTk2MyAwIDEuNDkwMDEuNjY4IDEuNDkwMDEgMS40ODQ3em01LjE3MzggMGMwIC44MTY3LS42NzAzIDEuNDg0Ny0xLjQ4OTkgMS40ODQ3LS44MTk3IDAtMS40OS0uNjY4My0xLjQ5LTEuNDg0N3YtMi40MDE5YzAtLjgxNjcuNjcwNi0xLjQ4NDcgMS40OS0xLjQ4NDcuODE5NiAwIDEuNDg5OS42NjggMS40ODk5IDEuNDg0N3oiIGZpbGw9InVybCgjYikiLz48L3N2Zz4K';\n\n private _connecting: boolean;\n private _wallet: PhantomWallet | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(config: PhantomWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window.solana?.isPhantom) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get connected(): boolean {\n return !!this._wallet?.isConnected;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window!.solana!;\n\n if (!wallet.isConnected) {\n // NOTE: If you are contributing a wallet adapter, **DO NOT COPY** this.\n // The Phantom adapter code has hacks because the Promise returned by `wallet.connect()` is not rejected if the user closes the window.\n // If your adapter fulfills the Promise correctly, you don't need events, or the hacky override of the private `_handleDisconnect` API.\n //\n // HACK: Phantom doesn't reject or emit an event if the popup is closed\n const handleDisconnect = wallet._handleDisconnect;\n try {\n await new Promise((resolve, reject) => {\n const connect = () => {\n wallet.off('connect', connect);\n resolve();\n };\n\n wallet._handleDisconnect = (...args: unknown[]) => {\n wallet.off('connect', connect);\n reject(new WalletWindowClosedError());\n return handleDisconnect.apply(wallet, args);\n };\n\n wallet.on('connect', connect);\n\n wallet.connect().catch((reason: any) => {\n wallet.off('connect', connect);\n reject(reason);\n });\n });\n } catch (error: any) {\n if (error instanceof WalletError) throw error;\n throw new WalletConnectionError(error?.message, error);\n } finally {\n wallet._handleDisconnect = handleDisconnect;\n }\n }\n\n if (!wallet.publicKey) throw new WalletAccountError();\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(wallet.publicKey.toBytes());\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n wallet.on('disconnect', this._disconnected);\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n try {\n await wallet.disconnect();\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n }\n }\n\n this.emit('disconnect');\n }\n\n async sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise {\n try {\n const wallet = this._wallet;\n const publicKey = this.publicKey;\n if (!wallet || !publicKey) throw new WalletNotConnectedError();\n\n // NOTE: If you are contributing a wallet adapter, **DO NOT COPY** this.\n // Phantom didn't always have a `signAndSendTransaction` method, so this code checks for older versions.\n // Phantom also doesn't handle additional signers when provided, and your adapter should do this.\n // Phantom also doesn't set the fee payer and recent blockhash, and your adapter should do this.\n //\n // HACK: Phantom doesn't handle partial signers, so if they are provided, don't use `signAndSendTransaction`\n if (wallet && 'signAndSendTransaction' in wallet && !options?.signers) {\n // HACK: Phantom's `signAndSendTransaction` should always set these, but doesn't yet\n transaction.feePayer = transaction.feePayer || publicKey;\n transaction.recentBlockhash =\n transaction.recentBlockhash || (await connection.getRecentBlockhash('finalized')).blockhash;\n\n const { signature } = await wallet.signAndSendTransaction(transaction, options);\n return signature;\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n\n return await super.sendTransaction(transaction, connection, options);\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signTransaction(transaction)) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signAllTransactions(transactions)) || transactions;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signMessage(message: Uint8Array): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const { signature } = await wallet.signMessage(message);\n return signature;\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n private _disconnected = () => {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n this.emit('error', new WalletDisconnectedError());\n this.emit('disconnect');\n }\n };\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import {\n BaseSignerWalletAdapter,\n scopePollingDetectionStrategy,\n WalletAccountError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { PublicKey, Transaction } from '@solana/web3.js';\n\ninterface SafePalWallet {\n isSafePalWallet?: boolean;\n getAccount(): Promise;\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transactions: Transaction[]): Promise;\n}\n\ninterface SafePalWalletWindow extends Window {\n safepal?: SafePalWallet;\n}\n\ndeclare const window: SafePalWalletWindow;\n\nexport interface SafePalWalletAdapterConfig {}\n\nexport const SafePalWalletName = 'SafePal' as WalletName<'SafePal'>;\n\nexport class SafePalWalletAdapter extends BaseSignerWalletAdapter {\n name = SafePalWalletName;\n url = 'https://safepal.io';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1NiIgdmlld0JveD0iMCAwIDI1NiAyNTYiIHdpZHRoPSIyNTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMjU2IDEyOGMwIDcwLjY5Mzg3My01Ny4zMDc5MzMgMTI4LTEyOCAxMjgtNzAuNjkyMDY2NyAwLTEyOC01Ny4zMDYxMjctMTI4LTEyOCAwLTcwLjY5MjA2NjcgNTcuMzA3OTMzMy0xMjggMTI4LTEyOCA3MC42OTIwNjcgMCAxMjggNTcuMzA3OTMzMyAxMjggMTI4IiBmaWxsPSIjMDAwIi8+PHBhdGggZD0ibTIwMC45OTE0OTkgMTQxLjM4NDM3OXYxMS45MzQ0MDRjMCAzMi40OTcwNzgtNDYuMjA1ODI2IDUxLjQ3NTM0Ni02MS45MzUzOTggNTYuOTg2NTMybC02LjI4OTM3MSAyLjE3NDY4NXYtMjAuNjI5NDAxbDIuNjIxOTE2LS45ODkyOGMyMi43MTQ3NDUtOC41NDg4MzYgNDUuNjMyMjgyLTIzLjI5NTQ2NSA0Ni4wODgzNjEtMzcuMTIzNzg0bC4wMDY5MjItLjQxODc1MnYtMTEuOTM0NDA0em0tNzIuODY1MTcyLTk3Ljg2NDM3OSAxOS42NjExMzUgNi4wNjMzODIydjIxLjA0ODA2N2wtMTkuNjYxMTM1LTYuMDg0Mzk2My0xLjI4NjcxMS4zOTkyNjgzdjQ3LjM1NDUxMzhoMjAuOTQ3ODQ2djE5LjUxMDgwM2gtMjAuOTQ3ODQ2djgwLjM4MDYzbC02LjM2Mjg5Mi0yLjM3NTQ2N2MtMi40NDg2MzUtLjkyODUwMi01Ljk3MzE2Ny0yLjMzOTg4Ni0xMC4yMTU4NzUtNC4yNDkxNDJsLS41NTc0NC0uMjUxODU4LTIuMzc0NTk2LTEuMDg0NjUydi0xNTQuMjkzNzU5N3ptLTI2Ljk2OTIgOC40MDA0NzU4djIwLjk1MTA3ODhsLTI2LjY0MTA1NTggOC4yNjk4NjQ5djMxLjE1OTA5MjVoMjYuNjQxMDU1OHY5MC4yNDI3MThsLTUuOTAwMTE4Mi0zLjAzNDExNWMtMTguMTc2Mjc3My05LjM1NTM5LTM5LjgxMTA4ODItMjUuMDcwMTczLTQwLjI0MTk2NjgtNDYuOTcwMjQ4bC0uMDA2NTQxMS0uNjY1NTMydi0xMC40ODkyOGgxOS41MDc1NzAzdjEwLjQ4OTI4YzAgNC40NjY3MzcgMi4yNTgyODY3IDkuMTU1OCA2LjcxODY5NjMgMTMuOTgyOTQ0bC40MTE1NTY2LjQzOTIwOXYtMzQuNDg0MTczaC0yNi42Mzc4MjMydi02NS42NDY0OTh6bTUyLjU1MjYtLjQ5OTE2NjIgNDcuMjgxNzcyIDE0LjYzMzkxMDZ2NjUuNzU2NDE3OGgtMjcuNzU4MDM3djI4LjQ3NTc1MWwtLjI4NTQ4OS4zNTQyMDZjLTEuMzU1MjUgMS42MzQ0NTUtNy41NjM1NzUgOC42MjI2NTUtMTkuMjIwNDY1IDE0LjU5NDkxNnptMTkuNTIzNzM1IDI3LjA3NzUwMzN2MzMuODAyMDIyMWg4LjI1MDQ2N3YtMzEuMjU0NDY0eiIgZmlsbD0iI2ZmZiIvPjwvZz48L3N2Zz4=';\n\n private _connecting: boolean;\n private _wallet: SafePalWallet | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(config: SafePalWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window.safepal?.isSafePalWallet) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window!.safepal!;\n\n let account: string;\n try {\n account = await wallet.getAccount();\n } catch (error: any) {\n throw new WalletAccountError(error?.message, error);\n }\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(account);\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n if (this._wallet) {\n this._wallet = null;\n this._publicKey = null;\n }\n\n this.emit('disconnect');\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return wallet.signTransaction(transaction);\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return wallet.signAllTransactions(transactions);\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import {\n BaseMessageSignerWalletAdapter,\n EventEmitter,\n scopePollingDetectionStrategy,\n SendTransactionOptions,\n WalletAccountError,\n WalletConnectionError,\n WalletDisconnectedError,\n WalletDisconnectionError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignMessageError,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { Connection, PublicKey, SendOptions, Transaction, TransactionSignature } from '@solana/web3.js';\n\ninterface SaifuWalletEvents {\n connect(...args: unknown[]): unknown;\n disconnect(...args: unknown[]): unknown;\n}\n\ninterface SaifuWallet extends EventEmitter {\n isSaifu?: boolean;\n publicKey?: { toBytes(): Uint8Array };\n isConnected: boolean;\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transactions: Transaction[]): Promise;\n signAndSendTransaction?(\n transaction: Transaction,\n options?: SendOptions\n ): Promise<{ signature: TransactionSignature }>;\n signMessage(message: Uint8Array): Promise<{ signature: Uint8Array }>;\n connect(): Promise;\n disconnect(): Promise;\n}\n\ninterface SolanaWindow extends Window {\n saifu?: SaifuWallet;\n}\n\ndeclare const window: SolanaWindow;\n\nexport interface SaifuWalletAdapterConfig {}\n\nexport const SaifuWalletName = 'Saifu' as WalletName;\n\nexport class SaifuWalletAdapter extends BaseMessageSignerWalletAdapter {\n name = SaifuWalletName;\n url = 'https://saifuwallet.com';\n icon =\n 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTQxcHgiIGhlaWdodD0iNTQxcHgiIHZpZXdCb3g9IjAgMCA1NDEgNTQxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPHRpdGxlPkFydGJvYXJkIENvcHkgOTwvdGl0bGU+CiAgICA8ZGVmcz4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjEuNzk5ODcyMTYlIiB5MT0iMCUiIHgyPSI5OC4zOTcxMDUxJSIgeTI9Ijk3Ljk5MDI5MSUiIGlkPSJsaW5lYXJHcmFkaWVudC0xIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0ZCOTIzQyIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjRUM0ODk5IiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGcgaWQ9IkFydGJvYXJkLUNvcHktOSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPHBhdGggZD0iTTIzMi4yNzAwNDQsLTcuODU2NzI5NzFlLTE1IEwzMDcuNzI5OTU2LDcuODU2NzI5NzFlLTE1IEMzNzkuNDY1Mzc2LC01LjMyMDg1MzMyZS0xNSA0MTIuMzM3Mzc5LDguODE4NDMzMDYgNDQzLjMwMDM0MiwyNS4zNzc2MDY5IEM0NzQuMjYzMzA1LDQxLjkzNjc4MDcgNDk4LjU2MzIxOSw2Ni4yMzY2OTUyIDUxNS4xMjIzOTMsOTcuMTk5NjU4MiBDNTMxLjY4MTU2NywxMjguMTYyNjIxIDU0MC41LDE2MS4wMzQ2MjQgNTQwLjUsMjMyLjc3MDA0NCBMNTQwLjUsMzA4LjIyOTk1NiBDNTQwLjUsMzc5Ljk2NTM3NiA1MzEuNjgxNTY3LDQxMi44MzczNzkgNTE1LjEyMjM5Myw0NDMuODAwMzQyIEM0OTguNTYzMjE5LDQ3NC43NjMzMDUgNDc0LjI2MzMwNSw0OTkuMDYzMjE5IDQ0My4zMDAzNDIsNTE1LjYyMjM5MyBDNDEyLjMzNzM3OSw1MzIuMTgxNTY3IDM3OS40NjUzNzYsNTQxIDMwNy43Mjk5NTYsNTQxIEwyMzIuMjcwMDQ0LDU0MSBDMTYwLjUzNDYyNCw1NDEgMTI3LjY2MjYyMSw1MzIuMTgxNTY3IDk2LjY5OTY1ODIsNTE1LjYyMjM5MyBDNjUuNzM2Njk1Miw0OTkuMDYzMjE5IDQxLjQzNjc4MDcsNDc0Ljc2MzMwNSAyNC44Nzc2MDY5LDQ0My44MDAzNDIgQzguMzE4NDMzMDYsNDEyLjgzNzM3OSAtMC41LDM3OS45NjUzNzYgLTAuNSwzMDguMjI5OTU2IEwtMC41LDIzMi43NzAwNDQgQy0wLjUsMTYxLjAzNDYyNCA4LjMxODQzMzA2LDEyOC4xNjI2MjEgMjQuODc3NjA2OSw5Ny4xOTk2NTgyIEM0MS40MzY3ODA3LDY2LjIzNjY5NTIgNjUuNzM2Njk1Miw0MS45MzY3ODA3IDk2LjY5OTY1ODIsMjUuMzc3NjA2OSBDMTI3LjY2MjYyMSw4LjgxODQzMzA2IDE2MC41MzQ2MjQsNS4zMjA4NTMzMmUtMTUgMjMyLjI3MDA0NCwtNy44NTY3Mjk3MWUtMTUgWiIgaWQ9IlJlY3RhbmdsZSIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0xKSI+PC9wYXRoPgogICAgICAgIDxnIGlkPSJMYXllciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTA3LjUwMjc2NCwgODcuMDIxNTg5KSIgZmlsbD0iI0ZGRkZGRiI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNjEuMzI1MTQ3LDMyMy44NjM0MjEgQzE0Mi44Mjk2OTQsMzIzLjc5NzY1NSAxMjMuMjczNDA1LDMyMy4xODE2MjggMTE1LjYyMDA1NCwzMjIuNDIzNjkzIEMxMDguMjYyNjAyLDMyMS42OTUwNTUgOTYuMTg1MjU1MywzMTkuOTI1MzEgODguNzgxNTA3MywzMTguNDkwODYyIEM4MS4zNzc3NjAzLDMxNy4wNTY0NDQgNzAuNTIyNDg5MywzMTQuMzEyMjczIDY0LjY1ODY4OTMsMzEyLjM5MjcxOCBDNTguNzk0ODg5MywzMTAuNDczMTMxIDUwLjMxNDQ1MTMsMzA3LjEyMTE3MiA0NS44MTMyNzYzLDMwNC45NDM4NjUgQzQxLjMxMjA5MzMsMzAyLjc2NjU4OCAzMy45ODIzODIzLDI5OC4yMzcxMzkgMjkuNTI1MDMwMywyOTQuODc4NDM1IEMyNS4wNjc2NzEzLDI5MS41MTk3MDEgMTkuMTY5NTMxMywyODYuMDA1Njk0IDE2LjQxODA0MzMsMjgyLjYyNTAxNyBDMTMuNjY2NTU1MywyNzkuMjQ0NDAyIDkuNjgzMDk2MjksMjczLjAzNzM3MSA3LjU2NTkwMTI5LDI2OC44MzE2MjEgQzUuNDQ4NzEzMjksMjY0LjYyNTg3MiAyLjg3OTY0NDI5LDI1Ny42NTA4OTYgMS44NTY4NTUyOSwyNTMuMzMxNjIxIEMwLjU0MDkzNzI4NywyNDcuNzc0NDkzIDAsMjQxLjY3NzU2OSAwLDIzMi40Nzg0MTEgQzAsMjIzLjk1Mzc1MyAwLjYyMzY5MzI4NywyMTYuMzgwMDgzIDEuODA2NDE3MjksMjEwLjQ3ODQxMSBDMi43OTg0MjkyOSwyMDUuNTI4Mzk5IDQuOTYyNzg5MjksMTk3LjQyODQyMyA2LjYxNjExNzI5LDE5Mi40Nzg0MTEgQzguMjY5NDQ1MjksMTg3LjUyODM5OSAxMS4zNzA1MjczLDE3OS41MzcwOTYgMTMuNTA3NDIxMywxNzQuNzE5OTI3IEMxNy4zOTI2NjgzLDE2NS45NjE0NDMgMTcuMzkyNjY4MywxNjUuOTYxNDQzIDE0Ljg0OTI0MTMsMTYxLjA1OTA5OSBDMTMuMjU3MzY4MywxNTcuOTkwODMyIDEyLjI0ODA5MDMsMTU0LjMwNjUwNSAxMi4xNTE1MjUzLDE1MS4yMTExODQgQzEyLjA2NjY2MzMsMTQ4LjQ5MTEyMiAxMi42MjU5NTkzLDE0NC41MTM1MDYgMTMuMzk0Mzk5MywxNDIuMzcyMDI3IEMxNC4xNjI4NDAzLDE0MC4yMzA1NDcgMTcuOTQ4MTk0MywxMzQuMjE2NDc5IDIxLjgwNjMwMzMsMTI5LjAwNzQzMyBDMjUuNjY0NDExMywxMjMuNzk4Mzg4IDMzLjEzNTY4NzMsMTE1LjA3NTYwOSAzOC40MDkxMzkzLDEwOS42MjM0OTIgQzQzLjY4MjU5MjMsMTA0LjE3MTM3NCA1MS41OTcyNDIzLDk2LjY3NTczODQgNTUuOTk3MjM2Myw5Mi45NjY0Nzk0IEM2MC4zOTcyMzAzLDg5LjI1NzI1MDQgNjcuODIyMjMzMyw4My42Nzk5MTk0IDcyLjQ5NzIzNjMsODAuNTcyNDM2NCBDNzcuMTcyMjM5Myw3Ny40NjQ5MjI0IDg1LjQwNTkyNzMsNzIuNjU0Mzc1NCA5MC43OTQzMjUzLDY5Ljg4MjMxMTQgQzk2LjE4MjcyMjMsNjcuMTEwMjQ3NCAxMDQuNTg1OTgxLDYzLjM1NzEwNDQgMTA5LjQ2ODIxNCw2MS41NDE5NDk0IEMxMTQuMzUwNDYyLDU5LjcyNjgyNDQgMTIxLjQxNjc2MSw1Ny40MzYzMjc0IDEyNS4xNzExMjUsNTYuNDUxOTgzNCBDMTI4LjkyNTQ4OSw1NS40Njc2MDg0IDEzMi4zNzk0MzgsNTQuMzI4NjYxNCAxMzIuODQ2NTcxLDUzLjkyMDk3NzQgQzEzMy4zMTM3MDMsNTMuNTEzMjkzNCAxMzMuMzkzNDkxLDUyLjIyNjg4NTQgMTMzLjAyMzg2Myw1MS4wNjIzMDQ0IEMxMzIuNjU0MjM0LDQ5Ljg5NzcyMzQgMTMwLjY1NDQzMiw0OC4wNzg5MzY0IDEyOC41Nzk4NDcsNDcuMDIwNTU2NCBDMTI2LjUwNTI2Miw0NS45NjIxNzY0IDEyMy4zMzE2OTMsNDMuNDE0OTY1NCAxMjEuNTI3NDY0LDQxLjM2MDA2NDQgQzExOS43MjMyMzQsMzkuMzA1MTYzNCAxMTcuNjI4MzQsMzYuMTQzMDg0NCAxMTYuODcyMTQ0LDM0LjMzMzI2OTQgQzExNi4xMTU5NDksMzIuNTIzNDI0NCAxMTUuNDk3MjM2LDI4LjMxMzczODQgMTE1LjQ5NzIzNiwyNC45Nzg0MTE0IEMxMTUuNDk3MjM2LDIxLjY0MzA4NDQgMTE2LjE4NjE1NSwxNy4yNjUzMzc0IDExNy4wMjgxODEsMTUuMjUwMTA5NCBDMTE3Ljg3MDE5MSwxMy4yMzQ4ODE0IDExOS42OTgxMDMsMTAuMDkyNzkxNCAxMjEuMDkwMTkzLDguMjY3NjU3NDMgQzEyMi40ODIyNjcsNi40NDI1NTM0MyAxMjUuODI4Mzk3LDMuODMwODI4NDMgMTI4LjUyNTk5OSwyLjQ2MzgyNDQzIEMxMzIuMzM4NDIzLDAuNTMxOTM5NDI1IDEzNC45NDE0MTksLTAuMDE2NzA1NTc0NiAxNDAuMjEzOTg3LDAgQzE0NC42MTc5NDgsMC4wMTQ2MzU0MjU0IDE0OC40MTM4NDcsMC42NjU4MTk0MjUgMTUxLjAzNTk0OCwxLjg1Njg5MDQzIEMxNTMuMjU3MjMxLDIuODY1ODkzNDMgMTU2Ljk2OTc0LDUuODQ0MzQ3NDMgMTU5LjI4NTk0OCw4LjQ3NTcyNTQzIEMxNjMuNDk3MjM2LDEzLjI1OTk5NzQgMTYzLjQ5NzIzNiwxMy4yNTk5OTc0IDE2Ny43MDg1MjQsOC40NzU3MjU0MyBDMTcwLjAyNDczMiw1Ljg0NDM0NzQzIDE3My43MzcyNDEsMi44NjU4OTM0MyAxNzUuOTU4NTI0LDEuODU2ODkwNDMgQzE3OC41ODA2MjUsMC42NjU4MTk0MjUgMTgyLjM3NjUzOSwwLjAxNDYzNTQyNTQgMTg2Ljc4MDQ3LDAgQzE5Mi4wNTMwNTMsLTAuMDE2NzA1NTc0NiAxOTQuNjU2MDQ5LDAuNTMxOTM5NDI1IDE5OC40Njg0NTgsMi40NjM4MjQ0MyBDMjAxLjE2NjA5LDMuODMwODI4NDMgMjA0LjQ3MzAwNSw2LjQxODMyMjQzIDIwNS44MTcxODIsOC4yMTM4MjQ0MyBDMjA3LjE2MTM2LDEwLjAwOTM1NjQgMjA4Ljk4OTI0LDEyLjkxODU2NjQgMjA5Ljg3OTE5NCwxNC42Nzg3NTk0IEMyMTAuODgxODgsMTYuNjYxOTQ0NCAyMTEuNDk3MjM2LDIwLjM4MjIyMDQgMjExLjQ5NzIzNiwyNC40NjA4NjM0IEMyMTEuNDk3MjM2LDI4LjA4MDg1OTQgMjEwLjg3ODUyMywzMi41MjM0MjQ0IDIxMC4xMjIzMjgsMzQuMzMzMjY5NCBDMjA5LjM2NjEzMiwzNi4xNDMwODQ0IDIwNy4yNzEyNTMsMzkuMzA1MTYzNCAyMDUuNDY3MDI0LDQxLjM2MDA2NDQgQzIwMy42NjI3OTQsNDMuNDE0OTY1NCAyMDAuNDg5MjEsNDUuOTYyMTc2NCAxOTguNDE0NjI1LDQ3LjAyMDU1NjQgQzE5Ni4zNDAwNCw0OC4wNzg5MzY0IDE5NC4zNDAyMjMsNDkuODk3NzIzNCAxOTMuOTcwNjI1LDUxLjA2MjMwNDQgQzE5My42MDA5OTYsNTIuMjI2ODg1NCAxOTMuNjgwNzY5LDUzLjUwODI4ODQgMTk0LjE0NzkwMSw1My45MDk4Mzg0IEMxOTQuNjE1MDM0LDU0LjMxMTM4ODQgMTk3LjY5NzI0OCw1NS4zNzA1MzE0IDIwMC45OTcyMzYsNTYuMjYzNDQ1NCBDMjA0LjI5NzIyNCw1Ny4xNTYzNTk0IDIxMC4xNTMwODksNTguOTY5NDM5NCAyMTQuMDEwMjA2LDYwLjI5MjQ5ODQgQzIxNy44NjczNTMsNjEuNjE1NTI2NCAyMjQuMzY0NzI5LDY0LjE2NDYyOTQgMjI4LjQ0ODgzNSw2NS45NTcxNzE0IEMyMzIuNTMyOTQyLDY3Ljc0OTcxMjQgMjQwLjI5MjA2Niw3MS44MzkzNzM0IDI0NS42OTEyOTcsNzUuMDQ1MzM2NCBDMjUxLjA5MDUyOCw3OC4yNTEyOTk0IDI1OC45OTMxNDcsODMuNDY0MjgxNCAyNjMuMjUyNjY4LDg2LjYyOTcxNzQgQzI2Ny41MTIxOSw4OS43OTUxODM0IDI3Ny4xMTY2ODIsOTguNDgxMDk3NCAyODQuNTk2MDIxLDEwNS45MzE3NSBDMjkyLjA3NTM2MSwxMTMuMzgyNDAzIDMwMS40MTI0MjgsMTIzLjgzNTQ2NyAzMDUuMzQ1MDc1LDEyOS4xNjA3ODQgQzMwOS4yNzc2OTMsMTM0LjQ4NjA3MSAzMTIuOTQ1NzUzLDE0MC4wMjc4OCAzMTMuNDk2MjU5LDE0MS40NzU4NzggQzMxNC4wNDY3OTcsMTQyLjkyMzg3NiAzMTQuNDk3MjM2LDE0Ni45MzcyODkgMzE0LjQ5NzIzNiwxNTAuMzk0NTY0IEMzMTQuNDk3MjM2LDE1NS4xMzAxMjkgMzEzLjg5ODExNSwxNTcuODA3Mjk5IDMxMi4wNjgxODksMTYxLjI0ODkxOSBDMzA5LjYzOTE3MywxNjUuODE3MzI0IDMwOS42MzkxNzMsMTY1LjgxNzMyNCAzMTQuNjI4MjE3LDE3Ny41ODk4MzEgQzMxNy4zNzIxNzUsMTg0LjA2NDcxNSAzMjAuNzM4NzUyLDE5My4yMTM0NTcgMzIyLjEwOTQ0OSwxOTcuOTIwMzY3IEMzMjMuNDgwMTc3LDIwMi42MjcyNzYgMzI1LjI5ODAxNywyMTAuOTc4NDExIDMyNi4xNDkwOTEsMjE2LjQ3ODQxMSBDMzI3LjIxNTAwOSwyMjMuMzY2Njg2IDMyNy41MTg4NDIsMjI5LjkwMTMyNCAzMjcuMTI1NTAxLDIzNy40Nzg0MTEgQzMyNi43OTc0MzcsMjQzLjc5NzY4NiAzMjUuNjgwNDY0LDI1MS41OTY4OCAzMjQuNTAwNTYyLDI1NS44MDcwMjQgQzMyMy4zNzA4OTMsMjU5LjgzNzc4NiAzMjEuMTU2ODEyLDI2NS42OTA3ODMgMzE5LjU4MDM5NiwyNjguODEzNjc3IEMzMTguMDAzOTUsMjcxLjkzNjYwMiAzMTQuNTU1NzA4LDI3Ny4zNjMwNTUgMzExLjkxNzY0NiwyODAuODcyNDU0IEMzMDkuMjc5NTU0LDI4NC4zODE4ODQgMzAzLjgyNDc4MSwyODkuODcyNjk4IDI5OS43OTU5NDIsMjkzLjA3NDI5NyBDMjk1Ljc2NzA3MiwyOTYuMjc1ODY2IDI4OS42NjQxOTgsMzAwLjQ2Mzg4NSAyODYuMjMzOTkxLDMwMi4zODA5NjggQzI4Mi44MDM3ODUsMzA0LjI5ODA4MyAyNzUuODc1MDEzLDMwNy40NTc3NTEgMjcwLjgzNjc0NCwzMDkuNDAyNDgzIEMyNjUuNzk4NDc1LDMxMS4zNDcyNDYgMjU3LjI0ODQ1NywzMTQuMDkwNTk0IDI1MS44MzY3NDQsMzE1LjQ5ODgyNyBDMjQ2LjQyNTAwMSwzMTYuOTA3MDYxIDIzNi41OTcyNDIsMzE4LjkxNDY5IDIyOS45OTcyMzYsMzE5Ljk2MDI4NCBDMjIzLjM5NzIzLDMyMS4wMDU4NDYgMjEyLjUxOTc4OCwzMjIuMzM3NjY0IDIwNS44MjUxNDcsMzIyLjkxOTg0OCBDMTk5LjEzMDUwNiwzMjMuNTAyMDYyIDE3OS4xMDU0OTcsMzIzLjkyNjY4NCAxNjEuMzI1MTQ3LDMyMy44NjM0MjEgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=';\n\n private _connecting: boolean;\n private _wallet: SaifuWallet | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(config: SaifuWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window.saifu) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get connected(): boolean {\n return !!this._wallet?.isConnected;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window!.saifu!;\n\n if (!wallet.isConnected) {\n try {\n await wallet.connect();\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n }\n\n if (!wallet.publicKey) throw new WalletAccountError();\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(wallet.publicKey.toBytes());\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n wallet.on('disconnect', this._disconnected);\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n try {\n await wallet.disconnect();\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n }\n }\n\n this.emit('disconnect');\n }\n\n async sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options: SendTransactionOptions = {}\n ): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n if (!wallet.signAndSendTransaction) return super.sendTransaction(transaction, connection, options);\n\n const { signature } = await wallet.signAndSendTransaction(transaction, options);\n return signature;\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signTransaction(transaction)) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signAllTransactions(transactions)) || transactions;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signMessage(message: Uint8Array): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const { signature } = await wallet.signMessage(message);\n return signature;\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n private _disconnected = () => {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n this.emit('error', new WalletDisconnectedError());\n this.emit('disconnect');\n }\n };\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import { Connection, Transaction, TransactionSignature } from '@solana/web3.js';\nimport { BaseWalletAdapter, SendTransactionOptions, WalletAdapter } from './adapter';\nimport { WalletError, WalletSendTransactionError } from './errors';\n\nexport interface SignerWalletAdapterProps {\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transaction: Transaction[]): Promise;\n}\n\nexport type SignerWalletAdapter = WalletAdapter & SignerWalletAdapterProps;\n\nexport abstract class BaseSignerWalletAdapter extends BaseWalletAdapter implements SignerWalletAdapter {\n async sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options: SendTransactionOptions = {}\n ): Promise {\n let emit = true;\n try {\n try {\n transaction.feePayer = transaction.feePayer || this.publicKey || undefined;\n transaction.recentBlockhash =\n transaction.recentBlockhash || (await connection.getRecentBlockhash('finalized')).blockhash;\n\n const { signers, ...sendOptions } = options;\n\n signers?.length && transaction.partialSign(...signers);\n\n transaction = await this.signTransaction(transaction);\n\n const rawTransaction = transaction.serialize();\n\n return await connection.sendRawTransaction(rawTransaction, sendOptions);\n } catch (error: any) {\n // If the error was thrown by `signTransaction`, rethrow it and don't emit a duplicate event\n if (error instanceof WalletError) {\n emit = false;\n throw error;\n }\n throw new WalletSendTransactionError(error?.message, error);\n }\n } catch (error: any) {\n if (emit) {\n this.emit('error', error);\n }\n throw error;\n }\n }\n\n abstract signTransaction(transaction: Transaction): Promise;\n abstract signAllTransactions(transaction: Transaction[]): Promise;\n}\n\nexport interface MessageSignerWalletAdapterProps {\n signMessage(message: Uint8Array): Promise;\n}\n\nexport type MessageSignerWalletAdapter = WalletAdapter & MessageSignerWalletAdapterProps;\n\nexport abstract class BaseMessageSignerWalletAdapter\n extends BaseSignerWalletAdapter\n implements MessageSignerWalletAdapter\n{\n abstract signMessage(message: Uint8Array): Promise;\n}\n","import {\n BaseMessageSignerWalletAdapter,\n scopePollingDetectionStrategy,\n WalletAccountError,\n WalletConnectionError,\n WalletDisconnectionError,\n WalletError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignMessageError,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { PublicKey, Transaction } from '@solana/web3.js';\nimport bs58 from 'bs58';\n\ninterface SlopeWallet {\n connect(): Promise<{\n msg: string;\n data: {\n publicKey?: string;\n };\n }>;\n disconnect(): Promise<{ msg: string }>;\n signTransaction(message: string): Promise<{\n msg: string;\n data: {\n publicKey?: string;\n signature?: string;\n };\n }>;\n signAllTransactions(messages: string[]): Promise<{\n msg: string;\n data: {\n publicKey?: string;\n signatures?: string[];\n };\n }>;\n signMessage(message: Uint8Array): Promise<{ data: { signature: string } }>;\n}\n\ninterface SlopeWindow extends Window {\n Slope?: {\n new (): SlopeWallet;\n };\n slopeApp?: unknown;\n}\n\ndeclare const window: SlopeWindow;\n\nexport interface SlopeWalletAdapterConfig {}\n\nexport const SlopeWalletName = 'Slope' as WalletName<'Slope'>;\n\nexport class SlopeWalletAdapter extends BaseMessageSignerWalletAdapter {\n name = SlopeWalletName;\n url = 'https://slope.finance';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDEyOCAxMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiByeD0iNjQiIGZpbGw9IiM2RTY2RkEiLz4KPHBhdGggZD0iTTI3Ljk0NzUgNTIuMTU5Nkw1MS45ODI2IDI4LjA1NzJMNzIuNjA5OCA3LjY1Mzg5QzczLjg3MzQgNi40MDQwMSA3Ni4wMTc4IDcuMjk5MSA3Ni4wMTc4IDkuMDc2NDJMNzYuMDE4NyA1Mi4xNTlMNTEuOTgzNiA3Ni4xMjY4TDI3Ljk0NzUgNTIuMTU5NloiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8zNzk1XzI1NTQzKSIvPgo8cGF0aCBkPSJNMTAwLjA1MyA3NS45OTNMNzYuMDE4IDUxLjk1OEw1MS45ODI5IDc1Ljk5MzFMNTEuOTgyOSAxMTguOTI0QzUxLjk4MjkgMTIwLjcwMyA1NC4xMzEyIDEyMS41OTcgNTUuMzkzNyAxMjAuMzQzTDEwMC4wNTMgNzUuOTkzWiIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzM3OTVfMjU1NDMpIi8+CjxwYXRoIGQ9Ik0yNy45NDcgNTIuMTYwMUg0NC42ODM5QzQ4LjcxNDcgNTIuMTYwMSA1MS45ODIyIDU1LjQyNzYgNTEuOTgyMiA1OS40NTgzVjc2LjEyNjlIMzUuMjQ1M0MzMS4yMTQ2IDc2LjEyNjkgMjcuOTQ3IDcyLjg1OTQgMjcuOTQ3IDY4LjgyODdWNTIuMTYwMVoiIGZpbGw9IiNGMUYwRkYiLz4KPHBhdGggZD0iTTc2LjAxNzggNTIuMTYwMUg5Mi43NTQ3Qzk2Ljc4NTUgNTIuMTYwMSAxMDAuMDUzIDU1LjQyNzYgMTAwLjA1MyA1OS40NTgzVjc2LjEyNjlIODMuMzE2MUM3OS4yODU0IDc2LjEyNjkgNzYuMDE3OCA3Mi44NTk0IDc2LjAxNzggNjguODI4N1Y1Mi4xNjAxWiIgZmlsbD0iI0YxRjBGRiIvPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzM3OTVfMjU1NDMiIHgxPSI1MS45ODMxIiB5MT0iNy4wNzE1NSIgeDI9IjUxLjk4MzEiIHkyPSI3Ni4xMjY4IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNBOEFERkYiLz4KPHN0b3Agb2Zmc2V0PSIwLjY0ODU1NiIgc3RvcC1jb2xvcj0id2hpdGUiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDFfbGluZWFyXzM3OTVfMjU1NDMiIHgxPSI3Ni4wMTgiIHkxPSI1MS45NTgiIHgyPSI3Ni4wMTgiIHkyPSIxMjAuOTI4IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIG9mZnNldD0iMC4yNjA3ODQiIHN0b3AtY29sb3I9IiNCNkJBRkYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRTRFMkZGIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==';\n\n private _connecting: boolean;\n private _wallet: SlopeWallet | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(config: SlopeWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (typeof window.Slope === 'function' || window.slopeApp) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed || !window.Slope) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n const wallet = new window.Slope();\n\n let data: { publicKey?: string | undefined };\n try {\n ({ data } = await wallet.connect());\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n\n if (!data.publicKey) throw new WalletAccountError();\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(data.publicKey);\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n this._wallet = null;\n this._publicKey = null;\n\n try {\n const { msg } = await wallet.disconnect();\n if (msg !== 'ok') throw new WalletDisconnectionError(msg);\n } catch (error: any) {\n if (!(error instanceof WalletError)) {\n // eslint-disable-next-line no-ex-assign\n error = new WalletDisconnectionError(error?.message, error);\n }\n this.emit('error', error);\n }\n }\n\n this.emit('disconnect');\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const message = bs58.encode(transaction.serializeMessage());\n const { msg, data } = await wallet.signTransaction(message);\n\n if (!data.publicKey || !data.signature) throw new WalletSignTransactionError(msg);\n\n const publicKey = new PublicKey(data.publicKey);\n const signature = bs58.decode(data.signature);\n\n transaction.addSignature(publicKey, signature);\n return transaction;\n } catch (error: any) {\n if (error instanceof WalletError) throw error;\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const messages = transactions.map((transaction) => bs58.encode(transaction.serializeMessage()));\n const { msg, data } = await wallet.signAllTransactions(messages);\n\n const length = transactions.length;\n if (!data.publicKey || data.signatures?.length !== length) throw new WalletSignTransactionError(msg);\n\n const publicKey = new PublicKey(data.publicKey);\n\n for (let i = 0; i < length; i++) {\n transactions[i].addSignature(publicKey, bs58.decode(data.signatures[i]));\n }\n\n return transactions;\n } catch (error: any) {\n if (error instanceof WalletError) throw error;\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signMessage(message: Uint8Array): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const response = await wallet.signMessage(message);\n return bs58.decode(response.data.signature);\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import { Connection, Transaction, TransactionSignature } from '@solana/web3.js';\nimport { BaseWalletAdapter, SendTransactionOptions, WalletAdapter } from './adapter';\nimport { WalletError, WalletSendTransactionError } from './errors';\n\nexport interface SignerWalletAdapterProps {\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transaction: Transaction[]): Promise;\n}\n\nexport type SignerWalletAdapter = WalletAdapter & SignerWalletAdapterProps;\n\nexport abstract class BaseSignerWalletAdapter extends BaseWalletAdapter implements SignerWalletAdapter {\n async sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options: SendTransactionOptions = {}\n ): Promise {\n let emit = true;\n try {\n try {\n transaction.feePayer = transaction.feePayer || this.publicKey || undefined;\n transaction.recentBlockhash =\n transaction.recentBlockhash || (await connection.getRecentBlockhash('finalized')).blockhash;\n\n const { signers, ...sendOptions } = options;\n\n signers?.length && transaction.partialSign(...signers);\n\n transaction = await this.signTransaction(transaction);\n\n const rawTransaction = transaction.serialize();\n\n return await connection.sendRawTransaction(rawTransaction, sendOptions);\n } catch (error: any) {\n // If the error was thrown by `signTransaction`, rethrow it and don't emit a duplicate event\n if (error instanceof WalletError) {\n emit = false;\n throw error;\n }\n throw new WalletSendTransactionError(error?.message, error);\n }\n } catch (error: any) {\n if (emit) {\n this.emit('error', error);\n }\n throw error;\n }\n }\n\n abstract signTransaction(transaction: Transaction): Promise;\n abstract signAllTransactions(transaction: Transaction[]): Promise;\n}\n\nexport interface MessageSignerWalletAdapterProps {\n signMessage(message: Uint8Array): Promise;\n}\n\nexport type MessageSignerWalletAdapter = WalletAdapter & MessageSignerWalletAdapterProps;\n\nexport abstract class BaseMessageSignerWalletAdapter\n extends BaseSignerWalletAdapter\n implements MessageSignerWalletAdapter\n{\n abstract signMessage(message: Uint8Array): Promise;\n}\n","import {\n BaseMessageSignerWalletAdapter,\n scopePollingDetectionStrategy,\n WalletAdapterNetwork,\n WalletConfigError,\n WalletConnectionError,\n WalletDisconnectedError,\n WalletDisconnectionError,\n WalletLoadError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignMessageError,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { PublicKey, Transaction } from '@solana/web3.js';\nimport type Solflare from '@solflare-wallet/sdk';\n\ninterface SolflareWindow extends Window {\n solflare?: {\n isSolflare?: boolean;\n };\n SolflareApp?: unknown;\n}\n\ndeclare const window: SolflareWindow;\n\nexport interface SolflareWalletAdapterConfig {\n network?: WalletAdapterNetwork;\n}\n\nexport const SolflareWalletName = 'Solflare' as WalletName<'Solflare'>;\n\nexport class SolflareWalletAdapter extends BaseMessageSignerWalletAdapter {\n name = SolflareWalletName;\n url = 'https://solflare.com';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjUwIiB2aWV3Qm94PSIwIDAgNTAgNTAiIHdpZHRoPSI1MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGxpbmVhckdyYWRpZW50IGlkPSJhIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmMxMGIiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmYjNmMmUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI2LjQ3ODM1IiB4Mj0iMzQuOTEwNyIgeGxpbms6aHJlZj0iI2EiIHkxPSI3LjkyIiB5Mj0iMzMuNjU5MyIvPjxyYWRpYWxHcmFkaWVudCBpZD0iYyIgY3g9IjAiIGN5PSIwIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDQuOTkyMTg4MzIgMTIuMDYzODc5NjMgLTEyLjE4MTEzNjU1IDUuMDQwNzEwNzQgMjIuNTIwMiAyMC42MTgzKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHI9IjEiIHhsaW5rOmhyZWY9IiNhIi8+PHBhdGggZD0ibTI1LjE3MDggNDcuOTEwNGMuNTI1IDAgLjk1MDcuNDIxLjk1MDcuOTQwM3MtLjQyNTcuOTQwMi0uOTUwNy45NDAyLS45NTA3LS40MjA5LS45NTA3LS45NDAyLjQyNTctLjk0MDMuOTUwNy0uOTQwM3ptLTEuMDMyOC00NC45MTU2NWMuNDY0Ni4wMzgzNi44Mzk4LjM5MDQuOTAyNy44NDY4MWwxLjEzMDcgOC4yMTU3NGMuMzc5OCAyLjcxNDMgMy42NTM1IDMuODkwNCA1LjY3NDMgMi4wNDU5bDExLjMyOTEtMTAuMzExNThjLjI3MzMtLjI0ODczLjY5ODktLjIzMTQ5Ljk1MDcuMDM4NTEuMjMwOS4yNDc3Mi4yMzc5LjYyNjk3LjAxNjEuODgyNzdsLTkuODc5MSAxMS4zOTU4Yy0xLjgxODcgMi4wOTQyLS40NzY4IDUuMzY0MyAyLjI5NTYgNS41OTc4bDguNzE2OC44NDAzYy40MzQxLjA0MTguNzUxNy40MjM0LjcwOTMuODUyNC0uMDM0OS4zNTM3LS4zMDc0LjYzOTUtLjY2MjguNjk0OWwtOS4xNTk0IDEuNDMwMmMtMi42NTkzLjM2MjUtMy44NjM2IDMuNTExNy0yLjEzMzkgNS41NTc2bDMuMjIgMy43OTYxYy4yNTk0LjMwNTguMjE4OC43NjE1LS4wOTA4IDEuMDE3OC0uMjYyMi4yMTcyLS42NDE5LjIyNTYtLjkxMzguMDIwM2wtMy45Njk0LTIuOTk3OGMtMi4xNDIxLTEuNjEwOS01LjIyOTctLjI0MTctNS40NTYxIDIuNDI0M2wtLjg3NDcgMTAuMzk3NmMtLjAzNjIuNDI5NS0uNDE3OC43NDg3LS44NTI1LjcxMy0uMzY5LS4wMzAzLS42NjcxLS4zMDk3LS43MTcxLS42NzIxbC0xLjM4NzEtMTAuMDQzN2MtLjM3MTctMi43MTQ0LTMuNjQ1NC0zLjg5MDQtNS42NzQzLTIuMDQ1OWwtMTIuMDUxOTUgMTAuOTc0Yy0uMjQ5NDcuMjI3MS0uNjM4MDkuMjExNC0uODY4LS4wMzUtLjIxMDk0LS4yMjYyLS4yMTczNS0uNTcyNC0uMDE0OTMtLjgwNmwxMC41MTgxOC0xMi4xMzg1YzEuODE4Ny0yLjA5NDIuNDg0OS01LjM2NDQtMi4yODc2LTUuNTk3OGwtOC43MTg3Mi0uODQwNWMtLjQzNDEzLS4wNDE4LS43NTE3Mi0uNDIzNS0uNzA5MzYtLjg1MjQuMDM0OTMtLjM1MzcuMzA3MzktLjYzOTQuNjYyNy0uNjk1bDkuMTUzMzgtMS40Mjk5YzIuNjU5NC0uMzYyNSAzLjg3MTgtMy41MTE3IDIuMTQyMS01LjU1NzZsLTIuMTkyLTIuNTg0MWMtLjMyMTctLjM3OTItLjI3MTMtLjk0NDMuMTEyNi0xLjI2MjEuMzI1My0uMjY5NC43OTYzLS4yNzk3IDEuMTMzNC0uMDI0OWwyLjY5MTggMi4wMzQ3YzIuMTQyMSAxLjYxMDkgNS4yMjk3LjI0MTcgNS40NTYxLTIuNDI0M2wuNzI0MS04LjU1OTk4Yy4wNDU3LS41NDA4LjUyNjUtLjk0MjU3IDEuMDczOS0uODk3Mzd6bS0yMy4xODczMyAyMC40Mzk2NWMuNTI1MDQgMCAuOTUwNjcuNDIxLjk1MDY3Ljk0MDNzLS40MjU2My45NDAzLS45NTA2Ny45NDAzYy0uNTI1MDQxIDAtLjk1MDY3LS40MjEtLjk1MDY3LS45NDAzcy40MjU2MjktLjk0MDMuOTUwNjctLjk0MDN6bTQ3LjY3OTczLS45NTQ3Yy41MjUgMCAuOTUwNy40MjEuOTUwNy45NDAzcy0uNDI1Ny45NDAyLS45NTA3Ljk0MDItLjk1MDctLjQyMDktLjk1MDctLjk0MDIuNDI1Ny0uOTQwMy45NTA3LS45NDAzem0tMjQuNjI5Ni0yMi40Nzk3Yy41MjUgMCAuOTUwNi40MjA5NzMuOTUwNi45NDAyNyAwIC41MTkzLS40MjU2Ljk0MDI3LS45NTA2Ljk0MDI3LS41MjUxIDAtLjk1MDctLjQyMDk3LS45NTA3LS45NDAyNyAwLS41MTkyOTcuNDI1Ni0uOTQwMjcuOTUwNy0uOTQwMjd6IiBmaWxsPSJ1cmwoI2IpIi8+PHBhdGggZD0ibTI0LjU3MSAzMi43NzkyYzQuOTU5NiAwIDguOTgwMi0zLjk3NjUgOC45ODAyLTguODgxOSAwLTQuOTA1My00LjAyMDYtOC44ODE5LTguOTgwMi04Ljg4MTlzLTguOTgwMiAzLjk3NjYtOC45ODAyIDguODgxOWMwIDQuOTA1NCA0LjAyMDYgOC44ODE5IDguOTgwMiA4Ljg4MTl6IiBmaWxsPSJ1cmwoI2MpIi8+PC9zdmc+';\n\n private _connecting: boolean;\n private _wallet: import('@solflare-wallet/sdk').default | null;\n private _publicKey: PublicKey | null;\n private _config: SolflareWalletAdapterConfig;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' ? WalletReadyState.Unsupported : WalletReadyState.Loadable;\n\n constructor(config: SolflareWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._publicKey = null;\n this._wallet = null;\n this._config = config;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window.solflare?.isSolflare || window.SolflareApp) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get connected(): boolean {\n return !!this._wallet?.connected;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Loadable && this._readyState !== WalletReadyState.Installed)\n throw new WalletNotReadyError();\n\n let SolflareClass: typeof Solflare;\n try {\n ({ default: SolflareClass } = await import('@solflare-wallet/sdk'));\n } catch (error: any) {\n throw new WalletLoadError(error?.message, error);\n }\n\n let wallet: Solflare;\n try {\n wallet = new SolflareClass({ network: this._config.network });\n } catch (error: any) {\n throw new WalletConfigError(error?.message, error);\n }\n\n this._connecting = true;\n\n if (!wallet.connected) {\n try {\n await wallet.connect();\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n }\n\n if (!wallet.publicKey) throw new WalletConnectionError();\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(wallet.publicKey.toBytes());\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n wallet.on('disconnect', this._disconnected);\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._publicKey = null;\n\n try {\n await wallet.disconnect();\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n }\n }\n\n this.emit('disconnect');\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signTransaction(transaction)) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signAllTransactions(transactions)) || transactions;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signMessage(message: Uint8Array): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return await wallet.signMessage(message, 'utf8');\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n private _disconnected = () => {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._publicKey = null;\n\n this.emit('error', new WalletDisconnectedError());\n this.emit('disconnect');\n }\n };\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import { Connection, Transaction, TransactionSignature } from '@solana/web3.js';\nimport { BaseWalletAdapter, SendTransactionOptions, WalletAdapter } from './adapter';\nimport { WalletError, WalletSendTransactionError } from './errors';\n\nexport interface SignerWalletAdapterProps {\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transaction: Transaction[]): Promise;\n}\n\nexport type SignerWalletAdapter = WalletAdapter & SignerWalletAdapterProps;\n\nexport abstract class BaseSignerWalletAdapter extends BaseWalletAdapter implements SignerWalletAdapter {\n async sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options: SendTransactionOptions = {}\n ): Promise {\n let emit = true;\n try {\n try {\n transaction.feePayer = transaction.feePayer || this.publicKey || undefined;\n transaction.recentBlockhash =\n transaction.recentBlockhash || (await connection.getRecentBlockhash('finalized')).blockhash;\n\n const { signers, ...sendOptions } = options;\n\n signers?.length && transaction.partialSign(...signers);\n\n transaction = await this.signTransaction(transaction);\n\n const rawTransaction = transaction.serialize();\n\n return await connection.sendRawTransaction(rawTransaction, sendOptions);\n } catch (error: any) {\n // If the error was thrown by `signTransaction`, rethrow it and don't emit a duplicate event\n if (error instanceof WalletError) {\n emit = false;\n throw error;\n }\n throw new WalletSendTransactionError(error?.message, error);\n }\n } catch (error: any) {\n if (emit) {\n this.emit('error', error);\n }\n throw error;\n }\n }\n\n abstract signTransaction(transaction: Transaction): Promise;\n abstract signAllTransactions(transaction: Transaction[]): Promise;\n}\n\nexport interface MessageSignerWalletAdapterProps {\n signMessage(message: Uint8Array): Promise;\n}\n\nexport type MessageSignerWalletAdapter = WalletAdapter & MessageSignerWalletAdapterProps;\n\nexport abstract class BaseMessageSignerWalletAdapter\n extends BaseSignerWalletAdapter\n implements MessageSignerWalletAdapter\n{\n abstract signMessage(message: Uint8Array): Promise;\n}\n","import type SolWalletAdapter from '@project-serum/sol-wallet-adapter';\nimport {\n BaseMessageSignerWalletAdapter,\n scopePollingDetectionStrategy,\n WalletAdapterNetwork,\n WalletConfigError,\n WalletConnectionError,\n WalletDisconnectedError,\n WalletDisconnectionError,\n WalletError,\n WalletLoadError,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignMessageError,\n WalletSignTransactionError,\n WalletTimeoutError,\n WalletWindowBlockedError,\n WalletWindowClosedError,\n} from '@solana/wallet-adapter-base';\nimport { PublicKey, Transaction } from '@solana/web3.js';\n\ninterface SolletWallet {\n postMessage?(...args: unknown[]): unknown;\n}\n\ninterface SolletWindow extends Window {\n sollet?: SolletWallet;\n}\n\ndeclare const window: SolletWindow;\n\nexport interface SolletWalletAdapterConfig {\n provider?: string | SolletWallet;\n network?: WalletAdapterNetwork;\n timeout?: number;\n}\n\nexport abstract class BaseSolletWalletAdapter extends BaseMessageSignerWalletAdapter {\n protected _provider: string | SolletWallet | undefined;\n protected _network: WalletAdapterNetwork;\n protected _timeout: number;\n protected _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n protected _connecting: boolean;\n protected _wallet: SolWalletAdapter | null;\n\n constructor({ provider, network = WalletAdapterNetwork.Mainnet, timeout = 10000 }: SolletWalletAdapterConfig = {}) {\n super();\n\n this._provider = provider;\n this._network = network;\n this._timeout = timeout;\n this._connecting = false;\n this._wallet = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n if (typeof this._provider === 'string') {\n this._readyState = WalletReadyState.Loadable;\n } else {\n scopePollingDetectionStrategy(() => {\n if (typeof window.sollet?.postMessage === 'function') {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._wallet?.publicKey || null;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get connected(): boolean {\n return !!this._wallet?.connected;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (!(this._readyState === WalletReadyState.Loadable || this._readyState === WalletReadyState.Installed))\n throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const provider = this._provider || window!.sollet!;\n\n let SolWalletAdapterClass: typeof SolWalletAdapter;\n try {\n ({ default: SolWalletAdapterClass } = await import('@project-serum/sol-wallet-adapter'));\n } catch (error: any) {\n throw new WalletLoadError(error?.message, error);\n }\n\n let wallet: SolWalletAdapter;\n try {\n wallet = new SolWalletAdapterClass(provider, this._network);\n } catch (error: any) {\n throw new WalletConfigError(error?.message, error);\n }\n\n try {\n // HACK: sol-wallet-adapter doesn't reject or emit an event if the popup or extension is closed or blocked\n const handleDisconnect: (...args: unknown[]) => unknown = (wallet as any).handleDisconnect;\n let timeout: NodeJS.Timer | undefined;\n let interval: NodeJS.Timer | undefined;\n try {\n await new Promise((resolve, reject) => {\n const connect = () => {\n if (timeout) clearTimeout(timeout);\n wallet.off('connect', connect);\n resolve();\n };\n\n (wallet as any).handleDisconnect = (...args: unknown[]): unknown => {\n wallet.off('connect', connect);\n reject(new WalletWindowClosedError());\n return handleDisconnect.apply(wallet, args);\n };\n\n wallet.on('connect', connect);\n\n wallet.connect().catch((reason: any) => {\n wallet.off('connect', connect);\n reject(reason);\n });\n\n if (typeof provider === 'string') {\n let count = 0;\n\n interval = setInterval(() => {\n const popup = (wallet as any)._popup;\n if (popup) {\n if (popup.closed) reject(new WalletWindowClosedError());\n } else {\n if (count > 50) reject(new WalletWindowBlockedError());\n }\n\n count++;\n }, 100);\n } else {\n // HACK: sol-wallet-adapter doesn't reject or emit an event if the extension is closed or ignored\n timeout = setTimeout(() => reject(new WalletTimeoutError()), this._timeout);\n }\n });\n } finally {\n (wallet as any).handleDisconnect = handleDisconnect;\n if (interval) clearInterval(interval);\n }\n } catch (error: any) {\n if (error instanceof WalletError) throw error;\n throw new WalletConnectionError(error?.message, error);\n }\n\n if (!wallet.publicKey) throw new WalletPublicKeyError();\n\n wallet.on('disconnect', this._disconnected);\n\n this._wallet = wallet;\n\n this.emit('connect', wallet.publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n\n // HACK: sol-wallet-adapter doesn't reliably fulfill its promise or emit an event on disconnect\n const handleDisconnect: (...args: unknown[]) => unknown = (wallet as any).handleDisconnect;\n try {\n await new Promise((resolve, reject) => {\n const timeout = setTimeout(() => resolve(), 250);\n\n (wallet as any).handleDisconnect = (...args: unknown[]): unknown => {\n clearTimeout(timeout);\n resolve();\n // HACK: sol-wallet-adapter rejects with an uncaught promise error\n (wallet as any)._responsePromises = new Map();\n return handleDisconnect.apply(wallet, args);\n };\n\n wallet.disconnect().then(\n () => {\n clearTimeout(timeout);\n resolve();\n },\n (error) => {\n clearTimeout(timeout);\n // HACK: sol-wallet-adapter rejects with an error on disconnect\n if (error?.message === 'Wallet disconnected') {\n resolve();\n } else {\n reject(error);\n }\n }\n );\n });\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n } finally {\n (wallet as any).handleDisconnect = handleDisconnect;\n }\n }\n\n this.emit('disconnect');\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signTransaction(transaction)) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signAllTransactions(transactions)) || transactions;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signMessage(message: Uint8Array): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const { signature } = await wallet.sign(message, 'utf8');\n return Uint8Array.from(signature);\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n private _disconnected = () => {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n\n this.emit('error', new WalletDisconnectedError());\n this.emit('disconnect');\n }\n };\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","import { WalletName } from '@solana/wallet-adapter-base';\nimport { BaseSolletWalletAdapter, SolletWalletAdapterConfig } from './base';\n\nexport const SolletWalletName = 'Sollet' as WalletName<'Sollet'>;\n\nexport class SolletWalletAdapter extends BaseSolletWalletAdapter {\n name = SolletWalletName;\n url = 'https://www.sollet.io';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjUzMCIgd2lkdGg9IjUzMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtLTEtMWg1MzJ2NTMyaC01MzJ6IiBmaWxsPSJub25lIi8+PGcgZmlsbD0iIzAwZmZhMyI+PHBhdGggZD0ibTg4Ljg4OTM1IDM3Mi45ODIwMWMzLjE5My0zLjE5IDcuNTIyLTQuOTgyIDEyLjAzNS00Ljk4Mmg0MTYuNDYxYzcuNTg2IDAgMTEuMzg0IDkuMTc0IDYuMDE3IDE0LjUzNmwtODIuMjkxIDgyLjIyNmMtMy4xOTMgMy4xOTEtNy41MjIgNC45ODMtMTIuMDM2IDQuOTgzaC00MTYuNDYwMWMtNy41ODY2IDAtMTEuMzg0NS05LjE3NC02LjAxNzgtMTQuNTM3bDgyLjI5MTktODIuMjI2eiIvPjxwYXRoIGQ9Im04OC44ODkzNSA2NS45ODI1YzMuMTkzLTMuMTkwNCA3LjUyMi00Ljk4MjUgMTIuMDM1LTQuOTgyNWg0MTYuNDYxYzcuNTg2IDAgMTEuMzg0IDkuMTczOSA2LjAxNyAxNC41MzYzbC04Mi4yOTEgODIuMjI2N2MtMy4xOTMgMy4xOS03LjUyMiA0Ljk4Mi0xMi4wMzYgNC45ODJoLTQxNi40NjAxYy03LjU4NjYgMC0xMS4zODQ1LTkuMTc0LTYuMDE3OC0xNC41MzZsODIuMjkxOS04Mi4yMjY1eiIvPjxwYXRoIGQ9Im00NDEuMTExMzUgMjE5LjEwOTVjLTMuMTkzLTMuMTktNy41MjItNC45ODItMTIuMDM2LTQuOTgyaC00MTYuNDYwMWMtNy41ODY2IDAtMTEuMzg0NSA5LjE3My02LjAxNzggMTQuNTM2bDgyLjI5MTkgODIuMjI2YzMuMTkzIDMuMTkgNy41MjIgNC45ODMgMTIuMDM1IDQuOTgzaDQxNi40NjFjNy41ODYgMCAxMS4zODQtOS4xNzQgNi4wMTctMTQuNTM3eiIvPjwvZz48L3N2Zz4=';\n\n constructor({ provider = 'https://www.sollet.io', ...config }: SolletWalletAdapterConfig = {}) {\n super({ provider, ...config });\n }\n}\n\nexport const SolletExtensionWalletName = 'Sollet (Extension)' as WalletName<'Sollet (Extension)'>;\n\nexport class SolletExtensionWalletAdapter extends BaseSolletWalletAdapter {\n name = SolletExtensionWalletName;\n url = 'https://chrome.google.com/webstore/detail/sollet/fhmfendgdocmcbmfikdcogofphimnkno';\n icon =\n 'data:image/png;base64,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';\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import {\n BaseSignerWalletAdapter,\n scopePollingDetectionStrategy,\n WalletAccountError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { PublicKey, Transaction } from '@solana/web3.js';\n\ninterface SolongWallet {\n currentAccount?: string | null;\n selectAccount(): Promise;\n signTransaction(transaction: Transaction): Promise;\n}\n\ninterface SolongWindow extends Window {\n solong?: SolongWallet;\n}\n\ndeclare const window: SolongWindow;\n\nexport interface SolongWalletAdapterConfig {}\n\nexport const SolongWalletName = 'Solong' as WalletName<'Solong'>;\n\nexport class SolongWalletAdapter extends BaseSignerWalletAdapter {\n name = SolongWalletName;\n url = 'https://solongwallet.io';\n icon =\n 'data:image/png;base64,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';\n\n private _connecting: boolean;\n private _wallet: SolongWallet | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(config: SolongWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window.solong) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get connected(): boolean {\n return !!this._wallet?.currentAccount;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window!.solong!;\n\n let account: string;\n try {\n account = await wallet.selectAccount();\n } catch (error: any) {\n throw new WalletAccountError(error?.message, error);\n }\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(account);\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n if (this._wallet) {\n this._wallet = null;\n this._publicKey = null;\n }\n\n this.emit('disconnect');\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signTransaction(transaction)) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n const signedTransactions: Transaction[] = [];\n for (const transaction of transactions) {\n signedTransactions.push(await this.signTransaction(transaction));\n }\n return signedTransactions;\n }\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import {\n BaseMessageSignerWalletAdapter,\n EventEmitter,\n scopePollingDetectionStrategy,\n WalletAccountError,\n WalletConnectionError,\n WalletDisconnectedError,\n WalletDisconnectionError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignMessageError,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { PublicKey, SendOptions, Transaction, TransactionSignature } from '@solana/web3.js';\n\ninterface SpotWalletEvents {\n connect(...args: unknown[]): unknown;\n disconnect(...args: unknown[]): unknown;\n}\n\ninterface SpotWallet extends EventEmitter {\n publicKey?: { toBytes(): Uint8Array };\n isConnected: boolean;\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transactions: Transaction[]): Promise;\n signMessage(message: Uint8Array): Promise<{ signature: Uint8Array }>;\n connect(): Promise;\n disconnect(): Promise;\n}\n\ninterface SpotWindow extends Window {\n spotSolWallet?: SpotWallet;\n}\n\ndeclare const window: SpotWindow;\n\nexport interface SpotWalletAdapterConfig {}\n\nexport const SpotWalletName = 'Spot' as WalletName;\n\nexport class SpotWalletAdapter extends BaseMessageSignerWalletAdapter {\n name = SpotWalletName;\n url = 'https://spot-wallet.com';\n icon =\n 'data:image/png;base64,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';\n\n private _connecting: boolean;\n private _wallet: SpotWallet | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(config: SpotWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window.spotSolWallet) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get connected(): boolean {\n return !!this._wallet?.isConnected;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window!.spotSolWallet!;\n\n try {\n await wallet.connect();\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n\n if (!wallet.publicKey) {\n throw new WalletAccountError();\n }\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(wallet.publicKey.toBytes());\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n wallet.on('disconnect', this._disconnected);\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n try {\n await wallet.disconnect();\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n }\n }\n\n this.emit('disconnect');\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return await wallet.signTransaction(transaction);\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return await wallet.signAllTransactions(transactions);\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signMessage(message: Uint8Array): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const { signature } = await wallet.signMessage(message);\n return signature;\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n private _disconnected = () => {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n this.emit('error', new WalletDisconnectedError());\n this.emit('disconnect');\n }\n };\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import {\n BaseMessageSignerWalletAdapter,\n EventEmitter,\n scopePollingDetectionStrategy,\n WalletAccountError,\n WalletConnectionError,\n WalletDisconnectedError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignMessageError,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { PublicKey, Transaction } from '@solana/web3.js';\n\ninterface TokenPocketWalletEvents {\n connect(...args: unknown[]): unknown;\n disconnect(...args: unknown[]): unknown;\n}\n\ninterface TokenPocketWallet extends EventEmitter {\n isTokenPocket?: boolean;\n publicKey?: { toBytes(): Uint8Array };\n isConnected: boolean;\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transactions: Transaction[]): Promise;\n signMessage(message: Uint8Array): Promise<{ signature: Uint8Array }>;\n connect(): Promise;\n disconnect(): Promise;\n}\n\ninterface TokenPocketWindow extends Window {\n solana?: TokenPocketWallet;\n}\n\ndeclare const window: TokenPocketWindow;\n\nexport interface TokenPocketWalletAdapterConfig {}\n\nexport const TokenPocketWalletName = 'TokenPocket' as WalletName<'TokenPocket'>;\n\nexport class TokenPocketWalletAdapter extends BaseMessageSignerWalletAdapter {\n name = TokenPocketWalletName;\n url = 'https://tokenpocket.pro';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwIiBoZWlnaHQ9IjEyMCIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGc+CjxwYXRoIGQ9Ik0xMDQxLjUyIDBILTI3VjEwMjRIMTA0MS41MlYwWiIgZmlsbD0iIzI5ODBGRSIvPgo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfNDA4XzIyNSkiPgo8cGF0aCBkPSJNNDA2Ljc5NiA0MzguNjQzSDQwNi45MjdDNDA2Ljc5NiA0MzcuODU3IDQwNi43OTYgNDM2Ljk0IDQwNi43OTYgNDM2LjE1NFY0MzguNjQzWiIgZmlsbD0iIzI5QUVGRiIvPgo8cGF0aCBkPSJNNjY3LjYwMiA0NjMuNTMzSDUyMy4yNDlWNzI0LjA3NkM1MjMuMjQ5IDczNi4zODkgNTMzLjIwNCA3NDYuMzQ1IDU0NS41MTcgNzQ2LjM0NUg2NDUuMzMzQzY1Ny42NDcgNzQ2LjM0NSA2NjcuNjAyIDczNi4zODkgNjY3LjYwMiA3MjQuMDc2VjQ2My41MzNaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNDUzLjU2MyAyNzdINDQ4LjcxNkgxOTAuMjY5QzE3Ny45NTUgMjc3IDE2OCAyODYuOTU1IDE2OCAyOTkuMjY5VjM4OS42NTNDMTY4IDQwMS45NjcgMTc3Ljk1NSA0MTEuOTIyIDE5MC4yNjkgNDExLjkyMkgyNTAuOTE4SDI3NS4wMjFWNDM4LjY0NFY3MjQuNzMxQzI3NS4wMjEgNzM3LjA0NSAyODQuOTc2IDc0NyAyOTcuMjg5IDc0N0gzOTIuMTI4QzQwNC40NDEgNzQ3IDQxNC4zOTYgNzM3LjA0NSA0MTQuMzk2IDcyNC43MzFWNDM4LjY0NFY0MzYuMTU2VjQxMS45MjJINDM4LjQ5OUg0NDguMzIzSDQ1My4xN0M0OTAuMzcyIDQxMS45MjIgNTIwLjYzMSAzODEuNjYzIDUyMC42MzEgMzQ0LjQ2MUM1MjEuMDI0IDMwNy4yNTkgNDkwLjc2NSAyNzcgNDUzLjU2MyAyNzdaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNjY3LjczNSA0NjMuNTMzVjY0NS4zNUM2NzIuNzEzIDY0Ni41MjkgNjc3LjgyMSA2NDcuNDQ2IDY4My4wNjEgNjQ4LjIzMkM2OTAuMzk3IDY0OS4yOCA2OTcuOTk0IDY0OS45MzUgNzA1LjU5MiA2NTAuMDY2QzcwNS45ODUgNjUwLjA2NiA3MDYuMzc4IDY1MC4wNjYgNzA2LjkwMiA2NTAuMDY2VjUwNS40NUM2ODUuMDI2IDUwNC4wMDkgNjY3LjczNSA0ODUuODAxIDY2Ny43MzUgNDYzLjUzM1oiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl80MDhfMjI1KSIvPgo8cGF0aCBkPSJNNzA5Ljc4MSAyNzdDNjA2LjgyMiAyNzcgNTIzLjI0OSAzNjAuNTczIDUyMy4yNDkgNDYzLjUzM0M1MjMuMjQ5IDU1Mi4wODQgNTg0Ljk0NiA2MjYuMjI1IDY2Ny43MzMgNjQ1LjM1VjQ2My41MzNDNjY3LjczMyA0NDAuMzQ3IDY4Ni41OTYgNDIxLjQ4NCA3MDkuNzgxIDQyMS40ODRDNzMyLjk2NyA0MjEuNDg0IDc1MS44MyA0NDAuMzQ3IDc1MS44MyA0NjMuNTMzQzc1MS44MyA0ODMuMDUxIDczOC42IDQ5OS40MjUgNzIwLjUyMyA1MDQuMTRDNzE3LjExNyA1MDUuMDU3IDcxMy40NDkgNTA1LjU4MSA3MDkuNzgxIDUwNS41ODFWNjUwLjA2NkM3MTMuNDQ5IDY1MC4wNjYgNzE2Ljk4NiA2NDkuOTM1IDcyMC41MjMgNjQ5LjgwNEM4MTguNTA1IDY0NC4xNzEgODk2LjMxNCA1NjIuOTU2IDg5Ni4zMTQgNDYzLjUzM0M4OTYuNDQ1IDM2MC41NzMgODEyLjg3MiAyNzcgNzA5Ljc4MSAyNzdaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNzA5Ljc4IDY1MC4wNjZWNTA1LjU4MUM3MDguNzMzIDUwNS41ODEgNzA3LjgxNiA1MDUuNTgxIDcwNi43NjggNTA1LjQ1VjY1MC4wNjZDNzA3LjgxNiA2NTAuMDY2IDcwOC44NjQgNjUwLjA2NiA3MDkuNzggNjUwLjA2NloiIGZpbGw9IndoaXRlIi8+CjwvZz4KPC9nPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzQwOF8yMjUiIHgxPSI3MDkuODQ0IiB5MT0iNTU2LjgyNyIgeDI9IjY2Ny43NTMiIHkyPSI1NTYuODI3IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IndoaXRlIi8+CjxzdG9wIG9mZnNldD0iMC45NjY3IiBzdG9wLWNvbG9yPSJ3aGl0ZSIgc3RvcC1vcGFjaXR5PSIwLjMyMzMiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSJ3aGl0ZSIgc3RvcC1vcGFjaXR5PSIwLjMiLz4KPC9saW5lYXJHcmFkaWVudD4KPGNsaXBQYXRoIGlkPSJjbGlwMF80MDhfMjI1Ij4KPHJlY3Qgd2lkdGg9IjcyOC40NDgiIGhlaWdodD0iNDcwIiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTY4IDI3NykiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K';\n\n private _connecting: boolean;\n private _wallet: TokenPocketWallet | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(config: TokenPocketWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window.solana?.isTokenPocket) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get connected(): boolean {\n return !!this._wallet?.isConnected;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window!.solana!;\n\n try {\n await wallet.connect();\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n\n if (!wallet.publicKey) throw new WalletAccountError();\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(wallet.publicKey.toBytes());\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n wallet.on('disconnect', this._disconnected);\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n this.emit('disconnect');\n }\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signTransaction(transaction)) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signAllTransactions(transactions)) || transactions;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signMessage(message: Uint8Array): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const { signature } = await wallet.signMessage(message);\n return signature;\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n private _disconnected = () => {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n this.emit('error', new WalletDisconnectedError());\n this.emit('disconnect');\n }\n };\n}\n","import { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { WalletError } from './errors';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter extends EventEmitter implements WalletAdapter {\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n\n get connected(): boolean {\n return !!this.publicKey;\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n abstract sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","export class WalletError extends Error {\n public error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import { WalletAdapter } from './adapter';\nimport { MessageSignerWalletAdapter, SignerWalletAdapter } from './signer';\n\nexport type Adapter = WalletAdapter | SignerWalletAdapter | MessageSignerWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import { Connection, Transaction, TransactionSignature } from '@solana/web3.js';\nimport { BaseWalletAdapter, SendTransactionOptions, WalletAdapter } from './adapter';\nimport { WalletError, WalletSendTransactionError } from './errors';\n\nexport interface SignerWalletAdapterProps {\n signTransaction(transaction: Transaction): Promise;\n signAllTransactions(transaction: Transaction[]): Promise;\n}\n\nexport type SignerWalletAdapter = WalletAdapter & SignerWalletAdapterProps;\n\nexport abstract class BaseSignerWalletAdapter extends BaseWalletAdapter implements SignerWalletAdapter {\n async sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options: SendTransactionOptions = {}\n ): Promise {\n let emit = true;\n try {\n try {\n transaction.feePayer = transaction.feePayer || this.publicKey || undefined;\n transaction.recentBlockhash =\n transaction.recentBlockhash || (await connection.getRecentBlockhash('finalized')).blockhash;\n\n const { signers, ...sendOptions } = options;\n\n signers?.length && transaction.partialSign(...signers);\n\n transaction = await this.signTransaction(transaction);\n\n const rawTransaction = transaction.serialize();\n\n return await connection.sendRawTransaction(rawTransaction, sendOptions);\n } catch (error: any) {\n // If the error was thrown by `signTransaction`, rethrow it and don't emit a duplicate event\n if (error instanceof WalletError) {\n emit = false;\n throw error;\n }\n throw new WalletSendTransactionError(error?.message, error);\n }\n } catch (error: any) {\n if (emit) {\n this.emit('error', error);\n }\n throw error;\n }\n }\n\n abstract signTransaction(transaction: Transaction): Promise;\n abstract signAllTransactions(transaction: Transaction[]): Promise;\n}\n\nexport interface MessageSignerWalletAdapterProps {\n signMessage(message: Uint8Array): Promise;\n}\n\nexport type MessageSignerWalletAdapter = WalletAdapter & MessageSignerWalletAdapterProps;\n\nexport abstract class BaseMessageSignerWalletAdapter\n extends BaseSignerWalletAdapter\n implements MessageSignerWalletAdapter\n{\n abstract signMessage(message: Uint8Array): Promise;\n}\n","import {\n BaseMessageSignerWalletAdapter,\n WalletAccountError,\n WalletConfigError,\n WalletConnectionError,\n WalletDisconnectionError,\n WalletLoadError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignMessageError,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport { PublicKey, Transaction } from '@solana/web3.js';\nimport type { default as Torus, TorusParams } from '@toruslabs/solana-embed';\n\nexport interface TorusWalletAdapterConfig {\n params?: TorusParams;\n}\n\ninterface TorusWindow extends Window {\n torus?: Torus | null;\n}\n\ndeclare const window: TorusWindow;\n\nexport const TorusWalletName = 'Torus' as WalletName<'Torus'>;\n\nexport class TorusWalletAdapter extends BaseMessageSignerWalletAdapter {\n name = TorusWalletName;\n url = 'https://tor.us';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzMiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMyAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTYuNSIgY3k9IjE2IiByPSIxNiIgZmlsbD0iIzAzNjRGRiIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjIxODYgOS40OTIxOUMxMC40NTM5IDkuNDkyMTkgOS44MzM5OCAxMC4xMTIxIDkuODMzOTggMTAuODc2OFYxMi40ODk4QzkuODMzOTggMTMuMjU0NSAxMC40NTM5IDEzLjg3NDQgMTEuMjE4NiAxMy44NzQ0SDEzLjY2ODRWMjIuODk3NkMxMy42Njg0IDIzLjY2MjMgMTQuMjg4MyAyNC4yODIyIDE1LjA1MyAyNC4yODIySDE2LjY2NkMxNy40MzA3IDI0LjI4MjIgMTguMDUwNiAyMy42NjIzIDE4LjA1MDYgMjIuODk3NlYxMi41MDE1QzE4LjA1MDYgMTIuNDk3NiAxOC4wNTA2IDEyLjQ5MzcgMTguMDUwNiAxMi40ODk4VjEwLjg3NjhDMTguMDUwNiAxMC4xMTIxIDE3LjQzMDcgOS40OTIxOSAxNi42NjYgOS40OTIxOUgxNS4wNTNIMTEuMjE4NloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0yMS4zMzc2IDEzLjg3NDRDMjIuNTQ3NyAxMy44NzQ0IDIzLjUyODcgMTIuODkzNCAyMy41Mjg3IDExLjY4MzNDMjMuNTI4NyAxMC40NzMyIDIyLjU0NzcgOS40OTIxOSAyMS4zMzc2IDkuNDkyMTlDMjAuMTI3NSA5LjQ5MjE5IDE5LjE0NjUgMTAuNDczMiAxOS4xNDY1IDExLjY4MzNDMTkuMTQ2NSAxMi44OTM0IDIwLjEyNzUgMTMuODc0NCAyMS4zMzc2IDEzLjg3NDRaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K';\n\n private _connecting: boolean;\n private _wallet: Torus | null;\n private _publicKey: PublicKey | null;\n private _params: TorusParams;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' ? WalletReadyState.Unsupported : WalletReadyState.Loadable;\n\n constructor({ params = { showTorusButton: false } }: TorusWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n this._params = params;\n }\n\n get publicKey(): PublicKey | null {\n return this._publicKey;\n }\n\n get connecting(): boolean {\n return this._connecting;\n }\n\n get connected(): boolean {\n return !!this._wallet?.isLoggedIn;\n }\n\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Loadable) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n let TorusClass: typeof Torus;\n try {\n ({ default: TorusClass } = await import('@toruslabs/solana-embed'));\n } catch (error: any) {\n throw new WalletLoadError(error?.message, error);\n }\n\n let wallet: Torus;\n try {\n wallet = window.torus || new TorusClass();\n } catch (error: any) {\n throw new WalletConfigError(error?.message, error);\n }\n\n if (!wallet.isInitialized) {\n try {\n await wallet.init(this._params);\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n }\n\n let accounts: string[];\n try {\n accounts = await wallet.login();\n } catch (error: any) {\n throw new WalletAccountError(error?.message, error);\n }\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(accounts[0]);\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n this._wallet = null;\n this._publicKey = null;\n\n try {\n if (wallet.isLoggedIn) await wallet.cleanUp();\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n }\n }\n\n this.emit('disconnect');\n }\n\n async signTransaction(transaction: Transaction): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signTransaction(transaction)) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: Transaction[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signAllTransactions(transactions)) || transactions;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signMessage(message: Uint8Array): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return await wallet.signMessage(message);\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n}\n","import { Connection } from '@solana/web3.js';\nimport React, { createContext, useContext } from 'react';\n\nexport interface ConnectionContextState {\n connection: Connection;\n}\n\nexport const ConnectionContext = createContext({} as ConnectionContextState);\n\nexport function useConnection(): ConnectionContextState {\n return useContext(ConnectionContext);\n}\n","import { Connection, ConnectionConfig } from '@solana/web3.js';\nimport React, { FC, ReactNode, useMemo } from 'react';\nimport { ConnectionContext } from './useConnection';\n\nexport interface ConnectionProviderProps {\n children: ReactNode;\n endpoint: string;\n config?: ConnectionConfig;\n}\n\nexport const ConnectionProvider: FC = ({\n children,\n endpoint,\n config = { commitment: 'confirmed' },\n}) => {\n const connection = useMemo(() => new Connection(endpoint, config), [endpoint, config]);\n\n return {children};\n};\n","import { WalletError } from '@solana/wallet-adapter-base';\n\nexport class WalletNotSelectedError extends WalletError {\n name = 'WalletNotSelectedError';\n}\n","import {\n Adapter,\n MessageSignerWalletAdapterProps,\n SendTransactionOptions,\n SignerWalletAdapterProps,\n WalletName,\n WalletReadyState,\n} from '@solana/wallet-adapter-base';\nimport { Connection, PublicKey, Transaction, TransactionSignature } from '@solana/web3.js';\nimport { createContext, useContext } from 'react';\n\nexport interface Wallet {\n adapter: Adapter;\n readyState: WalletReadyState;\n}\n\nexport interface WalletContextState {\n autoConnect: boolean;\n wallets: Wallet[];\n wallet: Wallet | null;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n disconnecting: boolean;\n\n select(walletName: WalletName): void;\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n\n signTransaction: SignerWalletAdapterProps['signTransaction'] | undefined;\n signAllTransactions: SignerWalletAdapterProps['signAllTransactions'] | undefined;\n signMessage: MessageSignerWalletAdapterProps['signMessage'] | undefined;\n}\n\nconst EMPTY_ARRAY: ReadonlyArray = [];\n\nconst DEFAULT_CONTEXT = {\n autoConnect: false,\n connecting: false,\n connected: false,\n disconnecting: false,\n select(_name: WalletName) {\n console.error(constructMissingProviderErrorMessage('get', 'select'));\n },\n connect() {\n return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'connect')));\n },\n disconnect() {\n return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'disconnect')));\n },\n sendTransaction(_transaction: Transaction, _connection: Connection, _options?: SendTransactionOptions) {\n return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'sendTransaction')));\n },\n signTransaction(_transaction: Transaction) {\n return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'signTransaction')));\n },\n signAllTransactions(_transaction: Transaction[]) {\n return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'signAllTransactions')));\n },\n signMessage(_message: Uint8Array) {\n return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'signMessage')));\n },\n} as WalletContextState;\nObject.defineProperty(DEFAULT_CONTEXT, 'wallets', {\n get() {\n console.error(constructMissingProviderErrorMessage('read', 'wallets'));\n return EMPTY_ARRAY;\n },\n});\nObject.defineProperty(DEFAULT_CONTEXT, 'wallet', {\n get() {\n console.error(constructMissingProviderErrorMessage('read', 'wallet'));\n return null;\n },\n});\nObject.defineProperty(DEFAULT_CONTEXT, 'publicKey', {\n get() {\n console.error(constructMissingProviderErrorMessage('read', 'publicKey'));\n return null;\n },\n});\n\nfunction constructMissingProviderErrorMessage(action: string, valueName: string) {\n return (\n 'You have tried to ' +\n ` ${action} \"${valueName}\"` +\n ' on a WalletContext without providing one.' +\n ' Make sure to render a WalletProvider' +\n ' as an ancestor of the component that uses ' +\n 'WalletContext'\n );\n}\n\nexport const WalletContext = createContext(DEFAULT_CONTEXT as WalletContextState);\n\nexport function useWallet(): WalletContextState {\n return useContext(WalletContext);\n}\n","import {\n Adapter,\n SendTransactionOptions,\n WalletError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletReadyState,\n} from '@solana/wallet-adapter-base';\nimport { Connection, PublicKey, Transaction } from '@solana/web3.js';\nimport React, { FC, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { WalletNotSelectedError } from './errors';\nimport { useLocalStorage } from './useLocalStorage';\nimport { Wallet, WalletContext } from './useWallet';\n\nexport interface WalletProviderProps {\n children: ReactNode;\n wallets: Adapter[];\n autoConnect?: boolean;\n onError?: (error: WalletError) => void;\n localStorageKey?: string;\n}\n\nconst initialState: {\n wallet: Wallet | null;\n adapter: Adapter | null;\n publicKey: PublicKey | null;\n connected: boolean;\n} = {\n wallet: null,\n adapter: null,\n publicKey: null,\n connected: false,\n};\n\nexport const WalletProvider: FC = ({\n children,\n wallets: adapters,\n autoConnect = false,\n onError,\n localStorageKey = 'walletName',\n}) => {\n const [name, setName] = useLocalStorage(localStorageKey, null);\n const [{ wallet, adapter, publicKey, connected }, setState] = useState(initialState);\n const readyState = adapter?.readyState || WalletReadyState.Unsupported;\n const [connecting, setConnecting] = useState(false);\n const [disconnecting, setDisconnecting] = useState(false);\n const isConnecting = useRef(false);\n const isDisconnecting = useRef(false);\n const isUnloading = useRef(false);\n\n // Wrap adapters to conform to the `Wallet` interface\n const [wallets, setWallets] = useState(() =>\n adapters.map((adapter) => ({\n adapter,\n readyState: adapter.readyState,\n }))\n );\n\n // When the wallets change, start to listen for changes to their `readyState`\n useEffect(() => {\n function handleReadyStateChange(this: Adapter, readyState: WalletReadyState) {\n setWallets((prevWallets) => {\n const walletIndex = prevWallets.findIndex(({ adapter }) => adapter.name === this.name);\n if (walletIndex === -1) return prevWallets;\n\n return [\n ...prevWallets.slice(0, walletIndex),\n { ...prevWallets[walletIndex], readyState },\n ...prevWallets.slice(walletIndex + 1),\n ];\n });\n }\n for (const adapter of adapters) {\n adapter.on('readyStateChange', handleReadyStateChange, adapter);\n }\n return () => {\n for (const adapter of adapters) {\n adapter.off('readyStateChange', handleReadyStateChange, adapter);\n }\n };\n }, [adapters]);\n\n // When the selected wallet changes, initialize the state\n useEffect(() => {\n const wallet = wallets.find(({ adapter }) => adapter.name === name);\n if (wallet) {\n setState({\n wallet,\n adapter: wallet.adapter,\n connected: wallet.adapter.connected,\n publicKey: wallet.adapter.publicKey,\n });\n } else {\n setState(initialState);\n }\n }, [name, wallets]);\n\n // If autoConnect is enabled, try to connect when the adapter changes and is ready\n useEffect(() => {\n if (\n isConnecting.current ||\n connecting ||\n connected ||\n !autoConnect ||\n !adapter ||\n !(readyState === WalletReadyState.Installed || readyState === WalletReadyState.Loadable)\n )\n return;\n\n (async function () {\n isConnecting.current = true;\n setConnecting(true);\n try {\n await adapter.connect();\n } catch (error: any) {\n // Clear the selected wallet\n setName(null);\n // Don't throw error, but handleError will still be called\n } finally {\n setConnecting(false);\n isConnecting.current = false;\n }\n })();\n }, [isConnecting, connecting, connected, autoConnect, adapter, readyState]);\n\n // If the window is closing or reloading, ignore disconnect and error events from the adapter\n useEffect(() => {\n function listener() {\n isUnloading.current = true;\n }\n\n window.addEventListener('beforeunload', listener);\n return () => window.removeEventListener('beforeunload', listener);\n }, [isUnloading]);\n\n // Handle the adapter's connect event\n const handleConnect = useCallback(() => {\n if (!adapter) return;\n setState((state) => ({ ...state, connected: adapter.connected, publicKey: adapter.publicKey }));\n }, [adapter]);\n\n // Handle the adapter's disconnect event\n const handleDisconnect = useCallback(() => {\n // Clear the selected wallet unless the window is unloading\n if (!isUnloading.current) setName(null);\n }, [isUnloading]);\n\n // Handle the adapter's error event, and local errors\n const handleError = useCallback(\n (error: WalletError) => {\n // Call onError unless the window is unloading\n if (!isUnloading.current) (onError || console.error)(error);\n return error;\n },\n [isUnloading, onError]\n );\n\n // Setup and teardown event listeners when the adapter changes\n useEffect(() => {\n if (adapter) {\n adapter.on('connect', handleConnect);\n adapter.on('disconnect', handleDisconnect);\n adapter.on('error', handleError);\n return () => {\n adapter.off('connect', handleConnect);\n adapter.off('disconnect', handleDisconnect);\n adapter.off('error', handleError);\n };\n }\n }, [adapter, handleConnect, handleDisconnect, handleError]);\n\n // When the adapter changes, disconnect the old one\n useEffect(() => {\n return () => {\n adapter?.disconnect();\n };\n }, [adapter]);\n\n // Connect the adapter to the wallet\n const connect = useCallback(async () => {\n if (isConnecting.current || connecting || disconnecting || connected) return;\n if (!adapter) throw handleError(new WalletNotSelectedError());\n\n if (!(readyState === WalletReadyState.Installed || readyState === WalletReadyState.Loadable)) {\n // Clear the selected wallet\n setName(null);\n\n if (typeof window !== 'undefined') {\n window.open(adapter.url, '_blank');\n }\n\n throw handleError(new WalletNotReadyError());\n }\n\n isConnecting.current = true;\n setConnecting(true);\n try {\n await adapter.connect();\n } catch (error: any) {\n // Clear the selected wallet\n setName(null);\n // Rethrow the error, and handleError will also be called\n throw error;\n } finally {\n setConnecting(false);\n isConnecting.current = false;\n }\n }, [isConnecting, connecting, disconnecting, connected, adapter, readyState, handleError]);\n\n // Disconnect the adapter from the wallet\n const disconnect = useCallback(async () => {\n if (isDisconnecting.current || disconnecting) return;\n if (!adapter) return setName(null);\n\n isDisconnecting.current = true;\n setDisconnecting(true);\n try {\n await adapter.disconnect();\n } catch (error: any) {\n // Clear the selected wallet\n setName(null);\n // Rethrow the error, and handleError will also be called\n throw error;\n } finally {\n setDisconnecting(false);\n isDisconnecting.current = false;\n }\n }, [isDisconnecting, disconnecting, adapter]);\n\n // Send a transaction using the provided connection\n const sendTransaction = useCallback(\n async (transaction: Transaction, connection: Connection, options?: SendTransactionOptions) => {\n if (!adapter) throw handleError(new WalletNotSelectedError());\n if (!connected) throw handleError(new WalletNotConnectedError());\n return await adapter.sendTransaction(transaction, connection, options);\n },\n [adapter, handleError, connected]\n );\n\n // Sign a transaction if the wallet supports it\n const signTransaction = useMemo(\n () =>\n adapter && 'signTransaction' in adapter\n ? async (transaction: Transaction): Promise => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n return await adapter.signTransaction(transaction);\n }\n : undefined,\n [adapter, handleError, connected]\n );\n\n // Sign multiple transactions if the wallet supports it\n const signAllTransactions = useMemo(\n () =>\n adapter && 'signAllTransactions' in adapter\n ? async (transactions: Transaction[]): Promise => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n return await adapter.signAllTransactions(transactions);\n }\n : undefined,\n [adapter, handleError, connected]\n );\n\n // Sign an arbitrary message if the wallet supports it\n const signMessage = useMemo(\n () =>\n adapter && 'signMessage' in adapter\n ? async (message: Uint8Array): Promise => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n return await adapter.signMessage(message);\n }\n : undefined,\n [adapter, handleError, connected]\n );\n\n return (\n \n {children}\n \n );\n};\n","import React, { useEffect, useRef, useState } from 'react';\n\nexport function useLocalStorage(key: string, defaultState: T): [T, React.Dispatch>] {\n const state = useState(() => {\n try {\n const value = localStorage.getItem(key);\n if (value) return JSON.parse(value) as T;\n } catch (error) {\n if (typeof window !== 'undefined') {\n console.error(error);\n }\n }\n\n return defaultState;\n });\n const value = state[0];\n\n const isFirstRender = useRef(true);\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n try {\n if (value === null) {\n localStorage.removeItem(key);\n } else {\n localStorage.setItem(key, JSON.stringify(value));\n }\n } catch (error) {\n if (typeof window !== 'undefined') {\n console.error(error);\n }\n }\n }, [value]);\n\n return state;\n}\n","import { createContext, useContext } from 'react';\n\nexport interface WalletModalContextState {\n visible: boolean;\n setVisible: (open: boolean) => void;\n}\n\nconst DEFAULT_CONTEXT = {\n setVisible(_open: boolean) {\n console.error(constructMissingProviderErrorMessage('call', 'setVisible'));\n },\n visible: false,\n};\nObject.defineProperty(DEFAULT_CONTEXT, 'visible', {\n get() {\n console.error(constructMissingProviderErrorMessage('read', 'visible'));\n return false;\n },\n});\n\nfunction constructMissingProviderErrorMessage(action: string, valueName: string) {\n return (\n 'You have tried to ' +\n ` ${action} \"${valueName}\"` +\n ' on a WalletModalContext without providing one.' +\n ' Make sure to render a WalletModalProvider' +\n ' as an ancestor of the component that uses ' +\n 'WalletModalContext'\n );\n}\n\nexport const WalletModalContext = createContext(DEFAULT_CONTEXT as WalletModalContextState);\n\nexport function useWalletModal(): WalletModalContextState {\n return useContext(WalletModalContext);\n}\n","import React, { CSSProperties, FC, MouseEvent, ReactElement } from 'react';\n\nexport interface ButtonProps {\n className?: string;\n disabled?: boolean;\n endIcon?: ReactElement;\n onClick?: (e: MouseEvent) => void;\n startIcon?: ReactElement;\n style?: CSSProperties;\n tabIndex?: number;\n}\n\nexport const Button: FC = (props) => {\n return (\n \n {props.startIcon && {props.startIcon}}\n {props.children}\n {props.endIcon && {props.endIcon}}\n \n );\n};\n","import { Wallet } from '@solana/wallet-adapter-react';\nimport React, { DetailedHTMLProps, FC, ImgHTMLAttributes } from 'react';\n\nexport interface WalletIconProps extends DetailedHTMLProps, HTMLImageElement> {\n wallet: Wallet | null;\n}\n\nexport const WalletIcon: FC = ({ wallet, ...props }) => {\n return wallet && {`${wallet.adapter.name};\n};\n","import React, { FC, useLayoutEffect, useRef } from 'react';\n\nexport interface CollapseProps {\n expanded: boolean;\n id: string;\n}\n\nexport const Collapse: FC = ({ id, children, expanded = false }) => {\n const ref = useRef(null);\n const instant = useRef(true);\n const transition = 'height 250ms ease-out';\n\n const openCollapse = () => {\n const node = ref.current;\n if (!node) return;\n\n requestAnimationFrame(() => {\n node.style.height = node.scrollHeight + 'px';\n });\n };\n\n const closeCollapse = () => {\n const node = ref.current;\n if (!node) return;\n\n requestAnimationFrame(() => {\n node.style.height = node.offsetHeight + 'px';\n node.style.overflow = 'hidden';\n requestAnimationFrame(() => {\n node.style.height = '0';\n });\n });\n };\n\n useLayoutEffect(() => {\n if (expanded) {\n openCollapse();\n } else {\n closeCollapse();\n }\n }, [expanded]);\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (!node) return;\n\n function handleComplete() {\n if (!node) return;\n\n node.style.overflow = expanded ? 'initial' : 'hidden';\n if (expanded) {\n node.style.height = 'auto';\n }\n }\n\n function handleTransitionEnd(event: TransitionEvent) {\n if (node && event.target === node && event.propertyName === 'height') {\n handleComplete();\n }\n }\n\n if (instant.current) {\n handleComplete();\n instant.current = false;\n }\n\n node.addEventListener('transitionend', handleTransitionEnd);\n return () => node.removeEventListener('transitionend', handleTransitionEnd);\n }, [expanded]);\n\n return (\n \n );\n};\n","import { WalletReadyState } from '@solana/wallet-adapter-base';\nimport { Wallet } from '@solana/wallet-adapter-react';\nimport React, { FC, MouseEventHandler } from 'react';\nimport { Button } from './Button';\nimport { WalletIcon } from './WalletIcon';\n\nexport interface WalletListItemProps {\n handleClick: MouseEventHandler;\n tabIndex?: number;\n wallet: Wallet;\n}\n\nexport const WalletListItem: FC = ({ handleClick, tabIndex, wallet }) => {\n return (\n
  • \n \n
  • \n );\n};\n","import React, { FC } from 'react';\n\nexport const WalletSVG: FC = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { WalletName, WalletReadyState } from '@solana/wallet-adapter-base';\nimport { useWallet, Wallet } from '@solana/wallet-adapter-react';\nimport React, { FC, MouseEvent, useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { Collapse } from './Collapse';\nimport { useWalletModal } from './useWalletModal';\nimport { WalletListItem } from './WalletListItem';\nimport { WalletSVG } from './WalletSVG';\n\nexport interface WalletModalProps {\n className?: string;\n container?: string;\n}\n\nexport const WalletModal: FC = ({ className = '', container = 'body' }) => {\n const ref = useRef(null);\n const { wallets, select } = useWallet();\n const { setVisible } = useWalletModal();\n const [expanded, setExpanded] = useState(false);\n const [fadeIn, setFadeIn] = useState(false);\n const [portal, setPortal] = useState(null);\n\n const [installedWallets, otherWallets] = useMemo(() => {\n const installed: Wallet[] = [];\n const notDetected: Wallet[] = [];\n const loadable: Wallet[] = [];\n\n for (const wallet of wallets) {\n if (wallet.readyState === WalletReadyState.NotDetected) {\n notDetected.push(wallet);\n } else if (wallet.readyState === WalletReadyState.Loadable) {\n loadable.push(wallet);\n } else if (wallet.readyState === WalletReadyState.Installed) {\n installed.push(wallet);\n }\n }\n\n return [installed, [...loadable, ...notDetected]];\n }, [wallets]);\n\n const getStartedWallet = useMemo(() => {\n return installedWallets.length\n ? installedWallets[0]\n : wallets.find((wallet: { adapter: { name: WalletName } }) => wallet.adapter.name === 'Torus') ||\n wallets.find((wallet: { adapter: { name: WalletName } }) => wallet.adapter.name === 'Phantom') ||\n wallets.find((wallet: { readyState: any }) => wallet.readyState === WalletReadyState.Loadable) ||\n otherWallets[0];\n }, [installedWallets, wallets, otherWallets]);\n\n const hideModal = useCallback(() => {\n setFadeIn(false);\n setTimeout(() => setVisible(false), 150);\n }, []);\n\n const handleClose = useCallback(\n (event: MouseEvent) => {\n event.preventDefault();\n hideModal();\n },\n [hideModal]\n );\n\n const handleWalletClick = useCallback(\n (event: MouseEvent, walletName: WalletName) => {\n select(walletName);\n handleClose(event);\n },\n [select, handleClose]\n );\n\n const handleCollapseClick = useCallback(() => setExpanded(!expanded), [expanded]);\n\n const handleTabKey = useCallback(\n (event: KeyboardEvent) => {\n const node = ref.current;\n if (!node) return;\n\n // here we query all focusable elements\n const focusableElements = node.querySelectorAll('button');\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (event.shiftKey) {\n // if going backward by pressing tab and firstElement is active, shift focus to last focusable element\n if (document.activeElement === firstElement) {\n lastElement.focus();\n event.preventDefault();\n }\n } else {\n // if going forward by pressing tab and lastElement is active, shift focus to first focusable element\n if (document.activeElement === lastElement) {\n firstElement.focus();\n event.preventDefault();\n }\n }\n },\n [ref]\n );\n\n useLayoutEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n hideModal();\n } else if (event.key === 'Tab') {\n handleTabKey(event);\n }\n };\n\n // Get original overflow\n const { overflow } = window.getComputedStyle(document.body);\n // Hack to enable fade in animation after mount\n setTimeout(() => setFadeIn(true), 0);\n // Prevent scrolling on mount\n document.body.style.overflow = 'hidden';\n // Listen for keydown events\n window.addEventListener('keydown', handleKeyDown, false);\n\n return () => {\n // Re-enable scrolling when component unmounts\n document.body.style.overflow = overflow;\n window.removeEventListener('keydown', handleKeyDown, false);\n };\n }, [hideModal, handleTabKey]);\n\n useLayoutEffect(() => setPortal(document.querySelector(container)), [container]);\n\n return (\n portal &&\n createPortal(\n \n
    \n
    \n \n {installedWallets.length ? (\n <>\n

    Connect a wallet on Solana to continue

    \n
      \n {installedWallets.map((wallet) => (\n handleWalletClick(event, wallet.adapter.name)}\n wallet={wallet}\n />\n ))}\n {otherWallets.length ? (\n \n {otherWallets.map((wallet) => (\n \n handleWalletClick(event, wallet.adapter.name)\n }\n tabIndex={expanded ? 0 : -1}\n wallet={wallet}\n />\n ))}\n \n ) : null}\n
    \n {otherWallets.length ? (\n \n {expanded ? 'Less ' : 'More '}options\n \n \n \n \n ) : null}\n \n ) : (\n <>\n

    \n You'll need a wallet on Solana to continue\n

    \n
    \n \n handleWalletClick(event, getStartedWallet.adapter.name)}\n >\n Get started\n \n
    \n {otherWallets.length ? (\n <>\n \n {expanded ? 'Hide ' : 'Already have a wallet? View '}options\n \n \n \n \n \n
      \n {otherWallets.map((wallet) => (\n \n handleWalletClick(event, wallet.adapter.name)\n }\n tabIndex={expanded ? 0 : -1}\n wallet={wallet}\n />\n ))}\n
    \n
    \n \n ) : null}\n \n )}\n
    \n
    \n
    \n
    ,\n portal\n )\n );\n};\n","import React, { FC, ReactNode, useState } from 'react';\nimport { WalletModalContext } from './useWalletModal';\nimport { WalletModal, WalletModalProps } from './WalletModal';\n\nexport interface WalletModalProviderProps extends WalletModalProps {\n children: ReactNode;\n}\n\nexport const WalletModalProvider: FC = ({ children, ...props }) => {\n const [visible, setVisible] = useState(false);\n\n return (\n \n {children}\n {visible && }\n \n );\n};\n","import axios from 'axios';\nimport { LOCAL_STORAGE_TOKEN_KEY } from './constants';\n\nconst API = axios.create({\n baseURL: process.env.REACT_APP_API_BASE_URL,\n headers: { Authorization: `Bearer ${localStorage.getItem(LOCAL_STORAGE_TOKEN_KEY)}` },\n});\n\nAPI.interceptors.response.use(null, (error) => {\n if (!localStorage.getItem(LOCAL_STORAGE_TOKEN_KEY)) return;\n\n if (error.response.status === 401) {\n localStorage.removeItem(LOCAL_STORAGE_TOKEN_KEY);\n window.location.href = '/login';\n }\n});\n\nconst MerchantAPI = axios.create({\n baseURL: process.env.REACT_APP_API_BASE_URL,\n headers: { 'api-key': `ZQ9wMawSklqpvdiFdON2h9d1mJMmaLgywzqNmIENRzplPwyNPemrfmn9rbpdgCRt` },\n});\n\nMerchantAPI.interceptors.response.use(null, (error) => {\n if (error.response.status === 401) {\n localStorage.removeItem(LOCAL_STORAGE_TOKEN_KEY);\n window.location.href = '/login';\n }\n});\n\nexport { MerchantAPI };\n\nexport default API;\n","import API from 'src/utils/api';\n\nconst { createContext, useContext, useRef, useState, useEffect } = require('react');\n\nconst DEFAULT_VALUES = { email: '', firstName: '', lastName: '' };\n\nconst UserContext = createContext(DEFAULT_VALUES);\n\nexport const useUserProfile = () => {\n return useContext(UserContext);\n};\n\nexport const UserProfileProvider = ({ children }) => {\n // Refs\n const fetchingProfile = useRef(false);\n // State\n const [email, setEmail] = useState(DEFAULT_VALUES.email);\n const [firstName, setFirstName] = useState(DEFAULT_VALUES.firstName);\n const [lastName, setLastName] = useState(DEFAULT_VALUES.lastName);\n\n useEffect(() => {\n if (fetchingProfile.current) return; // make sure to fetch data only at first render\n const fetchProfile = async () => {\n fetchingProfile.current = true;\n try {\n const response = await API.get('/user/profile');\n\n setFirstName(response.data.user.firstName);\n setLastName(response.data.user.lastName);\n setEmail(response.data.user.email);\n\n fetchingProfile.current = false;\n } catch (error) {\n fetchingProfile.current = false;\n }\n };\n\n fetchProfile();\n }, []);\n\n return {children};\n};\n","const HomeIcon = ({ color }) => (\n \n \n \n \n);\n\nexport default HomeIcon;\n","var _defs, _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 512,\n height: 512,\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n y2: 0.89397,\n x2: 0.49996,\n y1: 0.07228,\n x1: 0.49996,\n id: \"SVGID_1_\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#0CE5D2\",\n offset: 0\n }), /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#008EC8\",\n offset: 1\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n y2: 0.93142,\n x2: 0.98403,\n y1: 0.19668,\n x1: 0.20306,\n id: \"SVGID_2_\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FC9D29\",\n offset: 0\n }), /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#E41689\",\n offset: 1\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n y2: 0.83915,\n x2: 0.33434,\n y1: 0.19612,\n x1: 0.72689,\n id: \"SVGID_3_\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FC9D29\",\n offset: 0\n }), /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#E41689\",\n offset: 1\n })))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"title\", null, \"Layer 1\"), /*#__PURE__*/React.createElement(\"g\", {\n stroke: \"null\",\n id: \"svg_1\"\n }, /*#__PURE__*/React.createElement(\"polygon\", {\n stroke: \"null\",\n id: \"svg_2\",\n fill: \"url(#SVGID_1_)\",\n points: \"181.09591849102435,169.450539090416 181.09591849102435,510.61495978602034 36.57002085871318,427.1597039022017 36.57002085871318,252.77304014789843 \",\n className: \"st0\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"null\",\n id: \"svg_3\",\n fill: \"url(#SVGID_2_)\",\n d: \"m455.19531,185.46474l-123.15892,71.11277l-150.94046,-87.14909l-144.52593,-83.43309l144.52593,-83.45521l208.60484,120.43828c0,0 0.39814,0.24331 1.17231,0.66357l1.63681,0.95112c0.33179,0.19907 0.66357,0.37602 1.0396,0.61933c8.78127,5.2201 30.56854,19.1551 44.99017,36.31949c0.30967,0.37602 0.61933,0.72993 0.90688,1.10595c0.37602,0.48662 0.79629,0.99536 1.17231,1.5041c0.48662,0.59721 0.97324,1.19443 1.41562,1.81376c4.37957,5.75096 8.89186,12.27608 13.16084,19.50901z\",\n className: \"st1\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"null\",\n id: \"svg_4\",\n fill: \"url(#SVGID_3_)\",\n d: \"m455.81465,328.06632c-10.35172,16.92108 -24.0213,31.89568 -39.54888,44.08328c-5.90579,4.645 -12.07701,8.95822 -18.38094,13.05024c-23.29137,15.10732 -48.46286,27.14009 -72.01966,41.84926c-47.79929,-27.51611 -95.62069,-55.0101 -143.41998,-82.52621c-0.44238,-0.26543 -0.90688,-0.53086 -1.34926,-0.77417l150.94046,-87.14909c0,0 123.15892,-71.11277 123.15892,-71.11277c2.05707,-1.19443 16.30175,37.35909 17.16439,40.76543c4.22474,16.52294 5.26434,33.7758 2.63217,50.65264c-2.83124,18.2261 -9.59967,35.52321 -19.17722,51.16138z\",\n className: \"st2\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo);\nexport default __webpack_public_path__ + \"static/media/logo.4467415813b59937dcf195ca4da12e30.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLogout(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n stroke: \"#838383\",\n strokeWidth: 2,\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogout);\nexport default __webpack_public_path__ + \"static/media/logout.1b04d6e9335fe8a9b462c88651595be0.svg\";\nexport { ForwardRef as ReactComponent };","const MerchantIcon = ({ color }) => (\n \n \n \n \n \n \n);\n\nexport default MerchantIcon;\n","const SettingsIcon = ({ color }) => (\n \n \n \n \n);\n\nexport default SettingsIcon;\n","import { useEffect, useState } from 'react';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { useUserProfile } from 'src/context/user-context/UserProvider';\n\nimport HomeIcon from 'src/icons/home';\nimport logoIcon from 'src/icons/logo.svg';\nimport logoutIcon from 'src/icons/logout.svg';\nimport MerchantIcon from 'src/icons/merchant';\nimport SettingsIcon from 'src/icons/settings';\nimport { LOCAL_STORAGE_TOKEN_KEY } from 'src/utils/constants';\nimport './Header.css';\n\nconst Header = () => {\n // Profile\n const { email, firstName, lastName } = useUserProfile();\n // Navigation\n const navigate = useNavigate();\n const location = useLocation();\n // State\n const [currentPage, setCurrentPage] = useState(0);\n\n useEffect(() => {\n if (location.pathname.startsWith('/merchant')) return setCurrentPage(1);\n if (location.pathname.startsWith('/settings')) return setCurrentPage(2);\n return setCurrentPage(0);\n }, [location]);\n\n const logout = () => {\n localStorage.removeItem(LOCAL_STORAGE_TOKEN_KEY);\n window.location.href = '/login';\n };\n\n return (\n
    \n
    \n {\n navigate('/', { replace: true });\n }}\n >\n \n \n {\n navigate('/merchant', { replace: true });\n }}\n >\n \n \n {\n navigate('/settings', { replace: true });\n }}\n >\n \n \n
    \n \"Payonix\n
    \n
    \n {firstName && lastName && email && (\n <>\n \n {firstName} {lastName}\n \n {email}\n \n )}\n
    \n \"log\n
    \n
    \n );\n};\n\nexport default Header;\n","import './Loader.css';\n\nconst Loader = ({ className, text }) => {\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n {text && {text}}\n
    \n );\n};\n\nexport default Loader;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgRightArrow(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 10,\n viewBox: \"0 0 18 10\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 5H16.8M16.8 5L12.8 9M16.8 5L12.8 1\",\n stroke: \"#8B8B8B\",\n strokeWidth: 1.5\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgRightArrow);\nexport default __webpack_public_path__ + \"static/media/right-arrow.2f224df8a01467836323c8c5256289a0.svg\";\nexport { ForwardRef as ReactComponent };","const Button = ({ primary, onClick, text, className, ...props }) => (\n \n {text}\n \n);\n\nexport default Button;\n","var _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDeskBtcIllustration(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 301,\n height: 288,\n viewBox: \"0 0 301 288\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_165_1306)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M146.984 101.636L151.164 111.359H184.74L180.197 99.9096L146.984 101.636Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M184.739 111.813H151.164C150.982 111.813 150.8 111.723 150.755 111.541L146.575 101.772C146.529 101.636 146.529 101.5 146.62 101.364C146.711 101.227 146.847 101.136 146.984 101.136L180.196 99.4099C180.378 99.4099 180.56 99.5008 180.65 99.6825L185.194 111.132C185.239 111.268 185.239 111.45 185.148 111.541C185.058 111.768 184.921 111.813 184.739 111.813ZM151.436 110.905H184.058L179.923 100.409L147.665 102.045L151.436 110.905Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M231.721 26.897C229.812 46.6608 227.904 66.4701 226.041 86.234C225.678 90.2322 225.269 94.2758 224.906 98.2741C224.724 100.137 223.134 101.591 221.271 101.591H103.46C101.279 101.591 99.5527 99.6825 99.8253 97.5017C100.28 93.7306 100.734 90.005 101.234 86.234C103.733 66.1975 106.186 46.1156 108.685 26.0792C108.912 24.2618 110.457 22.8533 112.32 22.8533H228.086C230.267 22.8988 231.948 24.7616 231.721 26.897Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M221.225 102.363H103.46C102.188 102.363 101.006 101.818 100.189 100.864C99.3707 99.9096 98.9618 98.6829 99.0981 97.4108L107.958 25.9882C108.23 23.8074 110.093 22.1263 112.319 22.1263H228.086C229.312 22.1263 230.494 22.6716 231.312 23.5802C232.129 24.4889 232.538 25.7156 232.447 26.9424L231.902 32.5762C230.176 50.4773 228.449 68.3783 226.768 86.2794C226.496 88.96 226.268 91.6406 225.996 94.3212L225.632 98.3194C225.405 100.637 223.497 102.363 221.225 102.363ZM112.274 23.6711C110.82 23.6711 109.548 24.7615 109.366 26.2154L100.507 97.6379C100.416 98.4557 100.643 99.319 101.233 99.9096C101.779 100.546 102.597 100.909 103.414 100.909H221.225C222.724 100.909 223.997 99.7733 224.133 98.274L224.496 94.2758C224.769 91.5952 224.996 88.9146 225.269 86.234C226.995 68.3329 228.722 50.4318 230.403 32.5308L230.948 26.8969C231.039 26.0791 230.766 25.2613 230.221 24.6707C229.676 24.0346 228.904 23.7165 228.04 23.7165H112.274V23.6711Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M226.037 86.2794C225.674 90.2776 225.265 94.3213 224.902 98.3195C224.72 100.182 223.13 101.636 221.267 101.636H103.456C101.275 101.636 99.5488 99.7279 99.8214 97.5471C100.276 93.7761 100.73 90.0505 101.23 86.2794H226.037Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M221.223 101.818H103.458C102.368 101.818 101.323 101.364 100.596 100.5C99.8687 99.6825 99.5052 98.5921 99.6415 97.4562L101.05 86.0522H226.267V86.2794C225.994 88.96 225.767 91.6407 225.494 94.3213L225.131 98.3195C224.904 100.319 223.222 101.818 221.223 101.818ZM101.413 86.4612L100.05 97.5471C99.9141 98.5466 100.232 99.5008 100.914 100.273C101.55 101 102.504 101.454 103.503 101.454H221.314C223.086 101.454 224.585 100.091 224.767 98.3195L225.131 94.3213C225.403 91.6861 225.63 89.0963 225.903 86.4612H101.413Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M197.275 111.632H147.07V119.174H197.275V111.632Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M197.276 119.628H147.072C146.799 119.628 146.617 119.446 146.617 119.174V111.632C146.617 111.359 146.799 111.177 147.072 111.177H197.276C197.549 111.177 197.731 111.359 197.731 111.632V119.174C197.731 119.401 197.503 119.628 197.276 119.628ZM147.526 118.719H196.822V112.086H147.526V118.719Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M142.216 75.1934C142.17 75.1934 142.17 75.1934 142.125 75.1934C134.991 75.0571 129.994 62.7898 125.178 50.8861C121.179 41.0269 117.363 31.6674 113.229 32.1218C110.593 32.3944 105.323 36.3472 95.0094 53.6121C88.7849 64.0166 83.6509 74.4664 83.6054 74.5573L82.7422 74.103C83.6054 72.3764 103.46 32.1218 113.183 31.1222C118.045 30.6224 121.816 39.8456 126.132 50.5226C130.63 61.5631 135.718 74.103 142.216 74.1938C145.214 74.2393 148.304 70.241 151.62 61.8812C154.619 54.3845 157.345 44.5253 160.026 35.0296C164.251 19.8091 167.931 6.72407 171.975 4.95214C172.702 4.6341 173.474 4.6341 174.292 4.99757C179.108 7.04211 184.424 20.9904 189.512 34.5298C191.648 40.2091 193.692 45.5703 195.51 49.4322C198.009 54.8389 199.145 55.2023 199.508 55.066C203.779 53.8847 234.856 20.0363 250.667 2.31696L251.394 2.95303C249.44 5.08844 205.324 54.5208 199.69 56.0202C196.964 56.7471 193.829 48.887 188.513 34.8478C183.697 22.1717 178.245 7.76906 173.792 5.86082C173.247 5.63365 172.747 5.63365 172.247 5.81539C168.613 7.36015 164.66 21.5356 160.844 35.2567C155.437 54.9297 149.758 75.1934 142.216 75.1934Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M245.124 16.9923L244.216 16.5379L250.758 2.77136L240.172 9.85909L239.627 9.04128L253.166 -0.00012207L245.124 16.9923Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M249.571 125.444V250.16H205.182L204.091 238.438L193.732 127.579L249.571 125.444Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M249.572 250.524H205.183C204.956 250.524 204.82 250.388 204.774 250.16L193.279 127.624C193.279 127.534 193.325 127.397 193.37 127.306C193.461 127.216 193.552 127.17 193.643 127.17L249.481 124.989C249.572 124.989 249.709 125.035 249.799 125.08C249.89 125.171 249.936 125.262 249.936 125.353V250.07C249.981 250.388 249.799 250.524 249.572 250.524ZM205.547 249.752H249.163V125.853L194.143 127.988L205.547 249.752Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M249.571 127.988V250.16H205.182L204.092 238.438C217.359 237.257 231.352 233.713 239.394 216.357C248.708 196.23 243.983 128.579 243.983 128.579L249.571 127.988Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M249.572 250.524H205.183C204.956 250.524 204.819 250.388 204.774 250.161L203.684 238.438C203.684 238.348 203.729 238.211 203.774 238.12C203.865 238.03 203.956 237.984 204.047 237.984C217.541 236.757 231.08 233.304 239.031 216.13C248.209 196.321 243.666 129.215 243.62 128.533C243.62 128.306 243.757 128.124 243.984 128.124L249.572 127.534C249.663 127.534 249.799 127.579 249.89 127.625C249.981 127.715 250.026 127.806 250.026 127.943V250.115C249.981 250.388 249.799 250.524 249.572 250.524ZM205.546 249.752H249.163V128.442L244.438 128.942C244.62 131.577 245.574 147.298 245.619 164.926C245.619 190.778 243.666 208.134 239.804 216.539C236.078 224.581 230.899 230.215 223.947 233.85C217.405 237.257 210.226 238.302 204.592 238.847L205.546 249.752Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.7158 127.579L40.2107 250.161H84.5999V125.444L28.7158 127.579Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M84.5993 250.887H40.2101C39.8466 250.887 39.5286 250.615 39.4831 250.206L27.9883 127.67C27.9883 127.488 28.0337 127.261 28.17 127.125C28.3063 126.988 28.4881 126.898 28.7152 126.852L84.5538 124.671C84.7356 124.671 84.9627 124.717 85.099 124.898C85.2353 125.035 85.3262 125.217 85.3262 125.444V250.161C85.3262 250.569 85.0082 250.887 84.5993 250.887ZM40.8916 249.388H83.8723V126.216L29.533 128.306L40.8916 249.388Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M279.509 194.958H278.51C278.51 194.822 278.782 179.374 274.784 159.883C271.149 141.936 263.017 116.857 245.252 99.0466L245.933 98.3651C253.884 106.316 260.563 116.312 265.834 128.17C270.059 137.62 273.376 148.252 275.738 159.747C279.782 179.283 279.509 194.822 279.509 194.958Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M283.869 199.138L282.87 199.047C282.915 198.684 285.823 164.063 284.187 127.852C283.233 106.634 280.916 89.0054 277.327 75.5569C272.829 58.8371 266.377 48.4781 258.062 44.798L258.471 43.8893C267.058 47.6603 273.737 58.2465 278.281 75.2843C281.915 88.8237 284.233 106.498 285.187 127.806C286.868 164.063 283.915 198.774 283.869 199.138Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M259.796 132.713C256.752 132.713 253.889 131.941 251.618 131.35L251.754 130.896L251.618 131.35C247.801 130.351 243.031 129.078 241.213 125.171C240.032 122.718 240.668 120.673 241.259 118.674C241.804 116.811 242.349 115.039 241.304 113.04C240.532 111.495 239.396 110.95 237.851 110.178C236.125 109.315 233.989 108.224 231.581 105.362C230.355 103.908 228.855 102.045 228.31 99.2736C227.992 97.5471 228.219 96.6385 228.628 95.2754C228.901 94.2305 229.264 92.9583 229.537 90.8229C229.764 89.051 229.764 87.6425 229.809 86.3703C229.855 83.8715 229.9 82.2358 231.399 80.9637C232.308 80.1913 233.262 80.0096 233.807 79.8733C236.215 79.3735 238.033 80.4185 239.987 81.5089C240.577 81.8269 241.168 82.1904 241.804 82.5084C244.712 83.9169 246.756 83.8715 248.71 83.8715C250.8 83.826 252.799 83.826 255.48 85.5525C256.388 86.1432 258.796 87.7334 260.205 90.6866C261.568 93.6398 261.068 96.3204 260.705 98.4104C260.341 100.364 260.068 101.863 261.113 103.09C262.295 104.499 263.158 104.68 268.519 105.907L269.61 106.18C271.018 106.498 272.79 107.134 274.108 109.133C275.789 111.677 275.652 114.721 275.334 117.084C275.016 119.356 274.062 126.307 268.065 130.26C265.339 132.123 262.476 132.713 259.796 132.713ZM235.08 80.7819C234.762 80.7819 234.398 80.8274 234.08 80.8728C233.626 80.9637 232.808 81.1454 232.081 81.7361C230.945 82.6902 230.9 84.0078 230.854 86.4158C230.809 87.6425 230.763 89.1418 230.582 90.9592C230.309 93.14 229.946 94.4576 229.673 95.548C229.31 96.8202 229.082 97.638 229.4 99.0919C229.9 101.636 231.309 103.317 232.444 104.726C234.716 107.452 236.761 108.497 238.396 109.315C239.987 110.087 241.35 110.814 242.258 112.631C243.44 114.994 242.849 116.993 242.258 118.992C241.713 120.9 241.168 122.672 242.167 124.762C243.803 128.215 248.119 129.397 251.936 130.396C255.979 131.486 262.113 133.122 267.611 129.487C273.244 125.762 274.153 119.174 274.471 116.993C274.789 114.676 274.925 111.995 273.381 109.724C272.517 108.406 271.291 107.634 269.473 107.179L268.383 106.907C262.885 105.634 261.886 105.407 260.477 103.772C259.114 102.181 259.478 100.273 259.841 98.2741C260.25 96.1841 260.659 93.7761 259.432 91.1409C258.16 88.4603 255.934 86.961 255.071 86.4158C252.663 84.871 250.891 84.871 248.846 84.9164C246.847 84.9619 244.621 84.9619 241.486 83.4626C240.804 83.1445 240.214 82.781 239.623 82.463C237.987 81.5543 236.624 80.7819 235.08 80.7819Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M283.374 103.817C279.375 103.817 275.286 102.363 272.469 99.6823C269.88 97.2743 267.244 93.0035 268.426 88.9144C268.926 87.1425 270.016 85.9612 271.015 84.9162C272.106 83.7349 273.015 82.7808 272.833 81.2815C272.742 80.3274 272.197 78.8281 270.107 77.2379C268.835 76.2837 267.79 76.102 266.608 75.8748C265.7 75.7385 264.7 75.5568 263.473 74.9662C259.657 73.1942 257.385 69.1506 256.795 65.8793C256.386 63.653 256.84 62.0174 257.203 60.6544C257.612 59.1551 257.885 58.0646 257.067 56.7471C256.431 55.7475 255.659 55.384 254.477 54.8843C253.75 54.5662 252.796 54.1573 251.751 53.5212C247.799 51.1132 244.527 46.797 243.71 43.0259C243.346 41.3449 243.573 39.891 244.3 38.846C245.663 36.8923 248.571 36.6197 251.343 36.3471C257.749 35.7565 263.11 37.9373 266.517 39.891L266.018 40.7542C262.746 38.8914 257.612 36.756 251.433 37.3467C248.844 37.5738 246.208 37.8464 245.073 39.4366C244.482 40.2544 244.346 41.4357 244.664 42.8442C245.391 46.2972 248.571 50.4317 252.251 52.7034C253.251 53.3395 254.114 53.703 254.886 54.021C256.113 54.5662 257.113 54.9751 257.93 56.2473C258.975 57.9283 258.612 59.3822 258.203 60.927C257.885 62.2446 257.476 63.7439 257.84 65.6976C258.385 68.6962 260.475 72.4218 263.928 74.0575C265.018 74.5572 265.927 74.6936 266.79 74.8753C268.062 75.1025 269.244 75.3296 270.697 76.42C273.06 78.192 273.696 79.9639 273.832 81.1452C274.014 83.0989 272.924 84.2802 271.742 85.5523C270.788 86.5519 269.834 87.5969 269.38 89.1416C268.38 92.5492 270.561 96.502 273.151 98.91C276.877 102.363 282.828 103.681 287.644 102.136C291.007 101.045 292.824 98.91 294.732 96.6837C296.686 94.412 299.094 91.6405 299.185 87.506C299.321 82.7354 296.141 79.1915 294.778 77.9194L295.459 77.1924C296.913 78.5555 300.321 82.3265 300.184 87.506C300.048 91.9585 297.413 95.0481 295.505 97.2743C293.551 99.546 291.552 101.863 287.962 103.044C286.509 103.59 284.964 103.817 283.374 103.817Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M267.064 186.916H295.37L289.236 235.894H271.699L267.064 186.916Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M289.464 236.121H271.517V235.94L266.883 186.734H295.643L289.464 236.121ZM271.926 235.667H289.1L295.143 187.143H267.383L271.926 235.667Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M294.733 194.186H267.836V195.231H294.733V194.186Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M292.875 205.135H268.84V206.18H292.875V205.135Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M291.777 214.995H269.787V216.039H291.777V214.995Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M290.511 225.126H271.701V226.171H290.511V225.126Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M252.114 119.174H26.7148V131.714H252.114V119.174Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M252.114 132.168H26.7151C26.4425 132.168 26.2607 131.941 26.2607 131.714V119.174C26.2607 118.901 26.4879 118.719 26.7151 118.719H252.114C252.387 118.719 252.568 118.947 252.568 119.174V131.714C252.568 131.986 252.341 132.168 252.114 132.168ZM27.1694 131.259H251.66V119.628H27.1694V131.259Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M196.277 130.441C196.004 130.441 195.822 130.214 195.822 129.987V119.174C195.822 118.901 196.049 118.719 196.277 118.719C196.549 118.719 196.731 118.947 196.731 119.174V129.987C196.776 130.214 196.549 130.441 196.277 130.441Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M299.824 206.044H27.582C27.173 206.044 26.8096 206.407 26.8096 206.816C26.8096 207.225 27.173 207.589 27.582 207.589H299.824C300.232 207.589 300.596 207.225 300.596 206.816C300.596 206.407 300.232 206.044 299.824 206.044Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M285.693 262.973H278.378C277.969 262.973 277.605 263.336 277.605 263.745C277.605 264.154 277.969 264.518 278.378 264.518H285.693C286.102 264.518 286.465 264.154 286.465 263.745C286.465 263.336 286.102 262.973 285.693 262.973Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M264.974 262.973H192.37C191.961 262.973 191.598 263.336 191.598 263.745C191.598 264.154 191.961 264.518 192.37 264.518H264.974C265.383 264.518 265.746 264.154 265.746 263.745C265.746 263.336 265.428 262.973 264.974 262.973Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.939 273.832H23.1747C22.7658 273.832 22.4023 274.195 22.4023 274.604C22.4023 275.013 22.7658 275.376 23.1747 275.376H41.939C42.3479 275.376 42.7114 275.013 42.7114 274.604C42.7114 274.15 42.3479 273.832 41.939 273.832Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M240.078 70.4228V75.1934C240.078 75.8294 239.987 76.4201 239.806 76.9199C239.533 77.8285 239.033 78.5555 238.397 78.9644C237.988 79.237 237.534 79.4187 237.08 79.4187H196.643C196.143 79.4187 195.689 79.237 195.28 78.9644C194.69 78.5101 194.19 77.8285 193.917 76.9199C193.735 76.3746 193.645 75.784 193.645 75.1934V70.4228C193.645 69.5595 193.826 68.7417 194.144 68.1056C194.69 66.9698 195.598 66.1974 196.643 66.1974H237.08C238.125 66.1974 239.079 66.9698 239.578 68.1056C239.897 68.7417 240.078 69.5595 240.078 70.4228Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M237.08 79.964H196.643C196.053 79.964 195.462 79.7823 194.962 79.4188C194.281 78.9191 193.69 78.1012 193.372 77.1017C193.19 76.511 193.1 75.875 193.1 75.1935V70.4229C193.1 69.5142 193.281 68.6509 193.645 67.8786C194.281 66.5155 195.417 65.6523 196.643 65.6523H237.08C238.307 65.6523 239.442 66.4701 240.079 67.8786C240.442 68.6509 240.624 69.5142 240.624 70.4229V75.1935C240.624 75.875 240.533 76.511 240.351 77.1017C240.033 78.1012 239.442 78.9191 238.761 79.4188C238.216 79.7823 237.625 79.964 237.08 79.964ZM196.643 66.6973C195.826 66.6973 195.053 67.2879 194.599 68.2875C194.326 68.9235 194.145 69.6505 194.145 70.4229V75.1935C194.145 75.7387 194.235 76.2839 194.372 76.7837C194.599 77.556 195.053 78.1921 195.553 78.5556C195.871 78.7828 196.235 78.9191 196.598 78.9191H237.034C237.398 78.9191 237.761 78.7828 238.079 78.5556C238.625 78.1921 239.034 77.556 239.306 76.7837C239.488 76.2839 239.533 75.7387 239.533 75.1935V70.4229C239.533 69.6505 239.397 68.9235 239.079 68.2875C238.625 67.2879 237.852 66.6973 237.034 66.6973H196.643Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M240.035 82.7811V87.5517C240.035 88.5512 239.808 89.4599 239.399 90.1868C238.854 91.141 237.991 91.777 237.037 91.777H196.6C195.646 91.777 194.783 91.141 194.238 90.1868C193.829 89.4599 193.602 88.5512 193.602 87.5517V82.7811C193.602 81.7815 193.829 80.8728 194.238 80.1459C194.51 79.6461 194.874 79.2826 195.237 78.9646C195.646 78.692 196.1 78.5103 196.555 78.5103H236.991C237.491 78.5103 237.945 78.692 238.354 78.9646C238.763 79.2372 239.081 79.6461 239.354 80.1005C239.808 80.8728 240.035 81.7815 240.035 82.7811Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M237.037 92.3223H196.601C195.465 92.3223 194.465 91.6408 193.784 90.4595C193.329 89.6417 193.057 88.5967 193.057 87.5517V82.7811C193.057 81.7362 193.329 80.7366 193.784 79.8734C194.102 79.3282 194.511 78.8738 194.965 78.5558C195.465 78.1923 196.01 78.0106 196.601 78.0106H237.037C237.628 78.0106 238.218 78.1923 238.718 78.5558C239.172 78.8738 239.536 79.3282 239.854 79.8734C240.308 80.6912 240.581 81.7362 240.581 82.7811V87.5517C240.581 88.5967 240.308 89.5963 239.854 90.4595C239.172 91.6408 238.173 92.3223 237.037 92.3223ZM196.646 79.0555C196.282 79.0555 195.919 79.1919 195.601 79.419C195.283 79.6462 194.965 80.0097 194.738 80.4186C194.374 81.1001 194.147 81.9179 194.147 82.8266V87.5972C194.147 88.4604 194.374 89.3237 194.738 90.0052C195.237 90.8684 195.919 91.3228 196.646 91.3228H237.082C237.809 91.3228 238.491 90.823 238.991 90.0052C239.354 89.3237 239.581 88.5059 239.581 87.5972V82.8266C239.581 81.9633 239.354 81.1001 238.991 80.4186C238.763 80.0097 238.491 79.6916 238.127 79.4645C237.809 79.2373 237.446 79.101 237.082 79.101H196.646V79.0555Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M240.077 96.0478V100.818C240.077 101.954 239.759 102.999 239.214 103.772C238.669 104.544 237.896 105.044 237.033 105.044H196.597C195.734 105.044 195.007 104.544 194.416 103.772C193.871 102.999 193.553 101.954 193.553 100.818V96.0478C193.553 95.0482 193.78 94.1395 194.189 93.4126C194.734 92.4585 195.597 91.8224 196.551 91.8224H236.988C237.942 91.8224 238.805 92.4585 239.35 93.4126C239.85 94.1395 240.077 95.0482 240.077 96.0478Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M237.08 105.589H196.643C195.644 105.589 194.735 105.044 194.054 104.09C193.463 103.226 193.1 102.045 193.1 100.818V96.0478C193.1 95.0028 193.372 94.0033 193.827 93.14C194.508 91.9587 195.508 91.2772 196.643 91.2772H237.08C238.216 91.2772 239.215 91.9587 239.897 93.14C240.351 93.9578 240.624 95.0028 240.624 96.0478V100.818C240.624 102.045 240.306 103.181 239.67 104.09C238.988 105.044 238.034 105.589 237.08 105.589ZM196.643 92.3222C195.917 92.3222 195.235 92.822 194.735 93.6398C194.372 94.3213 194.145 95.1391 194.145 96.0478V100.818C194.145 101.818 194.417 102.772 194.917 103.499C195.371 104.181 196.007 104.544 196.643 104.544H237.08C237.716 104.544 238.352 104.181 238.806 103.499C239.306 102.772 239.579 101.863 239.579 100.818V96.0478C239.579 95.1846 239.352 94.3213 238.988 93.6398C238.488 92.7766 237.807 92.3222 237.08 92.3222H196.643Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M240.078 109.314V114.085C240.078 116.448 238.715 118.31 237.08 118.31H196.643C194.962 118.31 193.645 116.402 193.645 114.085V109.314C193.645 108.451 193.826 107.633 194.144 106.997C194.69 105.861 195.598 105.089 196.643 105.089H237.08C238.125 105.089 239.079 105.861 239.578 106.997C239.897 107.633 240.078 108.451 240.078 109.314Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M237.08 118.856H196.643C194.69 118.856 193.1 116.72 193.1 114.085V109.314C193.1 108.406 193.281 107.542 193.645 106.77C194.281 105.407 195.417 104.544 196.643 104.544H237.08C238.307 104.544 239.442 105.362 240.079 106.77C240.442 107.542 240.624 108.406 240.624 109.314V114.085C240.578 116.72 239.034 118.856 237.08 118.856ZM196.643 105.589C195.826 105.589 195.053 106.179 194.599 107.179C194.326 107.815 194.145 108.542 194.145 109.269V114.04C194.145 116.084 195.28 117.765 196.643 117.765H237.08C238.443 117.765 239.579 116.039 239.579 114.04V109.269C239.579 108.497 239.442 107.77 239.124 107.179C238.67 106.179 237.898 105.589 237.08 105.589H196.643Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M196.642 91.8224C195.642 91.8224 194.825 91.1864 194.279 90.2322H239.395C238.85 91.1864 237.987 91.8224 237.033 91.8224H237.078C238.032 91.8224 238.896 92.4585 239.441 93.4126H194.325C194.825 92.4131 195.688 91.8224 196.642 91.8224Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M240.3 93.9124H193.412L193.866 93.14C194.184 92.5948 194.593 92.1405 195.048 91.8224C194.593 91.5044 194.184 91.05 193.866 90.4594L193.412 89.687H240.346L239.891 90.4594C239.573 91.0046 239.164 91.4589 238.71 91.777C239.164 92.095 239.573 92.5494 239.891 93.14L240.3 93.9124ZM195.366 92.8674H238.392C237.983 92.5039 237.574 92.3222 237.074 92.3222H237.029V91.2772C237.483 91.2772 237.938 91.0955 238.346 90.732H195.32C195.729 91.0955 196.138 91.2772 196.638 91.2772H196.683V92.3222C196.184 92.3222 195.729 92.5039 195.366 92.8674Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M239.396 80.1459H194.279C194.552 79.6462 194.916 79.2827 195.279 78.9646C194.688 78.5103 194.189 77.8288 193.916 76.9201H239.805C239.532 77.8288 239.032 78.5557 238.396 78.9646C238.805 79.2827 239.123 79.6916 239.396 80.1459Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M240.303 80.6458H193.369L193.824 79.8734C194.005 79.5099 194.232 79.2373 194.505 78.9647C194.051 78.465 193.642 77.8289 193.415 77.1019L193.188 76.4204H240.53L240.303 77.1019C240.076 77.8743 239.667 78.5104 239.212 79.0102C239.439 79.2828 239.667 79.5554 239.848 79.8734L240.303 80.6458ZM195.323 79.6008H238.349C238.258 79.5099 238.213 79.4645 238.122 79.4191L237.531 79.0102L238.122 78.6013C238.485 78.3286 238.803 77.9652 239.031 77.5108H194.687C194.914 77.9652 195.232 78.3286 195.596 78.6013L196.186 79.0102L195.596 79.4191C195.505 79.4645 195.414 79.5554 195.323 79.6008Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M196.64 105.089C195.777 105.089 195.05 104.589 194.459 103.817H239.212C238.667 104.589 237.894 105.089 237.031 105.089C238.076 105.089 239.03 105.861 239.53 106.997H194.096C194.686 105.816 195.595 105.089 196.64 105.089Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M240.394 107.497H193.324L193.688 106.77C194.051 106.043 194.506 105.453 195.051 105.089C194.687 104.862 194.369 104.498 194.097 104.09L193.551 103.272H240.258L239.712 104.09C239.44 104.498 239.122 104.816 238.758 105.089C239.304 105.453 239.803 106.043 240.121 106.77L240.394 107.497ZM195.051 106.452H238.622C238.168 105.907 237.623 105.589 237.032 105.589V104.544C237.35 104.544 237.623 104.453 237.895 104.317H195.732C196.005 104.498 196.323 104.544 196.595 104.544V105.589C196.05 105.589 195.505 105.907 195.051 106.452Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.29\n }, /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.29,\n d: \"M211.908 66.1974H202.549V118.356H211.908V66.1974Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.29,\n d: \"M212.406 118.856H202.002V65.6523H212.406V118.856ZM203.047 117.811H211.361V66.6973H203.047V117.811Z\",\n fill: \"#101010\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.22\n }, /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.22,\n d: \"M230.993 66.1975H221.088V118.356H230.993V66.1975Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.22,\n d: \"M230.993 118.719H221.089C220.861 118.719 220.68 118.538 220.68 118.31V66.1975C220.68 65.9703 220.861 65.7886 221.089 65.7886H230.993C231.22 65.7886 231.402 65.9703 231.402 66.1975V118.356C231.402 118.538 231.22 118.719 230.993 118.719ZM221.497 117.947H230.584V66.6064H221.497V117.947Z\",\n fill: \"#101010\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M183.971 45.2977C183.926 49.205 183.063 52.9306 181.518 56.2473C180.746 57.9284 179.792 59.4732 178.747 60.9271C177.702 62.3355 176.52 63.6531 175.203 64.8344C173.522 66.3792 171.613 67.6967 169.523 68.7417C166.298 70.4228 162.663 71.4223 158.846 71.6495C158.256 71.6949 157.665 71.695 157.074 71.695C153.44 71.6495 149.941 70.8771 146.806 69.5141C145.034 68.7417 143.353 67.7876 141.763 66.6518C134.948 61.7449 130.586 53.7485 130.677 44.7525C130.723 41.9356 131.177 39.1641 132.04 36.6198C133.221 33.0305 135.13 29.8046 137.629 27.0786C137.629 27.0786 137.629 27.0786 137.674 27.0332C139.219 25.3521 140.991 23.8528 142.899 22.626C145.852 20.7178 149.214 19.3548 152.849 18.7187C154.394 18.4461 156.029 18.3098 157.665 18.3552C172.295 18.537 184.108 30.577 183.971 45.2977Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M157.304 72.2401C157.214 72.2401 157.123 72.2401 157.032 72.2401C153.397 72.1947 149.853 71.4678 146.537 70.0139C144.719 69.2415 142.993 68.2419 141.402 67.1061C134.224 61.9266 129.998 53.5667 130.089 44.7525C130.135 41.9355 130.589 39.1186 131.452 36.4834C132.634 32.8487 134.587 29.5774 137.177 26.7151L137.222 26.6697C138.813 24.9432 140.585 23.4438 142.538 22.1717C145.628 20.1726 149.035 18.8095 152.67 18.2189C154.26 17.9463 155.941 17.81 157.577 17.81C164.846 17.9009 171.662 20.7632 176.75 25.9881C181.839 31.1676 184.61 38.0282 184.519 45.2977C184.474 49.205 183.656 52.9761 182.021 56.4745C181.248 58.1555 180.294 59.7457 179.158 61.2451C178.068 62.699 176.887 64.0166 175.524 65.2433C173.797 66.8335 171.843 68.1511 169.753 69.2415C166.346 71.0134 162.666 72.013 158.849 72.1947C158.304 72.2401 157.804 72.2401 157.304 72.2401ZM137.541 27.124L137.904 27.4875C135.405 30.2135 133.588 33.3939 132.406 36.8469C131.543 39.3912 131.134 42.0718 131.089 44.7979C130.998 53.2941 135.087 61.3359 141.948 66.2883C143.492 67.3787 145.128 68.3328 146.855 69.1052C150.035 70.4682 153.442 71.1952 156.941 71.2406C157.532 71.2406 158.122 71.2406 158.667 71.1952C162.348 70.968 165.891 70.0139 169.163 68.3328C171.162 67.2878 173.025 66.0157 174.706 64.4709C175.978 63.335 177.159 62.0174 178.204 60.6544C179.249 59.2005 180.203 57.6558 180.93 56.0656C182.52 52.7034 183.293 49.0687 183.338 45.3431C183.429 38.3462 180.748 31.7583 175.842 26.7605C170.935 21.7628 164.392 18.9913 157.441 18.9004C155.851 18.9004 154.26 18.9913 152.716 19.2639C149.217 19.8545 145.946 21.1267 142.947 23.0804C141.084 24.3071 139.358 25.761 137.813 27.3966L137.541 27.124Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M177.857 48.8009C179.942 37.4476 172.428 26.554 161.075 24.4694C149.721 22.3848 138.828 29.8986 136.743 41.2519C134.659 52.6052 142.172 63.4987 153.526 65.5833C164.879 67.6679 175.773 60.1541 177.857 48.8009Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M157.294 66.47C157.203 66.47 157.158 66.47 157.067 66.47C145.254 66.3337 135.713 56.6562 135.849 44.7979C135.895 39.0732 138.166 33.712 142.301 29.7138C146.344 25.761 151.66 23.5801 157.294 23.5801C157.385 23.5801 157.43 23.5801 157.521 23.5801C169.334 23.7164 178.875 33.3939 178.739 45.2522C178.603 57.0197 169.016 66.47 157.294 66.47ZM157.249 24.6706C151.887 24.6706 146.799 26.7151 142.982 30.4861C139.075 34.3026 136.94 39.3912 136.849 44.8433C136.803 50.2954 138.848 55.4295 142.664 59.3368C146.481 63.2442 151.569 65.3796 157.021 65.4705C162.474 65.5159 167.608 63.4713 171.515 59.6549C175.422 55.8384 177.558 50.7498 177.649 45.2977C177.739 34.03 168.698 24.8069 157.476 24.716C157.385 24.6706 157.339 24.6706 157.249 24.6706Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M165.014 45.9794C164.06 44.9798 162.833 44.2529 161.379 43.844V43.526C164.015 42.481 165.332 40.7545 165.332 38.3919C165.332 37.3015 165.105 36.3474 164.605 35.5295C164.196 34.848 163.56 34.3028 162.742 33.8485C162.379 33.6667 161.97 33.485 161.47 33.3487L161.516 28.5781L158.562 28.5327L158.517 32.8489C157.881 32.8035 157.199 32.7581 156.427 32.7581H156.291L156.336 28.5327L153.383 28.4872L153.337 32.7126L148.067 32.6672C147.931 32.6672 147.885 32.7126 147.885 32.8489V33.803C147.885 33.9393 147.931 33.9848 148.067 33.9848L151.111 34.3028C151.248 34.3028 151.293 34.3483 151.293 34.4846L151.066 55.2025C151.066 55.3388 151.02 55.3843 150.884 55.3843L147.84 55.6569C147.704 55.6569 147.658 55.7023 147.658 55.8386V56.7927C147.658 56.929 147.704 56.9745 147.84 56.9745L153.11 57.0199L153.065 61.5633L156.018 61.6088L156.064 57.0653H157.018C157.472 57.0653 157.881 57.0653 158.29 57.0653L158.244 61.6542L161.198 61.6996L161.243 56.7019C163.242 56.2021 164.696 55.3388 165.605 54.0212C166.377 52.8854 166.786 51.7041 166.786 50.3411C166.786 48.6146 166.195 47.2061 165.014 45.9794ZM157.29 34.4846C157.699 34.4846 158.108 34.53 158.472 34.6209C159.335 34.8026 160.062 35.1206 160.652 35.575C160.97 35.8021 161.198 36.0747 161.425 36.3928C161.834 37.0289 162.061 37.8013 162.061 38.7554C162.061 39.7095 161.834 40.5273 161.379 41.2088C161.061 41.7086 160.607 42.1629 160.016 42.481C159.562 42.7536 159.017 42.9353 158.381 43.0716C157.745 43.2079 156.972 43.2988 156.154 43.2988C155.973 43.2988 155.791 43.2988 155.564 43.2988H154.473C154.337 43.2988 154.292 43.2534 154.292 43.117L154.382 34.53C154.382 34.3937 154.428 34.3483 154.564 34.3483H155.927H156.245L157.29 34.4846ZM161.243 54.3393C160.471 54.8391 159.471 55.1571 158.244 55.248C157.745 55.2934 157.199 55.3388 156.609 55.3388H156.018H154.337C154.201 55.3388 154.155 55.2934 154.155 55.1571L154.246 44.889C154.246 44.7527 154.292 44.7072 154.428 44.7072H156.018C156.064 44.7072 156.109 44.7072 156.109 44.7072C156.927 44.7072 157.654 44.7981 158.335 44.889C159.562 45.1162 160.562 45.5251 161.288 46.1157C162.515 47.0698 163.106 48.5691 163.106 50.5228C163.151 52.2947 162.515 53.5669 161.243 54.3393Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M161.196 62.0177L158.243 61.9723C158.152 61.9723 158.061 61.9268 157.97 61.836C157.879 61.7451 157.879 61.6542 157.879 61.5634L157.925 57.3834C157.652 57.3834 157.334 57.3834 157.061 57.3834H156.471L156.425 61.5634C156.425 61.6542 156.38 61.7451 156.289 61.836C156.198 61.9268 156.107 61.9723 156.016 61.9268L153.063 61.8814C152.972 61.8814 152.881 61.836 152.79 61.7451C152.7 61.6542 152.7 61.5634 152.7 61.4725L152.745 57.2926L147.838 57.2471C147.611 57.2471 147.52 57.1563 147.429 57.0654C147.338 56.9745 147.293 56.8836 147.293 56.6565V55.7024C147.293 55.5206 147.338 55.3843 147.429 55.2935C147.52 55.2026 147.611 55.1117 147.838 55.1117L150.701 54.8845L150.882 34.53L148.02 34.212C147.838 34.212 147.702 34.1211 147.656 34.0303C147.566 33.9394 147.52 33.8485 147.52 33.6214V32.6672C147.52 32.4401 147.611 32.3492 147.702 32.2583C147.793 32.1675 147.884 32.122 148.111 32.122L153.018 32.1675L153.063 28.3056C153.063 28.2147 153.109 28.1238 153.199 28.0329C153.29 27.9421 153.381 27.8966 153.472 27.9421L156.425 27.9875C156.516 27.9875 156.607 28.0329 156.698 28.1238C156.789 28.2147 156.789 28.3056 156.789 28.3964L156.743 32.2583C157.243 32.2583 157.743 32.3038 158.197 32.3038L158.243 28.3964C158.243 28.3056 158.288 28.2147 158.379 28.1238C158.47 28.0329 158.561 28.0329 158.652 28.0329L161.605 28.0784C161.832 28.0784 162.014 28.2601 161.968 28.4873L161.923 32.9853C162.332 33.1216 162.65 33.2579 162.968 33.4396C163.876 33.9394 164.558 34.5755 165.012 35.257C165.558 36.1202 165.83 37.1652 165.785 38.3465C165.739 40.7091 164.513 42.481 162.15 43.6169C163.422 44.0712 164.467 44.7527 165.376 45.6614C166.648 46.9336 167.239 48.4783 167.239 50.2503C167.239 51.6587 166.784 52.9309 166.012 54.1122C165.103 55.4298 163.649 56.3384 161.741 56.8836L161.696 61.6088C161.559 61.836 161.378 62.0177 161.196 62.0177ZM158.606 61.1999H160.787L160.832 56.5656C160.832 56.3839 160.969 56.2476 161.15 56.2021C163.059 55.7478 164.422 54.8845 165.285 53.7033C166.012 52.6583 166.375 51.477 166.375 50.2503C166.375 48.7055 165.876 47.3879 164.74 46.2521C163.831 45.2979 162.65 44.6164 161.287 44.2075C161.105 44.1621 161.014 44.0258 161.014 43.844V43.526C161.014 43.3897 161.105 43.208 161.241 43.1625C163.74 42.163 164.921 40.6182 164.967 38.3919C164.967 37.3924 164.74 36.4837 164.285 35.7113C163.922 35.1207 163.331 34.5755 162.559 34.1666C162.241 33.9848 161.832 33.8485 161.378 33.7122C161.196 33.6668 161.105 33.5305 161.105 33.3487L161.15 28.9871H158.97L158.924 32.8944C158.924 32.9853 158.879 33.1216 158.788 33.167C158.697 33.2579 158.606 33.2579 158.515 33.2579C157.879 33.2124 157.198 33.167 156.471 33.167H156.334C156.243 33.167 156.153 33.1216 156.062 33.0307C155.971 32.9398 155.971 32.849 155.971 32.7581L156.016 28.8962H153.835L153.79 32.7581C153.79 32.9853 153.608 33.1216 153.381 33.1216L148.293 33.0761V33.6214L151.155 33.9394C151.337 33.9394 151.473 34.0303 151.518 34.1211C151.609 34.212 151.655 34.3029 151.655 34.53L151.427 55.248C151.427 55.5661 151.2 55.7932 150.882 55.7932L148.02 56.0204V56.5656L153.109 56.611C153.199 56.611 153.29 56.6565 153.381 56.7473C153.472 56.8382 153.472 56.9291 153.472 57.02L153.427 61.1999H155.607L155.653 57.02C155.653 56.7928 155.835 56.6565 156.062 56.6565H157.016C157.425 56.6565 157.879 56.6565 158.243 56.6565C158.333 56.6565 158.47 56.7019 158.515 56.7473C158.606 56.8382 158.652 56.9291 158.652 57.02L158.606 61.1999ZM156.789 55.7478C156.743 55.7478 156.698 55.7478 156.607 55.7478H154.335C154.017 55.7478 153.79 55.5206 153.79 55.1572L153.881 44.889C153.881 44.6619 153.972 44.571 154.063 44.4801C154.154 44.3893 154.244 44.3438 154.472 44.3438H156.062C156.107 44.3438 156.153 44.3438 156.198 44.3438C157.016 44.3438 157.788 44.4347 158.47 44.571C159.742 44.7982 160.787 45.2525 161.605 45.8886C162.922 46.9336 163.604 48.5238 163.558 50.5683C163.558 52.4311 162.831 53.8396 161.468 54.7028C160.651 55.2026 159.606 55.5661 158.333 55.7024C157.834 55.7478 157.334 55.7478 156.789 55.7478ZM154.562 54.9754H156.607C157.198 54.9754 157.743 54.9754 158.197 54.8845C159.378 54.7482 160.287 54.4756 161.014 54.0213C162.15 53.2944 162.695 52.1585 162.741 50.5229C162.741 48.6601 162.195 47.3425 161.06 46.4338C160.378 45.8886 159.424 45.4797 158.288 45.2979C157.607 45.1616 156.88 45.1162 156.107 45.1162H156.062H156.016H154.653L154.562 54.9754ZM155.744 43.7532C155.698 43.7532 155.653 43.7532 155.562 43.7532H154.472C154.154 43.7532 153.926 43.526 153.926 43.1625L154.017 34.5755C154.017 34.2574 154.244 34.0303 154.562 34.0303L156.289 34.0757L157.334 34.1211C157.788 34.1211 158.197 34.212 158.561 34.2574C159.469 34.4392 160.242 34.7572 160.878 35.257C161.241 35.5296 161.514 35.8476 161.741 36.1657C162.195 36.8926 162.423 37.7559 162.423 38.7554C162.423 39.8004 162.15 40.7091 161.696 41.436C161.332 41.9812 160.832 42.481 160.196 42.8445C159.696 43.1171 159.106 43.3443 158.47 43.4806C157.788 43.6169 157.016 43.7077 156.153 43.7532C156.016 43.7532 155.88 43.7532 155.744 43.7532ZM154.699 42.9354H155.607C155.789 42.9354 155.971 42.9354 156.198 42.9354C157.016 42.9354 157.743 42.8445 158.333 42.7082C158.924 42.5719 159.424 42.3901 159.833 42.163C160.333 41.8449 160.741 41.4815 161.06 41.0271C161.468 40.4365 161.65 39.6641 161.65 38.7554C161.65 37.8922 161.468 37.1652 161.105 36.62C160.923 36.3474 160.696 36.1202 160.423 35.8931C159.878 35.4842 159.197 35.1661 158.424 35.0298C158.106 34.9389 157.743 34.8935 157.288 34.8935L155.925 34.8481H154.79L154.699 42.9354Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M77.0995 261.474L83.5966 224.717L72.3744 216.267L65.6047 246.344C65.4684 247.298 64.8323 251.705 67.7401 255.931C71.0568 260.701 76.2817 261.383 77.0995 261.474Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M77.0977 262.155C77.0523 262.155 77.0523 262.155 77.0069 262.155C75.553 261.973 70.4643 261.065 67.1931 256.34C64.3762 252.25 64.6942 247.934 64.9668 246.253V246.208L71.7365 216.13C71.7819 215.903 71.9637 215.721 72.1454 215.631C72.3726 215.54 72.5998 215.585 72.7815 215.721L84.0037 224.218C84.1855 224.354 84.3218 224.626 84.2763 224.854L77.7793 261.61C77.6884 261.928 77.4158 262.155 77.0977 262.155ZM66.2844 246.48C66.0572 247.98 65.7392 251.887 68.2835 255.567C70.8733 259.338 74.6897 260.429 76.5071 260.747L82.8224 225.035L72.7815 217.448L66.2844 246.48Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.423 244.072C65.8773 247.843 68.6034 250.251 70.9205 249.933C73.1468 249.615 74.3281 247.026 74.4644 246.753C74.1918 245.981 71.7383 238.984 73.8737 237.303C74.1009 237.121 74.4189 237.03 75.055 236.848C76.3272 236.53 78.9624 235.803 80.5526 237.076C81.5067 237.848 81.7339 239.393 82.1428 242.528C82.688 246.617 82.4608 250.433 82.3699 250.433C82.3699 250.433 82.3699 250.388 82.3245 250.342C86.0047 251.751 89.9574 253.159 94.1374 254.477C98.8625 255.976 103.406 257.157 107.722 258.157C107.768 258.838 107.813 259.52 107.858 260.202C107.949 261.383 108.04 262.61 108.131 263.791H57.79C60.3344 257.203 62.8787 250.615 65.423 244.072Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M108.132 264.472H57.7912C57.564 264.472 57.3823 264.381 57.246 264.2C57.1097 264.018 57.1097 263.791 57.1551 263.564L64.8335 243.845C64.9243 243.573 65.2424 243.391 65.5604 243.436C65.8785 243.482 66.1056 243.709 66.1511 244.027C66.3782 245.89 67.2415 247.525 68.4682 248.525C69.2406 249.116 70.1038 249.388 70.8762 249.297C72.421 249.07 73.4205 247.389 73.784 246.753C73.0116 244.572 71.2397 238.62 73.5114 236.803C73.8749 236.53 74.2384 236.439 74.8744 236.258L74.9653 236.212C76.3283 235.849 79.2361 235.076 81.0535 236.53C82.2348 237.484 82.4619 239.12 82.8708 242.391C83.1434 244.572 83.2343 246.617 83.2343 247.934C83.2343 248.843 83.2343 249.479 83.1889 249.888C86.8691 251.296 90.6855 252.614 94.4111 253.795C98.8637 255.204 103.407 256.43 107.951 257.475C108.223 257.521 108.45 257.793 108.45 258.066L108.587 260.111C108.677 261.292 108.768 262.519 108.859 263.7C108.859 263.882 108.814 264.063 108.677 264.2C108.496 264.381 108.314 264.472 108.132 264.472ZM58.7453 263.109H107.405C107.36 262.155 107.269 261.201 107.224 260.247L107.133 258.702C102.726 257.657 98.3185 256.476 94.0022 255.113C90.1403 253.932 86.2784 252.569 82.5074 251.115C82.4619 251.115 82.4619 251.115 82.4165 251.115C82.3711 251.115 81.7804 251.115 81.6896 250.433C81.6896 250.297 81.6896 250.161 81.7804 250.024C81.8713 249.116 81.9622 245.981 81.5078 242.618C81.1443 239.802 80.9626 238.211 80.1902 237.621C78.8726 236.576 76.4192 237.212 75.2833 237.53L75.1925 237.575C74.6927 237.712 74.4655 237.757 74.3747 237.848C73.1479 238.847 73.9203 243.073 75.147 246.571C75.1925 246.753 75.1925 246.935 75.147 247.071C74.9199 247.616 73.6023 250.297 71.1034 250.615C69.9675 250.751 68.7408 250.388 67.6504 249.57C66.6508 248.798 65.833 247.662 65.3333 246.344L58.7453 263.109Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M57.79 260.201V263.791H108.131C108.04 262.609 107.949 261.383 107.904 260.201H57.79Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M108.132 264.472H57.7909C57.4274 264.472 57.1094 264.154 57.1094 263.791V260.201C57.1094 259.838 57.4274 259.52 57.7909 259.52H107.905C108.268 259.52 108.541 259.793 108.586 260.156C108.677 261.337 108.768 262.564 108.859 263.745C108.859 263.927 108.813 264.109 108.677 264.245C108.495 264.381 108.314 264.472 108.132 264.472ZM58.4724 263.109H107.45C107.405 262.382 107.36 261.61 107.314 260.883H58.4724V263.109Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M108.225 190.369C108.361 191.914 108.724 206.498 116.494 261.11H123.127L115.676 180.283L108.225 190.369Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M123.128 261.519H116.494C116.313 261.519 116.131 261.383 116.085 261.156C112.86 238.529 108.861 207.998 107.862 191.142C107.862 190.778 107.816 190.505 107.816 190.369C107.816 190.278 107.816 190.187 107.907 190.097L115.358 180.01C115.449 179.874 115.631 179.828 115.813 179.874C115.995 179.919 116.085 180.056 116.085 180.237L123.537 261.065C123.537 261.156 123.491 261.292 123.446 261.383C123.355 261.474 123.219 261.519 123.128 261.519ZM116.858 260.701H122.673L115.358 181.373L108.634 190.505C108.634 190.642 108.68 190.869 108.68 191.142C109.679 207.861 113.632 238.12 116.858 260.701Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.536 111.359C120.671 109.814 125.851 106.588 132.984 106.27C135.483 106.179 138.39 106.679 144.251 107.724C146.841 108.179 149.067 108.678 149.113 109.36C149.113 109.769 148.34 110.087 147.704 110.314C149.113 110.178 150.203 110.768 150.385 111.45C150.521 111.95 150.112 112.404 149.976 112.54C149.976 112.54 152.657 114.221 149.703 115.403C149.703 115.403 152.021 116.993 148.658 118.22C145.296 119.446 134.574 118.901 134.574 118.901C134.574 118.901 123.851 120.309 118.672 118.765C118.127 118.583 117.4 118.31 116.9 117.72C115.083 115.584 118.127 111.859 118.536 111.359Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M125.533 119.946C122.988 119.946 120.399 119.764 118.536 119.219C117.627 118.946 116.991 118.583 116.537 118.038C114.629 115.766 117.355 112.177 118.218 111.132C118.263 111.086 118.263 111.086 118.309 111.041C121.353 108.86 126.396 106.134 132.984 105.861C135.528 105.725 138.482 106.27 144.343 107.361C148.295 108.088 149.522 108.542 149.567 109.405C149.567 109.678 149.477 109.86 149.295 110.087C150.067 110.314 150.703 110.814 150.84 111.404C150.93 111.768 150.885 112.131 150.658 112.54C151.067 112.904 151.657 113.54 151.567 114.267C151.521 114.767 151.158 115.221 150.567 115.584C150.84 115.902 151.067 116.311 150.976 116.856C150.885 117.629 150.204 118.219 148.841 118.719C145.478 119.946 135.437 119.492 134.574 119.446C134.029 119.401 129.849 119.946 125.533 119.946ZM118.854 111.722C118.4 112.268 115.719 115.675 117.218 117.402C117.536 117.811 118.082 118.083 118.763 118.31C123.806 119.81 134.347 118.447 134.483 118.447C134.529 118.447 134.529 118.447 134.574 118.447C134.665 118.447 145.251 118.946 148.522 117.765C149.431 117.447 149.976 117.038 150.067 116.675C150.113 116.311 149.658 115.902 149.477 115.766C149.34 115.675 149.249 115.493 149.295 115.312C149.295 115.13 149.431 114.994 149.567 114.948C150.249 114.676 150.612 114.403 150.658 114.085C150.703 113.676 150.067 113.131 149.749 112.904C149.613 112.813 149.567 112.722 149.522 112.586C149.522 112.449 149.567 112.313 149.658 112.222C149.749 112.131 150.022 111.813 149.931 111.586C149.84 111.177 148.931 110.677 147.75 110.768C147.523 110.768 147.296 110.632 147.25 110.405C147.205 110.178 147.341 109.95 147.568 109.86C148.25 109.632 148.522 109.451 148.613 109.36C148.25 109.042 146.751 108.633 144.206 108.179C138.391 107.134 135.483 106.588 133.075 106.725C126.669 106.997 121.807 109.587 118.854 111.722Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M147.66 110.768C147.887 110.768 148.114 110.587 148.114 110.36C148.159 110.087 147.978 109.86 147.705 109.86L137.573 108.724C137.301 108.678 137.073 108.86 137.073 109.133C137.028 109.405 137.21 109.633 137.482 109.633L147.614 110.768H147.66Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M149.976 112.086L138.254 111.132C137.981 111.132 137.754 111.314 137.754 111.541C137.754 111.813 137.936 112.041 138.163 112.041L149.885 112.995H149.93C150.157 112.995 150.385 112.813 150.385 112.586C150.43 112.313 150.248 112.086 149.976 112.086Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M149.753 114.903L139.621 114.221C139.348 114.221 139.167 114.403 139.121 114.676C139.121 114.948 139.303 115.13 139.575 115.176L149.707 115.857C149.707 115.857 149.707 115.857 149.753 115.857C149.98 115.857 150.207 115.675 150.207 115.403C150.162 115.13 149.98 114.903 149.753 114.903Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M126.039 124.353C124.131 124.808 122.268 125.171 120.542 125.535C115.09 126.534 110.501 127.034 107.048 127.307C105.73 127.397 104.458 127.488 103.231 127.579C98.3244 127.897 94.0082 128.079 89.8736 127.715C85.7846 127.352 81.8772 126.443 77.8336 124.626C77.2884 124.353 76.7432 124.126 76.198 123.808C73.2902 122.218 70.3824 119.992 65.3846 116.084C64.4759 115.357 63.6127 114.676 62.7494 114.04C59.7054 111.632 57.0702 109.542 54.8439 107.588C48.3922 102.045 45.0301 97.8652 44.4395 92.4585C44.1669 89.9596 44.1214 83.9623 50.5277 76.1476C52.027 76.8746 54.2987 78.0559 56.843 79.7824C58.7967 81.1454 60.4777 82.5084 61.9316 83.7806C64.794 86.3703 66.5659 88.5966 67.3383 89.5053C68.0652 90.414 68.9739 91.3681 70.0189 92.4131C72.6995 95.0937 76.516 98.2741 81.9681 101.863C84.1489 103.272 86.557 104.771 89.3284 106.316C96.4616 106.679 103.549 106.997 110.683 107.361C114.635 107.543 118.588 107.77 122.586 107.952C123.041 107.997 123.495 107.997 123.949 107.997C124.585 113.495 125.312 118.947 126.039 124.353Z\",\n fill: \"#008EC8\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M94.7352 128.488C93.0087 128.488 91.4185 128.442 89.7829 128.306C85.2849 127.897 81.423 126.898 77.5611 125.126C77.0159 124.853 76.4706 124.58 75.9254 124.308C72.8813 122.672 69.8373 120.31 65.0212 116.539L62.3861 114.494C59.2057 111.995 56.6613 109.905 54.4351 108.042C48.3469 102.817 44.485 98.4104 43.8035 92.5493C43.3946 88.8692 44.1669 82.9627 50.028 75.7841C50.2097 75.557 50.4823 75.5115 50.7095 75.6478C52.9357 76.6928 55.0711 77.965 57.1157 79.328C58.8876 80.5547 60.6141 81.9178 62.2497 83.3716C64.9304 85.7797 66.7023 87.9151 67.5201 88.9601L67.7018 89.1872C68.4742 90.1413 69.3829 91.0955 70.337 92.0496C73.4266 95.1391 77.4248 98.3195 82.1499 101.409C84.3762 102.863 86.7842 104.317 89.3285 105.771L123.813 107.452C124.086 107.452 124.313 107.679 124.358 107.952L126.539 124.262C126.585 124.535 126.403 124.853 126.085 124.898C124.222 125.353 122.359 125.716 120.542 126.08C116.044 126.943 111.455 127.534 106.957 127.852L106.639 127.897C105.458 127.988 104.276 128.079 103.141 128.17C100.142 128.351 97.3704 128.488 94.7352 128.488ZM50.664 76.8291C45.3028 83.508 44.6213 88.9601 44.9848 92.3676C45.5754 97.8651 49.3464 102.091 55.2075 107.134C57.3883 108.997 59.9326 111.041 63.113 113.54L65.7482 115.584C70.4733 119.31 73.5174 121.673 76.4706 123.263C77.0159 123.535 77.5156 123.808 78.0608 124.035C81.7864 125.716 85.5575 126.716 89.9192 127.079C93.9174 127.443 98.0973 127.261 103.186 126.943C104.322 126.852 105.458 126.761 106.684 126.67L107.002 126.625C111.455 126.307 115.998 125.716 120.451 124.853C122.087 124.535 123.768 124.217 125.403 123.808L123.359 108.497L89.2376 106.816C89.1468 106.816 89.0559 106.77 88.965 106.725C86.3299 105.271 83.8764 103.772 81.6047 102.272C76.7887 99.0919 72.745 95.9115 69.5647 92.7311C68.6105 91.7315 67.7018 90.7774 66.884 89.7779L66.7023 89.5507C65.8845 88.5511 64.158 86.4612 61.5228 84.0986C59.9326 82.6447 58.2515 81.3271 56.525 80.1458C54.6622 78.9645 52.7086 77.8287 50.664 76.8291Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M120.537 125.943C120.492 125.943 120.401 125.943 120.356 125.898C120.129 125.807 120.038 125.535 120.129 125.353C122.4 120.31 123.082 113.858 122.037 108.042C121.991 107.815 122.128 107.588 122.4 107.543C122.627 107.497 122.855 107.633 122.9 107.906C123.99 113.858 123.264 120.491 120.946 125.716C120.856 125.853 120.719 125.943 120.537 125.943Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M112.221 119.356C112.084 119.356 111.948 119.31 111.902 119.174C111.766 118.992 108.086 114.085 110.221 107.225C110.312 106.997 110.539 106.861 110.767 106.952C110.994 107.043 111.13 107.27 111.039 107.497C109.086 113.949 112.584 118.629 112.584 118.674C112.72 118.856 112.675 119.128 112.493 119.265C112.402 119.356 112.311 119.356 112.221 119.356Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M103.228 127.988C103.092 127.988 102.956 127.897 102.865 127.761L102.592 127.307C99.639 122.263 96.5949 116.993 91.0974 117.22C88.9165 117.311 86.7811 117.675 84.7366 118.356C80.8747 119.583 77.8306 121.673 76.5584 123.944C76.4221 124.172 76.195 124.217 75.9678 124.126C75.7406 123.99 75.6952 123.763 75.7861 123.536C77.1491 121.082 80.3749 118.81 84.464 117.538C86.5994 116.857 88.8257 116.448 91.0519 116.357C97.0493 116.13 100.366 121.809 103.319 126.852L103.592 127.307C103.728 127.488 103.637 127.761 103.455 127.897C103.365 127.988 103.319 127.988 103.228 127.988Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M89.8677 128.17C89.686 128.17 89.5497 128.079 89.4588 127.897C88.2775 125.126 86.233 121.627 84.2339 118.22L84.0976 117.992C83.1889 116.402 82.1893 114.721 81.3261 113.131C78.1911 107.452 72.4664 110.132 66.9234 112.677C65.515 113.313 64.1974 113.949 62.9252 114.403C62.6981 114.494 62.4709 114.358 62.38 114.13C62.2892 113.903 62.4255 113.676 62.6526 113.585C63.8793 113.131 65.1969 112.495 66.6054 111.859C72.2392 109.269 78.6 106.316 82.0985 112.677C82.9617 114.267 83.9613 115.902 84.8699 117.493L85.0062 117.72C87.0053 121.127 89.0499 124.671 90.2766 127.488C90.3675 127.715 90.2766 127.942 90.0494 128.033C89.9586 128.17 89.9131 128.17 89.8677 128.17Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.1587 97.4562C55.3872 97.4562 53.6607 96.4566 52.752 95.7751C50.5258 94.0032 49.6171 91.0954 50.5258 88.5511C51.5253 85.6887 54.3422 85.1435 57.3409 84.5529C58.8402 84.2803 60.3395 83.9622 61.748 83.417C61.9752 83.3262 62.2023 83.417 62.2932 83.6442C62.3841 83.8714 62.2932 84.0985 62.066 84.1894C60.5667 84.8255 59.0219 85.0981 57.4772 85.4161C54.6148 85.9613 52.116 86.4157 51.2981 88.8237C50.5258 91.05 51.2981 93.5488 53.2518 95.0936C54.7966 96.3203 59.3854 98.592 68.1542 93.0036C68.654 92.6856 69.1992 92.3676 69.7899 92.0495C70.017 91.9586 70.2442 92.0041 70.3805 92.2313C70.4714 92.4584 70.4259 92.6856 70.1988 92.8219C69.6535 93.0945 69.1083 93.4125 68.654 93.7306C64.2014 96.5929 60.703 97.4562 58.1587 97.4562Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.8375 107.997C54.7921 107.997 54.7921 107.997 54.7467 107.997C54.5195 107.951 54.3832 107.724 54.4286 107.497C55.2919 103.499 60.4714 103.544 66.5141 103.59C71.3756 103.635 76.8731 103.726 81.2802 101.727C81.4165 101.636 81.5983 101.591 81.7346 101.5C81.9617 101.409 82.1889 101.454 82.3252 101.682C82.4161 101.909 82.3706 102.136 82.1435 102.272C82.0072 102.363 81.8254 102.408 81.6437 102.499C77.1003 104.544 71.5119 104.498 66.5596 104.453C60.6531 104.408 56.0188 104.317 55.2919 107.679C55.201 107.861 55.0193 107.997 54.8375 107.997Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M86.1421 65.9703C84.9154 67.0607 83.2797 67.3788 81.735 67.3333C79.5541 67.3333 77.4642 66.6064 76.8735 66.4246V75.6932C71.4669 75.6024 66.0602 75.5569 60.699 75.466C61.2896 71.4678 61.9257 67.4696 62.5163 63.4714C62.4255 63.3806 62.2892 63.3351 62.1983 63.2443C57.7457 60.0639 54.2473 55.1115 54.0201 49.4777C53.793 43.6167 56.9734 35.9838 63.7885 33.712C68.9225 31.9855 75.0562 33.6666 78.1911 37.2559C78.2366 37.3013 78.282 37.3922 78.5092 37.6648C80.1448 39.8002 84.461 45.4341 86.3693 52.6127C87.6414 57.4287 89.1862 63.2443 86.1421 65.9703Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M76.8759 76.3747L60.6559 76.1475C60.4741 76.1475 60.2924 76.0567 60.1561 75.9204C60.0198 75.7841 59.9744 75.5569 60.0198 75.3752L61.7917 63.7894C56.6577 60.1093 53.5681 54.9298 53.341 49.5231C53.0684 43.2986 56.5668 35.4385 63.5636 33.1214C68.7886 31.3949 75.2857 32.9851 78.6932 36.847C78.7387 36.8924 78.8295 36.9833 79.0567 37.3013C80.7378 39.4822 85.0995 45.2069 87.0531 52.4763C88.3707 57.3832 89.9609 63.4714 86.5988 66.4701C85.4175 67.515 83.7819 68.0148 81.7828 68.0148H81.7373C80.1471 68.0148 78.6478 67.6513 77.5574 67.3333V75.6478C77.5574 75.8295 77.4665 76.0112 77.3756 76.1021C77.1939 76.2838 77.0576 76.3747 76.8759 76.3747ZM61.4282 74.7845L76.1944 74.9662V66.3792C76.1944 66.152 76.2852 65.9703 76.467 65.834C76.6487 65.6977 76.8759 65.6977 77.0576 65.7431C77.7845 66.0157 79.7382 66.6064 81.6919 66.6064C83.4184 66.6064 84.736 66.1974 85.6447 65.3796C88.4161 62.9262 86.9168 57.2924 85.6901 52.7489C83.8273 45.7066 79.5565 40.1182 77.9209 38.0283C77.6937 37.7557 77.6482 37.6648 77.6028 37.6194C74.5133 34.1209 68.6068 32.667 63.8817 34.2572C57.5209 36.3926 54.3405 43.6167 54.5677 49.3414C54.7949 54.3391 57.6572 59.1552 62.4732 62.6082C62.5641 62.699 62.655 62.7445 62.7458 62.7899C62.973 62.9262 63.0639 63.1988 63.0639 63.4714L61.4282 74.7845Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M99.9997 240.983C94.593 243.3 87.7325 244.254 81.4625 244.572C72.2394 245.026 64.3339 244.118 64.3339 244.118L76.6465 175.194C66.4693 177.239 53.6568 178.783 42.162 179.329C31.1215 175.649 19.5812 167.107 39.2996 148.161C57.3824 148.57 90.8674 149.569 94.5476 151.432C95.9106 152.114 97.2736 153.34 98.3186 154.931C102.09 158.293 103.544 169.151 103.771 182.1C104.18 207.543 99.9997 240.983 99.9997 240.983Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M76.0119 244.89C69.3785 244.89 64.3353 244.299 64.2899 244.299H64.1082L64.1536 244.118L76.4208 175.421C66.2436 177.466 53.4766 178.965 42.1635 179.51H42.118H42.0726C34.2579 176.875 29.7145 173.104 28.6695 168.333C27.4428 162.791 30.9412 155.93 39.1648 148.07L39.2103 148.024H39.3011C58.3835 148.433 90.9598 149.433 94.5945 151.296C96.003 152.023 97.4114 153.295 98.411 154.794C101.773 157.838 103.636 167.016 103.909 182.055C104.363 207.225 100.228 240.665 100.183 240.983V241.074L100.092 241.119C95.4123 243.118 89.1424 244.345 81.464 244.754C79.5558 244.89 77.7384 244.89 76.0119 244.89ZM64.5171 243.981C65.7892 244.118 73.1041 244.845 81.4186 244.39C89.0061 243.981 95.1852 242.8 99.8194 240.846C100.092 238.756 103.999 206.544 103.545 182.055C103.272 167.061 101.455 157.975 98.1838 155.021L98.1384 154.976C97.1388 153.522 95.8212 152.25 94.4128 151.568C90.8235 149.751 58.3835 148.751 39.3466 148.342C31.2593 156.112 27.7608 162.791 28.9876 168.243C30.0325 172.922 34.4397 176.557 42.1635 179.147C53.5674 178.602 66.4253 177.057 76.6026 175.012L76.8752 174.967L76.8297 175.239L64.5171 243.981Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.8759 245.072C78.6487 245.072 78.4669 244.935 78.4215 244.708C78.3761 244.481 78.4669 244.254 78.6941 244.163C81.193 243.027 83.4647 241.891 85.3729 240.801C85.3729 240.801 88.3262 239.029 90.9613 236.848C92.597 235.531 95.2776 230.306 97.9582 219.629C99.8664 212.041 102.32 199.32 103.229 182.055C103.229 181.782 103.456 181.6 103.728 181.6C104.001 181.6 104.183 181.827 104.183 182.055C104.682 207.271 100.048 240.71 100.003 241.028C99.9573 241.21 99.8664 241.346 99.6847 241.392C94.5052 243.436 87.5083 244.663 78.8759 245.072C78.9213 245.072 78.9213 245.072 78.8759 245.072ZM103.092 195.912C101.911 206.362 100.275 214.404 98.9123 219.856C96.5952 229.124 93.8691 235.712 91.5974 237.575C88.9168 239.801 85.9182 241.619 85.8727 241.619C84.5097 242.391 83.0558 243.164 81.4202 243.936C88.5988 243.436 94.5506 242.346 99.1395 240.619C99.503 237.939 102.274 216.63 103.092 195.912Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M57.522 184.508H52.7969V245.981H57.522V184.508Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M57.5188 246.389H52.7937C52.5665 246.389 52.3848 246.208 52.3848 245.981V184.508C52.3848 184.281 52.5665 184.099 52.7937 184.099H57.5188C57.746 184.099 57.9277 184.281 57.9277 184.508V245.981C57.9277 246.208 57.746 246.389 57.5188 246.389ZM53.2026 245.572H57.1099V184.917H53.2026V245.572Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.1279 204.181L110.997 197.957V184.508L23.491 192.459L22.1279 204.181Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.1284 204.59C22.0375 204.59 21.9012 204.545 21.8558 204.454C21.7649 204.363 21.7195 204.227 21.7649 204.136L23.0825 192.414C23.0825 192.232 23.2642 192.096 23.446 192.05L110.998 184.099C111.134 184.099 111.225 184.145 111.316 184.19C111.407 184.281 111.452 184.372 111.452 184.508V197.911C111.452 198.138 111.27 198.32 111.088 198.32L22.1284 204.59C22.1738 204.59 22.1738 204.59 22.1284 204.59ZM23.8549 192.823L22.6281 203.727L110.634 197.548V184.962L23.8549 192.823Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.7627 185.462C28.7627 185.462 29.1262 172.968 51.8433 168.652C74.5149 164.29 107.455 171.469 112.725 177.148C118.041 182.827 124.629 187.371 102.911 191.505C81.1483 195.685 62.4294 197.911 52.2522 196.412C41.984 194.913 30.262 193.959 28.7627 185.462Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59.7949 197.321C56.8417 197.321 54.2974 197.184 52.162 196.866C51.3442 196.73 50.5264 196.639 49.7086 196.503C39.9402 195.094 29.8084 193.686 28.3545 185.553C28.3545 185.508 28.3545 185.508 28.3545 185.462C28.3545 185.326 28.4908 182.146 31.4895 178.42C34.2155 175.012 39.9402 170.514 51.7985 168.243C61.9303 166.289 75.4243 166.471 88.9182 168.743C100.64 170.696 110.363 173.967 113.089 176.875C113.498 177.33 113.952 177.784 114.361 178.193C116.769 180.692 119.087 183.054 118.314 185.371C117.451 188.052 112.771 190.051 103.003 191.914C84.1931 195.549 69.745 197.321 59.7949 197.321ZM29.2177 185.462C30.5808 192.959 40.3491 194.322 49.8449 195.685C50.6627 195.821 51.4805 195.912 52.2983 196.048C61.6123 197.412 78.6047 195.776 102.821 191.142C111.953 189.415 116.724 187.416 117.451 185.144C118.042 183.281 115.906 181.101 113.68 178.783C113.271 178.329 112.817 177.92 112.408 177.466C107.455 172.196 75.0154 164.653 51.9348 169.106C30.4445 173.195 29.2632 184.69 29.2177 185.462Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M161.611 255.067L146.436 220.946L132.396 220.174L143.664 248.888C144.073 249.752 146.027 253.795 150.797 255.658C156.204 257.794 160.929 255.431 161.611 255.067Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M155.431 257.248C153.932 257.248 152.296 257.021 150.569 256.34C145.935 254.522 143.8 250.751 143.073 249.252V249.206L131.805 220.492C131.714 220.265 131.76 220.038 131.896 219.856C132.032 219.674 132.259 219.583 132.487 219.583L146.526 220.356C146.798 220.356 147.026 220.537 147.116 220.765L162.291 254.886C162.428 255.204 162.291 255.613 161.973 255.749C161.019 256.112 158.566 257.248 155.431 257.248ZM144.299 248.661C144.936 250.07 146.889 253.432 151.024 255.067C155.295 256.748 159.066 255.476 160.747 254.749L145.981 221.628L133.395 220.946L144.299 248.661Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M141.62 244.072C142.075 247.843 144.801 250.251 147.163 249.933C149.39 249.615 150.616 247.026 150.707 246.753C150.435 245.981 147.981 238.984 150.116 237.303C150.344 237.121 150.662 237.03 151.298 236.848C152.57 236.53 155.251 235.803 156.841 237.076C157.84 237.848 158.022 239.393 158.431 242.528C158.976 246.617 158.749 250.433 158.658 250.433C158.658 250.433 158.658 250.388 158.613 250.342C162.338 251.751 166.291 253.159 170.471 254.477C175.242 255.976 179.83 257.157 184.147 258.157C184.192 258.838 184.238 259.52 184.283 260.202C184.374 261.383 184.465 262.61 184.556 263.791H133.896C136.486 257.203 139.031 250.615 141.62 244.072Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M184.602 264.472H133.898C133.67 264.472 133.443 264.381 133.352 264.2C133.216 264.018 133.216 263.791 133.262 263.564L140.985 243.845C141.076 243.573 141.394 243.391 141.712 243.436C142.03 243.482 142.258 243.709 142.303 244.027C142.53 245.89 143.393 247.525 144.62 248.525C145.392 249.116 146.301 249.434 147.074 249.297C148.618 249.07 149.663 247.389 149.981 246.753C149.209 244.572 147.437 238.62 149.709 236.803C150.072 236.53 150.436 236.439 151.072 236.258L151.163 236.212C152.571 235.849 155.433 235.122 157.296 236.53C158.478 237.484 158.705 239.12 159.114 242.391C159.386 244.572 159.477 246.617 159.477 247.934C159.477 248.843 159.477 249.479 159.432 249.888C163.157 251.296 166.974 252.614 170.745 253.795C175.243 255.204 179.786 256.431 184.375 257.476C184.648 257.521 184.875 257.794 184.875 258.066L185.057 260.52C185.147 261.61 185.193 262.655 185.284 263.745C185.284 263.927 185.238 264.109 185.102 264.245C184.966 264.381 184.784 264.472 184.602 264.472ZM134.897 263.109H183.875C183.83 262.292 183.739 261.428 183.693 260.61L183.557 258.657C179.15 257.612 174.698 256.431 170.336 255.067C166.474 253.886 162.567 252.523 158.796 251.069C158.75 251.069 158.75 251.069 158.705 251.069C158.659 251.069 158.069 251.069 158.023 250.388C158.023 250.251 158.023 250.115 158.114 249.979C158.205 249.07 158.296 245.935 157.841 242.573C157.478 239.756 157.251 238.166 156.524 237.575C155.206 236.53 152.753 237.166 151.572 237.484L151.481 237.53C150.981 237.666 150.754 237.712 150.617 237.803C149.436 238.757 150.118 242.891 151.39 246.526C151.435 246.708 151.435 246.889 151.39 247.026C151.163 247.571 149.845 250.251 147.301 250.569C146.165 250.706 144.893 250.342 143.848 249.525C142.848 248.752 142.03 247.616 141.531 246.299L134.897 263.109Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M133.893 260.201V263.791H184.552C184.461 262.609 184.37 261.383 184.279 260.201H133.893Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M184.597 264.472H133.892C133.529 264.472 133.211 264.154 133.211 263.791V260.201C133.211 259.838 133.529 259.52 133.892 259.52H184.324C184.688 259.52 184.96 259.793 185.006 260.156L185.051 260.565C185.142 261.61 185.188 262.7 185.278 263.745C185.278 263.927 185.233 264.109 185.097 264.245C184.96 264.381 184.779 264.472 184.597 264.472ZM134.574 263.109H183.87C183.825 262.382 183.779 261.61 183.734 260.883H134.574V263.109Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M138.8 160.519C137.664 157.111 134.62 154.749 131.031 154.431C119.49 153.476 109.995 152.659 103.18 152.068C82.1435 150.205 58.4723 147.979 58.4723 147.979C56.3823 148.388 54.2469 148.751 52.1115 149.115C45.2964 150.251 38.7084 151.068 32.3931 151.614C31.2572 154.113 23.2608 172.559 31.3027 181.055C33.9833 183.872 37.4363 184.599 41.2528 185.19C60.1534 188.097 76.1008 185.962 84.1426 185.19C92.2299 184.417 104.134 183.872 118.991 185.417C124.397 202.863 129.759 220.31 135.165 237.757C136.483 238.62 143.162 242.845 151.794 241.028C158.155 239.711 162.017 235.849 163.38 234.349C157.019 220.628 154.929 208.77 152.339 201.001C147.841 187.507 143.298 174.013 138.8 160.519Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M147.436 241.891C141.439 241.891 136.85 239.393 134.942 238.075L134.805 237.984L134.76 237.848L118.676 185.735C106.954 184.508 95.3229 184.463 84.1461 185.553C83.4192 185.644 82.6014 185.689 81.7381 185.78C73.0148 186.689 58.385 188.188 41.1654 185.553C37.2126 184.962 33.7142 184.19 30.9882 181.328C22.9917 172.922 30.443 154.976 31.9877 151.432L32.0786 151.205H32.3058C38.8937 150.614 45.5271 149.751 52.0242 148.706C54.1596 148.342 56.295 147.979 58.385 147.57H58.4758H58.5213C59.5208 147.661 82.6922 149.842 103.183 151.659C112.361 152.477 121.72 153.249 131.034 154.022C134.76 154.34 137.94 156.839 139.121 160.383C143.619 173.786 148.163 187.416 152.661 200.864C153.433 203.182 154.16 205.817 154.978 208.861C156.886 215.858 159.249 224.581 163.701 234.168L163.792 234.395L163.611 234.577C161.793 236.576 157.84 240.119 151.798 241.392C150.298 241.755 148.844 241.891 147.436 241.891ZM135.487 237.53C137.895 239.074 143.983 242.3 151.707 240.665C157.341 239.483 161.066 236.258 162.929 234.258C158.522 224.672 156.159 216.039 154.297 209.043C153.479 205.998 152.752 203.409 151.979 201.092C147.481 187.643 142.938 174.013 138.44 160.61C137.35 157.338 134.442 155.067 130.989 154.794C121.675 154.022 112.315 153.204 103.138 152.432C82.874 150.66 59.9752 148.479 58.4758 148.342C56.3859 148.751 54.2505 149.115 52.1605 149.478C45.7088 150.569 39.1663 151.387 32.6238 151.977C30.8973 155.839 24.0367 172.877 31.5788 180.782C34.1686 183.508 37.5307 184.19 41.3017 184.781C58.4304 187.416 72.9693 185.917 81.6927 185.008C82.5559 184.917 83.3738 184.826 84.1007 184.781C95.4138 183.69 107.136 183.736 119.04 185.008L119.312 185.053L119.403 185.28L135.487 237.53Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M94.7323 96.6839C94.2325 101.773 92.5514 110.587 91.0521 118.083C89.9617 123.626 89.0076 128.442 88.7804 130.532C88.6895 131.396 88.5532 132.35 88.4624 133.395C88.0535 137.847 87.9172 143.708 88.6441 150.705C87.5083 152.886 85.1002 157.111 81.0112 161.473C77.6945 165.017 73.2874 168.606 67.5172 171.378C47.4807 180.873 28.2167 171.65 25.7178 170.378C26.8536 165.017 27.8986 159.928 28.8527 155.112C31.079 144.163 32.9418 134.485 34.4866 126.125C35.4407 121.037 36.2585 116.402 36.9855 112.268C37.2581 110.859 37.4852 109.496 37.7124 108.224C38.4848 103.772 39.3026 98.9556 40.393 94.3667C42.6647 84.871 46.1632 76.4203 52.9783 74.3303C53.16 74.2848 53.3418 74.2394 53.6598 74.1485C54.4776 74.0122 56.0678 73.9668 59.8843 74.3303C74.0143 75.6479 90.5523 77.0563 94.5506 86.3703C95.1866 87.9151 95.4592 89.369 94.7323 96.6839Z\",\n fill: \"#008EC8\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.3903 176.148C36.8501 176.148 27.8086 172.014 25.4461 170.832C25.2189 170.742 25.128 170.514 25.1735 170.287C26.2185 165.289 27.2634 160.155 28.3084 155.021C30.353 144.935 32.2158 135.212 33.9423 126.034C34.8055 121.309 35.6688 116.675 36.4411 112.177C36.7137 110.768 36.9409 109.405 37.1681 108.133L37.3044 107.406C38.0768 103.09 38.8492 98.5921 39.8941 94.2758C41.7115 86.6429 45.0736 76.2384 52.7974 73.8759C52.9792 73.8304 53.2064 73.7396 53.5698 73.6941C54.2968 73.6033 55.7507 73.5124 59.9306 73.8759L60.4304 73.9213C74.7422 75.2389 90.9167 76.7382 95.0058 86.1885C95.6873 87.8242 95.9599 89.3689 95.233 96.7293C94.6878 102.045 92.825 111.768 91.5528 118.174L91.3711 119.174C90.3715 124.262 89.5083 128.624 89.2811 130.578C89.1448 131.532 89.0539 132.486 88.9631 133.44C88.4633 139.028 88.5541 144.844 89.1448 150.66C89.1448 150.75 89.1448 150.841 89.0994 150.932C87.0548 154.885 84.4196 158.565 81.3755 161.791C77.4228 166.016 72.8339 169.379 67.6999 171.787C61.021 175.012 54.3876 176.148 48.3903 176.148ZM26.2639 170.06C30.5347 172.15 48.6175 179.737 67.291 170.878C72.2887 168.515 76.7867 165.199 80.6486 161.109C83.6018 157.975 86.1461 154.431 88.1452 150.614C87.5546 144.753 87.4637 138.938 87.9635 133.349C88.0544 132.395 88.1452 131.441 88.2815 130.487C88.5087 128.488 89.372 124.126 90.3715 119.037L90.5532 118.038C91.8254 111.632 93.6882 101.954 94.2334 96.6838C94.9149 89.5507 94.7332 88.0968 94.0971 86.6429C90.2352 77.7378 74.3787 76.2839 60.3849 74.9663L59.8852 74.9208C56.7957 74.6482 54.7966 74.5574 53.7516 74.7391C53.479 74.7845 53.2972 74.83 53.1609 74.8754C47.618 76.5565 43.756 82.8264 40.9391 94.5484C39.8941 98.8647 39.1218 103.317 38.3948 107.633L38.2585 108.36C38.0313 109.678 37.8042 110.996 37.5316 112.404C36.7592 116.902 35.8959 121.536 35.0327 126.261C33.3516 135.394 31.4434 145.162 29.3988 155.248C28.3084 160.201 27.3089 165.199 26.2639 170.06Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59.8799 74.8755V69.4688L81.7337 72.104L78.9168 77.1018C78.9168 77.0563 69.6028 80.8728 59.8799 74.8755Z\",\n fill: \"#008EC8\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M71.7409 78.7373C68.2879 78.7373 63.9717 78.0104 59.61 75.2843C59.4737 75.1934 59.3828 75.0117 59.3828 74.83V69.4233C59.3828 69.287 59.4283 69.1507 59.5646 69.0598C59.6554 68.969 59.8372 68.9235 59.9735 68.9235L81.8273 71.5587C82.009 71.5587 82.1453 71.695 82.2362 71.8313C82.3271 71.9676 82.3271 72.1493 82.2362 72.3311L79.4193 77.3288C79.3739 77.4197 79.283 77.5106 79.1467 77.556C79.0558 77.556 76.1026 78.7373 71.7409 78.7373ZM60.3824 74.6028C69.0149 79.7369 77.3293 77.1471 78.556 76.6928L80.9186 72.5128L60.3824 70.0594V74.6028Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M119.038 185.826C118.902 185.826 118.766 185.78 118.675 185.644C118.493 185.417 118.538 185.144 118.766 184.962C118.811 184.917 124.263 180.692 125.99 178.284C126.126 178.056 126.444 178.011 126.671 178.147C126.898 178.284 126.944 178.602 126.807 178.829C125.035 181.373 119.629 185.553 119.402 185.735C119.22 185.826 119.129 185.826 119.038 185.826Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M127.851 160.155C127.715 160.155 127.624 160.11 127.533 160.019C125.761 158.429 109.859 156.793 99.5911 156.112C99.3185 156.112 99.1367 155.885 99.1367 155.612C99.1367 155.339 99.3639 155.158 99.6365 155.158C102.272 155.339 125.579 157.021 128.124 159.292C128.305 159.474 128.351 159.792 128.169 159.974C128.078 160.11 127.987 160.155 127.851 160.155Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M136.89 168.97C136.845 168.97 136.799 168.97 136.754 168.924C136.481 168.833 136.345 168.561 136.436 168.334C136.663 167.652 134.346 165.562 132.074 164.108C131.847 163.972 131.802 163.654 131.938 163.427C132.074 163.2 132.392 163.154 132.62 163.29C133.892 164.108 137.935 166.925 137.345 168.652C137.299 168.833 137.117 168.97 136.89 168.97Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M133.395 216.812C133.213 216.812 132.986 216.676 132.941 216.494L125.626 195.094C125.535 194.822 125.671 194.549 125.944 194.458C126.216 194.367 126.489 194.504 126.58 194.776L133.895 216.176C133.986 216.448 133.849 216.721 133.577 216.812C133.486 216.812 133.44 216.812 133.395 216.812Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M136.891 226.171C136.664 226.171 136.482 226.035 136.436 225.853L134.165 218.811C134.074 218.538 134.21 218.266 134.483 218.22C134.755 218.129 135.028 218.266 135.073 218.538L137.345 225.581C137.436 225.853 137.3 226.126 137.027 226.171C136.982 226.126 136.936 226.171 136.891 226.171Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.8906 111.359L42.0273 111.177C44.0264 101.182 48.0247 85.5979 48.0701 85.4616L48.9333 85.6888C48.8879 85.8705 44.8443 101.409 42.8906 111.359Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.0094 113.66L40.5 118.185L41.362 118.472L42.8714 113.947L42.0094 113.66Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.4751 111.45C65.1571 111.45 64.839 111.359 64.5664 111.132C63.8849 110.587 63.7032 109.36 63.7941 107.952C62.3856 108.133 61.1134 108.679 60.7045 109.678L59.8867 109.315C60.4774 107.952 62.1584 107.225 63.8849 107.043C64.1575 104.68 64.9299 102.091 65.1571 101.273L66.0203 101.545C65.5206 103.181 65.0208 105.226 64.7936 106.997C65.0662 106.997 65.3388 106.997 65.6114 107.043C67.3379 107.179 68.4738 107.815 68.6555 108.679C68.8373 109.405 68.292 110.178 67.0653 110.905C66.4747 111.268 65.9749 111.45 65.4751 111.45ZM64.7482 107.952C64.6573 109.178 64.7482 110.132 65.1571 110.496C65.5206 110.769 66.1566 110.496 66.6564 110.178C67.6105 109.587 67.8831 109.133 67.8377 108.906C67.7468 108.542 66.929 108.088 65.566 107.997C65.2934 107.952 65.0208 107.952 64.7482 107.952Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.9365 157.391L32.3672 168.502L33.2525 168.706L35.8218 157.596L34.9365 157.391Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M158.343 69.8322C166.021 66.1975 169.383 62.2447 171.019 59.1552C171.61 58.0648 173.2 54.6572 174.336 54.9298C174.881 55.0661 175.108 56.0203 175.244 56.5655C175.926 59.3369 174.29 61.8813 173.745 62.6991C175.881 61.1997 177.97 59.7004 180.106 58.1557C181.06 57.3833 181.923 56.8835 182.514 56.52C184.24 55.5659 184.695 55.7476 184.922 55.8839C185.376 56.1566 185.513 56.7926 185.513 56.8381C185.74 58.0648 184.286 59.5641 182.014 60.7908L185.831 58.5191C186.012 58.5646 186.694 58.7463 187.057 59.4278C187.466 60.1548 187.194 60.9726 187.057 61.3815C186.421 63.1989 184.468 63.9258 183.922 64.153C183.741 64.2438 183.559 64.2893 183.423 64.2893C184.876 63.0171 186.467 62.6536 187.375 63.3352C187.466 63.3806 187.875 63.7441 187.966 64.2893C188.148 65.2888 187.239 66.561 185.649 67.2425C186.467 67.1516 187.466 67.1062 187.648 67.5151C187.966 68.3329 185.013 70.4683 184.604 70.7409C183.65 71.4224 180.833 73.2852 174.608 74.9663C172.382 75.5569 172.337 75.4206 170.656 75.9204C167.748 76.8291 165.476 77.965 163.977 78.8282C163.568 78.7828 160.796 78.3284 159.115 75.6024C157.571 73.0126 158.207 70.2866 158.343 69.8322Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M164.022 79.3735H163.977C163.432 79.2826 160.524 78.7829 158.797 75.9205C157.162 73.2853 157.707 70.5138 157.889 69.7414C157.934 69.6051 158.025 69.5143 158.161 69.4234C164.295 66.5156 168.52 62.9718 170.61 58.9736C170.656 58.8827 170.701 58.7464 170.792 58.6555C171.928 56.3838 173.2 54.2484 174.472 54.5664C175.29 54.7936 175.563 55.884 175.699 56.5201C176.108 58.2466 175.699 59.8822 175.154 61.1998L179.833 57.8831C180.606 57.2471 181.469 56.7018 182.332 56.2475C184.15 55.2479 184.786 55.3388 185.195 55.6114C185.831 55.9749 186.012 56.7473 186.012 56.8836C186.103 57.2925 186.012 57.7468 185.785 58.2012C185.831 58.2012 185.876 58.2012 185.922 58.2012C186.33 58.292 187.012 58.5646 187.421 59.337C187.921 60.2457 187.603 61.2453 187.466 61.6542C187.33 62.0631 187.148 62.3811 186.921 62.7446C187.194 62.8355 187.421 62.9263 187.648 63.1081C187.83 63.2444 188.284 63.6533 188.42 64.3802C188.557 65.2435 188.148 66.1976 187.285 66.9245C187.648 67.0154 187.966 67.1971 188.102 67.5152C188.239 67.8332 188.602 68.6965 184.922 71.2862C182.559 72.9673 179.152 74.4212 174.79 75.557C173.745 75.8296 173.2 75.9659 172.7 76.0568C172.155 76.1931 171.746 76.2385 170.883 76.5111C168.611 77.2381 166.385 78.1922 164.295 79.3735C164.204 79.3281 164.113 79.3735 164.022 79.3735ZM158.752 70.1504C158.57 71.059 158.298 73.2853 159.615 75.4207C161.024 77.7379 163.25 78.2831 163.977 78.4194C166.067 77.2381 168.293 76.2385 170.61 75.557C171.519 75.2844 171.973 75.1935 172.518 75.0572C173.018 74.9664 173.518 74.8301 174.563 74.5575C177.471 73.7851 181.56 72.4221 184.422 70.423C186.376 69.0145 187.194 68.0604 187.285 67.7423C187.194 67.6969 186.83 67.606 185.785 67.7423C185.558 67.7878 185.331 67.6515 185.285 67.4243C185.24 67.1971 185.331 66.97 185.558 66.8791C187.057 66.1976 187.693 65.1072 187.603 64.4257C187.557 64.0622 187.239 63.7896 187.194 63.7441C186.967 63.5624 186.603 63.4715 186.24 63.517C185.694 63.9713 185.013 64.3348 184.195 64.6074C184.013 64.6528 183.832 64.7437 183.65 64.7891C183.423 64.8346 183.241 64.7437 183.105 64.562C183.014 64.3802 183.059 64.153 183.195 63.9713C184.059 63.1989 184.967 62.7446 185.785 62.6083C186.24 62.1994 186.512 61.745 186.694 61.2453C186.785 60.9272 187.012 60.2457 186.739 59.6551C186.558 59.2916 186.24 59.1099 185.967 59.0644L183.514 60.5183C183.15 60.7455 182.741 60.9727 182.332 61.1998C182.105 61.3361 181.832 61.2453 181.696 61.0181C181.56 60.7909 181.651 60.5183 181.878 60.382L182.968 59.7459C184.422 58.7464 185.285 57.7014 185.149 56.929C185.104 56.7927 185.013 56.4292 184.786 56.2929C184.695 56.2475 184.286 56.1566 182.832 56.929C182.014 57.3834 181.242 57.8831 180.469 58.5192L174.109 63.0626C173.927 63.1989 173.654 63.1535 173.518 63.0172C173.336 62.8809 173.336 62.6083 173.473 62.4265C174.245 61.2907 175.472 59.019 174.926 56.6564C174.745 55.8386 174.563 55.4297 174.336 55.3842C174.154 55.3388 173.473 55.566 171.701 59.019C171.655 59.1553 171.564 59.2462 171.519 59.3825C169.247 63.5624 164.976 67.1971 158.752 70.1504Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M167.562 77.329C165.109 80.9183 161.429 85.8252 156.249 91.0047C156.158 91.0955 156.068 91.1864 155.977 91.2773C151.07 96.1387 147.708 99.5463 142.028 102.454C141.029 102.954 140.075 103.408 139.121 103.772C133.759 105.952 128.535 106.452 121.31 107.27C116.676 107.77 113.269 108.133 109.588 108.042C108.543 107.997 107.498 107.952 106.408 107.861C104.5 107.679 99.8655 107.27 94.8223 105.952C87.7346 104.135 79.7836 100.546 77.4211 93.4127C77.0576 92.3222 76.3761 89.7779 77.103 85.916C78.0571 80.782 82.5551 77.0109 87.7801 77.0109H87.8709C89.5065 77.0109 91.0513 77.1472 92.4598 77.3744C96.8669 78.0559 100.138 79.6007 101.956 80.3276C102.274 80.4639 102.637 80.6002 103 80.7365C105.409 81.6452 108.453 82.4176 112.224 82.8265C116.222 83.2354 121.083 83.2354 126.899 82.3722C131.442 79.737 135.94 77.0564 140.484 74.4212C145.936 71.2408 151.342 68.0604 156.795 64.88C160.384 69.0145 163.973 73.1945 167.562 77.329Z\",\n fill: \"#008EC8\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.631 108.588C110.268 108.588 109.904 108.588 109.541 108.588C108.496 108.542 107.451 108.497 106.315 108.406C104.361 108.224 99.7271 107.815 94.6385 106.498C84.8247 103.953 78.8728 99.6371 76.8737 93.6398C76.1467 91.3681 76.0104 88.6875 76.5102 85.916C77.5098 80.5094 82.2349 76.602 87.687 76.5566H87.7779C89.3227 76.5566 90.9129 76.6929 92.4576 76.9201C96.4104 77.5561 99.4999 78.8283 101.363 79.6007C101.635 79.6915 101.862 79.7824 102.044 79.8733C102.362 80.0096 102.68 80.1459 103.044 80.2822C105.815 81.2817 108.859 82.0087 112.131 82.3267C116.492 82.7811 121.354 82.6448 126.579 81.9178C131.077 79.2826 135.575 76.6475 140.073 74.0123C145.525 70.8319 150.977 67.6515 156.383 64.4711C156.611 64.3348 156.883 64.3802 157.02 64.562L167.787 77.0109C167.924 77.1927 167.969 77.4653 167.833 77.647C164.516 82.5539 160.654 87.1882 156.474 91.4136C156.429 91.459 156.338 91.5499 156.293 91.5953L156.247 91.6407C151.386 96.4568 147.887 99.9552 142.163 102.908C141.208 103.408 140.209 103.863 139.209 104.271C133.894 106.407 128.76 106.952 121.672 107.724L121.217 107.77C117.128 108.224 113.948 108.588 110.631 108.588ZM87.7779 77.5107C82.7801 77.5107 78.5093 81.1 77.6006 86.0069C77.1009 88.6421 77.2372 91.141 77.9187 93.2309C80.2358 100.273 88.4594 103.726 94.9565 105.407C99.9543 106.725 104.543 107.134 106.451 107.316C107.542 107.406 108.541 107.452 109.586 107.497C113.266 107.588 116.583 107.225 121.217 106.725L121.672 106.679C128.669 105.907 133.712 105.362 138.937 103.272C139.891 102.863 140.845 102.454 141.799 101.954C147.388 99.0919 150.659 95.8207 155.611 90.8684L155.657 90.8229C155.702 90.7775 155.793 90.6866 155.838 90.6412C159.927 86.5521 163.608 82.0996 166.879 77.329L156.656 65.4707C151.34 68.6056 146.025 71.6951 140.709 74.8301C136.165 77.4653 131.667 80.1459 127.124 82.7811C127.078 82.8265 126.988 82.8265 126.942 82.8265C121.626 83.5989 116.629 83.7352 112.131 83.2808C108.814 82.9174 105.634 82.2359 102.817 81.1454C102.408 81.0091 102.09 80.8728 101.772 80.7365C101.544 80.6457 101.317 80.5548 101.09 80.4639C99.1819 79.6461 96.2741 78.4648 92.4122 77.8287C90.9128 77.6016 89.4135 77.4653 87.8688 77.4653H87.7779V77.5107Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M126.396 103.726C118.173 103.726 108.359 102.499 107.723 102.408L107.859 101.5C108.086 101.545 131.576 104.498 136.301 101.409L136.801 102.181C135.029 103.363 130.94 103.726 126.396 103.726Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M140.118 100.001L139.891 99.1373L140.027 99.5917L139.891 99.1373C139.891 99.1373 142.117 98.5013 146.251 94.9574L146.842 95.6389C142.48 99.3191 140.209 99.9552 140.118 100.001Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M128.582 90.4593C127.628 88.96 126.356 82.69 126.311 82.4629L127.174 82.2811C127.537 84.0531 128.628 88.8691 129.355 90.0049L128.582 90.4593Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M138.026 86.8245L137.662 86.0067C137.708 86.0067 140.797 84.5528 143.932 82.7354C143.478 82.4628 143.205 82.1448 143.069 81.7813C142.342 80.1457 143.841 77.6468 145.659 76.2838C147.385 74.9662 149.157 74.7844 150.338 75.784C150.838 76.1929 151.065 76.6927 151.065 77.2379C151.065 78.3283 150.066 79.555 148.112 81.0998C147.612 81.5087 147.022 81.8722 146.431 82.2811C146.84 82.2356 147.249 82.1902 147.703 82.0993C156.79 80.3274 157.926 75.5568 157.971 75.5114L158.834 75.6931C158.789 75.9203 157.608 81.0544 147.885 82.9626C146.658 83.1898 145.749 83.2352 145.068 83.0989C141.706 85.1434 138.207 86.7336 138.026 86.8245ZM148.521 76.0566C147.567 76.0566 146.613 76.6927 146.158 77.0107C144.477 78.3283 143.387 80.3728 143.841 81.4633C144.023 81.8267 144.341 82.0539 144.886 82.1902C145.84 81.5996 146.749 81.0089 147.567 80.3728C149.702 78.7372 150.157 77.7831 150.157 77.2379C150.157 76.9653 150.02 76.6927 149.748 76.4655C149.339 76.1475 148.93 76.0566 148.521 76.0566Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M107.182 88.8691C106.909 88.8691 106.637 88.7782 106.455 88.6419C105.955 88.2785 105.819 87.597 106.092 87.0063C106.137 86.87 106.273 86.6883 106.5 86.4611C104.592 85.9159 101.321 85.507 98.3223 85.3252L98.3677 84.4166C100.14 84.5074 105.001 84.8709 107.5 85.8705C108.409 85.5524 109.908 85.507 112.225 86.1431L111.998 87.0063C110.544 86.5974 109.499 86.5065 108.681 86.552C108.818 86.6883 108.908 86.8246 108.954 86.9609C109.045 87.2335 109.09 87.6878 108.545 88.1876C108.091 88.6874 107.591 88.8691 107.182 88.8691ZM107.591 86.8246C107.227 86.9609 107.046 87.188 106.955 87.3698C106.864 87.597 106.864 87.7787 107 87.915C107.182 88.0513 107.545 87.9604 108 87.5515C108.136 87.4607 108.181 87.3244 108.181 87.2789C108.091 87.0972 107.909 86.9609 107.591 86.8246Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M83.8763 55.3388C83.6492 52.6128 81.332 48.5237 81.332 48.4783L82.1044 48.0239C82.1953 48.2057 84.5124 52.2947 84.785 55.248L83.8763 55.3388Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M84.0531 30.4862C77.238 23.7619 71.3315 25.1704 70.4683 26.5788C69.5596 27.9873 65.7431 30.7588 65.7431 30.7588C65.7431 30.7588 58.3374 27.3966 55.9748 34.3935C53.7031 41.1178 51.6585 47.842 54.43 52.34C55.475 56.7926 58.5191 60.609 62.1993 63.2442H62.2447C64.5164 62.7444 65.0616 57.7467 65.1525 57.2469C63.0625 56.9289 61.4723 55.6567 61.2451 54.1119C61.0634 52.9761 61.6541 51.9765 61.8358 51.7039C62.5173 50.5226 63.2443 50.0229 63.9712 49.8866C64.6073 49.7503 65.2888 49.8866 65.9249 50.2046C66.879 50.7044 67.4242 51.4313 67.6059 51.7494C67.7877 47.7512 69.1053 45.6157 70.2865 44.4345C71.4224 43.2532 72.1948 43.2532 75.8295 40.8906C77.238 39.9819 78.3284 39.3004 79.1008 38.7552C79.0099 38.5735 78.9645 38.4371 78.8736 38.3008C79.2371 38.3008 79.6006 38.3463 79.964 38.3917C79.9186 38.3463 90.8228 37.2104 84.0531 30.4862Z\",\n fill: \"url(#paint0_linear_165_1306)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62.1985 63.426H62.153L62.1076 63.3806C58.064 60.4728 55.2925 56.6109 54.2929 52.3855C51.5669 47.9329 53.3842 41.5721 55.8377 34.3027C56.5192 32.3036 57.6551 30.9406 59.2453 30.259C62.0167 29.0778 65.1517 30.259 65.7423 30.5316C66.2876 30.1227 69.5588 27.6693 70.3312 26.4426C70.6947 25.8519 71.7397 25.3976 73.0118 25.2613C74.6474 25.0795 79.0091 25.2158 84.234 30.3499C86.1423 32.2127 86.8692 33.8483 86.3695 35.2114C85.4153 37.892 80.1904 38.4372 79.9632 38.4826C79.6906 38.4372 79.418 38.4372 79.1909 38.3918C79.2363 38.4372 79.2363 38.5281 79.2817 38.6189L79.3272 38.7552L79.1909 38.8461C78.373 39.4367 77.2826 40.1183 75.9196 41.0269C74.3748 42.0265 73.3298 42.6171 72.5575 43.026C71.5579 43.5713 71.0581 43.8893 70.4221 44.5254C68.8319 46.161 67.9686 48.569 67.8323 51.7494L67.7869 52.34L67.4688 51.7948C67.2871 51.5222 66.8328 50.7953 65.8786 50.3409C65.288 50.0229 64.6519 49.932 64.0158 50.0683C63.2435 50.2046 62.5619 50.7953 61.9713 51.7948C61.4715 52.6127 61.2898 53.385 61.4261 54.112C61.6533 55.5659 63.198 56.7926 65.1971 57.1106L65.3789 57.1561V57.3378C65.288 58.2919 64.6974 62.9716 62.3348 63.4714C62.2439 63.426 62.1985 63.426 62.1985 63.426ZM61.835 30.1227C61.0172 30.1227 60.1539 30.259 59.3361 30.6225C57.8368 31.2586 56.7464 32.5762 56.1103 34.4844C53.7023 41.663 51.8849 47.9329 54.5655 52.2946V52.34C55.5651 56.4291 58.2457 60.291 62.1985 63.1079C64.1521 62.6082 64.7428 58.4737 64.8791 57.4287C62.8346 57.0652 61.2444 55.7476 60.9718 54.1574C60.8355 53.385 61.0626 52.5218 61.5624 51.6131C62.1985 50.5227 62.9709 49.8412 63.8341 49.7049C64.5156 49.5686 65.2426 49.7049 65.9241 50.0229C66.6056 50.3409 67.0599 50.8407 67.378 51.2042C67.6051 48.2055 68.5138 45.8884 70.0586 44.2982C70.7401 43.6167 71.2853 43.2986 72.2849 42.7534C73.0572 42.3445 74.0568 41.7539 75.647 40.7543C76.9646 39.8911 78.0096 39.255 78.7819 38.6644C78.7365 38.5281 78.6911 38.4372 78.6457 38.3463L78.5093 38.0737H78.7819C79.1454 38.0737 79.5089 38.1192 79.8724 38.1646C80.2358 38.1192 85.0973 37.5285 85.9151 35.1205C86.324 33.8938 85.6425 32.3944 83.8706 30.6225C78.782 25.5793 74.5111 25.443 72.9664 25.6248C71.5579 25.7611 70.7855 26.2608 70.5584 26.6697C69.6497 28.0782 65.9241 30.8042 65.7878 30.9406L65.6969 30.986L65.606 30.9406C65.606 30.8951 63.8795 30.1227 61.835 30.1227Z\",\n fill: \"url(#paint1_linear_165_1306)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M81.7389 67.3788C79.558 67.3788 77.468 66.6518 76.8774 66.4701V68.1512C74.1514 66.2884 72.334 63.9258 72.334 63.9258C75.9233 65.9249 81.5571 67.3333 81.7389 67.3788Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M77.059 68.4692L76.7864 68.2875C74.0604 66.4247 72.1976 64.0621 72.1976 64.0167L71.6523 63.3351L72.4247 63.7895C76.014 65.834 81.7387 67.2425 81.7842 67.2425L83.3289 67.606H81.7387C79.8759 67.606 78.0586 67.1062 77.059 66.7427V68.4692ZM73.0608 64.471C73.7878 65.2888 75.0599 66.6064 76.6955 67.7423V66.1521L76.9227 66.2429C77.5134 66.4701 78.5129 66.7427 79.6488 66.9699C77.8768 66.4701 75.2416 65.6069 73.0608 64.471Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.3466 169.969C39.2103 169.969 39.074 169.969 38.9377 169.969C37.393 169.788 36.0299 168.652 34.8941 166.425C34.0308 164.744 32.8495 162.836 31.6683 160.792C30.6233 159.02 29.5329 157.248 28.4879 155.339C28.3516 155.112 28.4424 154.885 28.6696 154.749C28.8968 154.613 29.1239 154.703 29.2603 154.931C30.3052 156.793 31.3957 158.611 32.4406 160.337C33.6674 162.382 34.8032 164.29 35.7119 166.016C36.7569 167.97 37.8473 168.97 39.1195 169.106C42.1181 169.424 46.1163 164.744 50.7506 159.338C51.4321 158.52 52.1591 157.702 52.886 156.839C46.1163 154.658 41.3912 151.16 39.8464 147.252C38.8923 144.799 39.1649 142.209 40.6642 139.619C42.7542 136.03 46.0709 134.213 49.9328 134.531C54.3853 134.894 58.7016 138.12 60.2918 142.209C61.6548 145.798 60.7916 149.524 57.7929 152.659C56.7479 153.749 55.6575 154.931 54.3853 156.384C60.519 158.156 67.1524 158.565 72.241 157.429C75.8757 156.612 78.4655 156.839 79.9648 158.02C80.9643 158.792 81.4641 159.974 81.4641 161.519C81.4641 161.746 81.2824 161.927 81.0552 161.973C80.828 161.973 80.6463 161.791 80.6463 161.564C80.6463 160.292 80.2374 159.338 79.465 158.747C78.1929 157.747 75.8303 157.566 72.4682 158.338C67.1524 159.519 60.1555 159.11 53.7947 157.202C52.9769 158.156 52.1591 159.065 51.3867 159.974C46.5252 165.471 42.7088 169.969 39.3466 169.969ZM49.0241 135.348C45.8437 135.348 43.1177 136.984 41.3457 140.028C39.9827 142.391 39.7101 144.708 40.5734 146.889C42.0273 150.66 46.707 153.976 53.4312 156.066C54.8397 154.476 56.021 153.159 57.1114 152.023C59.8374 149.16 60.6553 145.753 59.4285 142.482C57.9747 138.665 53.931 135.666 49.7965 135.348C49.5693 135.348 49.2967 135.348 49.0241 135.348Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M79.7394 134.621C75.514 134.621 67.1087 131.577 60.021 124.989C54.3417 119.719 43.2103 121.945 34.6687 126.489C34.4415 126.58 34.2144 126.534 34.0781 126.307C33.9872 126.08 34.0326 125.853 34.2598 125.716C43.074 121.037 54.6597 118.765 60.6116 124.353C68.29 131.486 77.4223 134.349 80.8298 133.622C81.5113 133.486 82.5563 133.395 83.8739 133.349C85.2824 133.258 86.8271 133.167 88.4173 132.94C92.3247 132.395 94.6418 131.259 95.6414 129.487C96.4592 127.988 96.2774 125.989 95.1416 123.535C94.3238 121.718 92.8699 119.992 90.7799 118.401C88.0539 116.266 84.3737 114.449 80.33 113.176C81.6022 117.72 81.1479 121.037 79.0125 122.172C76.6044 123.445 74.0601 124.49 71.4249 123.581C69.0169 122.763 66.927 120.355 65.1096 116.221C64.2918 114.312 64.7916 113.131 65.3368 112.495C67.4267 110.132 73.5604 110.496 79.0125 111.95C77.5131 107.679 74.8779 103.544 72.0156 101C69.8802 99.1373 67.4722 98.4558 64.7461 99.001C60.3844 99.8642 55.9319 103.862 53.3421 109.224C50.9341 114.176 43.4829 115.721 36.7587 112.677C36.5315 112.586 36.4406 112.313 36.5315 112.131C36.6224 111.904 36.895 111.813 37.0767 111.904C42.5742 114.403 50.0709 113.949 52.5698 108.86C55.2504 103.317 59.9755 99.1373 64.5644 98.1832C67.5176 97.5925 70.2437 98.3649 72.5608 100.364C75.6503 103.09 78.5127 107.633 80.012 112.222C84.3737 113.494 88.3719 115.448 91.2797 117.72C93.4605 119.401 95.0053 121.264 95.8685 123.172C97.0953 125.898 97.277 128.17 96.3229 129.896C95.2325 131.895 92.6427 133.167 88.4628 133.758C86.8271 133.985 85.2369 134.076 83.8285 134.167C82.6018 134.258 81.5568 134.303 80.9207 134.44C80.6481 134.576 80.1937 134.621 79.7394 134.621ZM71.1523 111.632C68.6989 111.632 66.8361 112.131 66.0183 113.086C65.4276 113.767 65.3822 114.721 65.9274 115.903C67.6539 119.81 69.5621 122.036 71.743 122.808C74.0601 123.626 76.4227 122.627 78.649 121.445C80.4209 120.491 80.6935 117.266 79.3759 112.949C76.3318 112.086 73.4695 111.632 71.1523 111.632Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.1167 95.0937C48.1176 95.0937 46.0276 95.0029 44.074 94.912C42.8018 94.8666 41.5751 94.8211 40.3484 94.7757C40.1212 94.7757 39.9395 94.594 39.9395 94.3214C39.9395 94.0942 40.1212 93.9125 40.3484 93.9125C41.5751 93.9579 42.7564 94.0033 44.074 94.0488C46.0731 94.1396 48.1176 94.2305 50.1167 94.2305C57.8405 94.2305 63.8833 90.0051 65.11 86.0978C65.8369 83.7352 64.9282 81.5544 62.4294 79.8733C59.5216 77.9196 56.4321 75.9205 53.4788 74.5575C53.3425 74.5121 53.2062 74.3303 53.2062 74.1486C53.2062 73.9214 53.388 73.7397 53.6151 73.7397C53.6606 73.7397 53.7514 73.7397 53.7969 73.7851C56.841 75.1936 59.9305 77.1927 62.8837 79.1918C65.7006 81.1 66.7456 83.6443 65.9278 86.3704C64.6102 90.6866 58.3403 95.0937 50.1167 95.0937Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M156.247 91.459C156.111 91.459 155.929 91.3681 155.884 91.2318C154.067 87.6879 150.932 83.9169 147.479 81.1908C143.799 78.2831 141.618 76.3748 140.164 74.6938C138.755 73.1036 137.937 71.6951 137.574 70.2412C136.938 67.6515 137.529 65.2889 138.028 63.7441C138.119 63.517 138.346 63.3806 138.574 63.4715C138.801 63.5624 138.937 63.7896 138.846 64.0167C138.346 65.4252 137.801 67.606 138.392 70.014C138.71 71.3316 139.482 72.6492 140.8 74.1485C142.208 75.7387 144.389 77.647 148.024 80.5093C151.568 83.2808 154.794 87.1427 156.656 90.8229C156.747 91.0501 156.702 91.2772 156.475 91.4135C156.384 91.459 156.293 91.459 156.247 91.459Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M109.588 108.451C109.542 108.451 109.497 108.451 109.451 108.451C109.224 108.36 109.088 108.133 109.179 107.906C109.451 107.043 109.679 106.134 109.906 105.225C110.951 101.182 112.087 96.5929 117.993 97.1382C120.492 97.3653 123.218 97.1382 125.944 96.4566C124.081 93.4126 123.9 89.9141 125.581 87.597C127.08 85.5979 129.579 84.9618 132.487 85.8705C136.03 86.9609 136.757 88.5965 136.712 89.7778C136.667 92.413 132.759 95.3662 127.307 97.0019C129.715 100.091 133.895 102.363 139.165 103.408C139.393 103.454 139.529 103.681 139.483 103.908C139.438 104.135 139.211 104.271 138.984 104.226C133.35 103.135 128.897 100.637 126.398 97.229C123.536 97.956 120.583 98.2286 117.902 98.0014C112.723 97.5471 111.723 101.409 110.724 105.453C110.496 106.361 110.269 107.315 109.951 108.179C109.906 108.36 109.769 108.451 109.588 108.451ZM130.033 86.3248C128.443 86.3248 127.125 86.9155 126.262 88.0968C124.763 90.1413 124.99 93.3671 126.807 96.184C131.941 94.7301 135.849 91.9587 135.849 89.6869C135.894 88.0968 133.895 87.1426 132.214 86.6429C131.487 86.4157 130.715 86.3248 130.033 86.3248Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M93.1419 91.5044C92.9602 91.5044 92.8239 91.5044 92.6421 91.459C89.8707 91.141 87.0992 88.0969 87.0537 85.3254C87.0083 83.2354 88.5076 81.7361 89.3709 80.8274L89.5072 80.6911C90.5067 79.6916 91.37 78.5103 92.1424 77.1472C92.2787 76.9201 92.5058 76.8746 92.733 76.9655C92.9602 77.1018 93.0056 77.329 92.9147 77.5562C92.1424 78.9646 91.1882 80.2368 90.1433 81.2818L90.007 81.4181C89.2346 82.2359 87.8716 83.5535 87.917 85.28C87.9624 87.5971 90.4613 90.3232 92.7784 90.5958C92.9147 90.5958 93.0511 90.5958 93.1874 90.5958C96.6858 90.5958 100.002 85.0528 102.638 80.5548L102.683 80.4639C102.819 80.2822 103.047 80.1913 103.274 80.3276C103.455 80.4639 103.546 80.6911 103.41 80.9183L103.365 81.0092C100.366 85.9615 97.0947 91.459 93.1419 91.5044Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M94.826 106.361C94.826 106.361 94.7806 106.361 94.826 106.361C94.5534 106.361 94.3717 106.134 94.4171 105.907C94.6897 100.137 102.913 93.3218 108.229 91.3681C112.273 89.8688 112.227 85.3708 111.818 82.8265C111.773 82.5993 111.955 82.3721 112.182 82.3267C112.409 82.2813 112.636 82.463 112.682 82.6902C113.409 87.5516 111.955 90.9138 108.547 92.1405C103.368 94.0487 95.553 100.637 95.3258 105.907C95.2349 106.18 95.0532 106.361 94.826 106.361Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.81757 108.133C8.81757 108.133 14.3151 120.809 40.2126 120.809C66.0646 120.809 80.1947 116.084 83.3296 119.492C86.4646 122.899 90.5082 129.715 79.8312 143.118C69.1996 156.521 53.752 161.655 38.895 159.928C24.038 158.247 10.4532 134.212 10.4532 134.212C10.4532 134.212 1.50267 104.907 8.81757 108.133Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.4853 160.701C42.6225 160.701 40.7597 160.61 38.8515 160.383C32.5816 159.656 25.8119 155.067 18.7696 146.752C13.5447 140.573 10.0917 134.531 10.0917 134.485C10.0917 134.44 10.0462 134.44 10.0462 134.394C9.3193 132.032 3.04938 111.132 6.59325 107.952C7.00215 107.588 7.77453 107.27 9.00126 107.77C9.09212 107.815 9.18299 107.906 9.22843 107.997C9.22843 108.042 10.6369 111.132 15.1349 114.176C19.2694 116.993 26.9932 120.401 40.2145 120.401C52.1637 120.401 61.6595 119.401 68.6109 118.629C77.1525 117.72 81.8322 117.22 83.6496 119.219C89.3289 125.398 88.193 133.304 80.1966 143.39C71.3369 154.567 58.5245 160.701 44.4853 160.701ZM10.8641 134.076C11.5001 135.167 24.7669 157.929 38.9424 159.519C54.8443 161.337 69.6559 155.249 79.4697 142.845C90.9191 128.397 84.9218 121.9 82.9681 119.764C81.4233 118.083 76.3347 118.629 68.6563 119.446C61.7049 120.173 52.1637 121.218 40.1691 121.218C26.6752 121.218 18.7696 117.72 14.5442 114.812C10.4097 111.995 8.81952 109.178 8.50148 108.451C7.63823 108.133 7.27476 108.406 7.18389 108.542C4.54871 110.905 8.95582 127.715 10.8641 134.076Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62.6074 129.487V205.499L66.9691 287.189H73.3753L67.9232 203.636V129.487H62.6074Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M73.376 287.598H66.9698C66.7426 287.598 66.5609 287.416 66.5609 287.235L62.1992 205.544V129.533C62.1992 129.306 62.381 129.124 62.6081 129.124H67.9239C68.1511 129.124 68.3328 129.306 68.3328 129.533V203.636L73.8304 287.189C73.8304 287.28 73.7849 287.416 73.7395 287.507C73.6032 287.553 73.5123 287.598 73.376 287.598ZM67.3333 286.78H72.9671L67.515 203.636C67.515 203.636 67.515 203.636 67.515 203.59V129.896H63.017V205.499L67.3333 286.78Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.72559 121.173C8.72559 121.173 28.2168 186.598 28.7621 189.233C29.3073 191.868 6.99909 269.197 6.99909 269.197H0.411133L18.5848 188.824L3.45522 123.399L8.72559 121.173Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.04523 269.652H0.411837C0.275535 269.652 0.184666 269.606 0.093798 269.515C0.00292969 269.379 0.00292969 269.243 0.00292969 269.152L18.1312 188.87L3.04702 123.535C3.00159 123.354 3.09245 123.172 3.27419 123.081L8.58999 120.809C8.68086 120.764 8.81716 120.764 8.90803 120.809C8.9989 120.855 9.08977 120.946 9.1352 121.082C9.95301 123.763 28.6265 186.553 29.1717 189.188C29.7623 191.868 9.72584 261.428 7.4087 269.379C7.36327 269.515 7.18153 269.652 7.04523 269.652ZM0.911613 268.834H6.72719C15.6323 237.939 28.7173 191.459 28.3993 189.324C27.8541 186.825 10.1802 127.443 8.49912 121.718L3.91027 123.672L18.949 188.779C18.949 188.824 18.949 188.915 18.949 188.961L0.911613 268.834Z\",\n fill: \"#101010\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_165_1306\",\n x1: 53.0928,\n y1: 44.3254,\n x2: 86.2692,\n y2: 44.3254,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#008EC8\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint1_linear_165_1306\",\n x1: 52.9326,\n y1: 44.344,\n x2: 86.5226,\n y2: 44.344,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#008EC8\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_165_1306\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 300.592,\n height: 287.598,\n fill: \"white\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDeskBtcIllustration);\nexport default __webpack_public_path__ + \"static/media/desk-btc-illustration.bc8ab4727b7d96b8ab0d9372283844dc.svg\";\nexport { ForwardRef as ReactComponent };","const ExternalLink = ({ color, className }) => (\n \n \n \n);\n\nexport default ExternalLink;\n","import { SUPPORTED_TOKENS, TRANSACTION_EXPLORER_LINK, TRANSACTION_STATES } from 'src/utils/constants';\nimport { timestampToFormattedDate } from 'src/utils/dates';\nimport emptyTransactionsListIllustration from 'src/icons/desk-btc-illustration.svg';\nimport ExternalLinkIcon from 'src/icons/externalLink';\nimport { copyToClipboard, removeTrailingZeros, truncate } from 'src/utils/strings';\n\nconst LargeTransactionTable = ({ transactions, accounts, className, screenWidth }) => (\n <>\n \n \n {transactions.map((transaction, i) => {\n const token = transaction.tokenSymbol ?? SUPPORTED_TOKENS[transaction.network][0];\n const side =\n transaction.from.toLowerCase() === accounts[transaction.network].toLowerCase() ? '-' : '+';\n return (\n \n \n \n \n copyToClipboard(side === '+' ? transaction.from : transaction.to)}\n >\n {side === '+'\n ? `from ${truncate(transaction.from, 10)}`\n : `to ${truncate(transaction.to, 10)}`}\n \n \n \n \n );\n })}\n \n
    \n \n \n {transaction.time ? timestampToFormattedDate(transaction.time, screenWidth > 1024) : ''}\n \n {side}\n {removeTrailingZeros(parseFloat(transaction.amount).toFixed(8))}\n \n {token}\n {transaction.network} Network\n \n \n \n
    \n {transactions.length === 0 && (\n
    \n You don't have any transactions yet\n \"empty\n
    \n )}\n \n);\n\nexport default LargeTransactionTable;\n","import { useMemo } from 'react';\nimport { SUPPORTED_TOKENS } from 'src/utils/constants';\nimport { timestampToFormattedDate } from 'src/utils/dates';\nimport { removeTrailingZeros, truncate } from 'src/utils/strings';\n\nconst MobileTransactionTable = ({ transactions, accounts }) => {\n const transactionsGroupedByDate = useMemo(() => {\n return transactions.reduce((acc, tx) => {\n if (!tx.time) return acc;\n const time = timestampToFormattedDate(tx.time);\n if (time in acc) {\n return { ...acc, [time]: [...acc[time], tx] };\n }\n return { ...acc, [time]: [tx] };\n }, {});\n }, [transactions]);\n\n return Object.keys(transactionsGroupedByDate).map((date, i) => (\n
    \n

    {date}

    \n {transactionsGroupedByDate[date].map((tx, j) => {\n const token = tx.tokenSymbol ?? SUPPORTED_TOKENS[tx.network][0];\n const side = tx.from.toLowerCase() === accounts[tx.network].toLowerCase() ? '-' : '+';\n return (\n
    \n \n
    \n \n {side}\n {removeTrailingZeros(parseFloat(tx.amount).toFixed(8))}\n    \n {token}\n \n {tx.network} Network\n
    \n \n {side === '+' ? `from ${truncate(tx.from, 10)}` : `to ${truncate(tx.to, 10)}`}\n \n
    \n );\n })}\n
    \n ));\n};\n\nexport default MobileTransactionTable;\n","import { useEffect, useState } from 'react';\nimport LargeTransactionTable from './LargeTransactionTable';\nimport MobileTransactionTable from './MobileTransactionTable';\n\nconst TransactionsTable = ({ transactions, accounts, className }) => {\n // UI\n const [screenWidth, setScreenWidth] = useState();\n\n useEffect(() => {\n if (typeof window !== 'undefined' && !screenWidth) {\n setScreenWidth(window.innerWidth);\n }\n }, [screenWidth]);\n\n if (screenWidth < 768) {\n return ;\n }\n\n return (\n \n );\n};\n\nexport default TransactionsTable;\n","const DownIcon = ({ color, ...props }) => (\n \n \n \n);\n\nexport default DownIcon;\n","import DownIcon from 'src/icons/down';\n\nconst BTN_CLASSNAMES = 'flex items-center justify-center rounded-full w-10 h-10 mx-2 ';\nconst NO_GRADIENT_BTN_CLASSNAMES = 'border border-gray-dark';\nconst GRADIENT_BTN_CLASSNAMES = 'bg-gradient-to-r from-orange to-pink';\n\nconst RoundPaginationButtons = ({ currentPage, pages, onPrevClick, onNextClick }) => (\n
    \n \n \n \n \n {currentPage} / {pages}\n \n \n \n \n
    \n);\n\nexport default RoundPaginationButtons;\n","import { NETWORK_NAME_LABELS } from 'src/utils/constants';\nimport './Portfolio.css';\nimport { useEffect, useState } from 'react';\nimport RoundPaginationButtons from '../round-pagination-buttons/RoundPaginationButtons';\nimport { removeTrailingZeros } from 'src/utils/strings';\n\nconst COINS_PER_PORTFOLIO_PAGE = 10;\n\nconst Portfolio = ({ balances, prices }) => {\n const pages = Math.ceil(balances.length / COINS_PER_PORTFOLIO_PAGE);\n\n const [currentPage, setCurrentPage] = useState(1);\n const [balancesToShow, setBalancesToShow] = useState(balances.slice(0, COINS_PER_PORTFOLIO_PAGE));\n\n useEffect(() => {\n setBalancesToShow(\n balances.slice((currentPage - 1) * COINS_PER_PORTFOLIO_PAGE, COINS_PER_PORTFOLIO_PAGE * currentPage)\n );\n }, [balances, currentPage]);\n\n const onNextClick = () => {\n if (currentPage === pages) return;\n setCurrentPage(currentPage + 1);\n };\n\n const onPrevClick = () => {\n if (currentPage === 1) return;\n setCurrentPage(currentPage - 1);\n };\n\n return (\n
    \n Portfolio\n {balances.length === 0 && (\n
    \n Your portfolio is empty\n
    \n )}\n {balancesToShow.map((balance, i) => (\n
    \n \n
    \n {balance.token}\n \n On the {NETWORK_NAME_LABELS[balance.network]} network\n \n
    \n
    \n \n {removeTrailingZeros(balance.amount.toFixed(8))} {balance.token}\n \n \n ≈ ${(balance.amount * prices[balance.token]).toFixed(2)}\n \n
    \n
    \n ))}\n {pages > 1 && (\n \n )}\n
    \n );\n};\n\nexport default Portfolio;\n","const CrossIcon = ({ color = '#000000', onClick, className = '' }) => (\n \n \n \n \n);\n\nexport default CrossIcon;\n","import CrossIcon from 'src/icons/cross';\nimport DownIcon from 'src/icons/down';\n\nconst Modal = ({ isOpen, setIsOpen, title, className, hasBackBtn, onBackBtnClick, children }) => {\n if (!isOpen) return;\n return (\n {\n if (!e.target.className.includes('modal-container')) return;\n setIsOpen(false);\n }}\n >\n
    \n
    \n {hasBackBtn ? (\n \n ) : (\n
    \n )}\n {title}\n setIsOpen(false)} className=\"cursor-pointer\" />\n
    \n {children}\n
    \n \n );\n};\n\nexport default Modal;\n","const CopyIcon = ({ color = '#101010', className = '' }) => (\n \n \n \n \n \n \n \n \n);\n\nexport default CopyIcon;\n","const WarningIcon = ({ color, className }) => (\n \n \n \n);\n\nexport default WarningIcon;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgExclamation(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 17,\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n stroke: \"red\",\n strokeWidth: 2,\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgExclamation);\nexport default __webpack_public_path__ + \"static/media/exclamation.87889b139c9440d9b1ec8b6fc4a3b61f.svg\";\nexport { ForwardRef as ReactComponent };","/** Instructions defined by the program */\nexport enum TokenInstruction {\n InitializeMint = 0,\n InitializeAccount = 1,\n InitializeMultisig = 2,\n Transfer = 3,\n Approve = 4,\n Revoke = 5,\n SetAuthority = 6,\n MintTo = 7,\n Burn = 8,\n CloseAccount = 9,\n FreezeAccount = 10,\n ThawAccount = 11,\n TransferChecked = 12,\n ApproveChecked = 13,\n MintToChecked = 14,\n BurnChecked = 15,\n InitializeAccount2 = 16,\n SyncNative = 17,\n InitializeAccount3 = 18,\n InitializeMultisig2 = 19,\n InitializeMint2 = 20,\n}\n","import exclamationIcon from 'src/icons/exclamation.svg';\n\nconst Input = ({\n type,\n value,\n setValue,\n label,\n fieldName,\n placeholder,\n error,\n className,\n inputClassName,\n required = true,\n}) => {\n return (\n \n );\n};\n\nexport default Input;\n","import { Layout } from '@solana/buffer-layout';\n\nexport interface EncodeDecode {\n decode(buffer: Buffer, offset?: number): T;\n encode(src: T, buffer: Buffer, offset?: number): number;\n}\n\nexport const encodeDecode = (layout: Layout): EncodeDecode => {\n const decode = layout.decode.bind(layout);\n const encode = layout.encode.bind(layout);\n return { decode, encode };\n};\n","import { blob, Layout } from '@solana/buffer-layout';\nimport { toBigIntBE, toBigIntLE, toBufferBE, toBufferLE } from 'bigint-buffer';\nimport { encodeDecode } from './base';\n\nexport const bigInt =\n (length: number) =>\n (property?: string): Layout => {\n const layout = blob(length, property);\n const { encode, decode } = encodeDecode(layout);\n\n const bigIntLayout = layout as Layout as Layout;\n\n bigIntLayout.decode = (buffer: Buffer, offset: number) => {\n const src = decode(buffer, offset);\n return toBigIntLE(Buffer.from(src));\n };\n\n bigIntLayout.encode = (bigInt: bigint, buffer: Buffer, offset: number) => {\n const src = toBufferLE(bigInt, length);\n return encode(src, buffer, offset);\n };\n\n return bigIntLayout;\n };\n\nexport const bigIntBE =\n (length: number) =>\n (property?: string): Layout => {\n const layout = blob(length, property);\n const { encode, decode } = encodeDecode(layout);\n\n const bigIntLayout = layout as Layout as Layout;\n\n bigIntLayout.decode = (buffer: Buffer, offset: number) => {\n const src = decode(buffer, offset);\n return toBigIntBE(Buffer.from(src));\n };\n\n bigIntLayout.encode = (bigInt: bigint, buffer: Buffer, offset: number) => {\n const src = toBufferBE(bigInt, length);\n return encode(src, buffer, offset);\n };\n\n return bigIntLayout;\n };\n\nexport const u64 = bigInt(8);\n\nexport const u64be = bigIntBE(8);\n\nexport const u128 = bigInt(16);\n\nexport const u128be = bigIntBE(16);\n\nexport const u192 = bigInt(24);\n\nexport const u192be = bigIntBE(24);\n\nexport const u256 = bigInt(32);\n\nexport const u256be = bigIntBE(32);\n","import { Layout, u8 } from '@solana/buffer-layout';\nimport { encodeDecode } from './base';\n\nexport const bool = (property?: string): Layout => {\n const layout = u8(property);\n const { encode, decode } = encodeDecode(layout);\n\n const boolLayout = layout as Layout as Layout;\n\n boolLayout.decode = (buffer: Buffer, offset: number) => {\n const src = decode(buffer, offset);\n return !!src;\n };\n\n boolLayout.encode = (bool: boolean, buffer: Buffer, offset: number) => {\n const src = Number(bool);\n return encode(src, buffer, offset);\n };\n\n return boolLayout;\n};\n","import { Layout } from '@solana/buffer-layout';\nimport BigNumber from 'bignumber.js';\nimport { encodeDecode } from './base';\nimport { u128 } from './bigint';\n\nexport const WAD = new BigNumber('1e+18');\n\nexport const decimal = (property?: string): Layout => {\n const layout = u128(property);\n const { encode, decode } = encodeDecode(layout);\n\n const decimalLayout = layout as Layout as Layout;\n\n decimalLayout.decode = (buffer: Buffer, offset: number) => {\n const src = decode(buffer, offset).toString();\n return new BigNumber(src).div(WAD);\n };\n\n decimalLayout.encode = (decimal: BigNumber, buffer: Buffer, offset: number) => {\n const src = BigInt(decimal.times(WAD).integerValue().toString());\n return encode(src, buffer, offset);\n };\n\n return decimalLayout;\n};\n","import { blob, Layout } from '@solana/buffer-layout';\nimport { PublicKey } from '@solana/web3.js';\nimport { encodeDecode } from './base';\n\nexport const publicKey = (property?: string): Layout => {\n const layout = blob(32, property);\n const { encode, decode } = encodeDecode(layout);\n\n const publicKeyLayout = layout as Layout as Layout;\n\n publicKeyLayout.decode = (buffer: Buffer, offset: number) => {\n const src = decode(buffer, offset);\n return new PublicKey(src);\n };\n\n publicKeyLayout.encode = (publicKey: PublicKey, buffer: Buffer, offset: number) => {\n const src = publicKey.toBuffer();\n return encode(src, buffer, offset);\n };\n\n return publicKeyLayout;\n};\n","import { PublicKey } from '@solana/web3.js';\n\n/** Address of the SPL Token program */\nexport const TOKEN_PROGRAM_ID = new PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA');\n\n/** Address of the SPL Associated Token Account program */\nexport const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey('ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL');\n\n/** Address of the special mint for wrapped native SOL */\nexport const NATIVE_MINT = new PublicKey('So11111111111111111111111111111111111111112');\n","/** Base class for errors */\nexport abstract class TokenError extends Error {\n constructor(message?: string) {\n super(message);\n }\n}\n\n/** Thrown if an account is not found at the expected address */\nexport class TokenAccountNotFoundError extends TokenError {\n name = 'TokenAccountNotFoundError';\n}\n\n/** Thrown if a program state account is not owned by the expected token program */\nexport class TokenInvalidAccountOwnerError extends TokenError {\n name = 'TokenInvalidAccountOwnerError';\n}\n\n/** Thrown if the byte length of an program state account doesn't match the expected size */\nexport class TokenInvalidAccountSizeError extends TokenError {\n name = 'TokenInvalidAccountSizeError';\n}\n\n/** Thrown if the mint of a token account doesn't match the expected mint */\nexport class TokenInvalidMintError extends TokenError {\n name = 'TokenInvalidMintError';\n}\n\n/** Thrown if the owner of a token account doesn't match the expected owner */\nexport class TokenInvalidOwnerError extends TokenError {\n name = 'TokenInvalidOwnerError';\n}\n\n/** Thrown if the owner of a token account is a PDA (Program Derived Address) */\nexport class TokenOwnerOffCurveError extends TokenError {\n name = 'TokenOwnerOffCurveError';\n}\n\n/** Thrown if an instruction's program is invalid */\nexport class TokenInvalidInstructionProgramError extends TokenError {\n name = 'TokenInvalidInstructionProgramError';\n}\n\n/** Thrown if an instruction's keys are invalid */\nexport class TokenInvalidInstructionKeysError extends TokenError {\n name = 'TokenInvalidInstructionKeysError';\n}\n\n/** Thrown if an instruction's data is invalid */\nexport class TokenInvalidInstructionDataError extends TokenError {\n name = 'TokenInvalidInstructionDataError';\n}\n\n/** Thrown if an instruction's type is invalid */\nexport class TokenInvalidInstructionTypeError extends TokenError {\n name = 'TokenInvalidInstructionTypeError';\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport { AccountMeta, PublicKey, SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors';\nimport { TokenInstruction } from './types';\n\n/** TODO: docs */\nexport interface InitializeMintInstructionData {\n instruction: TokenInstruction.InitializeMint;\n decimals: number;\n mintAuthority: PublicKey;\n freezeAuthorityOption: 1 | 0;\n freezeAuthority: PublicKey;\n}\n\n/** TODO: docs */\nexport const initializeMintInstructionData = struct([\n u8('instruction'),\n u8('decimals'),\n publicKey('mintAuthority'),\n u8('freezeAuthorityOption'),\n publicKey('freezeAuthority'),\n]);\n\n/**\n * Construct an InitializeMint instruction\n *\n * @param mint Token mint account\n * @param decimals Number of decimals in token account amounts\n * @param mintAuthority Minting authority\n * @param freezeAuthority Optional authority that can freeze token accounts\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeMintInstruction(\n mint: PublicKey,\n decimals: number,\n mintAuthority: PublicKey,\n freezeAuthority: PublicKey | null,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n\n const data = Buffer.alloc(initializeMintInstructionData.span);\n initializeMintInstructionData.encode(\n {\n instruction: TokenInstruction.InitializeMint,\n decimals,\n mintAuthority,\n freezeAuthorityOption: freezeAuthority ? 1 : 0,\n freezeAuthority: freezeAuthority || new PublicKey(0),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeMint instruction */\nexport interface DecodedInitializeMintInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n rent: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.InitializeMint;\n decimals: number;\n mintAuthority: PublicKey;\n freezeAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode an InitializeMint instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeMintInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedInitializeMintInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeMintInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint, rent },\n data,\n } = decodeInitializeMintInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeMint) throw new TokenInvalidInstructionTypeError();\n if (!mint || !rent) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n mint,\n rent,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeMint instruction */\nexport interface DecodedInitializeMintInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n rent: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n decimals: number;\n mintAuthority: PublicKey;\n freezeAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode an InitializeMint instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeMintInstructionUnchecked({\n programId,\n keys: [mint, rent],\n data,\n}: TransactionInstruction): DecodedInitializeMintInstructionUnchecked {\n const { instruction, decimals, mintAuthority, freezeAuthorityOption, freezeAuthority } =\n initializeMintInstructionData.decode(data);\n\n return {\n programId,\n keys: {\n mint,\n rent,\n },\n data: {\n instruction,\n decimals,\n mintAuthority,\n freezeAuthority: freezeAuthorityOption ? freezeAuthority : null,\n },\n };\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { AccountMeta, PublicKey, SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors';\nimport { TokenInstruction } from './types';\n\n/** TODO: docs */\nexport interface InitializeAccountInstructionData {\n instruction: TokenInstruction.InitializeAccount;\n}\n\n/** TODO: docs */\nexport const initializeAccountInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct an InitializeAccount instruction\n *\n * @param account New token account\n * @param mint Mint account\n * @param owner Owner of the new account\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeAccountInstruction(\n account: PublicKey,\n mint: PublicKey,\n owner: PublicKey,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: owner, isSigner: false, isWritable: false },\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n\n const data = Buffer.alloc(initializeAccountInstructionData.span);\n initializeAccountInstructionData.encode({ instruction: TokenInstruction.InitializeAccount }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeAccount instruction */\nexport interface DecodedInitializeAccountInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n owner: AccountMeta;\n rent: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.InitializeAccount;\n };\n}\n\n/**\n * Decode an InitializeAccount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeAccountInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedInitializeAccountInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeAccountInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, owner, rent },\n data,\n } = decodeInitializeAccountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeAccount) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !owner || !rent) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n rent,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeAccount instruction */\nexport interface DecodedInitializeAccountInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n rent: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode an InitializeAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeAccountInstructionUnchecked({\n programId,\n keys: [account, mint, owner, rent],\n data,\n}: TransactionInstruction): DecodedInitializeAccountInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n rent,\n },\n data: initializeAccountInstructionData.decode(data),\n };\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { AccountMeta, PublicKey, SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors';\nimport { TokenInstruction } from './types';\n\n/** TODO: docs */\nexport interface InitializeMultisigInstructionData {\n instruction: TokenInstruction.InitializeMultisig;\n m: number;\n}\n\n/** TODO: docs */\nexport const initializeMultisigInstructionData = struct([\n u8('instruction'),\n u8('m'),\n]);\n\n/**\n * Construct an InitializeMultisig instruction\n *\n * @param account Multisig account\n * @param signers Full set of signers\n * @param m Number of required signatures\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeMultisigInstruction(\n account: PublicKey,\n signers: PublicKey[],\n m: number,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n for (const signer of signers) {\n keys.push({ pubkey: signer, isSigner: false, isWritable: false });\n }\n\n const data = Buffer.alloc(initializeMultisigInstructionData.span);\n initializeMultisigInstructionData.encode(\n {\n instruction: TokenInstruction.InitializeMultisig,\n m,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeMultisig instruction */\nexport interface DecodedInitializeMultisigInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n rent: AccountMeta;\n signers: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.InitializeMultisig;\n m: number;\n };\n}\n\n/**\n * Decode an InitializeMultisig instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeMultisigInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedInitializeMultisigInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeMultisigInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, rent, signers },\n data,\n } = decodeInitializeMultisigInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeMultisig) throw new TokenInvalidInstructionTypeError();\n if (!account || !rent || !signers.length) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n rent,\n signers,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeMultisig instruction */\nexport interface DecodedInitializeMultisigInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n rent: AccountMeta | undefined;\n signers: AccountMeta[];\n };\n data: {\n instruction: number;\n m: number;\n };\n}\n\n/**\n * Decode an InitializeMultisig instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeMultisigInstructionUnchecked({\n programId,\n keys: [account, rent, ...signers],\n data,\n}: TransactionInstruction): DecodedInitializeMultisigInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n rent,\n signers,\n },\n data: initializeMultisigInstructionData.decode(data),\n };\n}\n","import { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\n\n/** @internal */\nexport function addSigners(keys: AccountMeta[], ownerOrAuthority: PublicKey, multiSigners: Signer[]): AccountMeta[] {\n if (multiSigners.length) {\n keys.push({ pubkey: ownerOrAuthority, isSigner: false, isWritable: false });\n for (const signer of multiSigners) {\n keys.push({ pubkey: signer.publicKey, isSigner: true, isWritable: false });\n }\n } else {\n keys.push({ pubkey: ownerOrAuthority, isSigner: true, isWritable: false });\n }\n return keys;\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport { AccountMeta, PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors';\nimport { addSigners } from './internal';\nimport { TokenInstruction } from './types';\n\n/** TODO: docs */\nexport interface TransferInstructionData {\n instruction: TokenInstruction.Transfer;\n amount: bigint;\n}\n\n/** TODO: docs */\nexport const transferInstructionData = struct([u8('instruction'), u64('amount')]);\n\n/**\n * Construct a Transfer instruction\n *\n * @param source Source account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param amount Number of tokens to transfer\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createTransferInstruction(\n source: PublicKey,\n destination: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(transferInstructionData.span);\n transferInstructionData.encode(\n {\n instruction: TokenInstruction.Transfer,\n amount: BigInt(amount),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid Transfer instruction */\nexport interface DecodedTransferInstruction {\n programId: PublicKey;\n keys: {\n source: AccountMeta;\n destination: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.Transfer;\n amount: bigint;\n };\n}\n\n/**\n * Decode a Transfer instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeTransferInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedTransferInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== transferInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { source, destination, owner, multiSigners },\n data,\n } = decodeTransferInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.Transfer) throw new TokenInvalidInstructionTypeError();\n if (!source || !destination || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n source,\n destination,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated Transfer instruction */\nexport interface DecodedTransferInstructionUnchecked {\n programId: PublicKey;\n keys: {\n source: AccountMeta | undefined;\n destination: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n };\n}\n\n/**\n * Decode a Transfer instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeTransferInstructionUnchecked({\n programId,\n keys: [source, destination, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedTransferInstructionUnchecked {\n return {\n programId,\n keys: {\n source,\n destination,\n owner,\n multiSigners,\n },\n data: transferInstructionData.decode(data),\n };\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport { AccountMeta, PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors';\nimport { addSigners } from './internal';\nimport { TokenInstruction } from './types';\n\n/** TODO: docs */\nexport interface ApproveInstructionData {\n instruction: TokenInstruction.Approve;\n amount: bigint;\n}\n\n/** TODO: docs */\nexport const approveInstructionData = struct([u8('instruction'), u64('amount')]);\n\n/**\n * Construct an Approve instruction\n *\n * @param account Account to set the delegate for\n * @param delegate Account authorized to transfer tokens from the account\n * @param owner Owner of the account\n * @param amount Maximum number of tokens the delegate may transfer\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createApproveInstruction(\n account: PublicKey,\n delegate: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: delegate, isSigner: false, isWritable: false },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(approveInstructionData.span);\n approveInstructionData.encode(\n {\n instruction: TokenInstruction.Approve,\n amount: BigInt(amount),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid Approve instruction */\nexport interface DecodedApproveInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n delegate: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.Approve;\n amount: bigint;\n };\n}\n\n/**\n * Decode an Approve instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeApproveInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedApproveInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== approveInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, delegate, owner, multiSigners },\n data,\n } = decodeApproveInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.Approve) throw new TokenInvalidInstructionTypeError();\n if (!account || !delegate || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n delegate,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated Approve instruction */\nexport interface DecodedApproveInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n delegate: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n };\n}\n\n/**\n * Decode an Approve instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeApproveInstructionUnchecked({\n programId,\n keys: [account, delegate, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedApproveInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n delegate,\n owner,\n multiSigners,\n },\n data: approveInstructionData.decode(data),\n };\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { AccountMeta, PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors';\nimport { addSigners } from './internal';\nimport { TokenInstruction } from './types';\n\n/** TODO: docs */\nexport interface RevokeInstructionData {\n instruction: TokenInstruction.Revoke;\n}\n\n/** TODO: docs */\nexport const revokeInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct a Revoke instruction\n *\n * @param account Address of the token account\n * @param owner Owner of the account\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createRevokeInstruction(\n account: PublicKey,\n owner: PublicKey,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners([{ pubkey: account, isSigner: false, isWritable: true }], owner, multiSigners);\n\n const data = Buffer.alloc(revokeInstructionData.span);\n revokeInstructionData.encode({ instruction: TokenInstruction.Revoke }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid Revoke instruction */\nexport interface DecodedRevokeInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.Revoke;\n };\n}\n\n/**\n * Decode a Revoke instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeRevokeInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedRevokeInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== revokeInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, owner, multiSigners },\n data,\n } = decodeRevokeInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.Revoke) throw new TokenInvalidInstructionTypeError();\n if (!account || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated Revoke instruction */\nexport interface DecodedRevokeInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode a Revoke instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeRevokeInstructionUnchecked({\n programId,\n keys: [account, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedRevokeInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n owner,\n multiSigners,\n },\n data: revokeInstructionData.decode(data),\n };\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport { AccountMeta, PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors';\nimport { addSigners } from './internal';\nimport { TokenInstruction } from './types';\n\n/** Authority types defined by the program */\nexport enum AuthorityType {\n MintTokens = 0,\n FreezeAccount = 1,\n AccountOwner = 2,\n CloseAccount = 3,\n}\n\n/** TODO: docs */\nexport interface SetAuthorityInstructionData {\n instruction: TokenInstruction.SetAuthority;\n authorityType: AuthorityType;\n newAuthorityOption: 1 | 0;\n newAuthority: PublicKey;\n}\n\n/** TODO: docs */\nexport const setAuthorityInstructionData = struct([\n u8('instruction'),\n u8('authorityType'),\n u8('newAuthorityOption'),\n publicKey('newAuthority'),\n]);\n\n/**\n * Construct a SetAuthority instruction\n *\n * @param account Address of the token account\n * @param currentAuthority Current authority of the specified type\n * @param authorityType Type of authority to set\n * @param newAuthority New authority of the account\n * @param multiSigners Signing accounts if `currentAuthority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createSetAuthorityInstruction(\n account: PublicKey,\n currentAuthority: PublicKey,\n authorityType: AuthorityType,\n newAuthority: PublicKey | null,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners([{ pubkey: account, isSigner: false, isWritable: true }], currentAuthority, multiSigners);\n\n const data = Buffer.alloc(setAuthorityInstructionData.span);\n setAuthorityInstructionData.encode(\n {\n instruction: TokenInstruction.SetAuthority,\n authorityType,\n newAuthorityOption: newAuthority ? 1 : 0,\n newAuthority: newAuthority || new PublicKey(0),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid SetAuthority instruction */\nexport interface DecodedSetAuthorityInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n currentAuthority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.SetAuthority;\n authorityType: AuthorityType;\n newAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode a SetAuthority instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeSetAuthorityInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedSetAuthorityInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== setAuthorityInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, currentAuthority, multiSigners },\n data,\n } = decodeSetAuthorityInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.SetAuthority) throw new TokenInvalidInstructionTypeError();\n if (!account || !currentAuthority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n currentAuthority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated SetAuthority instruction */\nexport interface DecodedSetAuthorityInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n currentAuthority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n authorityType: AuthorityType;\n newAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode a SetAuthority instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeSetAuthorityInstructionUnchecked({\n programId,\n keys: [account, currentAuthority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedSetAuthorityInstructionUnchecked {\n const { instruction, authorityType, newAuthorityOption, newAuthority } = setAuthorityInstructionData.decode(data);\n\n return {\n programId,\n keys: {\n account,\n currentAuthority,\n multiSigners,\n },\n data: {\n instruction,\n authorityType,\n newAuthority: newAuthorityOption ? newAuthority : null,\n },\n };\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport { AccountMeta, PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors';\nimport { addSigners } from './internal';\nimport { TokenInstruction } from './types';\n\n/** TODO: docs */\nexport interface MintToInstructionData {\n instruction: TokenInstruction.MintTo;\n amount: bigint;\n}\n\n/** TODO: docs */\nexport const mintToInstructionData = struct([u8('instruction'), u64('amount')]);\n\n/**\n * Construct a MintTo instruction\n *\n * @param mint Public key of the mint\n * @param destination Address of the token account to mint to\n * @param authority The mint authority\n * @param amount Amount to mint\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createMintToInstruction(\n mint: PublicKey,\n destination: PublicKey,\n authority: PublicKey,\n amount: number | bigint,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n authority,\n multiSigners\n );\n\n const data = Buffer.alloc(mintToInstructionData.span);\n mintToInstructionData.encode(\n {\n instruction: TokenInstruction.MintTo,\n amount: BigInt(amount),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid MintTo instruction */\nexport interface DecodedMintToInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.MintTo;\n amount: bigint;\n };\n}\n\n/**\n * Decode a MintTo instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeMintToInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedMintToInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== mintToInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint, destination, authority, multiSigners },\n data,\n } = decodeMintToInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.MintTo) throw new TokenInvalidInstructionTypeError();\n if (!mint || !destination || !authority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated MintTo instruction */\nexport interface DecodedMintToInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n destination: AccountMeta | undefined;\n authority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n };\n}\n\n/**\n * Decode a MintTo instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeMintToInstructionUnchecked({\n programId,\n keys: [mint, destination, authority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedMintToInstructionUnchecked {\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n multiSigners,\n },\n data: mintToInstructionData.decode(data),\n };\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport { AccountMeta, PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors';\nimport { addSigners } from './internal';\nimport { TokenInstruction } from './types';\n\n/** TODO: docs */\nexport interface BurnInstructionData {\n instruction: TokenInstruction.Burn;\n amount: bigint;\n}\n\n/** TODO: docs */\nexport const burnInstructionData = struct([u8('instruction'), u64('amount')]);\n\n/**\n * Construct a Burn instruction\n *\n * @param account Account to burn tokens from\n * @param mint Mint for the account\n * @param owner Owner of the account\n * @param amount Number of tokens to burn\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createBurnInstruction(\n account: PublicKey,\n mint: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: true },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(burnInstructionData.span);\n burnInstructionData.encode(\n {\n instruction: TokenInstruction.Burn,\n amount: BigInt(amount),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid Burn instruction */\nexport interface DecodedBurnInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.Burn;\n amount: bigint;\n };\n}\n\n/**\n * Decode a Burn instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeBurnInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedBurnInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== burnInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, owner, multiSigners },\n data,\n } = decodeBurnInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.Burn) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated Burn instruction */\nexport interface DecodedBurnInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n };\n}\n\n/**\n * Decode a Burn instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeBurnInstructionUnchecked({\n programId,\n keys: [account, mint, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedBurnInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n multiSigners,\n },\n data: burnInstructionData.decode(data),\n };\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { AccountMeta, PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors';\nimport { addSigners } from './internal';\nimport { TokenInstruction } from './types';\n\n/** TODO: docs */\nexport interface CloseAccountInstructionData {\n instruction: TokenInstruction.CloseAccount;\n}\n\n/** TODO: docs */\nexport const closeAccountInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct a CloseAccount instruction\n *\n * @param account Account to close\n * @param destination Account to receive the remaining balance of the closed account\n * @param authority Account close authority\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createCloseAccountInstruction(\n account: PublicKey,\n destination: PublicKey,\n authority: PublicKey,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n authority,\n multiSigners\n );\n\n const data = Buffer.alloc(closeAccountInstructionData.span);\n closeAccountInstructionData.encode({ instruction: TokenInstruction.CloseAccount }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid CloseAccount instruction */\nexport interface DecodedCloseAccountInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.CloseAccount;\n };\n}\n\n/**\n * Decode a CloseAccount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeCloseAccountInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedCloseAccountInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== closeAccountInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, destination, authority, multiSigners },\n data,\n } = decodeCloseAccountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.CloseAccount) throw new TokenInvalidInstructionTypeError();\n if (!account || !destination || !authority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n destination,\n authority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated CloseAccount instruction */\nexport interface DecodedCloseAccountInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n destination: AccountMeta | undefined;\n authority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode a CloseAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeCloseAccountInstructionUnchecked({\n programId,\n keys: [account, destination, authority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedCloseAccountInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n destination,\n authority,\n multiSigners,\n },\n data: closeAccountInstructionData.decode(data),\n };\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { AccountMeta, PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors';\nimport { addSigners } from './internal';\nimport { TokenInstruction } from './types';\n\n/** TODO: docs */\nexport interface FreezeAccountInstructionData {\n instruction: TokenInstruction.FreezeAccount;\n}\n\n/** TODO: docs */\nexport const freezeAccountInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct a FreezeAccount instruction\n *\n * @param account Account to freeze\n * @param mint Mint account\n * @param authority Mint freeze authority\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createFreezeAccountInstruction(\n account: PublicKey,\n mint: PublicKey,\n authority: PublicKey,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n ],\n authority,\n multiSigners\n );\n\n const data = Buffer.alloc(freezeAccountInstructionData.span);\n freezeAccountInstructionData.encode({ instruction: TokenInstruction.FreezeAccount }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid FreezeAccount instruction */\nexport interface DecodedFreezeAccountInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n authority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.FreezeAccount;\n };\n}\n\n/**\n * Decode a FreezeAccount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeFreezeAccountInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedFreezeAccountInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== freezeAccountInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, authority, multiSigners },\n data,\n } = decodeFreezeAccountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.FreezeAccount) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !authority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n authority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated FreezeAccount instruction */\nexport interface DecodedFreezeAccountInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n authority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode a FreezeAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeFreezeAccountInstructionUnchecked({\n programId,\n keys: [account, mint, authority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedFreezeAccountInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n authority,\n multiSigners,\n },\n data: freezeAccountInstructionData.decode(data),\n };\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { AccountMeta, PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors';\nimport { addSigners } from './internal';\nimport { TokenInstruction } from './types';\n\n/** TODO: docs */\nexport interface ThawAccountInstructionData {\n instruction: TokenInstruction.ThawAccount;\n}\n\n/** TODO: docs */\nexport const thawAccountInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct a ThawAccount instruction\n *\n * @param account Account to thaw\n * @param mint Mint account\n * @param authority Mint freeze authority\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createThawAccountInstruction(\n account: PublicKey,\n mint: PublicKey,\n authority: PublicKey,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n ],\n authority,\n multiSigners\n );\n\n const data = Buffer.alloc(thawAccountInstructionData.span);\n thawAccountInstructionData.encode({ instruction: TokenInstruction.ThawAccount }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid ThawAccount instruction */\nexport interface DecodedThawAccountInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n authority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.ThawAccount;\n };\n}\n\n/**\n * Decode a ThawAccount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeThawAccountInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedThawAccountInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== thawAccountInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, authority, multiSigners },\n data,\n } = decodeThawAccountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.ThawAccount) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !authority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n authority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated ThawAccount instruction */\nexport interface DecodedThawAccountInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n authority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode a ThawAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeThawAccountInstructionUnchecked({\n programId,\n keys: [account, mint, authority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedThawAccountInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n authority,\n multiSigners,\n },\n data: thawAccountInstructionData.decode(data),\n };\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport { AccountMeta, PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors';\nimport { addSigners } from './internal';\nimport { TokenInstruction } from './types';\n\n/** TODO: docs */\nexport interface TransferCheckedInstructionData {\n instruction: TokenInstruction.TransferChecked;\n amount: bigint;\n decimals: number;\n}\n\n/** TODO: docs */\nexport const transferCheckedInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n u8('decimals'),\n]);\n\n/**\n * Construct a TransferChecked instruction\n *\n * @param source Source account\n * @param mint Mint account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param amount Number of tokens to transfer\n * @param decimals Number of decimals in transfer amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createTransferCheckedInstruction(\n source: PublicKey,\n mint: PublicKey,\n destination: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(transferCheckedInstructionData.span);\n transferCheckedInstructionData.encode(\n {\n instruction: TokenInstruction.TransferChecked,\n amount: BigInt(amount),\n decimals,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid TransferChecked instruction */\nexport interface DecodedTransferCheckedInstruction {\n programId: PublicKey;\n keys: {\n source: AccountMeta;\n mint: AccountMeta;\n destination: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.TransferChecked;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a TransferChecked instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeTransferCheckedInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedTransferCheckedInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== transferCheckedInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { source, mint, destination, owner, multiSigners },\n data,\n } = decodeTransferCheckedInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.TransferChecked) throw new TokenInvalidInstructionTypeError();\n if (!source || !mint || !destination || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n source,\n mint,\n destination,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated TransferChecked instruction */\nexport interface DecodedTransferCheckedInstructionUnchecked {\n programId: PublicKey;\n keys: {\n source: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n destination: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a TransferChecked instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeTransferCheckedInstructionUnchecked({\n programId,\n keys: [source, mint, destination, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedTransferCheckedInstructionUnchecked {\n return {\n programId,\n keys: {\n source,\n mint,\n destination,\n owner,\n multiSigners,\n },\n data: transferCheckedInstructionData.decode(data),\n };\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport { AccountMeta, PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors';\nimport { addSigners } from './internal';\nimport { TokenInstruction } from './types';\n\n/** TODO: docs */\nexport interface ApproveCheckedInstructionData {\n instruction: TokenInstruction.ApproveChecked;\n amount: bigint;\n decimals: number;\n}\n\n/** TODO: docs */\nexport const approveCheckedInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n u8('decimals'),\n]);\n\n/**\n * Construct an ApproveChecked instruction\n *\n * @param account Account to set the delegate for\n * @param mint Mint account\n * @param delegate Account authorized to transfer of tokens from the account\n * @param owner Owner of the account\n * @param amount Maximum number of tokens the delegate may transfer\n * @param decimals Number of decimals in approve amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createApproveCheckedInstruction(\n account: PublicKey,\n mint: PublicKey,\n delegate: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: delegate, isSigner: false, isWritable: false },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(approveCheckedInstructionData.span);\n approveCheckedInstructionData.encode(\n {\n instruction: TokenInstruction.ApproveChecked,\n amount: BigInt(amount),\n decimals,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid ApproveChecked instruction */\nexport interface DecodedApproveCheckedInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n delegate: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.ApproveChecked;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode an ApproveChecked instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeApproveCheckedInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedApproveCheckedInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== approveCheckedInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, delegate, owner, multiSigners },\n data,\n } = decodeApproveCheckedInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.ApproveChecked) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !delegate || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n delegate,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated ApproveChecked instruction */\nexport interface DecodedApproveCheckedInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n delegate: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode an ApproveChecked instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeApproveCheckedInstructionUnchecked({\n programId,\n keys: [account, mint, delegate, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedApproveCheckedInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n delegate,\n owner,\n multiSigners,\n },\n data: approveCheckedInstructionData.decode(data),\n };\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport { AccountMeta, PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors';\nimport { addSigners } from './internal';\nimport { TokenInstruction } from './types';\n\n/** TODO: docs */\nexport interface MintToCheckedInstructionData {\n instruction: TokenInstruction.MintToChecked;\n amount: bigint;\n decimals: number;\n}\n\n/** TODO: docs */\nexport const mintToCheckedInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n u8('decimals'),\n]);\n\n/**\n * Construct a MintToChecked instruction\n *\n * @param mint Public key of the mint\n * @param destination Address of the token account to mint to\n * @param authority The mint authority\n * @param amount Amount to mint\n * @param decimals Number of decimals in amount to mint\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createMintToCheckedInstruction(\n mint: PublicKey,\n destination: PublicKey,\n authority: PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n authority,\n multiSigners\n );\n\n const data = Buffer.alloc(mintToCheckedInstructionData.span);\n mintToCheckedInstructionData.encode(\n {\n instruction: TokenInstruction.MintToChecked,\n amount: BigInt(amount),\n decimals,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid MintToChecked instruction */\nexport interface DecodedMintToCheckedInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.MintToChecked;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a MintToChecked instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeMintToCheckedInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedMintToCheckedInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== mintToCheckedInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint, destination, authority, multiSigners },\n data,\n } = decodeMintToCheckedInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.MintToChecked) throw new TokenInvalidInstructionTypeError();\n if (!mint || !destination || !authority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated MintToChecked instruction */\nexport interface DecodedMintToCheckedInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n destination: AccountMeta | undefined;\n authority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a MintToChecked instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeMintToCheckedInstructionUnchecked({\n programId,\n keys: [mint, destination, authority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedMintToCheckedInstructionUnchecked {\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n multiSigners,\n },\n data: mintToCheckedInstructionData.decode(data),\n };\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport { AccountMeta, PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors';\nimport { addSigners } from './internal';\nimport { TokenInstruction } from './types';\n\n/** TODO: docs */\nexport interface BurnCheckedInstructionData {\n instruction: TokenInstruction.BurnChecked;\n amount: bigint;\n decimals: number;\n}\n\n/** TODO: docs */\nexport const burnCheckedInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n u8('decimals'),\n]);\n\n/**\n * Construct a BurnChecked instruction\n *\n * @param mint Mint for the account\n * @param account Account to burn tokens from\n * @param owner Owner of the account\n * @param amount Number of tokens to burn\n * @param decimals Number of decimals in burn amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createBurnCheckedInstruction(\n account: PublicKey,\n mint: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: true },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(burnCheckedInstructionData.span);\n burnCheckedInstructionData.encode(\n {\n instruction: TokenInstruction.BurnChecked,\n amount: BigInt(amount),\n decimals,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid BurnChecked instruction */\nexport interface DecodedBurnCheckedInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.BurnChecked;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a BurnChecked instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeBurnCheckedInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedBurnCheckedInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== burnCheckedInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, owner, multiSigners },\n data,\n } = decodeBurnCheckedInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.BurnChecked) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated BurnChecked instruction */\nexport interface DecodedBurnCheckedInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a BurnChecked instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeBurnCheckedInstructionUnchecked({\n programId,\n keys: [account, mint, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedBurnCheckedInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n multiSigners,\n },\n data: burnCheckedInstructionData.decode(data),\n };\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { AccountMeta, PublicKey, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors';\nimport { TokenInstruction } from './types';\n\n/** TODO: docs */\nexport interface SyncNativeInstructionData {\n instruction: TokenInstruction.SyncNative;\n}\n\n/** TODO: docs */\nexport const syncNativeInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct a SyncNative instruction\n *\n * @param account Native account to sync lamports from\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createSyncNativeInstruction(account: PublicKey, programId = TOKEN_PROGRAM_ID): TransactionInstruction {\n const keys = [{ pubkey: account, isSigner: false, isWritable: true }];\n\n const data = Buffer.alloc(syncNativeInstructionData.span);\n syncNativeInstructionData.encode({ instruction: TokenInstruction.SyncNative }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid SyncNative instruction */\nexport interface DecodedSyncNativeInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.SyncNative;\n };\n}\n\n/**\n * Decode a SyncNative instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeSyncNativeInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedSyncNativeInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== syncNativeInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account },\n data,\n } = decodeSyncNativeInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.SyncNative) throw new TokenInvalidInstructionTypeError();\n if (!account) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n },\n data,\n };\n}\n\n/** A decoded, non-validated SyncNative instruction */\nexport interface DecodedSyncNativeInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode a SyncNative instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeSyncNativeInstructionUnchecked({\n programId,\n keys: [account],\n data,\n}: TransactionInstruction): DecodedSyncNativeInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n },\n data: syncNativeInstructionData.decode(data),\n };\n}\n","import { struct, u32, u8 } from '@solana/buffer-layout';\nimport { publicKey, u64 } from '@solana/buffer-layout-utils';\nimport { Commitment, Connection, PublicKey } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport { TokenAccountNotFoundError, TokenInvalidAccountOwnerError, TokenInvalidAccountSizeError } from '../errors';\n\n/** Information about a token account */\nexport interface Account {\n /** Address of the account */\n address: PublicKey;\n /** Mint associated with the account */\n mint: PublicKey;\n /** Owner of the account */\n owner: PublicKey;\n /** Number of tokens the account holds */\n amount: bigint;\n /** Authority that can transfer tokens from the account */\n delegate: PublicKey | null;\n /** Number of tokens the delegate is authorized to transfer */\n delegatedAmount: bigint;\n /** True if the account is initialized */\n isInitialized: boolean;\n /** True if the account is frozen */\n isFrozen: boolean;\n /** True if the account is a native token account */\n isNative: boolean;\n /**\n * If the account is a native token account, it must be rent-exempt. The rent-exempt reserve is the amount that must\n * remain in the balance until the account is closed.\n */\n rentExemptReserve: bigint | null;\n /** Optional authority to close the account */\n closeAuthority: PublicKey | null;\n}\n\n/** Token account state as stored by the program */\nexport enum AccountState {\n Uninitialized = 0,\n Initialized = 1,\n Frozen = 2,\n}\n\n/** Token account as stored by the program */\nexport interface RawAccount {\n mint: PublicKey;\n owner: PublicKey;\n amount: bigint;\n delegateOption: 1 | 0;\n delegate: PublicKey;\n state: AccountState;\n isNativeOption: 1 | 0;\n isNative: bigint;\n delegatedAmount: bigint;\n closeAuthorityOption: 1 | 0;\n closeAuthority: PublicKey;\n}\n\n/** Buffer layout for de/serializing a token account */\nexport const AccountLayout = struct([\n publicKey('mint'),\n publicKey('owner'),\n u64('amount'),\n u32('delegateOption'),\n publicKey('delegate'),\n u8('state'),\n u32('isNativeOption'),\n u64('isNative'),\n u64('delegatedAmount'),\n u32('closeAuthorityOption'),\n publicKey('closeAuthority'),\n]);\n\n/** Byte length of a token account */\nexport const ACCOUNT_SIZE = AccountLayout.span;\n\n/**\n * Retrieve information about a token account\n *\n * @param connection Connection to use\n * @param address Token account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Token account information\n */\nexport async function getAccount(\n connection: Connection,\n address: PublicKey,\n commitment?: Commitment,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const info = await connection.getAccountInfo(address, commitment);\n if (!info) throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId)) throw new TokenInvalidAccountOwnerError();\n if (info.data.length != ACCOUNT_SIZE) throw new TokenInvalidAccountSizeError();\n\n const rawAccount = AccountLayout.decode(info.data);\n\n return {\n address,\n mint: rawAccount.mint,\n owner: rawAccount.owner,\n amount: rawAccount.amount,\n delegate: rawAccount.delegateOption ? rawAccount.delegate : null,\n delegatedAmount: rawAccount.delegatedAmount,\n isInitialized: rawAccount.state !== AccountState.Uninitialized,\n isFrozen: rawAccount.state === AccountState.Frozen,\n isNative: !!rawAccount.isNativeOption,\n rentExemptReserve: rawAccount.isNativeOption ? rawAccount.isNative : null,\n closeAuthority: rawAccount.closeAuthorityOption ? rawAccount.closeAuthority : null,\n };\n}\n\n/** Get the minimum lamport balance for a token account to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptAccount(\n connection: Connection,\n commitment?: Commitment\n): Promise {\n return await connection.getMinimumBalanceForRentExemption(ACCOUNT_SIZE, commitment);\n}\n","import { PublicKey, SystemProgram, SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants';\n\n/**\n * Construct an AssociatedTokenAccount instruction\n *\n * @param payer Payer of the initialization fees\n * @param associatedToken New associated token account\n * @param owner Owner of the new account\n * @param mint Token mint account\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createAssociatedTokenAccountInstruction(\n payer: PublicKey,\n associatedToken: PublicKey,\n owner: PublicKey,\n mint: PublicKey,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: associatedToken, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: false, isWritable: false },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: programId, isSigner: false, isWritable: false },\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n\n return new TransactionInstruction({\n keys,\n programId: associatedTokenProgramId,\n data: Buffer.alloc(0),\n });\n}\n","import { struct, u32, u8 } from '@solana/buffer-layout';\nimport { bool, publicKey, u64 } from '@solana/buffer-layout-utils';\nimport { Commitment, Connection, PublicKey } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenAccountNotFoundError,\n TokenInvalidAccountOwnerError,\n TokenInvalidAccountSizeError,\n TokenOwnerOffCurveError,\n} from '../errors';\n\n/** Information about a mint */\nexport interface Mint {\n /** Address of the mint */\n address: PublicKey;\n /**\n * Optional authority used to mint new tokens. The mint authority may only be provided during mint creation.\n * If no mint authority is present then the mint has a fixed supply and no further tokens may be minted.\n */\n mintAuthority: PublicKey | null;\n /** Total supply of tokens */\n supply: bigint;\n /** Number of base 10 digits to the right of the decimal place */\n decimals: number;\n /** Is this mint initialized */\n isInitialized: boolean;\n /** Optional authority to freeze token accounts */\n freezeAuthority: PublicKey | null;\n}\n\n/** Mint as stored by the program */\nexport interface RawMint {\n mintAuthorityOption: 1 | 0;\n mintAuthority: PublicKey;\n supply: bigint;\n decimals: number;\n isInitialized: boolean;\n freezeAuthorityOption: 1 | 0;\n freezeAuthority: PublicKey;\n}\n\n/** Buffer layout for de/serializing a mint */\nexport const MintLayout = struct([\n u32('mintAuthorityOption'),\n publicKey('mintAuthority'),\n u64('supply'),\n u8('decimals'),\n bool('isInitialized'),\n u32('freezeAuthorityOption'),\n publicKey('freezeAuthority'),\n]);\n\n/** Byte length of a mint */\nexport const MINT_SIZE = MintLayout.span;\n\n/**\n * Retrieve information about a mint\n *\n * @param connection Connection to use\n * @param address Mint account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Mint information\n */\nexport async function getMint(\n connection: Connection,\n address: PublicKey,\n commitment?: Commitment,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const info = await connection.getAccountInfo(address, commitment);\n if (!info) throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId)) throw new TokenInvalidAccountOwnerError();\n if (info.data.length != MINT_SIZE) throw new TokenInvalidAccountSizeError();\n\n const rawMint = MintLayout.decode(info.data);\n\n return {\n address,\n mintAuthority: rawMint.mintAuthorityOption ? rawMint.mintAuthority : null,\n supply: rawMint.supply,\n decimals: rawMint.decimals,\n isInitialized: rawMint.isInitialized,\n freezeAuthority: rawMint.freezeAuthorityOption ? rawMint.freezeAuthority : null,\n };\n}\n\n/** Get the minimum lamport balance for a mint to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptMint(\n connection: Connection,\n commitment?: Commitment\n): Promise {\n return await connection.getMinimumBalanceForRentExemption(MINT_SIZE, commitment);\n}\n\n/**\n * Get the address of the associated token account for a given mint and owner\n *\n * @param mint Token mint account\n * @param owner Owner of the new account\n * @param allowOwnerOffCurve Allow the owner account to be a PDA (Program Derived Address)\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Address of the associated token account\n */\nexport async function getAssociatedTokenAddress(\n mint: PublicKey,\n owner: PublicKey,\n allowOwnerOffCurve = false,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): Promise {\n if (!allowOwnerOffCurve && !PublicKey.isOnCurve(owner.toBuffer())) throw new TokenOwnerOffCurveError();\n\n const [address] = await PublicKey.findProgramAddress(\n [owner.toBuffer(), programId.toBuffer(), mint.toBuffer()],\n associatedTokenProgramId\n );\n\n return address;\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { bool, publicKey } from '@solana/buffer-layout-utils';\nimport { Commitment, Connection, PublicKey } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants';\nimport { TokenAccountNotFoundError, TokenInvalidAccountOwnerError, TokenInvalidAccountSizeError } from '../errors';\n\n/** Information about a multisig */\nexport interface Multisig {\n /** Address of the multisig */\n address: PublicKey;\n /** Number of signers required */\n m: number;\n /** Number of possible signers, corresponds to the number of `signers` that are valid */\n n: number;\n /** Is this mint initialized */\n isInitialized: boolean;\n /** Full set of signers, of which `n` are valid */\n signer1: PublicKey;\n signer2: PublicKey;\n signer3: PublicKey;\n signer4: PublicKey;\n signer5: PublicKey;\n signer6: PublicKey;\n signer7: PublicKey;\n signer8: PublicKey;\n signer9: PublicKey;\n signer10: PublicKey;\n signer11: PublicKey;\n}\n\n/** Multisig as stored by the program */\nexport type RawMultisig = Omit;\n\n/** Buffer layout for de/serializing a multisig */\nexport const MultisigLayout = struct([\n u8('m'),\n u8('n'),\n bool('isInitialized'),\n publicKey('signer1'),\n publicKey('signer2'),\n publicKey('signer3'),\n publicKey('signer4'),\n publicKey('signer5'),\n publicKey('signer6'),\n publicKey('signer7'),\n publicKey('signer8'),\n publicKey('signer9'),\n publicKey('signer10'),\n publicKey('signer11'),\n]);\n\n/** Byte length of a multisig */\nexport const MULTISIG_SIZE = MultisigLayout.span;\n\n/**\n * Retrieve information about a multisig\n *\n * @param connection Connection to use\n * @param address Multisig account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Multisig information\n */\nexport async function getMultisig(\n connection: Connection,\n address: PublicKey,\n commitment?: Commitment,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const info = await connection.getAccountInfo(address, commitment);\n if (!info) throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId)) throw new TokenInvalidAccountOwnerError();\n if (info.data.length != MULTISIG_SIZE) throw new TokenInvalidAccountSizeError();\n\n return { address, ...MultisigLayout.decode(info.data) };\n}\n\n/** Get the minimum lamport balance for a multisig to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptMultisig(\n connection: Connection,\n commitment?: Commitment\n): Promise {\n return await connection.getMinimumBalanceForRentExemption(MULTISIG_SIZE, commitment);\n}\n","import {\n Commitment,\n ConfirmOptions,\n Connection,\n PublicKey,\n sendAndConfirmTransaction,\n Signer,\n Transaction,\n} from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants';\nimport {\n TokenAccountNotFoundError,\n TokenInvalidAccountOwnerError,\n TokenInvalidMintError,\n TokenInvalidOwnerError,\n} from '../errors';\nimport { createAssociatedTokenAccountInstruction } from '../instructions/index';\nimport { Account, getAccount, getAssociatedTokenAddress } from '../state/index';\n\n/**\n * Retrieve the associated token account, or create it if it doesn't exist\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param mint Mint associated with the account to set or verify\n * @param owner Owner of the account to set or verify\n * @param allowOwnerOffCurve Allow the owner account to be a PDA (Program Derived Address)\n * @param commitment Desired level of commitment for querying the state\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Address of the new associated token account\n */\nexport async function getOrCreateAssociatedTokenAccount(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n owner: PublicKey,\n allowOwnerOffCurve = false,\n commitment?: Commitment,\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): Promise {\n const associatedToken = await getAssociatedTokenAddress(\n mint,\n owner,\n allowOwnerOffCurve,\n programId,\n associatedTokenProgramId\n );\n\n // This is the optimal logic, considering TX fee, client-side computation, RPC roundtrips and guaranteed idempotent.\n // Sadly we can't do this atomically.\n let account: Account;\n try {\n account = await getAccount(connection, associatedToken, commitment, programId);\n } catch (error: unknown) {\n // TokenAccountNotFoundError can be possible if the associated address has already received some lamports,\n // becoming a system account. Assuming program derived addressing is safe, this is the only case for the\n // TokenInvalidAccountOwnerError in this code path.\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n // As this isn't atomic, it's possible others can create associated accounts meanwhile.\n try {\n const transaction = new Transaction().add(\n createAssociatedTokenAccountInstruction(\n payer.publicKey,\n associatedToken,\n owner,\n mint,\n programId,\n associatedTokenProgramId\n )\n );\n\n await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n } catch (error: unknown) {\n // Ignore all errors; for now there is no API-compatible way to selectively ignore the expected\n // instruction error if the associated account exists already.\n }\n\n // Now this should always succeed\n account = await getAccount(connection, associatedToken, commitment, programId);\n } else {\n throw error;\n }\n }\n\n if (!account.mint.equals(mint)) throw new TokenInvalidMintError();\n if (!account.owner.equals(owner)) throw new TokenInvalidOwnerError();\n\n return account;\n}\n","import { EVM_CHAIN_IDS } from './constants';\n\nexport const isEVMNetwork = (network) => Object.keys(EVM_CHAIN_IDS).includes(network);\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"import { AbiType, StateMutabilityType } from \"web3-utils\";\n\nexport interface INodePub {\n X: string;\n Y: string;\n}\n\nexport interface INodeDetails {\n currentEpoch: string;\n nodeListAddress: string;\n torusNodeEndpoints: string[];\n torusNodePub: INodePub[];\n torusIndexes: number[];\n updated: boolean;\n}\n\nexport const ETHEREUM_NETWORK = {\n ROPSTEN: \"ropsten\",\n MAINNET: \"mainnet\",\n POLYGON: \"polygon-mainnet\",\n} as const;\n\nexport type ETHEREUM_NETWORK_TYPE = typeof ETHEREUM_NETWORK[keyof typeof ETHEREUM_NETWORK];\n\nexport type NodeDetailManagerParams = { network?: ETHEREUM_NETWORK_TYPE | string; proxyAddress?: string };\n\nexport const abi = [\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"_verifier\",\n type: \"string\",\n },\n {\n internalType: \"bytes32\",\n name: \"hashedVerifierId\",\n type: \"bytes32\",\n },\n ],\n name: \"getNodeSet\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"currentEpoch\",\n type: \"uint256\",\n },\n {\n internalType: \"string[]\",\n name: \"torusNodeEndpoints\",\n type: \"string[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"torusNodePubX\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"torusNodePubY\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"torusIndexes\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\" as StateMutabilityType,\n type: \"function\" as AbiType,\n },\n];\n","import Web3EthContract from \"web3-eth-contract\";\nimport { keccak256, toHex } from \"web3-utils\";\n\nimport { abi, ETHEREUM_NETWORK, ETHEREUM_NETWORK_TYPE, INodeDetails, INodePub, NodeDetailManagerParams } from \"./interfaces\";\n\nclass NodeDetailManager {\n _currentEpoch = \"19\";\n\n _torusNodeEndpoints = [\n \"https://torus-19.torusnode.com/jrpc\",\n \"https://torus-node.ens.domains/jrpc\",\n \"https://torus-node.matic.network/jrpc\",\n \"https://torus.zilliqa.network/jrpc\",\n \"https://torus-mainnet.cosmos.network/jrpc\",\n \"https://torus2.etherscan.com/jrpc\",\n \"https://torus-node-v2.skalelabs.com/jrpc\",\n \"https://torus-node.binancex.dev/jrpc\",\n \"https://torusnode.ont.io/jrpc\",\n ];\n\n _torusNodePub: INodePub[] = [\n {\n X: \"bbe83c64177c3775550e6ba6ac2bc059f6847d644c9e4894e42c60d7974d8c2b\",\n Y: \"82b49a7caf70def38cdad2740af45c1e4f969650105c5019a29bb18b21a9acb5\",\n },\n {\n X: \"c208cac4ef9a47d386097a9c915b28e9cb89213abee8d26a17198ee261201b0d\",\n Y: \"c7db2fe4631109f40833de9dc78d07e35706549ee48fa557b33e4e75e1047873\",\n },\n {\n X: \"ca1766bb426d4ca5582818a0c5439d560ea64f5baa060793ab29dd3d0ceacfe\",\n Y: \"d46c1d08c40e1306e1bca328c2287b8268166b11a1ba4b8442ea2ad0c5e32152\",\n },\n {\n X: \"c3934dd2f6f4b3d2e1e398cc501e143c1e1a381b52feb6d1525af34d16253768\",\n Y: \"71f5141a5035799099f5ea3e241e66946bc55dc857ac3bd7d6fcdb8dcd3eeeef\",\n },\n {\n X: \"22e66f1929631d00bf026227581597f085fd94fd952fc0dca9f0833398b5c064\",\n Y: \"6088b3912e10a1e9d50355a609c10db7d188f16a2e2fd7357e51bf4f6a74f0a1\",\n },\n {\n X: \"9dc9fa410f3ce9eb70df70cdea00a49f2c4cc7a31c08c0dab5f863ed35ff5139\",\n Y: \"627a291cb87a75c61da3f65d6818e1e05e360217179817ed27e8c73bca7ec122\",\n },\n {\n X: \"118b9fc07e97b096d899b9f6658463ce6a8caa64038e37fc969df4e6023dd8c6\",\n Y: \"baf9fa4e51770f4796ea165dd03a769b8606681a38954a0a92c4cbffd6609ce9\",\n },\n {\n X: \"8a6d8b925da15a273dec3d8f8395ec35cd6878f274b2b180e4e106999db64043\",\n Y: \"96f67f870c157743da0b1eb84d89bf30500d74dc84c11f501ee1cb013acc8c46\",\n },\n {\n X: \"39cecb62e863729f572f7dfc46c24867981bf04bb405fed0df39e33984bfade5\",\n Y: \"61c2364434012e68a2be2e9952805037e52629d7762fafc8e10e9fb5bad8f790\",\n },\n ];\n\n _torusIndexes = [1, 2, 3, 4, 5, 6, 7, 8, 9];\n\n _network: ETHEREUM_NETWORK_TYPE | string = ETHEREUM_NETWORK.MAINNET;\n\n nodeListAddress: string;\n\n updated: boolean;\n\n nodeListContract: Web3EthContract.Contract;\n\n constructor({ network = ETHEREUM_NETWORK.MAINNET, proxyAddress = \"0xf20336e16B5182637f09821c27BDe29b0AFcfe80\" }: NodeDetailManagerParams = {}) {\n let url: string;\n try {\n const localUrl = new URL(network);\n url = localUrl.href;\n } catch (_) {\n const projectId = process.env.INFURA_PROJECT_ID;\n url = `https://${network}.infura.io/v3/${projectId}`;\n }\n Web3EthContract.setProvider(url);\n this.nodeListContract = new Web3EthContract(abi, proxyAddress);\n this.nodeListAddress = proxyAddress;\n this.updated = false;\n this._network = network;\n }\n\n get _nodeDetails(): INodeDetails {\n return {\n currentEpoch: this._currentEpoch,\n nodeListAddress: this.nodeListAddress,\n torusNodeEndpoints: this._torusNodeEndpoints,\n torusNodePub: this._torusNodePub,\n torusIndexes: this._torusIndexes,\n updated: this.updated,\n };\n }\n\n async getNodeDetails({ skip = false, verifier, verifierId }: { skip?: boolean; verifier: string; verifierId: string }): Promise {\n try {\n if (skip && this._network === ETHEREUM_NETWORK.MAINNET) return this._nodeDetails;\n // Do this only for mainnet where the list is static irrespective of verifier, verifierId\n if (this.updated && this._network === ETHEREUM_NETWORK.MAINNET) return this._nodeDetails;\n const hashedVerifierId = keccak256(verifierId);\n const nodeDetails = await this.nodeListContract.methods.getNodeSet(verifier, hashedVerifierId).call();\n const { currentEpoch, torusNodeEndpoints, torusNodePubX, torusNodePubY, torusIndexes } = nodeDetails;\n this._currentEpoch = currentEpoch;\n this._torusIndexes = torusIndexes.map((x: string) => Number(x));\n const updatedEndpoints: string[] = [];\n const updatedNodePub: INodePub[] = [];\n for (let index = 0; index < torusNodeEndpoints.length; index += 1) {\n const endPointElement = torusNodeEndpoints[index];\n const pubKx = torusNodePubX[index];\n const pubKy = torusNodePubY[index];\n const endpoint = `https://${endPointElement.split(\":\")[0]}/jrpc`;\n updatedEndpoints.push(endpoint);\n updatedNodePub.push({ X: toHex(pubKx).replace(\"0x\", \"\"), Y: toHex(pubKy).replace(\"0x\", \"\") });\n }\n this._torusNodeEndpoints = updatedEndpoints;\n this._torusNodePub = updatedNodePub;\n this.updated = true;\n return this._nodeDetails;\n } catch (error) {\n if (this._network === ETHEREUM_NETWORK.MAINNET) {\n return this._nodeDetails;\n }\n throw error;\n }\n }\n}\n\nexport default NodeDetailManager;\n","import loglevel from \"loglevel\";\n\nconst log = loglevel.getLogger(\"torus.js\");\nlog.disableAll();\n\nexport default log;\n","function capitalizeFirstLetter(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport class SomeError extends Error {\n errors: Error[];\n\n responses: T[];\n\n predicate: string;\n\n constructor({ errors, responses, predicate }: { errors: Error[]; responses: T[]; predicate: string }) {\n super(\"Unable to resolve enough promises.\");\n this.errors = errors;\n this.responses = responses;\n this.predicate = predicate;\n }\n}\n\nexport const Some = (promises: Promise[], predicate: (resultArr: K[], { resolved }: { resolved: boolean }) => Promise): Promise =>\n new Promise((resolve, reject) => {\n let finishedCount = 0;\n const sharedState = { resolved: false };\n const errorArr: Error[] = new Array(promises.length).fill(undefined);\n const resultArr: K[] = new Array(promises.length).fill(undefined);\n let predicateError: Error | string;\n return promises.forEach((x, index) => {\n return (\n x\n .then((resp: K) => {\n resultArr[index] = resp;\n return undefined;\n })\n .catch((error: Error) => {\n errorArr[index] = error;\n })\n // eslint-disable-next-line promise/no-return-in-finally\n .finally(() => {\n if (sharedState.resolved) return;\n return predicate(resultArr.slice(0), sharedState)\n .then((data) => {\n sharedState.resolved = true;\n resolve(data);\n return undefined;\n })\n .catch((error) => {\n // log only the last predicate error\n predicateError = error;\n })\n .finally(() => {\n finishedCount += 1;\n if (finishedCount === promises.length) {\n const errors = Object.values(\n resultArr.reduce((acc: Record, z) => {\n if (z) {\n const { id, error } = z as { id?: string; error?: { data?: string } };\n if (error?.data?.length > 0) {\n if (error.data.startsWith(\"Error occurred while verifying params\")) acc[id] = capitalizeFirstLetter(error.data);\n else acc[id] = error.data;\n }\n }\n return acc;\n }, {})\n );\n\n if (errors.length > 0) {\n // Format-able errors\n const msg = errors.length > 1 ? `\\n${errors.map((it) => `• ${it}`).join(\"\\n\")}` : errors[0];\n reject(new Error(msg));\n } else {\n reject(\n new SomeError({\n errors: errorArr,\n responses: resultArr,\n predicate: (predicateError as Error)?.message || (predicateError as string),\n })\n );\n }\n }\n });\n })\n );\n });\n });\n","import { generateJsonRPCObject, post } from \"@toruslabs/http-helpers\";\nimport JsonStringify from \"json-stable-stringify\";\nimport createKeccakHash from \"keccak\";\n\nimport { JRPCResponse, KeyAssignInput, KeyLookupResult, SignerResponse, VerifierLookupResponse } from \"./interfaces\";\nimport log from \"./loglevel\";\nimport { Some } from \"./some\";\n\nexport class GetOrSetNonceError extends Error {}\n\nexport const kCombinations = (s: number | number[], k: number): number[][] => {\n let set = s;\n if (typeof set === \"number\") {\n set = Array.from({ length: set }, (_, i) => i);\n }\n if (k > set.length || k <= 0) {\n return [];\n }\n\n if (k === set.length) {\n return [set];\n }\n\n if (k === 1) {\n return set.reduce((acc, cur) => [...acc, [cur]], [] as number[][]);\n }\n\n const combs: number[][] = [];\n let tailCombs: number[][] = [];\n\n for (let i = 0; i <= set.length - k + 1; i += 1) {\n tailCombs = kCombinations(set.slice(i + 1), k - 1);\n for (let j = 0; j < tailCombs.length; j += 1) {\n combs.push([set[i], ...tailCombs[j]]);\n }\n }\n\n return combs;\n};\n\nexport const thresholdSame = (arr: T[], t: number): T | undefined => {\n const hashMap: Record = {};\n for (let i = 0; i < arr.length; i += 1) {\n const str = JsonStringify(arr[i]);\n hashMap[str] = hashMap[str] ? hashMap[str] + 1 : 1;\n if (hashMap[str] === t) {\n return arr[i];\n }\n }\n return undefined;\n};\n\nexport const keyLookup = async (endpoints: string[], verifier: string, verifierId: string): Promise => {\n const lookupPromises = endpoints.map((x) =>\n post>(\n x,\n generateJsonRPCObject(\"VerifierLookupRequest\", {\n verifier,\n verifier_id: verifierId.toString(),\n })\n ).catch((err) => log.error(\"lookup request failed\", err))\n );\n return Some, KeyLookupResult>(lookupPromises, (lookupResults) => {\n const lookupShares = lookupResults.filter((x1) => x1);\n const errorResult = thresholdSame(\n lookupShares.map((x2) => x2 && x2.error),\n ~~(endpoints.length / 2) + 1\n );\n const keyResult = thresholdSame(\n lookupShares.map((x3) => x3 && x3.result),\n ~~(endpoints.length / 2) + 1\n );\n if (keyResult || errorResult) {\n return Promise.resolve({ keyResult, errorResult });\n }\n return Promise.reject(new Error(`invalid results ${JSON.stringify(lookupResults)}`));\n });\n};\n\nexport const waitKeyLookup = (endpoints: string[], verifier: string, verifierId: string, timeout: number): Promise =>\n new Promise((resolve, reject) => {\n setTimeout(() => {\n keyLookup(endpoints, verifier, verifierId).then(resolve).catch(reject);\n }, timeout);\n });\n\nexport const keyAssign = async ({\n endpoints,\n torusNodePubs,\n lastPoint,\n firstPoint,\n verifier,\n verifierId,\n signerHost,\n network,\n}: KeyAssignInput): Promise => {\n let nodeNum: number;\n let initialPoint: number | undefined;\n if (lastPoint === undefined) {\n nodeNum = Math.floor(Math.random() * endpoints.length);\n initialPoint = nodeNum;\n } else {\n nodeNum = lastPoint % endpoints.length;\n }\n if (nodeNum === firstPoint) throw new Error(\"Looped through all\");\n if (firstPoint !== undefined) initialPoint = firstPoint;\n\n const data = generateJsonRPCObject(\"KeyAssign\", {\n verifier,\n verifier_id: verifierId.toString(),\n });\n try {\n const signedData = await post(\n signerHost,\n data,\n {\n headers: {\n pubKeyX: torusNodePubs[nodeNum].X,\n pubKeyY: torusNodePubs[nodeNum].Y,\n network,\n },\n },\n { useAPIKey: true }\n );\n return await post(\n endpoints[nodeNum],\n { ...data, ...signedData },\n {\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n }\n );\n } catch (error) {\n log.error(error);\n const acceptedErrorMsgs = [\n // Slow node\n \"Timed out\",\n // Happens when the node is not reachable (dns issue etc)\n \"TypeError: Failed to fetch\", // All except iOS and Firefox\n \"TypeError: cancelled\", // iOS\n \"TypeError: NetworkError when attempting to fetch resource.\", // Firefox\n ];\n if (acceptedErrorMsgs.includes(error.message))\n return keyAssign({ endpoints, torusNodePubs, lastPoint: nodeNum + 1, firstPoint: initialPoint, verifier, verifierId, signerHost, network });\n throw new Error(\n `Sorry, the Torus Network that powers Web3Auth is currently very busy.\n We will generate your key in time. Pls try again later. \\n\n ${error.message || \"\"}`\n );\n }\n};\n\nexport function keccak256(a: string | Buffer): string {\n const hash = createKeccakHash(\"keccak256\").update(a).digest().toString(\"hex\");\n return `0x${hash}`;\n}\n","import { decrypt, generatePrivate, getPublic } from \"@toruslabs/eccrypto\";\nimport type { INodePub } from \"@toruslabs/fetch-node-details\";\nimport { Data, generateJsonRPCObject, get, post, setAPIKey, setEmbedHost } from \"@toruslabs/http-helpers\";\nimport BN from \"bn.js\";\nimport { curve, ec as EC } from \"elliptic\";\nimport stringify from \"json-stable-stringify\";\nimport { toChecksumAddress } from \"web3-utils\";\n\nimport {\n CommitmentRequestResult,\n GetOrSetNonceResult,\n JRPCResponse,\n MetadataParams,\n RetrieveSharesResponse,\n SetCustomKeyOptions,\n ShareRequestResult,\n TorusCtorOptions,\n V1UserTypeAndAddress,\n V2UserTypeAndAddress,\n VerifierLookupResponse,\n VerifierParams,\n} from \"./interfaces\";\nimport log from \"./loglevel\";\nimport { Some } from \"./some\";\nimport { GetOrSetNonceError, kCombinations, keccak256, keyAssign, keyLookup, thresholdSame, waitKeyLookup } from \"./utils\";\n\n// Implement threshold logic wrappers around public APIs\n// of Torus nodes to handle malicious node responses\nclass Torus {\n public metadataHost: string;\n\n public allowHost: string;\n\n public serverTimeOffset: number;\n\n public enableOneKey: boolean;\n\n public signerHost: string;\n\n public network: string;\n\n protected ec: EC;\n\n constructor({\n enableOneKey = false,\n metadataHost = \"https://metadata.tor.us\",\n allowHost = \"https://signer.tor.us/api/allow\",\n signerHost = \"https://signer.tor.us/api/sign\",\n serverTimeOffset = 0,\n network = \"mainnet\",\n }: TorusCtorOptions = {}) {\n this.ec = new EC(\"secp256k1\");\n this.metadataHost = metadataHost;\n this.allowHost = allowHost;\n this.enableOneKey = enableOneKey;\n this.serverTimeOffset = serverTimeOffset || 0; // ms\n this.signerHost = signerHost;\n this.network = network;\n }\n\n static enableLogging(v = true): void {\n if (v) log.enableAll();\n else log.disableAll();\n }\n\n static setAPIKey(apiKey: string): void {\n setAPIKey(apiKey);\n }\n\n static setEmbedHost(embedHost: string): void {\n setEmbedHost(embedHost);\n }\n\n static isGetOrSetNonceError(err: unknown): boolean {\n return err instanceof GetOrSetNonceError;\n }\n\n /**\n * Note: use this function only for openlogin tkey account lookups.\n */\n async getUserTypeAndAddress(\n endpoints: string[],\n torusNodePubs: INodePub[],\n { verifier, verifierId }: { verifier: string; verifierId: string },\n doesKeyAssign = false\n ): Promise {\n const { keyResult, errorResult } = (await keyLookup(endpoints, verifier, verifierId)) || {};\n let isNewKey = false;\n let finalKeyResult: VerifierLookupResponse;\n if (errorResult && JSON.stringify(errorResult).includes(\"Verifier + VerifierID has not yet been assigned\")) {\n if (!doesKeyAssign) {\n throw new Error(\"Verifier + VerifierID has not yet been assigned\");\n }\n await keyAssign({\n endpoints,\n torusNodePubs,\n lastPoint: undefined,\n firstPoint: undefined,\n verifier,\n verifierId,\n signerHost: this.signerHost,\n network: this.network,\n });\n const assignResult = await waitKeyLookup(endpoints, verifier, verifierId, 1000);\n finalKeyResult = assignResult?.keyResult;\n isNewKey = true;\n } else if (keyResult) {\n finalKeyResult = keyResult;\n } else {\n throw new Error(`node results do not match at first lookup ${JSON.stringify(keyResult || {})}, ${JSON.stringify(errorResult || {})}`);\n }\n if (finalKeyResult) {\n const { pub_key_X: X, pub_key_Y: Y } = finalKeyResult.keys[0];\n let nonceResult: GetOrSetNonceResult;\n let nonce: BN;\n let modifiedPubKey: curve.base.BasePoint;\n\n try {\n nonceResult = await this.getOrSetNonce(X, Y, undefined, !isNewKey);\n nonce = new BN(nonceResult.nonce || \"0\", 16);\n } catch {\n throw new GetOrSetNonceError();\n }\n if (nonceResult.typeOfUser === \"v1\") {\n modifiedPubKey = this.ec\n .keyFromPublic({ x: X, y: Y })\n .getPublic()\n .add(this.ec.keyFromPrivate(nonce.toString(16)).getPublic());\n } else if (nonceResult.typeOfUser === \"v2\") {\n modifiedPubKey = this.ec\n .keyFromPublic({ x: X, y: Y })\n .getPublic()\n .add(this.ec.keyFromPublic({ x: nonceResult.pubNonce.x, y: nonceResult.pubNonce.y }).getPublic());\n } else {\n throw new Error(\"getOrSetNonce should always return typeOfUser.\");\n }\n const finalX = modifiedPubKey.getX().toString(16);\n const finalY = modifiedPubKey.getY().toString(16);\n const address = this.generateAddressFromPubKey(modifiedPubKey.getX(), modifiedPubKey.getY());\n if (nonceResult.typeOfUser === \"v1\") return { typeOfUser: nonceResult.typeOfUser, nonce, X: finalX, Y: finalY, address };\n else if (nonceResult.typeOfUser === \"v2\") {\n return {\n typeOfUser: nonceResult.typeOfUser,\n nonce,\n pubNonce: nonceResult.pubNonce,\n upgraded: nonceResult.upgraded,\n X: finalX,\n Y: finalY,\n address,\n };\n }\n }\n throw new Error(`node results do not match at final lookup ${JSON.stringify(keyResult || {})}, ${JSON.stringify(errorResult || {})}`);\n }\n\n async setCustomKey({ privKeyHex, metadataNonce, torusKeyHex, customKeyHex }: SetCustomKeyOptions): Promise {\n let torusKey: BN;\n if (torusKeyHex) {\n torusKey = new BN(torusKeyHex, 16);\n } else {\n const privKey = new BN(privKeyHex as string, 16);\n torusKey = privKey.sub(metadataNonce as BN).umod(this.ec.curve.n);\n }\n const customKey = new BN(customKeyHex, 16);\n const newMetadataNonce = customKey.sub(torusKey).umod(this.ec.curve.n);\n const data = this.generateMetadataParams(newMetadataNonce.toString(16), torusKey);\n await this.setMetadata(data);\n }\n\n async retrieveShares(\n endpoints: string[],\n indexes: number[],\n verifier: string,\n verifierParams: VerifierParams,\n idToken: string,\n extraParams: Record = {}\n ): Promise {\n const promiseArr = [];\n await get(\n this.allowHost,\n {\n headers: {\n verifier,\n verifier_id: verifierParams.verifier_id,\n network: this.network,\n },\n },\n { useAPIKey: true }\n );\n /*\n CommitmentRequestParams struct {\n MessagePrefix string `json:\"messageprefix\"`\n TokenCommitment string `json:\"tokencommitment\"`\n TempPubX string `json:\"temppubx\"`\n TempPubY string `json:\"temppuby\"`\n VerifierIdentifier string `json:\"verifieridentifier\"`\n } \n */\n\n // generate temporary private and public key that is used to secure receive shares\n const tmpKey = generatePrivate();\n const pubKey = getPublic(tmpKey).toString(\"hex\");\n const pubKeyX = pubKey.slice(2, 66);\n const pubKeyY = pubKey.slice(66);\n const tokenCommitment = keccak256(idToken);\n\n // make commitment requests to endpoints\n for (let i = 0; i < endpoints.length; i += 1) {\n const p = post>(\n endpoints[i],\n generateJsonRPCObject(\"CommitmentRequest\", {\n messageprefix: \"mug00\",\n tokencommitment: tokenCommitment.slice(2),\n temppubx: pubKeyX,\n temppuby: pubKeyY,\n verifieridentifier: verifier,\n })\n ).catch((err) => {\n log.error(\"commitment\", err);\n });\n promiseArr.push(p);\n }\n /*\n ShareRequestParams struct {\n Item []bijson.RawMessage `json:\"item\"`\n }\n ShareRequestItem struct {\n IDToken string `json:\"idtoken\"`\n NodeSignatures []NodeSignature `json:\"nodesignatures\"`\n VerifierIdentifier string `json:\"verifieridentifier\"`\n }\n NodeSignature struct {\n Signature string\n Data string\n NodePubKeyX string\n NodePubKeyY string\n }\n CommitmentRequestResult struct {\n Signature string `json:\"signature\"`\n Data string `json:\"data\"`\n NodePubX string `json:\"nodepubx\"`\n NodePubY string `json:\"nodepuby\"`\n }\n */\n // send share request once k + t number of commitment requests have completed\n return Some, (void | JRPCResponse)[]>(promiseArr, (resultArr) => {\n const completedRequests = resultArr.filter((x) => {\n if (!x || typeof x !== \"object\") {\n return false;\n }\n if (x.error) {\n return false;\n }\n return true;\n });\n if (completedRequests.length >= ~~(endpoints.length / 4) * 3 + 1) {\n return Promise.resolve(resultArr);\n }\n return Promise.reject(new Error(`invalid ${JSON.stringify(resultArr)}`));\n })\n .then((responses) => {\n const promiseArrRequest: Promise>[] = [];\n const nodeSigs = [];\n for (let i = 0; i < responses.length; i += 1) {\n if (responses[i]) nodeSigs.push((responses[i] as JRPCResponse).result);\n }\n for (let i = 0; i < endpoints.length; i += 1) {\n // eslint-disable-next-line promise/no-nesting\n const p = post>(\n endpoints[i],\n generateJsonRPCObject(\"ShareRequest\", {\n encrypted: \"yes\",\n item: [{ ...verifierParams, idtoken: idToken, nodesignatures: nodeSigs, verifieridentifier: verifier, ...extraParams }],\n })\n ).catch((err) => log.error(\"share req\", err));\n promiseArrRequest.push(p);\n }\n return Some, BN | undefined>(promiseArrRequest, async (shareResponses, sharedState) => {\n /*\n ShareRequestResult struct {\n Keys []KeyAssignment\n }\n / KeyAssignmentPublic -\n type KeyAssignmentPublic struct {\n Index big.Int\n PublicKey common.Point\n Threshold int\n Verifiers map[string][]string // Verifier => VerifierID\n }\n\n // KeyAssignment -\n type KeyAssignment struct {\n KeyAssignmentPublic\n Share big.Int // Or Si\n }\n */\n // check if threshold number of nodes have returned the same user public key\n const completedRequests = shareResponses.filter((x) => x);\n const thresholdPublicKey = thresholdSame(\n shareResponses.map((x) => x && x.result && x.result.keys[0].PublicKey),\n ~~(endpoints.length / 2) + 1\n );\n // optimistically run lagrange interpolation once threshold number of shares have been received\n // this is matched against the user public key to ensure that shares are consistent\n if (completedRequests.length >= ~~(endpoints.length / 2) + 1 && thresholdPublicKey) {\n const sharePromises: Promise[] = [];\n const nodeIndexes: BN[] = [];\n for (let i = 0; i < shareResponses.length; i += 1) {\n const currentShareResponse = shareResponses[i] as JRPCResponse;\n if (currentShareResponse?.result?.keys?.length > 0) {\n currentShareResponse.result.keys.sort((a, b) => new BN(a.Index, 16).cmp(new BN(b.Index, 16)));\n const firstKey = currentShareResponse.result.keys[0];\n if (firstKey.Metadata) {\n const metadata = {\n ephemPublicKey: Buffer.from(firstKey.Metadata.ephemPublicKey, \"hex\"),\n iv: Buffer.from(firstKey.Metadata.iv, \"hex\"),\n mac: Buffer.from(firstKey.Metadata.mac, \"hex\"),\n // mode: Buffer.from(firstKey.Metadata.mode, \"hex\"),\n };\n sharePromises.push(\n // eslint-disable-next-line promise/no-nesting\n decrypt(tmpKey, {\n ...metadata,\n ciphertext: Buffer.from(Buffer.from(firstKey.Share, \"base64\").toString(\"binary\").padStart(64, \"0\"), \"hex\"),\n }).catch((err) => log.debug(\"share decryption\", err))\n );\n } else {\n sharePromises.push(Promise.resolve(Buffer.from(firstKey.Share.padStart(64, \"0\"), \"hex\")));\n }\n } else {\n sharePromises.push(Promise.resolve(undefined));\n }\n nodeIndexes.push(new BN(indexes[i], 16));\n }\n const sharesResolved = await Promise.all(sharePromises);\n if (sharedState.resolved) return undefined;\n\n const decryptedShares = sharesResolved.reduce((acc, curr, index) => {\n if (curr) acc.push({ index: nodeIndexes[index], value: new BN(curr) });\n return acc;\n }, [] as { index: BN; value: BN }[]);\n // run lagrange interpolation on all subsets, faster in the optimistic scenario than berlekamp-welch due to early exit\n const allCombis = kCombinations(decryptedShares.length, ~~(endpoints.length / 2) + 1);\n let privateKey: BN | null = null;\n for (let j = 0; j < allCombis.length; j += 1) {\n const currentCombi = allCombis[j];\n const currentCombiShares = decryptedShares.filter((v, index) => currentCombi.includes(index));\n const shares = currentCombiShares.map((x) => x.value);\n const indices = currentCombiShares.map((x) => x.index);\n const derivedPrivateKey = this.lagrangeInterpolation(shares, indices);\n if (!derivedPrivateKey) continue;\n const decryptedPubKey = getPublic(Buffer.from(derivedPrivateKey.toString(16, 64), \"hex\")).toString(\"hex\");\n const decryptedPubKeyX = decryptedPubKey.slice(2, 66);\n const decryptedPubKeyY = decryptedPubKey.slice(66);\n if (\n new BN(decryptedPubKeyX, 16).cmp(new BN(thresholdPublicKey.X, 16)) === 0 &&\n new BN(decryptedPubKeyY, 16).cmp(new BN(thresholdPublicKey.Y, 16)) === 0\n ) {\n privateKey = derivedPrivateKey;\n break;\n }\n }\n if (privateKey === undefined || privateKey === null) {\n throw new Error(\"could not derive private key\");\n }\n return privateKey;\n }\n throw new Error(\"invalid\");\n });\n })\n .then(async (returnedKey) => {\n let privateKey = returnedKey;\n if (!privateKey) throw new Error(\"Invalid private key returned\");\n const decryptedPubKey = getPublic(Buffer.from(privateKey.toString(16, 64), \"hex\")).toString(\"hex\");\n const decryptedPubKeyX = decryptedPubKey.slice(2, 66);\n const decryptedPubKeyY = decryptedPubKey.slice(66);\n let metadataNonce: BN;\n if (this.enableOneKey) {\n const { nonce } = await this.getNonce(decryptedPubKeyX, decryptedPubKeyY, privateKey);\n metadataNonce = new BN(nonce || \"0\", 16);\n } else {\n metadataNonce = await this.getMetadata({ pub_key_X: decryptedPubKeyX, pub_key_Y: decryptedPubKeyY });\n }\n log.debug(\"> torus.js/retrieveShares\", { privKey: privateKey.toString(16), metadataNonce: metadataNonce.toString(16) });\n\n privateKey = privateKey.add(metadataNonce).umod(this.ec.curve.n);\n\n const ethAddress = this.generateAddressFromPrivKey(privateKey);\n log.debug(\"> torus.js/retrieveShares\", { ethAddress, privKey: privateKey.toString(16) });\n\n // return reconstructed private key and ethereum address\n return {\n ethAddress,\n privKey: privateKey.toString(\"hex\", 64),\n metadataNonce,\n };\n });\n }\n\n async getMetadata(data: Omit, options: RequestInit = {}): Promise {\n try {\n const metadataResponse = await post<{ message?: string }>(`${this.metadataHost}/get`, data, options, { useAPIKey: true });\n if (!metadataResponse || !metadataResponse.message) {\n return new BN(0);\n }\n return new BN(metadataResponse.message, 16); // nonce\n } catch (error) {\n log.error(\"get metadata error\", error);\n return new BN(0);\n }\n }\n\n generateMetadataParams(message: string, privateKey: BN): MetadataParams {\n const key = this.ec.keyFromPrivate(privateKey.toString(\"hex\", 64));\n const setData = {\n data: message,\n timestamp: new BN(~~(this.serverTimeOffset + Date.now() / 1000)).toString(16),\n };\n const sig = key.sign(keccak256(stringify(setData)).slice(2));\n return {\n pub_key_X: key.getPublic().getX().toString(\"hex\"),\n pub_key_Y: key.getPublic().getY().toString(\"hex\"),\n set_data: setData,\n signature: Buffer.from(sig.r.toString(16, 64) + sig.s.toString(16, 64) + new BN(\"\").toString(16, 2), \"hex\").toString(\"base64\"),\n };\n }\n\n async setMetadata(data: MetadataParams, options: RequestInit = {}): Promise {\n try {\n const metadataResponse = await post<{ message: string }>(`${this.metadataHost}/set`, data, options, { useAPIKey: true });\n return metadataResponse.message; // IPFS hash\n } catch (error) {\n log.error(\"set metadata error\", error);\n return \"\";\n }\n }\n\n lagrangeInterpolation(shares: BN[], nodeIndex: BN[]): BN | null {\n if (shares.length !== nodeIndex.length) {\n return null;\n }\n let secret = new BN(0);\n for (let i = 0; i < shares.length; i += 1) {\n let upper = new BN(1);\n let lower = new BN(1);\n for (let j = 0; j < shares.length; j += 1) {\n if (i !== j) {\n upper = upper.mul(nodeIndex[j].neg());\n upper = upper.umod(this.ec.curve.n);\n let temp = nodeIndex[i].sub(nodeIndex[j]);\n temp = temp.umod(this.ec.curve.n);\n lower = lower.mul(temp).umod(this.ec.curve.n);\n }\n }\n let delta = upper.mul(lower.invm(this.ec.curve.n)).umod(this.ec.curve.n);\n delta = delta.mul(shares[i]).umod(this.ec.curve.n);\n secret = secret.add(delta);\n }\n return secret.umod(this.ec.curve.n);\n }\n\n generateAddressFromPrivKey(privateKey: BN): string {\n const key = this.ec.keyFromPrivate(privateKey.toString(\"hex\", 64), \"hex\");\n const publicKey = key.getPublic().encode(\"hex\", false).slice(2);\n log.info(publicKey, \"public key\");\n const ethAddressLower = `0x${keccak256(Buffer.from(publicKey, \"hex\")).slice(64 - 38)}`;\n return toChecksumAddress(ethAddressLower);\n }\n\n generateAddressFromPubKey(publicKeyX: BN, publicKeyY: BN): string {\n const key = this.ec.keyFromPublic({ x: publicKeyX.toString(\"hex\", 64), y: publicKeyY.toString(\"hex\", 64) });\n const publicKey = key.getPublic().encode(\"hex\", false).slice(2);\n log.info(key.getPublic().encode(\"hex\", false), \"public key\");\n const ethAddressLower = `0x${keccak256(Buffer.from(publicKey, \"hex\")).slice(64 - 38)}`;\n return toChecksumAddress(ethAddressLower);\n }\n\n /**\n * Note: use this function only with custom auth, don't use to lookup openlogin accounts.\n */\n async getPublicAddress(\n endpoints: string[],\n torusNodePubs: INodePub[],\n { verifier, verifierId }: { verifier: string; verifierId: string },\n isExtended = false\n ) {\n log.debug(\"> torus.js/getPublicAddress\", { endpoints, torusNodePubs, verifier, verifierId, isExtended });\n\n let finalKeyResult: VerifierLookupResponse | undefined;\n let isNewKey = false;\n\n const { keyResult, errorResult } = (await keyLookup(endpoints, verifier, verifierId)) || {};\n if (errorResult && JSON.stringify(errorResult).includes(\"Verifier not supported\")) {\n // change error msg\n throw new Error(`Verifier not supported. Check if you: \\n\n 1. Are on the right network (Torus testnet/mainnet) \\n\n 2. Have setup a verifier on dashboard.web3auth.io?`);\n } else if (errorResult && JSON.stringify(errorResult).includes(\"Verifier + VerifierID has not yet been assigned\")) {\n await keyAssign({\n endpoints,\n torusNodePubs,\n lastPoint: undefined,\n firstPoint: undefined,\n verifier,\n verifierId,\n signerHost: this.signerHost,\n network: this.network,\n });\n const assignResult = await waitKeyLookup(endpoints, verifier, verifierId, 1000);\n finalKeyResult = assignResult?.keyResult;\n isNewKey = true;\n } else if (keyResult) {\n finalKeyResult = keyResult;\n } else {\n throw new Error(`node results do not match at first lookup ${JSON.stringify(keyResult || {})}, ${JSON.stringify(errorResult || {})}`);\n }\n log.debug(\"> torus.js/getPublicAddress\", { finalKeyResult, isNewKey });\n\n if (finalKeyResult) {\n let { pub_key_X: X, pub_key_Y: Y } = finalKeyResult.keys[0];\n let nonceResult: GetOrSetNonceResult;\n let nonce: BN;\n let modifiedPubKey: curve.base.BasePoint;\n let typeOfUser: GetOrSetNonceResult[\"typeOfUser\"];\n let pubNonce: { x: string; y: string } | undefined;\n if (this.enableOneKey) {\n try {\n nonceResult = await this.getOrSetNonce(X, Y, undefined, !isNewKey);\n nonce = new BN(nonceResult.nonce || \"0\", 16);\n typeOfUser = nonceResult.typeOfUser;\n } catch {\n throw new GetOrSetNonceError();\n }\n if (nonceResult.typeOfUser === \"v1\") {\n modifiedPubKey = this.ec\n .keyFromPublic({ x: X, y: Y })\n .getPublic()\n .add(this.ec.keyFromPrivate(nonce.toString(16)).getPublic());\n } else if (nonceResult.typeOfUser === \"v2\") {\n if (nonceResult.upgraded) {\n // OneKey is upgraded to 2/n, returned address is address of Torus key (postbox key), not tKey\n modifiedPubKey = this.ec.keyFromPublic({ x: X, y: Y }).getPublic();\n } else {\n modifiedPubKey = this.ec\n .keyFromPublic({ x: X, y: Y })\n .getPublic()\n .add(this.ec.keyFromPublic({ x: nonceResult.pubNonce.x, y: nonceResult.pubNonce.y }).getPublic());\n pubNonce = nonceResult.pubNonce;\n }\n } else {\n throw new Error(\"getOrSetNonce should always return typeOfUser.\");\n }\n } else {\n typeOfUser = \"v1\";\n nonce = await this.getMetadata({ pub_key_X: X, pub_key_Y: Y });\n modifiedPubKey = this.ec\n .keyFromPublic({ x: X, y: Y })\n .getPublic()\n .add(this.ec.keyFromPrivate(nonce.toString(16)).getPublic());\n }\n\n X = modifiedPubKey.getX().toString(16);\n Y = modifiedPubKey.getY().toString(16);\n\n const address = this.generateAddressFromPubKey(modifiedPubKey.getX(), modifiedPubKey.getY());\n log.debug(\"> torus.js/getPublicAddress\", { X, Y, address, typeOfUser, nonce: nonce?.toString(16), pubNonce });\n\n if (!isExtended) return address;\n return {\n typeOfUser,\n address,\n X,\n Y,\n metadataNonce: nonce,\n pubNonce,\n };\n }\n throw new Error(`node results do not match at final lookup ${JSON.stringify(keyResult || {})}, ${JSON.stringify(errorResult || {})}`);\n }\n\n /**\n * Internal functions for OneKey (OpenLogin v2), only call these functions if you know what you're doing\n */\n\n async getOrSetNonce(X: string, Y: string, privKey?: BN, getOnly = false): Promise {\n let data: Data;\n const msg = getOnly ? \"getNonce\" : \"getOrSetNonce\";\n if (privKey) {\n data = this.generateMetadataParams(msg, privKey);\n } else {\n data = {\n pub_key_X: X,\n pub_key_Y: Y,\n set_data: { data: msg },\n };\n }\n return post(`${this.metadataHost}/get_or_set_nonce`, data, undefined, { useAPIKey: true });\n }\n\n async getNonce(X: string, Y: string, privKey?: BN): Promise {\n return this.getOrSetNonce(X, Y, privKey, true);\n }\n\n getPostboxKeyFrom1OutOf1(privKey: string, nonce: string): string {\n const privKeyBN = new BN(privKey, 16);\n const nonceBN = new BN(nonce, 16);\n return privKeyBN.sub(nonceBN).umod(this.ec.curve.n).toString(\"hex\");\n }\n}\n\nexport default Torus;\n","import { JRPCId, JRPCMiddleware, JRPCRequest, JRPCVersion, SafeEventEmitter } from \"@toruslabs/openlogin-jrpc\";\nimport createHash from \"create-hash\";\nimport type { Duplex } from \"readable-stream\";\n\nexport const LOGIN_PROVIDER = {\n GOOGLE: \"google\",\n FACEBOOK: \"facebook\",\n TWITCH: \"twitch\",\n REDDIT: \"reddit\",\n DISCORD: \"discord\",\n} as const;\n\nexport const WALLET_VERIFIERS = {\n GOOGLE: \"google\",\n FACEBOOK: \"facebook\",\n TWITCH: \"twitch\",\n REDDIT: \"reddit\",\n DISCORD: \"discord\",\n EMAIL_PASSWORDLESS: \"torus-auth0-email-passwordless\",\n} as const;\n\nexport const WALLET_OPENLOGIN_VERIFIER_MAP = {\n [WALLET_VERIFIERS.GOOGLE]: \"tkey-google\",\n [WALLET_VERIFIERS.FACEBOOK]: \"tkey-facebook\",\n [WALLET_VERIFIERS.TWITCH]: \"tkey-twitch\",\n [WALLET_VERIFIERS.REDDIT]: \"tkey-reddit\",\n [WALLET_VERIFIERS.DISCORD]: \"tkey-discord\",\n [WALLET_VERIFIERS.EMAIL_PASSWORDLESS]: \"tkey-auth0-email-passwordless\",\n} as const;\nexport const PAYMENT_PROVIDER = {\n MOONPAY: \"moonpay\",\n WYRE: \"wyre\",\n RAMPNETWORK: \"rampnetwork\",\n XANPOOL: \"xanpool\",\n MERCURYO: \"mercuryo\",\n TRANSAK: \"transak\",\n} as const;\n\nexport const TORUS_BUILD_ENV = {\n PRODUCTION: \"production\",\n DEVELOPMENT: \"development\",\n BINANCE: \"binance\",\n TESTING: \"testing\",\n LRC: \"lrc\",\n BETA: \"beta\",\n} as const;\n\nexport type PAYMENT_PROVIDER_TYPE = typeof PAYMENT_PROVIDER[keyof typeof PAYMENT_PROVIDER];\n\nexport type TORUS_BUILD_ENV_TYPE = typeof TORUS_BUILD_ENV[keyof typeof TORUS_BUILD_ENV];\n\nexport interface IPaymentProvider {\n line1: string;\n line2: string;\n line3: string;\n supportPage: string;\n minOrderValue: number;\n maxOrderValue: number;\n validCurrencies: string[];\n validCryptoCurrencies: string[];\n includeFees: boolean;\n enforceMax: boolean;\n sell?: boolean;\n}\n\nexport interface IHashAlgorithmOptions {\n algorithms?: createHash.algorithm[];\n delimiter?: string;\n full?: boolean;\n}\n\nexport interface SRI {\n hashes: Record;\n integrity?: string;\n}\n\nexport const BUTTON_POSITION = {\n BOTTOM_LEFT: \"bottom-left\",\n TOP_LEFT: \"top-left\",\n BOTTOM_RIGHT: \"bottom-right\",\n TOP_RIGHT: \"top-right\",\n} as const;\n\nexport type EMBED_TRANSLATION_ITEM = {\n continue: string;\n actionRequired: string;\n pendingAction: string;\n cookiesRequired: string;\n enableCookies: string;\n clickHere: string;\n};\n\nexport type BUTTON_POSITION_TYPE = typeof BUTTON_POSITION[keyof typeof BUTTON_POSITION];\n\nexport type WALLET_PATH = \"transfer\" | \"topup\" | \"home\" | \"settings\" | \"history\" | \"discover\";\nexport type ETHEREUM_NETWORK_TYPE =\n | \"ropsten\"\n | \"rinkeby\"\n | \"kovan\"\n | \"mainnet\"\n | \"goerli\"\n | \"localhost\"\n | \"matic\"\n | \"mumbai\"\n | \"xdai\"\n | \"bsc_mainnet\"\n | \"bsc_testnet\";\n\nexport type LOGIN_TYPE =\n | \"google\"\n | \"facebook\"\n | \"reddit\"\n | \"discord\"\n | \"twitch\"\n | \"apple\"\n | \"github\"\n | \"linkedin\"\n | \"twitter\"\n | \"weibo\"\n | \"line\"\n | \"jwt\"\n | \"email_password\"\n | \"passwordless\";\n\nexport interface TorusCtorArgs {\n /**\n * Determines where the torus widget is visible on the page.\n * @defaultValue bottom-left\n */\n buttonPosition?: BUTTON_POSITION_TYPE;\n\n /**\n * Z-index of the modal and iframe\n * @defaultValue 99999\n */\n modalZIndex?: number;\n\n /**\n * Api key\n * Get yours today at {@link https://developer.tor.us | Dashboard}\n */\n apiKey?: string;\n}\n\nexport interface TorusLoginParams {\n verifier?: string;\n login_hint?: string;\n}\n\nexport interface NetworkInterface {\n /**\n * If any network other than the ones in enum, it should a JSON RPC URL\n */\n host: ETHEREUM_NETWORK_TYPE | string;\n /**\n * chainId for the network. If not provided, we query the host\n */\n chainId?: number;\n /**\n * Name of the network\n */\n networkName?: string;\n /**\n * Url of the block explorer\n */\n blockExplorer?: string;\n /**\n * Default currency ticker of the network (e.g: BNB)\n */\n ticker?: string;\n /**\n * Name for currency ticker (e.g: `Binance Coin`)\n */\n tickerName?: string;\n}\n\nexport interface BaseLoginOptions {\n /**\n * If you need to send custom parameters to the Authorization Server,\n * make sure to use the original parameter name.\n */\n [key: string]: unknown;\n /**\n * - `'page'`: displays the UI with a full page view\n * - `'popup'`: displays the UI with a popup window\n * - `'touch'`: displays the UI in a way that leverages a touch interface\n * - `'wap'`: displays the UI with a \"feature phone\" type interface\n */\n display?: \"page\" | \"popup\" | \"touch\" | \"wap\";\n /**\n * - `'none'`: do not prompt user for login or consent on reauthentication\n * - `'login'`: prompt user for reauthentication\n * - `'consent'`: prompt user for consent before processing request\n * - `'select_account'`: prompt user to select an account\n */\n prompt?: \"none\" | \"login\" | \"consent\" | \"select_account\";\n /**\n * Maximum allowable elasped time (in seconds) since authentication.\n * If the last time the user authenticated is greater than this value,\n * the user must be reauthenticated.\n */\n max_age?: string | number;\n /**\n * The space-separated list of language tags, ordered by preference.\n * For example: `'fr-CA fr en'`.\n */\n ui_locales?: string;\n /**\n * Previously issued ID Token.\n */\n id_token_hint?: string;\n /**\n * The user's email address or other identifier. When your app knows\n * which user is trying to authenticate, you can provide this parameter\n * to pre-fill the email box or select the right session for sign-in.\n *\n * This currently only affects the classic Lock experience.\n */\n login_hint?: string;\n acr_values?: string;\n /**\n * The default scope to be used on authentication requests.\n * The defaultScope defined in the Auth0Client is included\n * along with this scope\n */\n scope?: string;\n /**\n * The default audience to be used for requesting API access.\n */\n audience?: string;\n /**\n * The name of the connection configured for your application.\n * If null, it will redirect to the Auth0 Login Page and show\n * the Login Widget.\n */\n connection?: string;\n}\n\nexport interface JwtParameters extends BaseLoginOptions {\n /**\n * Your Auth0 account domain such as `'example.auth0.com'`,\n * `'example.eu.auth0.com'` or , `'example.mycompany.com'`\n * (when using [custom domains](https://auth0.com/docs/custom-domains))\n */\n domain: string;\n /**\n * The Client ID found on your Application settings page\n */\n client_id?: string;\n /**\n * The default URL where Auth0 will redirect your browser to with\n * the authentication result. It must be whitelisted in\n * the \"Allowed Callback URLs\" field in your Auth0 Application's\n * settings. If not provided here, it should be provided in the other\n * methods that provide authentication.\n */\n redirect_uri?: string;\n /**\n * The value in seconds used to account for clock skew in JWT expirations.\n * Typically, this value is no more than a minute or two at maximum.\n * Defaults to 60s.\n */\n leeway?: number;\n\n /**\n * The field in jwt token which maps to verifier id\n */\n verifierIdField?: string;\n\n /**\n * Whether the verifier id field is case sensitive\n * @defaultValue true\n */\n isVerifierIdCaseSensitive?: boolean;\n}\n\nexport interface LoginConfigItem {\n /**\n * Display Name. If not provided, we use the default for torus app\n */\n name: string;\n /**\n * The type of login. Refer to enum `LOGIN_TYPE`\n */\n typeOfLogin: LOGIN_TYPE;\n /**\n * Description for button. If provided, it renders as a full length button. else, icon button\n */\n description?: string;\n /**\n * Custom client_id. If not provided, we use the default for torus app\n */\n clientId?: string;\n /**\n * Logo to be shown on mouse hover. If not provided, we use the default for torus app\n */\n logoHover?: string;\n /**\n * Logo to be shown on dark background (dark theme). If not provided, we use the default for torus app\n */\n logoLight?: string;\n /**\n * Logo to be shown on light background (light theme). If not provided, we use the default for torus app\n */\n logoDark?: string;\n /**\n * Whether to show the login button on modal or not\n */\n showOnModal?: boolean;\n /**\n * Whether to show the login button on mobile\n */\n showOnMobile?: boolean;\n /**\n * Custom jwt parameters to configure the login. Useful for Auth0 configuration\n */\n jwtParameters?: JwtParameters;\n /**\n * Show login button on the main list\n */\n mainOption?: boolean;\n /**\n * Whether to show the login button on desktop\n */\n showOnDesktop?: boolean;\n /**\n * Modify the order of buttons. Should be greater than zero, where 1 is top priority.\n */\n priority?: number;\n}\n\nexport interface LoginConfig {\n /**\n * Use the verifier provided by torus as a key or a default verifier used by torus\n * {@link https://docs.tor.us/torus-wallet/developing-with-torus-wallet/oauth | Documentation}\n */\n [verifier: string]: LoginConfigItem;\n}\n\nexport interface TorusNodePub {\n /**\n * X component of a Public Key\n */\n X: string;\n /**\n * Y component of a Public Key\n */\n Y: string;\n}\n\nexport interface TorusPublicKey extends TorusNodePub {\n /**\n * Ethereum Public Address\n */\n address: string;\n}\n\nexport interface PaymentParams {\n /**\n * Address to send the funds to\n */\n selectedAddress?: string;\n /**\n * Default fiat currency for the user to make the payment in\n */\n selectedCurrency?: string;\n /**\n * Amount to buy in the selectedCurrency\n */\n fiatValue?: number;\n /**\n * Cryptocurrency to buy\n */\n selectedCryptoCurrency?: string;\n}\n\nexport interface VerifierArgs {\n /**\n * Verifier Enum\n */\n verifier: \"google\" | \"reddit\" | \"discord\";\n /**\n * email for google\n *\n * username for reddit\n *\n * id for discord\n */\n verifierId: string;\n /**\n * If true, returns {@link TorusPublicKey}, else returns string\n */\n isExtended?: boolean;\n}\n\nexport interface LoginParams {\n verifier?: string;\n login_hint?: string;\n}\n\nexport interface UserInfo {\n /**\n * Email of the logged in user\n */\n email: string;\n /**\n * Full name of the logged in user\n */\n name: string;\n /**\n * Profile image of the logged in user\n */\n profileImage: string;\n /**\n * verifier of the logged in user (google, facebook etc)\n */\n verifier: string;\n /**\n * Verifier Id of the logged in user\n *\n * email for google,\n * id for facebook,\n * username for reddit,\n * id for twitch,\n * id for discord\n */\n verifierId: string;\n /**\n * Returns if the logged in user is new\n */\n isNewUser: boolean;\n\n /**\n * login type of the logged in user (google, facebook etc)\n */\n typeOfLogin: LOGIN_TYPE;\n}\n\nexport interface LocaleLinks {\n /**\n * Item corresponding to english\n */\n en?: T;\n /**\n * Item corresponding to japanese\n */\n ja?: T;\n /**\n * Item corresponding to korean\n */\n ko?: T;\n /**\n * Item corresponding to german\n */\n de?: T;\n /**\n * Item corresponding to chinese (simplified)\n */\n zh?: T;\n /**\n * Item corresponding to spanish\n */\n es?: T;\n}\n\nexport interface ThemeParams {\n /**\n * If true, enables dark mode\n * Defaults to false\n * @defaultValue false\n */\n isDark: boolean;\n /**\n * Colors object to customize colors in torus theme.\n *\n * Contact us for whitelabel. Example provided in `examples/vue-app`\n */\n colors: Record;\n}\n\nexport interface IntegrityParams {\n /**\n * Whether to check for integrity.\n * Defaults to false\n * @defaultValue false\n */\n check: boolean;\n /**\n * if check is true, hash must be provided. The SRI sha-384 integrity hash\n * {@link https://www.srihash.org/ | SRI Hash}\n */\n hash?: string;\n /**\n * Version of torus-website to load\n */\n version?: string;\n}\n\nexport interface VerifierStatus {\n /**\n * Defaults to true\n * @defaultValue true\n */\n google?: boolean;\n /**\n * Defaults to true\n * @defaultValue true\n */\n facebook?: boolean;\n /**\n * Defaults to true\n * @defaultValue true\n */\n reddit?: boolean;\n /**\n * Defaults to true\n * @defaultValue true\n */\n twitch?: boolean;\n /**\n * Defaults to true\n * @defaultValue true\n */\n discord?: boolean;\n}\n\nexport interface WhiteLabelParams {\n /**\n * Whitelabel theme\n */\n theme: ThemeParams;\n /**\n * Language of whitelabel.\n *\n * order of preference: Whitelabel language \\> user language (in torus-website) \\> browser language\n */\n defaultLanguage?: string;\n /**\n * Logo Url to be used in light mode (dark logo)\n */\n logoDark: string;\n /**\n * Logo Url to be used in dark mode (light logo)\n */\n logoLight: string;\n /**\n * Shows/hides topup option in torus-website/widget.\n * Defaults to false\n * @defaultValue false\n */\n topupHide?: boolean;\n /**\n * Shows/hides billboard in torus-website.\n * Defaults to false\n * @defaultValue false\n */\n featuredBillboardHide?: boolean;\n /**\n * Shows/hides disclaimers on login page. Only works if special logins are hidden\n * Defaults to false\n * @defaultValue false\n */\n disclaimerHide?: boolean;\n /**\n * Language specific link for terms and conditions on torus-website. See (examples/vue-app) to configure\n */\n tncLink?: LocaleLinks;\n /**\n * Language specific link for privacy policy on torus-website. See (examples/vue-app) to configure\n */\n privacyPolicy?: LocaleLinks;\n /**\n * Language specific link for privacy policy on torus-website. See (examples/vue-app) to configure\n */\n contactLink?: LocaleLinks;\n /**\n * Custom translations. See (examples/vue-app) to configure\n */\n customTranslations?: LocaleLinks;\n}\n\nexport interface TorusParams {\n /**\n * Torus Network Object\n */\n network?: NetworkInterface;\n /**\n * Build Environment of Torus.\n *\n * production uses https://app.tor.us,\n *\n * development uses http://localhost:4050 (expects torus-website to be run locally),\n *\n * binance uses https://binance.tor.us,\n *\n * lrc uses https://lrc.tor.us,\n *\n * beta uses https://beta.tor.us, (currently supports tkey)\n *\n * testing uses https://testing.tor.us (latest internal build)\n * @defaultValue production\n */\n buildEnv?: TORUS_BUILD_ENV_TYPE;\n /**\n * Enables or disables logging.\n *\n * Defaults to false in prod and true in other environments\n */\n enableLogging?: boolean;\n /**\n * whether to show/hide torus widget.\n *\n * Defaults to true\n * @defaultValue true\n */\n showTorusButton?: boolean;\n /**\n * setting false, hides those verifiers from login modal\n * @deprecated\n * Please use loginConfig instead\n */\n enabledVerifiers?: VerifierStatus;\n /**\n * Array of login config items. Used to modify the default logins/ add new logins\n */\n loginConfig?: LoginConfig;\n /**\n * Params to enable integrity checks and load specific versions of torus-website\n */\n integrity?: IntegrityParams;\n /**\n * Params to enable whitelabelling of torus website and widget\n */\n whiteLabel?: WhiteLabelParams;\n /**\n * Skips TKey onboarding for new users\n *\n * Defaults to false\n * @defaultValue false\n */\n skipTKey?: boolean;\n /**\n * Prefers to use localStorage instead of sessionStorage for torus iframe. Allows longer lived sessions\n *\n * Defaults to false\n * @defaultValue false\n */\n useLocalStorage?: boolean;\n\n /**\n * Setting `useWalletConnect` to true allows to display wallet connect qr scanner from torus-embed.\n *\n * Defaults to false\n * @defaultValue false\n */\n useWalletConnect?: boolean;\n}\n\nexport interface UnvalidatedJsonRpcRequest {\n id?: JRPCId;\n jsonrpc?: JRPCVersion;\n method: string;\n params?: unknown;\n preopenInstanceId?: string;\n}\n\nexport interface ProviderOptions {\n /**\n * The name of the stream used to connect to the wallet.\n */\n jsonRpcStreamName?: string;\n\n /**\n * The maximum number of event listeners.\n */\n maxEventListeners?: number;\n /**\n * Whether the provider should send page metadata.\n */\n shouldSendMetadata?: boolean;\n}\n\nexport interface RequestArguments {\n /** The RPC method to request. */\n method: string;\n\n /** The params of the RPC method, if any. */\n params?: unknown[] | Record;\n}\n\nexport interface BaseProviderState {\n accounts: null | string[];\n isConnected: boolean;\n isUnlocked: boolean;\n initialized: boolean;\n isPermanentlyDisconnected: boolean;\n hasEmittedConnection: boolean;\n}\n\nexport interface JsonRpcConnection {\n events: SafeEventEmitter;\n middleware: JRPCMiddleware;\n stream: Duplex;\n}\n\nexport interface SentWarningsState {\n // methods\n enable: boolean;\n experimentalMethods: boolean;\n send: boolean;\n publicConfigStore: boolean;\n // events\n events: {\n close: boolean;\n data: boolean;\n networkChanged: boolean;\n notification: boolean;\n };\n}\n\nexport interface SendSyncJsonRpcRequest extends JRPCRequest {\n method: \"eth_accounts\" | \"eth_coinbase\" | \"eth_uninstallFilter\" | \"net_version\";\n}\n\nexport interface PublicConfigState {\n isUnlocked?: boolean;\n selectedAddress?: string;\n chainId?: string;\n networkVersion?: string;\n storageKey: string;\n}\n\nexport type Maybe = Partial | null | undefined;\n\nexport type BufferEncoding = \"ascii\" | \"utf8\" | \"utf-8\" | \"utf16le\" | \"ucs2\" | \"ucs-2\" | \"base64\" | \"base64url\" | \"latin1\" | \"binary\" | \"hex\";\n\nexport type IObjectMultiplex = Duplex;\n\nexport type WalletProviderState = {\n accounts: string[];\n chainId: string;\n isUnlocked: boolean;\n networkVersion: string;\n};\n","import { EMBED_TRANSLATION_ITEM, IPaymentProvider, LocaleLinks, PAYMENT_PROVIDER, WALLET_VERIFIERS } from \"./interfaces\";\n\nconst paymentProviders = {\n [PAYMENT_PROVIDER.RAMPNETWORK]: {\n line1: \"Debit Card/ Apple Pay/ Bank transfer\",\n line2: \"0.49% - 2.9%\",\n line3: \"5,000€/purchase, 20,000€/mo\",\n supportPage: \"https://instant.ramp.network/\",\n minOrderValue: 50,\n maxOrderValue: 20000,\n validCurrencies: [\"GBP\", \"EUR\", \"USD\"],\n validCryptoCurrencies: [\"ETH\", \"DAI\", \"USDC\", \"BSC_BNB\"],\n includeFees: true,\n enforceMax: false,\n } as IPaymentProvider,\n [PAYMENT_PROVIDER.MOONPAY]: {\n line1: \"Credit / Debit Card / Apple Pay\",\n line2: \"4.5% or 5 USD\",\n line3: \"2,000€/day, 10,000€/mo\",\n supportPage: \"https://help.moonpay.io/en/\",\n minOrderValue: 24.99,\n maxOrderValue: 50000,\n validCurrencies: [\"USD\", \"EUR\", \"GBP\", \"AUD\", \"CAD\", \"SGD\", \"RUB\"],\n validCryptoCurrencies: [\"ETH\", \"DAI\", \"TUSD\", \"USDC\", \"USDT\", \"BNB_BSC\", \"BUSD_BSC\"],\n includeFees: true,\n enforceMax: false,\n } as IPaymentProvider,\n [PAYMENT_PROVIDER.WYRE]: {\n line1: \"Apple Pay/ Debit/ Credit Card\",\n line2: \"4.9% + 30¢ or 5 USD\",\n line3: \"$250/day\",\n supportPage: \"https://support.sendwyre.com/en/\",\n minOrderValue: 5,\n maxOrderValue: 500,\n validCurrencies: [\"USD\", \"AUD\", \"CAD\", \"GBP\", \"EUR\"],\n validCryptoCurrencies: [\"ETH\", \"DAI\", \"USDC\", \"USDT\"],\n includeFees: false,\n enforceMax: false,\n } as IPaymentProvider,\n [PAYMENT_PROVIDER.XANPOOL]: {\n line1: \"PayNow/ InstaPay/ FPS/ GoJekPay/ UPI/ PromptPay/ VietelPay/ DuitNow\",\n line2: \"2.5% buying, 3% selling\",\n line3: \"$2,500 / day\",\n supportPage: \"mailto:support@xanpool.com\",\n minOrderValue: 100,\n maxOrderValue: 2500,\n validCurrencies: [\"SGD\", \"HKD\", \"MYR\", \"PHP\", \"INR\", \"VND\", \"THB\", \"IDR\"],\n validCryptoCurrencies: [\"ETH\", \"USDT\"],\n includeFees: true,\n sell: true,\n enforceMax: false,\n } as IPaymentProvider,\n [PAYMENT_PROVIDER.MERCURYO]: {\n line1: \"Credit/ Debit Card/ Apple Pay\",\n line2: \"3.95% or 4 USD\",\n line3: \"10,000€/day, 25,000€/mo\",\n supportPage: \"mailto:support@mercuryo.io\",\n minOrderValue: 30,\n maxOrderValue: 5000,\n validCurrencies: [\"USD\", \"EUR\", \"RUB\", \"TRY\", \"GBP\", \"UAH\"],\n validCryptoCurrencies: [\"ETH\", \"DAI\", \"BAT\", \"USDT\", \"OKB\"],\n includeFees: true,\n enforceMax: false,\n } as IPaymentProvider,\n [PAYMENT_PROVIDER.TRANSAK]: {\n line1: \"Credit/ Debit Card/
    Bank Transfer (sepa/gbp)\",\n line2: \"0.99% - 5.5% or 5 USD\",\n line3: \"500€/day\",\n supportPage: \"https://support.transak.com/hc/en-US\",\n minOrderValue: 20,\n maxOrderValue: 500,\n validCurrencies: [\"USD\", \"EUR\", \"GBP\", \"AUD\", \"CAD\", \"SGD\"],\n validCryptoCurrencies: [\"ETH\", \"DAI\", \"USDC\", \"USDT\"],\n includeFees: true,\n enforceMax: false,\n } as IPaymentProvider,\n};\n\nconst translations = {\n en: {\n embed: {\n continue: \"Continue\",\n actionRequired: \"Authorization required\",\n pendingAction: \"Click continue to proceed with your request in a popup\",\n cookiesRequired: \"Cookies Required\",\n enableCookies: \"Please enable cookies in your browser preferences to access Torus\",\n clickHere: \"More Info\",\n },\n },\n de: {\n embed: {\n continue: \"Fortsetzen\",\n actionRequired: \"Autorisierung erforderlich\",\n pendingAction: \"Klicken Sie in einem Popup auf Weiter, um mit Ihrer Anfrage fortzufahren\",\n cookiesRequired: \"Cookies benötigt\",\n enableCookies: \"Bitte aktivieren Sie Cookies in Ihren Browsereinstellungen, um auf Torus zuzugreifen\",\n clickHere: \"Mehr Info\",\n },\n },\n ja: {\n embed: {\n continue: \"継続する\",\n actionRequired: \"認証が必要です\",\n pendingAction: \"続行をクリックして、ポップアップでリクエストを続行します\",\n cookiesRequired: \"必要なクッキー\",\n enableCookies: \"Torusにアクセスするには、ブラウザの設定でCookieを有効にしてください。\",\n clickHere: \"詳しくは\",\n },\n },\n ko: {\n embed: {\n continue: \"계속하다\",\n actionRequired: \"승인 필요\",\n pendingAction: \"팝업에서 요청을 진행하려면 계속을 클릭하십시오.\",\n cookiesRequired: \"쿠키 필요\",\n enableCookies: \"브라우저 환경 설정에서 쿠키를 활성화하여 Torus에 액세스하십시오.\",\n clickHere: \"더 많은 정보\",\n },\n },\n zh: {\n embed: {\n continue: \"继续\",\n actionRequired: \"需要授权\",\n pendingAction: \"单击继续以在弹出窗口中继续您的请求\",\n cookiesRequired: \"必填Cookie\",\n enableCookies: \"请在您的浏览器首选项中启用cookie以访问Torus。\",\n clickHere: \"更多信息\",\n },\n },\n} as LocaleLinks<{ embed: EMBED_TRANSLATION_ITEM }>;\n\nexport default {\n supportedVerifierList: Object.values(WALLET_VERIFIERS),\n paymentProviders,\n api: \"https://api.tor.us\",\n translations,\n prodTorusUrl: \"\",\n localStorageKeyPrefix: `torus-`,\n};\n","import { Stream } from \"pump\";\n\nexport const runOnLoad = (fn: () => void): Promise =>\n new Promise((resolve, reject) => {\n if (window.document.body != null) {\n Promise.resolve(fn()).then(resolve).catch(reject);\n } else {\n window.document.addEventListener(\"DOMContentLoaded\", () => {\n Promise.resolve(fn()).then(resolve).catch(reject);\n });\n }\n });\n\nexport const runOnComplete = (fn: () => void): void => {\n const retry = window.setInterval(() => {\n if (window.document.readyState === \"complete\") {\n window.clearInterval(retry);\n fn();\n }\n }, 300);\n};\n\nexport const htmlToElement = (html: string): T => {\n const template = window.document.createElement(\"template\");\n const trimmedHtml = html.trim(); // Never return a text node of whitespace as the result\n template.innerHTML = trimmedHtml;\n return template.content.firstChild as T;\n};\n\nexport const handleEvent = (handle: EventTarget, eventName: string, handler: (...args: unknown[]) => void, ...handlerArgs: unknown[]): void => {\n const handlerWrapper = () => {\n handler(...handlerArgs);\n handle.removeEventListener(eventName, handlerWrapper);\n };\n handle.addEventListener(eventName, handlerWrapper);\n};\n\nexport const handleStream = (handle: Stream, eventName: string, handler: (chunk: unknown) => void): void => {\n const handlerWrapper = (chunk: unknown) => {\n handler(chunk);\n handle.removeListener(eventName, handlerWrapper);\n };\n handle.on(eventName, handlerWrapper);\n};\n\nexport async function documentReady(): Promise {\n return new Promise((resolve) => {\n if (document.readyState !== \"loading\") {\n resolve();\n } else {\n handleEvent(document, \"DOMContentLoaded\", resolve);\n }\n });\n}\n","import loglevel from \"loglevel\";\n\nexport default loglevel.getLogger(\"torus-embed\");\n","export default {\n errors: {\n disconnected: (): string => \"Torus: Lost connection to Torus.\",\n permanentlyDisconnected: (): string => \"Torus: Disconnected from iframe. Page reload required.\",\n sendSiteMetadata: (): string => \"Torus: Failed to send site metadata. This is an internal error, please report this bug.\",\n unsupportedSync: (method: string): string =>\n `Torus: The Torus Ethereum provider does not support synchronous methods like ${method} without a callback parameter.`,\n invalidDuplexStream: (): string => \"Must provide a Node.js-style duplex stream.\",\n invalidOptions: (maxEventListeners: number, shouldSendMetadata: boolean): string =>\n `Invalid options. Received: { maxEventListeners: ${maxEventListeners}, shouldSendMetadata: ${shouldSendMetadata} }`,\n invalidRequestArgs: (): string => `Expected a single, non-array, object argument.`,\n invalidRequestMethod: (): string => `'args.method' must be a non-empty string.`,\n invalidRequestParams: (): string => `'args.params' must be an object or array if provided.`,\n invalidLoggerObject: (): string => `'args.logger' must be an object if provided.`,\n invalidLoggerMethod: (method: string): string => `'args.logger' must include required method '${method}'.`,\n },\n info: {\n connected: (chainId: string): string => `Torus: Connected to chain with ID \"${chainId}\".`,\n },\n warnings: {\n // deprecated methods\n enableDeprecation:\n 'Torus: \"\"ethereum.enable()\" is deprecated and may be removed in the future. ' +\n 'Please use \"ethereum.send(\"eth_requestAccounts\")\" instead. For more information, see: https://eips.ethereum.org/EIPS/eip-1102',\n sendDeprecation:\n 'Torus: \"ethereum.send(...)\" is deprecated and may be removed in the future.' +\n ' Please use \"ethereum.sendAsync(...)\" or \"ethereum.request(...)\" instead.\\nFor more information, see: https://eips.ethereum.org/EIPS/eip-1193',\n events: {\n close:\n 'Torus: The event \"close\" is deprecated and may be removed in the future. Please use \"disconnect\" instead.' +\n \"\\nFor more information, see: https://eips.ethereum.org/EIPS/eip-1193\",\n data:\n 'Torus: The event \"data\" is deprecated and will be removed in the future.' +\n 'Use \"message\" instead.\\nFor more information, see: https://eips.ethereum.org/EIPS/eip-1193#message',\n networkChanged:\n 'Torus: The event \"networkChanged\" is deprecated and may be removed in the future.' +\n ' Please use \"chainChanged\" instead.\\nFor more information, see: https://eips.ethereum.org/EIPS/eip-1193',\n notification:\n 'Torus: The event \"notification\" is deprecated and may be removed in the future. ' +\n 'Please use \"message\" instead.\\nFor more information, see: https://eips.ethereum.org/EIPS/eip-1193',\n },\n publicConfigStore: 'Torus: The property \"publicConfigStore\" is deprecated and WILL be removed in the future.',\n },\n};\n","import { get } from \"@toruslabs/http-helpers\";\nimport { JRPCMiddleware, PendingJRPCResponse, SafeEventEmitter } from \"@toruslabs/openlogin-jrpc\";\nimport { ethErrors } from \"eth-rpc-errors\";\nimport { LogLevelDesc } from \"loglevel\";\n\nimport config from \"./config\";\nimport { IntegrityParams, PaymentParams } from \"./interfaces\";\nimport log from \"./loglevel\";\n\nconst { paymentProviders } = config;\n\ntype PaymentErrorParams = {\n fiatValue?: string;\n selectedCurrency?: string;\n selectedCryptoCurrency?: string;\n};\n\ntype PaymentErrors = { provider?: string } & PaymentErrorParams;\n\nexport const validatePaymentProvider = (provider: string, params: PaymentParams): { errors: PaymentErrors; isValid: boolean } => {\n const errors: PaymentErrors = {};\n\n if (!provider) {\n return { errors, isValid: true };\n }\n\n if (provider && !paymentProviders[provider]) {\n errors.provider = \"Invalid Provider\";\n return { errors, isValid: Object.keys(errors).length === 0 };\n }\n\n const selectedProvider = paymentProviders[provider];\n const selectedParams = params || {};\n\n // set default values\n // if (!selectedParams.selectedCurrency) [selectedParams.selectedCurrency] = selectedProvider.validCurrencies\n // if (!selectedParams.fiatValue) selectedParams.fiatValue = selectedProvider.minOrderValue\n // if (!selectedParams.selectedCryptoCurrency) [selectedParams.selectedCryptoCurrency] = selectedProvider.validCryptoCurrencies\n\n // validations\n if (selectedParams.fiatValue) {\n const requestedOrderAmount = +parseFloat(selectedParams.fiatValue.toString()) || 0;\n if (requestedOrderAmount < selectedProvider.minOrderValue) errors.fiatValue = \"Requested amount is lower than supported\";\n if (requestedOrderAmount > selectedProvider.maxOrderValue && selectedProvider.enforceMax)\n errors.fiatValue = \"Requested amount is higher than supported\";\n }\n if (selectedParams.selectedCurrency && !selectedProvider.validCurrencies.includes(selectedParams.selectedCurrency)) {\n errors.selectedCurrency = \"Unsupported currency\";\n }\n if (selectedParams.selectedCryptoCurrency && !selectedProvider.validCryptoCurrencies.includes(selectedParams.selectedCryptoCurrency)) {\n errors.selectedCryptoCurrency = \"Unsupported cryptoCurrency\";\n }\n return { errors, isValid: Object.keys(errors).length === 0 };\n};\n\n// utility functions\n\n/**\n * json-rpc-engine middleware that logs RPC errors and and validates req.method.\n *\n * @param log - The logging API to use.\n * @returns json-rpc-engine middleware function\n */\nexport function createErrorMiddleware(): JRPCMiddleware {\n return (req, res, next) => {\n // json-rpc-engine will terminate the request when it notices this error\n if (typeof req.method !== \"string\" || !req.method) {\n res.error = ethErrors.rpc.invalidRequest({\n message: `The request 'method' must be a non-empty string.`,\n data: req,\n });\n }\n\n next((done) => {\n const { error } = res;\n if (!error) {\n return done();\n }\n log.error(`MetaMask - RPC Error: ${error.message}`, error);\n return done();\n });\n };\n}\n\n// resolve response.result or response, reject errors\nexport const getRpcPromiseCallback =\n (resolve: (value?: any) => void, reject: (error?: Error) => void, unwrapResult = true) =>\n (error: Error, response: PendingJRPCResponse): void => {\n if (error || response.error) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n reject(error || response.error);\n } else {\n resolve(!unwrapResult || Array.isArray(response) ? response : response.result);\n }\n };\n\n/**\n * Logs a stream disconnection error. Emits an 'error' if given an\n * EventEmitter that has listeners for the 'error' event.\n *\n * @param log - The logging API to use.\n * @param remoteLabel - The label of the disconnected stream.\n * @param error - The associated error to log.\n * @param emitter - The logging API to use.\n */\nexport function logStreamDisconnectWarning(remoteLabel: string, error: Error, emitter: SafeEventEmitter): void {\n let warningMsg = `MetaMask: Lost connection to \"${remoteLabel}\".`;\n if (error?.stack) {\n warningMsg += `\\n${error.stack}`;\n }\n log.warn(warningMsg);\n if (emitter && emitter.listenerCount(\"error\") > 0) {\n emitter.emit(\"error\", warningMsg);\n }\n}\n\nexport const getPreopenInstanceId = () => Math.random().toString(36).slice(2);\n\nexport const getTorusUrl = async (buildEnv: string, integrity: IntegrityParams): Promise<{ torusUrl: string; logLevel: LogLevelDesc }> => {\n let torusUrl: string;\n let logLevel: LogLevelDesc;\n // Do not change this line\n const version = process.env.TORUS_EMBED_VERSION;\n let versionUsed = integrity.version || version;\n try {\n if ((buildEnv === \"binance\" || buildEnv === \"production\") && !integrity.version) {\n let response: { data: string };\n if (!config.prodTorusUrl)\n response = await get(`${config.api}/latestversion?name=@toruslabs/torus-embed&version=${version}`, {}, { useAPIKey: true });\n else response = { data: config.prodTorusUrl };\n versionUsed = response.data;\n // eslint-disable-next-line require-atomic-updates\n config.prodTorusUrl = response.data;\n }\n } catch (error) {\n log.error(error, \"unable to fetch latest version\");\n }\n log.info(\"version used: \", versionUsed);\n switch (buildEnv) {\n case \"binance\":\n torusUrl = `https://binance.tor.us/v${versionUsed}`;\n logLevel = \"info\";\n break;\n case \"testing\":\n torusUrl = \"https://testing.tor.us\";\n logLevel = \"debug\";\n break;\n case \"lrc\":\n torusUrl = \"https://lrc.tor.us\";\n logLevel = \"debug\";\n break;\n case \"beta\":\n torusUrl = \"https://beta.tor.us\";\n logLevel = \"debug\";\n break;\n case \"development\":\n torusUrl = \"http://localhost:4050\";\n logLevel = \"debug\";\n break;\n default:\n torusUrl = `https://app.tor.us/v${versionUsed}`;\n logLevel = \"error\";\n break;\n }\n return { torusUrl, logLevel };\n};\n\nexport const getUserLanguage = (): string => {\n let userLanguage = window.navigator.language || \"en-US\";\n const userLanguages = userLanguage.split(\"-\");\n userLanguage = Object.prototype.hasOwnProperty.call(config.translations, userLanguages[0]) ? userLanguages[0] : \"en\";\n return userLanguage;\n};\n\nexport const EMITTED_NOTIFICATIONS = [\n \"eth_subscription\", // per eth-json-rpc-filters/subscriptionManager\n];\n\nexport const NOOP = (): void => {\n // empty function\n};\n\nexport const FEATURES_PROVIDER_CHANGE_WINDOW = \"directories=0,titlebar=0,toolbar=0,status=0,location=0,menubar=0,height=660,width=375\";\nexport const FEATURES_DEFAULT_WALLET_WINDOW = \"directories=0,titlebar=0,toolbar=0,status=0,location=0,menubar=0,height=740,width=1315\";\nexport const FEATURES_DEFAULT_POPUP_WINDOW = \"directories=0,titlebar=0,toolbar=0,status=0,location=0,menubar=0,height=700,width=1200\";\nexport const FEATURES_CONFIRM_WINDOW = \"directories=0,titlebar=0,toolbar=0,status=0,location=0,menubar=0,height=700,width=450\";\n\nexport function storageAvailable(type: \"localStorage\" | \"sessionStorage\"): boolean {\n let storage: Storage;\n try {\n storage = window[type];\n const x = \"__storage_test__\";\n storage.setItem(x, x);\n storage.removeItem(x);\n return true;\n } catch (e) {\n return (\n e &&\n // everything except Firefox\n (e.code === 22 ||\n // Firefox\n e.code === 1014 ||\n // test name field too, because code might not be present\n // everything except Firefox\n e.name === \"QuotaExceededError\" ||\n // Firefox\n e.name === \"NS_ERROR_DOM_QUOTA_REACHED\") &&\n // acknowledge QuotaExceededError only if there's something already stored\n storage &&\n storage.length !== 0\n );\n }\n}\n\nexport function getPopupFeatures(): string {\n // Fixes dual-screen position Most browsers Firefox\n const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;\n const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;\n\n const w = 1200;\n const h = 700;\n\n const width = window.innerWidth\n ? window.innerWidth\n : document.documentElement.clientWidth\n ? document.documentElement.clientWidth\n : window.screen.width;\n\n const height = window.innerHeight\n ? window.innerHeight\n : document.documentElement.clientHeight\n ? document.documentElement.clientHeight\n : window.screen.height;\n\n const systemZoom = 1; // No reliable estimate\n\n const left = Math.abs((width - w) / 2 / systemZoom + dualScreenLeft);\n const top = Math.abs((height - h) / 2 / systemZoom + dualScreenTop);\n const features = `titlebar=0,toolbar=0,status=0,location=0,menubar=0,height=${h / systemZoom},width=${w / systemZoom},top=${top},left=${left}`;\n return features;\n}\n","import { ObservableStore, storeAsStream } from \"@metamask/obs-store\";\nimport {\n createIdRemapMiddleware,\n createStreamMiddleware,\n JRPCEngine,\n JRPCRequest,\n JRPCResponse,\n JRPCSuccess,\n ObjectMultiplex,\n SafeEventEmitter,\n} from \"@toruslabs/openlogin-jrpc\";\nimport { EthereumRpcError, ethErrors } from \"eth-rpc-errors\";\nimport dequal from \"fast-deep-equal\";\nimport { duplex as isDuplexStream } from \"is-stream\";\nimport pump from \"pump\";\nimport type { Duplex } from \"readable-stream\";\n\nimport {\n BaseProviderState,\n JsonRpcConnection,\n Maybe,\n ProviderOptions,\n PublicConfigState,\n RequestArguments,\n SendSyncJsonRpcRequest,\n SentWarningsState,\n UnvalidatedJsonRpcRequest,\n WalletProviderState,\n} from \"./interfaces\";\nimport log from \"./loglevel\";\nimport messages from \"./messages\";\nimport { createErrorMiddleware, EMITTED_NOTIFICATIONS, logStreamDisconnectWarning, NOOP } from \"./utils\";\n\nSafeEventEmitter.defaultMaxListeners = 100;\n\n// resolve response.result, reject errors\nconst getRpcPromiseCallback =\n (resolve, reject, unwrapResult = true) =>\n (error, response) => {\n if (error || response.error) {\n return reject(error || response.error);\n }\n return !unwrapResult || Array.isArray(response) ? resolve(response) : resolve(response.result);\n };\n\nclass TorusInpageProvider extends SafeEventEmitter {\n protected static _defaultState: BaseProviderState = {\n accounts: null,\n isConnected: false,\n isUnlocked: false,\n initialized: false,\n isPermanentlyDisconnected: false,\n hasEmittedConnection: false,\n };\n\n /**\n * The chain ID of the currently connected Ethereum chain.\n * See [chainId.network]{@link https://chainid.network} for more information.\n */\n public chainId: string | null;\n\n /**\n * The user's currently selected Ethereum address.\n * If null, MetaMask is either locked or the user has not permitted any\n * addresses to be viewed.\n */\n public selectedAddress: string | null;\n\n _rpcEngine: JRPCEngine;\n\n public networkVersion: string | null;\n\n shouldSendMetadata: boolean;\n\n /**\n * Indicating that this provider is a MetaMask provider.\n */\n public readonly isTorus: true;\n\n _publicConfigStore: ObservableStore;\n\n tryPreopenHandle: (payload: UnvalidatedJsonRpcRequest | UnvalidatedJsonRpcRequest[], cb: (...args: unknown[]) => void) => void;\n\n enable: () => Promise;\n\n protected _state: BaseProviderState;\n\n protected _jsonRpcConnection: JsonRpcConnection;\n\n protected _sentWarnings: SentWarningsState = {\n // methods\n enable: false,\n experimentalMethods: false,\n send: false,\n publicConfigStore: false,\n // events\n events: {\n close: false,\n data: false,\n networkChanged: false,\n notification: false,\n },\n };\n\n constructor(\n connectionStream: Duplex,\n { maxEventListeners = 100, shouldSendMetadata = true, jsonRpcStreamName = \"provider\" }: ProviderOptions = {}\n ) {\n super();\n if (!isDuplexStream(connectionStream)) {\n throw new Error(messages.errors.invalidDuplexStream());\n }\n this.isTorus = true;\n this.setMaxListeners(maxEventListeners);\n\n // private state\n this._state = {\n ...TorusInpageProvider._defaultState,\n };\n\n // public state\n this.selectedAddress = null;\n this.networkVersion = null;\n this.chainId = null;\n this.shouldSendMetadata = shouldSendMetadata;\n\n // bind functions (to prevent e.g. web3@1.x from making unbound calls)\n this._handleAccountsChanged = this._handleAccountsChanged.bind(this);\n this._handleChainChanged = this._handleChainChanged.bind(this);\n this._handleUnlockStateChanged = this._handleUnlockStateChanged.bind(this);\n this._handleConnect = this._handleConnect.bind(this);\n this._handleDisconnect = this._handleDisconnect.bind(this);\n this._handleStreamDisconnect = this._handleStreamDisconnect.bind(this);\n this._sendSync = this._sendSync.bind(this);\n this._rpcRequest = this._rpcRequest.bind(this);\n this._warnOfDeprecation = this._warnOfDeprecation.bind(this);\n this._initializeState = this._initializeState.bind(this);\n\n this.request = this.request.bind(this);\n this.send = this.send.bind(this);\n this.sendAsync = this.sendAsync.bind(this);\n // this.enable = this.enable.bind(this);\n\n // setup connectionStream multiplexing\n const mux = new ObjectMultiplex();\n pump(connectionStream, mux, connectionStream, this._handleStreamDisconnect.bind(this, \"MetaMask\"));\n\n // subscribe to metamask public config (one-way)\n this._publicConfigStore = new ObservableStore({ storageKey: \"Metamask-Config\" });\n\n // handle isUnlocked changes, and chainChanged and networkChanged events\n // this._publicConfigStore.subscribe((stringifiedState) => {\n // // This is because we are using store as string\n // const state = JSON.parse(stringifiedState as unknown as string);\n // if (\"isUnlocked\" in state && state.isUnlocked !== this._state.isUnlocked) {\n // this._state.isUnlocked = state.isUnlocked;\n // if (!this._state.isUnlocked) {\n // // accounts are never exposed when the extension is locked\n // this._handleAccountsChanged([]);\n // } else {\n // // this will get the exposed accounts, if any\n // try {\n // this._rpcRequest(\n // { method: \"eth_accounts\", params: [] },\n // NOOP,\n // true // indicating that eth_accounts _should_ update accounts\n // );\n // } catch (_) {\n // // Swallow error\n // }\n // }\n // }\n\n // if (\"selectedAddress\" in state && this.selectedAddress !== state.selectedAddress) {\n // try {\n // this._rpcRequest(\n // { method: \"eth_accounts\", params: [] },\n // NOOP,\n // true // indicating that eth_accounts _should_ update accounts\n // );\n // } catch (_) {\n // // Swallow error\n // }\n // }\n\n // // Emit chainChanged event on chain change\n // if (\"chainId\" in state && state.chainId !== this.chainId) {\n // this.chainId = state.chainId || null;\n // this.emit(\"chainChanged\", this.chainId);\n\n // // indicate that we've connected, for EIP-1193 compliance\n // // we do this here so that iframe can initialize\n // if (!this._state.hasEmittedConnection) {\n // this._handleConnect(this.chainId);\n // this._state.hasEmittedConnection = true;\n // }\n // }\n\n // // Emit networkChanged event on network change\n // if (\"networkVersion\" in state && state.networkVersion !== this.networkVersion) {\n // this.networkVersion = state.networkVersion || null;\n // this.emit(\"networkChanged\", this.networkVersion);\n // }\n // });\n\n pump(\n mux.createStream(\"publicConfig\") as unknown as Duplex,\n storeAsStream(this._publicConfigStore),\n // RPC requests should still work if only this stream fails\n logStreamDisconnectWarning.bind(this, \"MetaMask PublicConfigStore\")\n );\n // ignore phishing warning message (handled elsewhere)\n mux.ignoreStream(\"phishing\");\n\n // setup own event listeners\n\n // EIP-1193 connect\n this.on(\"connect\", () => {\n this._state.isConnected = true;\n });\n\n // connect to async provider\n\n const jsonRpcConnection = createStreamMiddleware();\n pump(\n jsonRpcConnection.stream,\n mux.createStream(jsonRpcStreamName) as unknown as Duplex,\n jsonRpcConnection.stream,\n this._handleStreamDisconnect.bind(this, \"MetaMask RpcProvider\")\n );\n\n // handle RPC requests via dapp-side rpc engine\n const rpcEngine = new JRPCEngine();\n rpcEngine.push(createIdRemapMiddleware());\n rpcEngine.push(createErrorMiddleware());\n rpcEngine.push(jsonRpcConnection.middleware);\n this._rpcEngine = rpcEngine;\n\n // json rpc notification listener\n jsonRpcConnection.events.on(\"notification\", (payload) => {\n const { method, params } = payload;\n if (method === \"wallet_accountsChanged\") {\n this._handleAccountsChanged(params);\n } else if (method === \"wallet_unlockStateChanged\") {\n this._handleUnlockStateChanged(params);\n } else if (method === \"wallet_chainChanged\") {\n this._handleChainChanged(params);\n } else if (EMITTED_NOTIFICATIONS.includes(payload.method)) {\n // EIP 1193 subscriptions, per eth-json-rpc-filters/subscriptionManager\n this.emit(\"data\", payload); // deprecated\n this.emit(\"notification\", params.result);\n this.emit(\"message\", {\n type: method,\n data: params,\n });\n }\n\n // Backward compatibility for older non EIP 1193 subscriptions\n // this.emit('data', null, payload)\n });\n }\n\n get publicConfigStore(): ObservableStore {\n if (!this._sentWarnings.publicConfigStore) {\n log.warn(messages.warnings.publicConfigStore);\n this._sentWarnings.publicConfigStore = true;\n }\n return this._publicConfigStore;\n }\n\n /**\n * Returns whether the inpage provider is connected to Torus.\n */\n isConnected(): boolean {\n return this._state.isConnected;\n }\n\n /**\n * Submits an RPC request for the given method, with the given params.\n * Resolves with the result of the method call, or rejects on error.\n *\n * @param args - The RPC request arguments.\n * @returns A Promise that resolves with the result of the RPC method,\n * or rejects if an error is encountered.\n */\n async request(args: RequestArguments): Promise> {\n if (!args || typeof args !== \"object\" || Array.isArray(args)) {\n throw ethErrors.rpc.invalidRequest({\n message: messages.errors.invalidRequestArgs(),\n data: args,\n });\n }\n\n const { method, params } = args;\n\n if (typeof method !== \"string\" || method.length === 0) {\n throw ethErrors.rpc.invalidRequest({\n message: messages.errors.invalidRequestMethod(),\n data: args,\n });\n }\n\n if (params !== undefined && !Array.isArray(params) && (typeof params !== \"object\" || params === null)) {\n throw ethErrors.rpc.invalidRequest({\n message: messages.errors.invalidRequestParams(),\n data: args,\n });\n }\n\n return new Promise((resolve, reject) => {\n this._rpcRequest({ method, params }, getRpcPromiseCallback(resolve, reject));\n });\n }\n\n /**\n * Submits an RPC request per the given JSON-RPC request object.\n *\n * @param payload - The RPC request object.\n * @param cb - The callback function.\n */\n sendAsync(payload: JRPCRequest, callback: (error: Error | null, result?: JRPCResponse) => void): void {\n this._rpcRequest(payload, callback);\n }\n\n /**\n * We override the following event methods so that we can warn consumers\n * about deprecated events:\n * addListener, on, once, prependListener, prependOnceListener\n */\n\n addListener(eventName: string, listener: (...args: unknown[]) => void): this {\n this._warnOfDeprecation(eventName);\n return super.addListener(eventName, listener);\n }\n\n on(eventName: string, listener: (...args: unknown[]) => void): this {\n this._warnOfDeprecation(eventName);\n return super.on(eventName, listener);\n }\n\n once(eventName: string, listener: (...args: unknown[]) => void): this {\n this._warnOfDeprecation(eventName);\n return super.once(eventName, listener);\n }\n\n prependListener(eventName: string, listener: (...args: unknown[]) => void): this {\n this._warnOfDeprecation(eventName);\n return super.prependListener(eventName, listener);\n }\n\n prependOnceListener(eventName: string, listener: (...args: unknown[]) => void): this {\n this._warnOfDeprecation(eventName);\n return super.prependOnceListener(eventName, listener);\n }\n\n // Private Methods\n //= ===================\n /**\n * Constructor helper.\n * Populates initial state by calling 'wallet_getProviderState' and emits\n * necessary events.\n */\n async _initializeState(): Promise {\n try {\n const { accounts, chainId, isUnlocked, networkVersion } = (await this.request({\n method: \"wallet_getProviderState\",\n })) as WalletProviderState;\n\n // indicate that we've connected, for EIP-1193 compliance\n this.emit(\"connect\", { chainId });\n\n this._handleChainChanged({ chainId, networkVersion });\n this._handleUnlockStateChanged({ accounts, isUnlocked });\n this._handleAccountsChanged(accounts);\n } catch (error) {\n log.error(\"MetaMask: Failed to get initial state. Please report this bug.\", error);\n } finally {\n log.info(\"initialized state\");\n this._state.initialized = true;\n this.emit(\"_initialized\");\n }\n }\n\n /**\n * Internal RPC method. Forwards requests to background via the RPC engine.\n * Also remap ids inbound and outbound.\n *\n * @param payload - The RPC request object.\n * @param callback - The consumer's callback.\n * @param isInternal - false - Whether the request is internal.\n */\n _rpcRequest(payload: UnvalidatedJsonRpcRequest | UnvalidatedJsonRpcRequest[], callback: (...args: any[]) => void, isInternal = false): void {\n let cb = callback;\n const _payload = payload;\n if (!Array.isArray(_payload)) {\n if (!_payload.jsonrpc) {\n _payload.jsonrpc = \"2.0\";\n }\n\n if (_payload.method === \"eth_accounts\" || _payload.method === \"eth_requestAccounts\") {\n // handle accounts changing\n cb = (err: Error, res: JRPCSuccess) => {\n this._handleAccountsChanged(res.result || [], _payload.method === \"eth_accounts\", isInternal);\n callback(err, res);\n };\n } else if (_payload.method === \"wallet_getProviderState\") {\n this._rpcEngine.handle(payload as JRPCRequest, cb);\n return;\n }\n }\n this.tryPreopenHandle(_payload, cb);\n }\n\n /**\n * Submits an RPC request for the given method, with the given params.\n *\n * @deprecated Use \"request\" instead.\n * @param method - The method to request.\n * @param params - Any params for the method.\n * @returns A Promise that resolves with the JSON-RPC response object for the\n * request.\n */\n send(method: string, params?: T[]): Promise>;\n\n /**\n * Submits an RPC request per the given JSON-RPC request object.\n *\n * @deprecated Use \"request\" instead.\n * @param payload - A JSON-RPC request object.\n * @param callback - An error-first callback that will receive the JSON-RPC\n * response object.\n */\n send(payload: JRPCRequest, callback: (error: Error | null, result?: JRPCResponse) => void): void;\n\n /**\n * Accepts a JSON-RPC request object, and synchronously returns the cached result\n * for the given method. Only supports 4 specific RPC methods.\n *\n * @deprecated Use \"request\" instead.\n * @param payload - A JSON-RPC request object.\n * @returns A JSON-RPC response object.\n */\n send(payload: SendSyncJsonRpcRequest): JRPCResponse;\n\n send(methodOrPayload: unknown, callbackOrArgs?: unknown): unknown {\n if (!this._sentWarnings.send) {\n log.warn(messages.warnings.sendDeprecation);\n this._sentWarnings.send = true;\n }\n if (typeof methodOrPayload === \"string\" && (!callbackOrArgs || Array.isArray(callbackOrArgs))) {\n return new Promise((resolve, reject) => {\n try {\n this._rpcRequest({ method: methodOrPayload, params: callbackOrArgs }, getRpcPromiseCallback(resolve, reject, false));\n } catch (error) {\n reject(error);\n }\n });\n }\n if (methodOrPayload && typeof methodOrPayload === \"object\" && typeof callbackOrArgs === \"function\") {\n return this._rpcRequest(methodOrPayload as JRPCRequest, callbackOrArgs as (...args: unknown[]) => void);\n }\n return this._sendSync(methodOrPayload as SendSyncJsonRpcRequest);\n }\n\n /**\n * DEPRECATED.\n * Internal backwards compatibility method, used in send.\n */\n _sendSync(payload: SendSyncJsonRpcRequest): JRPCSuccess {\n let result;\n switch (payload.method) {\n case \"eth_accounts\":\n result = this.selectedAddress ? [this.selectedAddress] : [];\n break;\n\n case \"eth_coinbase\":\n result = this.selectedAddress || null;\n break;\n\n case \"eth_uninstallFilter\":\n this._rpcRequest(payload, NOOP);\n result = true;\n break;\n\n case \"net_version\":\n result = this.networkVersion || null;\n break;\n\n default:\n throw new Error(messages.errors.unsupportedSync(payload.method));\n }\n\n return {\n id: payload.id,\n jsonrpc: payload.jsonrpc,\n result,\n };\n }\n\n /**\n * When the provider becomes connected, updates internal state and emits\n * required events. Idempotent.\n *\n * @param chainId - The ID of the newly connected chain.\n * emits MetaMaskInpageProvider#connect\n */\n protected _handleConnect(chainId: string): void {\n if (!this._state.isConnected) {\n this._state.isConnected = true;\n this.emit(\"connect\", { chainId });\n log.debug(messages.info.connected(chainId));\n }\n }\n\n /**\n * When the provider becomes disconnected, updates internal state and emits\n * required events. Idempotent with respect to the isRecoverable parameter.\n *\n * Error codes per the CloseEvent status codes as required by EIP-1193:\n * https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n *\n * @param isRecoverable - Whether the disconnection is recoverable.\n * @param errorMessage - A custom error message.\n * emits MetaMaskInpageProvider#disconnect\n */\n protected _handleDisconnect(isRecoverable: boolean, errorMessage?: string): void {\n if (this._state.isConnected || (!this._state.isPermanentlyDisconnected && !isRecoverable)) {\n this._state.isConnected = false;\n\n let error;\n if (isRecoverable) {\n error = new EthereumRpcError(\n 1013, // Try again later\n errorMessage || messages.errors.disconnected()\n );\n log.debug(error);\n } else {\n error = new EthereumRpcError(\n 1011, // Internal error\n errorMessage || messages.errors.permanentlyDisconnected()\n );\n log.error(error);\n this.chainId = null;\n this._state.accounts = null;\n this.selectedAddress = null;\n this._state.isUnlocked = false;\n this._state.isPermanentlyDisconnected = true;\n }\n\n this.emit(\"disconnect\", error);\n }\n }\n\n /**\n * Called when connection is lost to critical streams.\n *\n * emits MetamaskInpageProvider#disconnect\n */\n protected _handleStreamDisconnect(streamName: string, error: Error): void {\n logStreamDisconnectWarning(streamName, error, this);\n this._handleDisconnect(false, error ? error.message : undefined);\n }\n\n /**\n * Called when accounts may have changed.\n */\n protected _handleAccountsChanged(accounts: unknown[], isEthAccounts = false, isInternal = false): void {\n // defensive programming\n let finalAccounts = accounts;\n if (!Array.isArray(finalAccounts)) {\n log.error(\"MetaMask: Received non-array accounts parameter. Please report this bug.\", finalAccounts);\n finalAccounts = [];\n }\n\n for (const account of accounts) {\n if (typeof account !== \"string\") {\n log.error(\"MetaMask: Received non-string account. Please report this bug.\", accounts);\n finalAccounts = [];\n break;\n }\n }\n\n // emit accountsChanged if anything about the accounts array has changed\n if (!dequal(this._state.accounts, finalAccounts)) {\n // we should always have the correct accounts even before eth_accounts\n // returns, except in cases where isInternal is true\n if (isEthAccounts && Array.isArray(this._state.accounts) && this._state.accounts.length > 0 && !isInternal) {\n log.error('MetaMask: \"eth_accounts\" unexpectedly updated accounts. Please report this bug.', finalAccounts);\n }\n\n this._state.accounts = finalAccounts as string[];\n this.emit(\"accountsChanged\", finalAccounts);\n }\n\n // handle selectedAddress\n if (this.selectedAddress !== finalAccounts[0]) {\n this.selectedAddress = (finalAccounts[0] as string) || null;\n }\n }\n\n /**\n * Upon receipt of a new chainId and networkVersion, emits corresponding\n * events and sets relevant public state.\n * Does nothing if neither the chainId nor the networkVersion are different\n * from existing values.\n *\n * emits MetamaskInpageProvider#chainChanged\n * @param networkInfo - An object with network info.\n */\n protected _handleChainChanged({ chainId, networkVersion }: { chainId?: string; networkVersion?: string } = {}): void {\n if (!chainId || !networkVersion) {\n log.error(\"MetaMask: Received invalid network parameters. Please report this bug.\", { chainId, networkVersion });\n return;\n }\n\n if (networkVersion === \"loading\") {\n this._handleDisconnect(true);\n } else {\n this._handleConnect(chainId);\n\n if (chainId !== this.chainId) {\n this.chainId = chainId;\n if (this._state.initialized) {\n this.emit(\"chainChanged\", this.chainId);\n }\n }\n }\n }\n\n /**\n * Upon receipt of a new isUnlocked state, sets relevant public state.\n * Calls the accounts changed handler with the received accounts, or an empty\n * array.\n *\n * Does nothing if the received value is equal to the existing value.\n * There are no lock/unlock events.\n *\n * @param opts - Options bag.\n */\n protected _handleUnlockStateChanged({ accounts, isUnlocked }: { accounts?: string[]; isUnlocked?: boolean } = {}): void {\n if (typeof isUnlocked !== \"boolean\") {\n log.error(\"MetaMask: Received invalid isUnlocked parameter. Please report this bug.\", { isUnlocked });\n return;\n }\n\n if (isUnlocked !== this._state.isUnlocked) {\n this._state.isUnlocked = isUnlocked;\n this._handleAccountsChanged(accounts || []);\n }\n }\n\n /**\n * Warns of deprecation for the given event, if applicable.\n */\n protected _warnOfDeprecation(eventName: string): void {\n if (this._sentWarnings.events[eventName] === false) {\n log.warn(messages.warnings.events[eventName]);\n this._sentWarnings.events[eventName] = true;\n }\n }\n}\n\nexport default TorusInpageProvider;\n","import createHash from \"create-hash\";\n\nimport { IHashAlgorithmOptions, SRI } from \"./interfaces\";\n\nconst defaults = (options: IHashAlgorithmOptions) => ({\n algorithms: options.algorithms || [\"sha256\"],\n delimiter: options.delimiter || \" \",\n full: options.full || false,\n});\n\n// Generate list of hashes\nconst hashes = (options: IHashAlgorithmOptions, data: string): Record => {\n const internalHashes: Record = {};\n options.algorithms.forEach((algorithm) => {\n internalHashes[algorithm] = createHash(algorithm).update(data, \"utf8\").digest(\"base64\");\n });\n return internalHashes;\n};\n// Build an integrity string\nconst integrity = (options: IHashAlgorithmOptions, sri: SRI): string => {\n let output = \"\";\n\n // Hash list\n output += Object.keys(sri.hashes)\n .map((algorithm: createHash.algorithm) => `${algorithm}-${sri.hashes[algorithm]}`)\n .join(options.delimiter);\n\n return output;\n};\n\nconst main = (options: IHashAlgorithmOptions, data: string): SRI | string => {\n // Defaults\n const finalOptions = defaults(options);\n\n const sri = {\n hashes: hashes(finalOptions, data),\n integrity: undefined,\n };\n sri.integrity = integrity(finalOptions, sri);\n\n return finalOptions.full ? sri : sri.integrity;\n};\n\nexport default main;\n","import { EventEmitter } from \"events\";\n\nimport { getPopupFeatures } from \"./utils\";\n\nclass PopupHandler extends EventEmitter {\n url: URL;\n\n target: string;\n\n features: string;\n\n window: Window;\n\n windowTimer: number;\n\n iClosedWindow: boolean;\n\n constructor({ url, target, features }: { url: URL; target?: string; features?: string }) {\n super();\n this.url = url;\n this.target = target || \"_blank\";\n this.features = features || getPopupFeatures();\n this.window = undefined;\n this.windowTimer = undefined;\n this.iClosedWindow = false;\n this._setupTimer();\n }\n\n _setupTimer(): void {\n this.windowTimer = Number(\n setInterval(() => {\n if (this.window && this.window.closed) {\n clearInterval(this.windowTimer);\n if (!this.iClosedWindow) {\n this.emit(\"close\");\n }\n this.iClosedWindow = false;\n this.window = undefined;\n }\n if (this.window === undefined) clearInterval(this.windowTimer);\n }, 500)\n );\n }\n\n open(): Promise {\n this.window = window.open(this.url.href, this.target, this.features);\n if (this.window?.focus) this.window.focus();\n return Promise.resolve();\n }\n\n close(): void {\n this.iClosedWindow = true;\n if (this.window) this.window.close();\n }\n\n redirect(locationReplaceOnRedirect: boolean): void {\n if (locationReplaceOnRedirect) {\n window.location.replace(this.url.href);\n } else {\n window.location.href = this.url.href;\n }\n }\n}\n\nexport default PopupHandler;\n","import { JRPCEngine } from \"@toruslabs/openlogin-jrpc\";\n\nimport log from \"./loglevel\";\nimport messages from \"./messages\";\nimport { getPreopenInstanceId, NOOP } from \"./utils\";\n\n/**\n * Returns whether the given image URL exists\n * @param url - the url of the image\n * @returns - whether the image exists\n */\nfunction imgExists(url: string): Promise {\n return new Promise((resolve, reject) => {\n try {\n const img = document.createElement(\"img\");\n img.onload = () => resolve(true);\n img.onerror = () => resolve(false);\n img.src = url;\n } catch (e) {\n reject(e);\n }\n });\n}\n\n/**\n * Extracts a name for the site from the DOM\n */\nconst getSiteName = (window: Window) => {\n const { document } = window;\n\n const siteName = document.querySelector('head > meta[property=\"og:site_name\"]');\n if (siteName) {\n return siteName.content;\n }\n\n const metaTitle = document.querySelector('head > meta[name=\"title\"]');\n if (metaTitle) {\n return metaTitle.content;\n }\n\n if (document.title && document.title.length > 0) {\n return document.title;\n }\n\n return window.location.hostname;\n};\n\n/**\n * Extracts an icon for the site from the DOM\n */\nasync function getSiteIcon(window: Window): Promise {\n const { document } = window;\n\n // Use the site's favicon if it exists\n let icon = document.querySelector('head > link[rel=\"shortcut icon\"]');\n if (icon && (await imgExists(icon.href))) {\n return icon.href;\n }\n\n // Search through available icons in no particular order\n icon = Array.from(document.querySelectorAll('head > link[rel=\"icon\"]')).find((_icon) => Boolean(_icon.href));\n if (icon && (await imgExists(icon.href))) {\n return icon.href;\n }\n\n return null;\n}\n\n/**\n * Gets site metadata and returns it\n *\n */\nconst getSiteMetadata = async () => ({\n name: getSiteName(window),\n icon: await getSiteIcon(window),\n});\n\n/**\n * Sends site metadata over an RPC request.\n */\nexport default async function sendSiteMetadata(engine: JRPCEngine): Promise {\n try {\n const domainMetadata = await getSiteMetadata();\n // call engine.handle directly to avoid normal RPC request handling\n engine.handle(\n {\n jsonrpc: \"2.0\",\n id: getPreopenInstanceId(),\n method: \"wallet_sendDomainMetadata\",\n params: domainMetadata,\n },\n NOOP\n );\n } catch (error) {\n log.error({\n message: messages.errors.sendSiteMetadata(),\n originalError: error,\n });\n }\n}\n","import NodeDetailManager from \"@toruslabs/fetch-node-details\";\nimport { setAPIKey } from \"@toruslabs/http-helpers\";\nimport { BasePostMessageStream, JRPCRequest, ObjectMultiplex, setupMultiplex, Substream } from \"@toruslabs/openlogin-jrpc\";\nimport TorusJs from \"@toruslabs/torus.js\";\nimport deepmerge from \"lodash.merge\";\n\nimport configuration from \"./config\";\nimport { documentReady, handleStream, htmlToElement, runOnLoad } from \"./embedUtils\";\nimport TorusInpageProvider from \"./inpage-provider\";\nimport generateIntegrity from \"./integrity\";\nimport {\n BUTTON_POSITION,\n BUTTON_POSITION_TYPE,\n EMBED_TRANSLATION_ITEM,\n LOGIN_PROVIDER,\n PAYMENT_PROVIDER_TYPE,\n PaymentParams,\n TORUS_BUILD_ENV,\n TorusCtorArgs,\n TorusLoginParams,\n TorusParams,\n TorusPublicKey,\n UnvalidatedJsonRpcRequest,\n UserInfo,\n VerifierArgs,\n WALLET_OPENLOGIN_VERIFIER_MAP,\n WALLET_PATH,\n WhiteLabelParams,\n} from \"./interfaces\";\nimport log from \"./loglevel\";\nimport PopupHandler from \"./PopupHandler\";\nimport sendSiteMetadata from \"./siteMetadata\";\nimport {\n FEATURES_CONFIRM_WINDOW,\n FEATURES_DEFAULT_WALLET_WINDOW,\n FEATURES_PROVIDER_CHANGE_WINDOW,\n getPreopenInstanceId,\n getTorusUrl,\n getUserLanguage,\n storageAvailable,\n validatePaymentProvider,\n} from \"./utils\";\n\nconst defaultVerifiers = {\n [LOGIN_PROVIDER.GOOGLE]: true,\n [LOGIN_PROVIDER.FACEBOOK]: true,\n [LOGIN_PROVIDER.REDDIT]: true,\n [LOGIN_PROVIDER.TWITCH]: true,\n [LOGIN_PROVIDER.DISCORD]: true,\n};\n\nconst iframeIntegrity = \"sha384-WuTHIBcBak4hrn9/SJtezbyCEwkF5/CbLE6E5nPNN371k2bJgIBJ9VcFu0fW8RUC\";\n\nconst expectedCacheControlHeader = \"max-age=3600\";\n\nconst UNSAFE_METHODS = [\n \"eth_sendTransaction\",\n \"eth_signTypedData\",\n \"eth_signTypedData_v3\",\n \"eth_signTypedData_v4\",\n \"personal_sign\",\n \"eth_getEncryptionPublicKey\",\n \"eth_decrypt\",\n];\n\nconst isLocalStorageAvailable = storageAvailable(\"localStorage\");\n\n// preload for iframe doesn't work https://bugs.chromium.org/p/chromium/issues/detail?id=593267\n(async function preLoadIframe() {\n try {\n if (typeof document === \"undefined\") return;\n const torusIframeHtml = document.createElement(\"link\");\n const { torusUrl } = await getTorusUrl(\"production\", { check: false, hash: iframeIntegrity, version: \"\" });\n torusIframeHtml.href = `${torusUrl}/popup`;\n torusIframeHtml.crossOrigin = \"anonymous\";\n torusIframeHtml.type = \"text/html\";\n torusIframeHtml.rel = \"prefetch\";\n if (torusIframeHtml.relList && torusIframeHtml.relList.supports) {\n if (torusIframeHtml.relList.supports(\"prefetch\")) {\n document.head.appendChild(torusIframeHtml);\n }\n }\n } catch (error) {\n log.warn(error);\n }\n})();\n\nclass Torus {\n buttonPosition: BUTTON_POSITION_TYPE = BUTTON_POSITION.BOTTOM_LEFT;\n\n torusUrl: string;\n\n torusIframe: HTMLIFrameElement;\n\n styleLink: HTMLLinkElement;\n\n isLoggedIn: boolean;\n\n isInitialized: boolean;\n\n torusWidgetVisibility: boolean;\n\n torusAlert: HTMLDivElement;\n\n nodeDetailManager: NodeDetailManager;\n\n torusJs: TorusJs;\n\n apiKey: string;\n\n modalZIndex: number;\n\n alertZIndex: number;\n\n torusAlertContainer: HTMLDivElement;\n\n isIframeFullScreen: boolean;\n\n whiteLabel: WhiteLabelParams;\n\n requestedVerifier: string;\n\n currentVerifier: string;\n\n embedTranslations: EMBED_TRANSLATION_ITEM;\n\n ethereum: TorusInpageProvider;\n\n provider: TorusInpageProvider;\n\n communicationMux: ObjectMultiplex;\n\n isLoginCallback: () => void;\n\n dappStorageKey: string;\n\n paymentProviders = configuration.paymentProviders;\n\n private loginHint = \"\";\n\n private useWalletConnect: boolean;\n\n constructor({ buttonPosition = BUTTON_POSITION.BOTTOM_LEFT, modalZIndex = 99999, apiKey = \"torus-default\" }: TorusCtorArgs = {}) {\n this.buttonPosition = buttonPosition;\n this.torusUrl = \"\";\n this.isLoggedIn = false; // ethereum.enable working\n this.isInitialized = false; // init done\n this.torusWidgetVisibility = true;\n this.requestedVerifier = \"\";\n this.currentVerifier = \"\";\n this.nodeDetailManager = new NodeDetailManager();\n this.torusJs = new TorusJs({\n metadataHost: \"https://metadata.tor.us\",\n allowHost: \"https://signer.tor.us/api/allow\",\n });\n this.apiKey = apiKey;\n TorusJs.setAPIKey(apiKey);\n setAPIKey(apiKey);\n this.modalZIndex = modalZIndex;\n this.alertZIndex = modalZIndex + 1000;\n this.isIframeFullScreen = false;\n this.dappStorageKey = \"\";\n }\n\n async init({\n buildEnv = TORUS_BUILD_ENV.PRODUCTION,\n enableLogging = false,\n // deprecated: use loginConfig instead\n enabledVerifiers = defaultVerifiers,\n network = {\n host: \"mainnet\",\n chainId: null,\n networkName: \"\",\n blockExplorer: \"\",\n ticker: \"\",\n tickerName: \"\",\n },\n loginConfig = {},\n showTorusButton = true,\n integrity = {\n check: false,\n hash: iframeIntegrity,\n version: \"\",\n },\n whiteLabel,\n skipTKey = false,\n useLocalStorage = false,\n useWalletConnect = false,\n }: TorusParams = {}): Promise {\n if (this.isInitialized) throw new Error(\"Already initialized\");\n const { torusUrl, logLevel } = await getTorusUrl(buildEnv, integrity);\n log.info(torusUrl, \"url loaded\");\n this.torusUrl = torusUrl;\n this.whiteLabel = whiteLabel;\n this.useWalletConnect = useWalletConnect;\n log.setDefaultLevel(logLevel);\n if (enableLogging) log.enableAll();\n else log.disableAll();\n this.torusWidgetVisibility = showTorusButton;\n let dappStorageKey = \"\";\n if (isLocalStorageAvailable && useLocalStorage) {\n const localStorageKey = `${configuration.localStorageKeyPrefix}${window.location.hostname}`;\n const storedKey = window.localStorage.getItem(localStorageKey);\n if (storedKey) dappStorageKey = storedKey;\n else {\n const generatedKey = `torus-app-${getPreopenInstanceId()}`;\n window.localStorage.setItem(localStorageKey, generatedKey);\n dappStorageKey = generatedKey;\n }\n }\n this.dappStorageKey = dappStorageKey;\n const torusIframeUrl = new URL(torusUrl);\n if (torusIframeUrl.pathname.endsWith(\"/\")) torusIframeUrl.pathname += \"popup\";\n else torusIframeUrl.pathname += \"/popup\";\n if (dappStorageKey) {\n torusIframeUrl.hash = `#dappStorageKey=${dappStorageKey}`;\n }\n // Iframe code\n this.torusIframe = htmlToElement(\n ``\n );\n\n this.torusAlertContainer = htmlToElement('
    ');\n this.torusAlertContainer.style.display = \"none\";\n this.torusAlertContainer.style.setProperty(\"z-index\", this.alertZIndex.toString());\n\n const link = window.document.createElement(\"link\");\n link.setAttribute(\"rel\", \"stylesheet\");\n link.setAttribute(\"type\", \"text/css\");\n link.setAttribute(\"href\", `${torusUrl}/css/widget.css`);\n this.styleLink = link;\n\n const { defaultLanguage = getUserLanguage(), customTranslations = {} } = this.whiteLabel || {};\n const mergedTranslations = deepmerge(configuration.translations, customTranslations);\n const languageTranslations = mergedTranslations[defaultLanguage] || configuration.translations[getUserLanguage()];\n this.embedTranslations = languageTranslations.embed;\n\n const handleSetup = async () => {\n await documentReady();\n return new Promise((resolve, reject) => {\n this.torusIframe.onload = async () => {\n // only do this if iframe is not full screen\n this._setupWeb3();\n const initStream = this.communicationMux.getStream(\"init_stream\") as Substream;\n initStream.on(\"data\", (chunk) => {\n const { name, data, error } = chunk;\n if (name === \"init_complete\" && data.success) {\n // resolve promise\n this.isInitialized = true;\n this._displayIframe(this.isIframeFullScreen);\n resolve(undefined);\n } else if (error) {\n reject(new Error(error));\n }\n });\n initStream.write({\n name: \"init_stream\",\n data: {\n enabledVerifiers,\n loginConfig,\n whiteLabel: this.whiteLabel,\n buttonPosition: this.buttonPosition,\n torusWidgetVisibility: this.torusWidgetVisibility,\n apiKey: this.apiKey,\n skipTKey,\n network,\n },\n });\n };\n window.document.head.appendChild(this.styleLink);\n window.document.body.appendChild(this.torusIframe);\n window.document.body.appendChild(this.torusAlertContainer);\n });\n };\n\n if (buildEnv === \"production\" && integrity.check) {\n // hacky solution to check for iframe integrity\n const fetchUrl = `${torusUrl}/popup`;\n const resp = await fetch(fetchUrl, { cache: \"reload\" });\n if (resp.headers.get(\"Cache-Control\") !== expectedCacheControlHeader) {\n throw new Error(`Unexpected Cache-Control headers, got ${resp.headers.get(\"Cache-Control\")}`);\n }\n const response = await resp.text();\n const calculatedIntegrity = generateIntegrity(\n {\n algorithms: [\"sha384\"],\n },\n response\n );\n log.info(calculatedIntegrity, \"integrity\");\n if (calculatedIntegrity === integrity.hash) {\n await handleSetup();\n } else {\n this.clearInit();\n throw new Error(\"Integrity check failed\");\n }\n } else {\n await handleSetup();\n }\n return undefined;\n }\n\n login({ verifier = \"\", login_hint: loginHint = \"\" }: TorusLoginParams = {}): Promise {\n if (!this.isInitialized) throw new Error(\"Call init() first\");\n this.requestedVerifier = verifier;\n this.loginHint = loginHint;\n return this.ethereum.enable();\n }\n\n logout(): Promise {\n return new Promise((resolve, reject) => {\n if (!this.isLoggedIn) {\n reject(new Error(\"User has not logged in yet\"));\n return;\n }\n\n const logOutStream = this.communicationMux.getStream(\"logout\") as Substream;\n logOutStream.write({ name: \"logOut\" });\n const statusStream = this.communicationMux.getStream(\"status\") as Substream;\n const statusStreamHandler = (status) => {\n if (!status.loggedIn) {\n this.isLoggedIn = false;\n this.currentVerifier = \"\";\n this.requestedVerifier = \"\";\n resolve();\n } else reject(new Error(\"Some Error Occured\"));\n };\n handleStream(statusStream, \"data\", statusStreamHandler);\n });\n }\n\n async cleanUp(): Promise {\n if (this.isLoggedIn) {\n await this.logout();\n }\n this.clearInit();\n }\n\n clearInit(): void {\n function isElement(element: unknown) {\n return element instanceof Element || element instanceof HTMLDocument;\n }\n if (isElement(this.styleLink) && window.document.body.contains(this.styleLink)) {\n this.styleLink.remove();\n this.styleLink = undefined;\n }\n if (isElement(this.torusIframe) && window.document.body.contains(this.torusIframe)) {\n this.torusIframe.remove();\n this.torusIframe = undefined;\n }\n if (isElement(this.torusAlertContainer) && window.document.body.contains(this.torusAlertContainer)) {\n this.torusAlert = undefined;\n this.torusAlertContainer.remove();\n this.torusAlertContainer = undefined;\n }\n this.isInitialized = false;\n }\n\n hideTorusButton(): void {\n this.torusWidgetVisibility = false;\n this._sendWidgetVisibilityStatus(false);\n this._displayIframe();\n }\n\n showTorusButton(): void {\n this.torusWidgetVisibility = true;\n this._sendWidgetVisibilityStatus(true);\n this._displayIframe();\n }\n\n setProvider({ host = \"mainnet\", chainId = null, networkName = \"\", ...rest } = {}): Promise {\n return new Promise((resolve, reject) => {\n const providerChangeStream = this.communicationMux.getStream(\"provider_change\") as Substream;\n const handler = (chunk) => {\n const { err, success } = chunk.data;\n log.info(chunk);\n if (err) {\n reject(err);\n } else if (success) {\n resolve();\n } else reject(new Error(\"some error occured\"));\n };\n handleStream(providerChangeStream, \"data\", handler);\n const preopenInstanceId = getPreopenInstanceId();\n this._handleWindow(preopenInstanceId, {\n target: \"_blank\",\n features: FEATURES_PROVIDER_CHANGE_WINDOW,\n });\n providerChangeStream.write({\n name: \"show_provider_change\",\n data: {\n network: {\n host,\n chainId,\n networkName,\n ...rest,\n },\n preopenInstanceId,\n override: false,\n },\n });\n });\n }\n\n showWallet(path: WALLET_PATH, params: Record = {}): void {\n const showWalletStream = this.communicationMux.getStream(\"show_wallet\") as Substream;\n const finalPath = path ? `/${path}` : \"\";\n showWalletStream.write({ name: \"show_wallet\", data: { path: finalPath } });\n\n const showWalletHandler = (chunk) => {\n if (chunk.name === \"show_wallet_instance\") {\n // Let the error propogate up (hence, no try catch)\n const { instanceId } = chunk.data;\n const finalUrl = new URL(`${this.torusUrl}/wallet${finalPath}`);\n // Using URL constructor to prevent js injection and allow parameter validation.!\n finalUrl.searchParams.append(\"integrity\", \"true\");\n finalUrl.searchParams.append(\"instanceId\", instanceId);\n Object.keys(params).forEach((x) => {\n finalUrl.searchParams.append(x, params[x]);\n });\n if (this.dappStorageKey) {\n finalUrl.hash = `#dappStorageKey=${this.dappStorageKey}`;\n }\n const walletWindow = new PopupHandler({ url: finalUrl, features: FEATURES_DEFAULT_WALLET_WINDOW });\n walletWindow.open();\n }\n };\n\n handleStream(showWalletStream, \"data\", showWalletHandler);\n }\n\n async getPublicAddress({ verifier, verifierId, isExtended = false }: VerifierArgs): Promise {\n if (!configuration.supportedVerifierList.includes(verifier) || !WALLET_OPENLOGIN_VERIFIER_MAP[verifier]) throw new Error(\"Unsupported verifier\");\n const nodeDetails = await this.nodeDetailManager.getNodeDetails({ verifier, verifierId });\n const endpoints = nodeDetails.torusNodeEndpoints;\n const torusNodePubs = nodeDetails.torusNodePub;\n const walletVerifier = verifier;\n const openloginVerifier = WALLET_OPENLOGIN_VERIFIER_MAP[verifier];\n try {\n const existingV1User = await this.torusJs.getUserTypeAndAddress(endpoints, torusNodePubs, { verifier: walletVerifier, verifierId });\n if (existingV1User.typeOfUser === \"v1\") {\n if (!isExtended) return existingV1User.address;\n return existingV1User;\n }\n // we don't support v2 users with v1 verifiers so get or assign the key for v2 user on v2 `verifier`\n const v2User = await this.torusJs.getUserTypeAndAddress(endpoints, torusNodePubs, { verifier: openloginVerifier, verifierId }, true);\n if (!isExtended) return v2User.address;\n return v2User;\n } catch (error) {\n if (error?.message.includes(\"Verifier + VerifierID has not yet been assigned\")) {\n // if user doesn't have key then assign it with v2 verifier\n const newV2User = await this.torusJs.getUserTypeAndAddress(endpoints, torusNodePubs, { verifier: openloginVerifier, verifierId }, true);\n if (!isExtended) return newV2User.address;\n return newV2User;\n }\n throw error;\n }\n }\n\n getUserInfo(message: string): Promise {\n return new Promise((resolve, reject) => {\n if (this.isLoggedIn) {\n const userInfoAccessStream = this.communicationMux.getStream(\"user_info_access\") as Substream;\n userInfoAccessStream.write({ name: \"user_info_access_request\" });\n const userInfoAccessHandler = (chunk) => {\n const {\n name,\n data: { approved, payload, rejected, newRequest },\n } = chunk;\n if (name === \"user_info_access_response\") {\n if (approved) {\n resolve(payload);\n } else if (rejected) {\n reject(new Error(\"User rejected the request\"));\n } else if (newRequest) {\n const userInfoStream = this.communicationMux.getStream(\"user_info\") as Substream;\n const userInfoHandler = (handlerChunk) => {\n if (handlerChunk.name === \"user_info_response\") {\n if (handlerChunk.data.approved) {\n resolve(handlerChunk.data.payload);\n } else {\n reject(new Error(\"User rejected the request\"));\n }\n }\n };\n handleStream(userInfoStream, \"data\", userInfoHandler);\n const preopenInstanceId = getPreopenInstanceId();\n this._handleWindow(preopenInstanceId, {\n target: \"_blank\",\n features: FEATURES_PROVIDER_CHANGE_WINDOW,\n });\n userInfoStream.write({ name: \"user_info_request\", data: { message, preopenInstanceId } });\n }\n }\n };\n handleStream(userInfoAccessStream, \"data\", userInfoAccessHandler);\n } else reject(new Error(\"User has not logged in yet\"));\n });\n }\n\n initiateTopup(provider: PAYMENT_PROVIDER_TYPE, params: PaymentParams): Promise {\n return new Promise((resolve, reject) => {\n if (this.isInitialized) {\n const { errors, isValid } = validatePaymentProvider(provider, params);\n if (!isValid) {\n reject(new Error(JSON.stringify(errors)));\n return;\n }\n const topupStream = this.communicationMux.getStream(\"topup\") as Substream;\n const topupHandler = (chunk) => {\n if (chunk.name === \"topup_response\") {\n if (chunk.data.success) {\n resolve(chunk.data.success);\n } else {\n reject(new Error(chunk.data.error));\n }\n }\n };\n handleStream(topupStream, \"data\", topupHandler);\n const preopenInstanceId = getPreopenInstanceId();\n this._handleWindow(preopenInstanceId);\n topupStream.write({ name: \"topup_request\", data: { provider, params, preopenInstanceId } });\n } else reject(new Error(\"Torus is not initialized yet\"));\n });\n }\n\n async loginWithPrivateKey(loginParams: { privateKey: string; userInfo: Omit }): Promise {\n const { privateKey, userInfo } = loginParams;\n return new Promise((resolve, reject) => {\n if (this.isInitialized) {\n if (Buffer.from(privateKey, \"hex\").length !== 32) {\n reject(new Error(\"Invalid private key, Please provide a 32 byte valid secp25k1 private key\"));\n return;\n }\n const loginPrivKeyStream = this.communicationMux.getStream(\"login_with_private_key\") as Substream;\n const loginHandler = (chunk) => {\n if (chunk.name === \"login_with_private_key_response\") {\n if (chunk.data.success) {\n resolve(chunk.data.success);\n } else {\n reject(new Error(chunk.data.error));\n }\n }\n };\n handleStream(loginPrivKeyStream, \"data\", loginHandler);\n loginPrivKeyStream.write({ name: \"login_with_private_key_request\", data: { privateKey, userInfo } });\n } else reject(new Error(\"Torus is not initialized yet\"));\n });\n }\n\n async showWalletConnectScanner(): Promise {\n if (!this.useWalletConnect) throw new Error(\"Set `useWalletConnect` as true in init function options to use wallet connect scanner\");\n return new Promise((resolve, reject) => {\n if (this.isLoggedIn) {\n const walletConnectStream = this.communicationMux.getStream(\"wallet_connect_stream\") as Substream;\n const walletConnectHandler = (chunk) => {\n if (chunk.name === \"wallet_connect_stream_res\") {\n if (chunk.data.success) {\n resolve(chunk.data.success);\n } else {\n reject(new Error(chunk.data.error));\n }\n this._displayIframe();\n }\n };\n handleStream(walletConnectStream, \"data\", walletConnectHandler);\n walletConnectStream.write({ name: \"wallet_connect_stream_req\" });\n this._displayIframe(true);\n } else reject(new Error(\"User has not logged in yet\"));\n });\n }\n\n protected _handleWindow(preopenInstanceId: string, { url, target, features }: { url?: string; target?: string; features?: string } = {}): void {\n if (preopenInstanceId) {\n const windowStream = this.communicationMux.getStream(\"window\") as Substream;\n const finalUrl = new URL(url || `${this.torusUrl}/redirect?preopenInstanceId=${preopenInstanceId}`);\n if (this.dappStorageKey) {\n // If multiple instances, it returns the first one\n if (finalUrl.hash) finalUrl.hash += `&dappStorageKey=${this.dappStorageKey}`;\n else finalUrl.hash = `#dappStorageKey=${this.dappStorageKey}`;\n }\n const handledWindow = new PopupHandler({ url: finalUrl, target, features });\n handledWindow.open();\n if (!handledWindow.window) {\n this._createPopupBlockAlert(preopenInstanceId, finalUrl.href);\n return;\n }\n windowStream.write({\n name: \"opened_window\",\n data: {\n preopenInstanceId,\n },\n });\n const closeHandler = ({ preopenInstanceId: receivedId, close }) => {\n if (receivedId === preopenInstanceId && close) {\n handledWindow.close();\n windowStream.removeListener(\"data\", closeHandler);\n }\n };\n windowStream.on(\"data\", closeHandler);\n handledWindow.once(\"close\", () => {\n windowStream.write({\n data: {\n preopenInstanceId,\n closed: true,\n },\n });\n windowStream.removeListener(\"data\", closeHandler);\n });\n }\n }\n\n protected _setEmbedWhiteLabel(element: HTMLElement): void {\n // Set whitelabel\n const { theme } = this.whiteLabel || {};\n if (theme) {\n const { isDark = false, colors = {} } = theme;\n if (isDark) element.classList.add(\"torus-dark\");\n\n if (colors.torusBrand1) element.style.setProperty(\"--torus-brand-1\", colors.torusBrand1);\n if (colors.torusGray2) element.style.setProperty(\"--torus-gray-2\", colors.torusGray2);\n }\n }\n\n protected _getLogoUrl(): string {\n let logoUrl = `${this.torusUrl}/images/torus_icon-blue.svg`;\n if (this.whiteLabel?.theme?.isDark) {\n logoUrl = this.whiteLabel?.logoLight || logoUrl;\n } else {\n logoUrl = this.whiteLabel?.logoDark || logoUrl;\n }\n\n return logoUrl;\n }\n\n protected _sendWidgetVisibilityStatus(status: boolean): void {\n const torusWidgetVisibilityStream = this.communicationMux.getStream(\"torus-widget-visibility\") as Substream;\n torusWidgetVisibilityStream.write({\n data: status,\n });\n }\n\n protected _displayIframe(isFull = false): void {\n const style: Partial = {};\n // set phase\n if (!isFull) {\n style.display = this.torusWidgetVisibility ? \"block\" : \"none\";\n style.height = \"70px\";\n style.width = \"70px\";\n switch (this.buttonPosition) {\n case BUTTON_POSITION.TOP_LEFT:\n style.top = \"0px\";\n style.left = \"0px\";\n style.right = \"auto\";\n style.bottom = \"auto\";\n break;\n case BUTTON_POSITION.TOP_RIGHT:\n style.top = \"0px\";\n style.right = \"0px\";\n style.left = \"auto\";\n style.bottom = \"auto\";\n break;\n case BUTTON_POSITION.BOTTOM_RIGHT:\n style.bottom = \"0px\";\n style.right = \"0px\";\n style.top = \"auto\";\n style.left = \"auto\";\n break;\n case BUTTON_POSITION.BOTTOM_LEFT:\n default:\n style.bottom = \"0px\";\n style.left = \"0px\";\n style.top = \"auto\";\n style.right = \"auto\";\n break;\n }\n } else {\n style.display = \"block\";\n style.width = \"100%\";\n style.height = \"100%\";\n style.top = \"0px\";\n style.right = \"0px\";\n style.left = \"0px\";\n style.bottom = \"0px\";\n }\n Object.assign(this.torusIframe.style, style);\n this.isIframeFullScreen = isFull;\n }\n\n protected _setupWeb3(): void {\n log.info(\"setupWeb3 running\");\n // setup background connection\n const metamaskStream = new BasePostMessageStream({\n name: \"embed_metamask\",\n target: \"iframe_metamask\",\n targetWindow: this.torusIframe.contentWindow,\n targetOrigin: new URL(this.torusUrl).origin,\n });\n\n // Due to compatibility reasons, we should not set up multiplexing on window.metamaskstream\n // because the MetamaskInpageProvider also attempts to do so.\n // We create another LocalMessageDuplexStream for communication between dapp <> iframe\n const communicationStream = new BasePostMessageStream({\n name: \"embed_comm\",\n target: \"iframe_comm\",\n targetWindow: this.torusIframe.contentWindow,\n targetOrigin: new URL(this.torusUrl).origin,\n });\n\n // Backward compatibility with Gotchi :)\n // window.metamaskStream = this.communicationStream\n\n // compose the inpage provider\n const inpageProvider = new TorusInpageProvider(metamaskStream);\n\n // detect eth_requestAccounts and pipe to enable for now\n const detectAccountRequestPrototypeModifier = (m) => {\n const originalMethod = inpageProvider[m];\n inpageProvider[m] = function providerFunc(method, ...args) {\n if (method && method === \"eth_requestAccounts\") {\n return inpageProvider.enable();\n }\n return originalMethod.apply(this, [method, ...args]);\n };\n };\n\n detectAccountRequestPrototypeModifier(\"send\");\n detectAccountRequestPrototypeModifier(\"sendAsync\");\n\n inpageProvider.enable = () => {\n return new Promise((resolve, reject) => {\n // If user is already logged in, we assume they have given access to the website\n inpageProvider.sendAsync({ jsonrpc: \"2.0\", id: getPreopenInstanceId(), method: \"eth_requestAccounts\", params: [] }, (err, response) => {\n const { result: res } = (response as { result: unknown }) || {};\n if (err) {\n setTimeout(() => {\n reject(err);\n }, 50);\n } else if (Array.isArray(res) && res.length > 0) {\n // If user is already rehydrated, resolve this\n // else wait for something to be written to status stream\n const handleLoginCb = () => {\n if (this.requestedVerifier !== \"\" && this.currentVerifier !== this.requestedVerifier) {\n const { requestedVerifier } = this;\n // eslint-disable-next-line promise/no-promise-in-callback\n this.logout()\n // eslint-disable-next-line promise/always-return\n .then((_) => {\n this.requestedVerifier = requestedVerifier;\n this._showLoginPopup(true, resolve, reject);\n })\n .catch((error) => reject(error));\n } else {\n resolve(res);\n }\n };\n if (this.isLoggedIn) {\n handleLoginCb();\n } else {\n this.isLoginCallback = handleLoginCb;\n }\n } else {\n // set up listener for login\n this._showLoginPopup(true, resolve, reject);\n }\n });\n });\n };\n\n inpageProvider.tryPreopenHandle = (payload: UnvalidatedJsonRpcRequest | UnvalidatedJsonRpcRequest[], cb: (...args: unknown[]) => void) => {\n const _payload = payload;\n if (!Array.isArray(_payload) && UNSAFE_METHODS.includes(_payload.method)) {\n const preopenInstanceId = getPreopenInstanceId();\n this._handleWindow(preopenInstanceId, {\n target: \"_blank\",\n features: FEATURES_CONFIRM_WINDOW,\n });\n _payload.preopenInstanceId = preopenInstanceId;\n }\n inpageProvider._rpcEngine.handle(_payload as JRPCRequest[], cb);\n };\n\n // Work around for web3@1.0 deleting the bound `sendAsync` but not the unbound\n // `sendAsync` method on the prototype, causing `this` reference issues with drizzle\n const proxiedInpageProvider = new Proxy(inpageProvider, {\n // straight up lie that we deleted the property so that it doesnt\n // throw an error in strict mode\n deleteProperty: () => true,\n });\n\n this.ethereum = proxiedInpageProvider;\n const communicationMux = setupMultiplex(communicationStream);\n\n this.communicationMux = communicationMux;\n\n const windowStream = communicationMux.getStream(\"window\") as Substream;\n windowStream.on(\"data\", (chunk) => {\n if (chunk.name === \"create_window\") {\n // url is the url we need to open\n // we can pass the final url upfront so that it removes the step of redirecting to /redirect and waiting for finalUrl\n this._createPopupBlockAlert(chunk.data.preopenInstanceId, chunk.data.url);\n }\n });\n\n // show torus widget if button clicked\n const widgetStream = communicationMux.getStream(\"widget\") as Substream;\n widgetStream.on(\"data\", (chunk) => {\n const { data } = chunk;\n this._displayIframe(data);\n });\n\n // Show torus button if wallet has been hydrated/detected\n const statusStream = communicationMux.getStream(\"status\") as Substream;\n statusStream.on(\"data\", (status) => {\n // login\n if (status.loggedIn) {\n this.isLoggedIn = status.loggedIn;\n this.currentVerifier = status.verifier;\n } // logout\n else this._displayIframe();\n if (this.isLoginCallback) {\n this.isLoginCallback();\n delete this.isLoginCallback;\n }\n });\n\n this.provider = proxiedInpageProvider;\n\n if (this.provider.shouldSendMetadata) sendSiteMetadata(this.provider._rpcEngine);\n inpageProvider._initializeState();\n log.debug(\"Torus - injected provider\");\n }\n\n protected _showLoginPopup(calledFromEmbed: boolean, resolve: (a: string[]) => void, reject: (err: Error) => void): void {\n const loginHandler = (data) => {\n const { err, selectedAddress } = data;\n if (err) {\n log.error(err);\n if (reject) reject(err);\n }\n // returns an array (cause accounts expects it)\n else if (resolve) resolve([selectedAddress]);\n if (this.isIframeFullScreen) this._displayIframe();\n };\n const oauthStream = this.communicationMux.getStream(\"oauth\") as Substream;\n if (!this.requestedVerifier) {\n this._displayIframe(true);\n handleStream(oauthStream, \"data\", loginHandler);\n oauthStream.write({ name: \"oauth_modal\", data: { calledFromEmbed } });\n } else {\n handleStream(oauthStream, \"data\", loginHandler);\n const preopenInstanceId = getPreopenInstanceId();\n this._handleWindow(preopenInstanceId);\n oauthStream.write({\n name: \"oauth\",\n data: { calledFromEmbed, verifier: this.requestedVerifier, preopenInstanceId, login_hint: this.loginHint },\n });\n }\n }\n\n protected _createPopupBlockAlert(preopenInstanceId: string, url: string): void {\n const logoUrl = this._getLogoUrl();\n const torusAlert = htmlToElement(\n '
    ' +\n `
    ` +\n \"
    \" +\n `

    ${this.embedTranslations.actionRequired}

    ` +\n `

    ${this.embedTranslations.pendingAction}

    ` +\n \"
    \" +\n \"
    \"\n );\n\n const successAlert = htmlToElement(`
    `);\n const btnContainer = htmlToElement('
    ');\n btnContainer.appendChild(successAlert);\n torusAlert.appendChild(btnContainer);\n const bindOnLoad = () => {\n successAlert.addEventListener(\"click\", () => {\n this._handleWindow(preopenInstanceId, {\n url,\n target: \"_blank\",\n features: FEATURES_CONFIRM_WINDOW,\n });\n torusAlert.remove();\n\n if (this.torusAlertContainer.children.length === 0) this.torusAlertContainer.style.display = \"none\";\n });\n };\n\n this._setEmbedWhiteLabel(torusAlert);\n\n const attachOnLoad = () => {\n this.torusAlertContainer.style.display = \"block\";\n this.torusAlertContainer.appendChild(torusAlert);\n };\n\n runOnLoad(attachOnLoad);\n runOnLoad(bindOnLoad);\n }\n}\n\nexport default Torus;\n","export const ETH_TOKEN_ADDRESSES = {\n USDT: '0xdac17f958d2ee523a2206206994597c13d831ec7',\n USDC: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n DAI: '0x6b175474e89094c44da98b954eedeac495271d0f',\n};\n\nexport const BSC_TOKEN_ADDRESSES = {\n USDC: '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d',\n BUSD: '0xe9e7cea3dedca5984780bafc599bd69add087d56',\n USDT: '0x55d398326f99059ff775485246999027b3197955',\n};\n\nexport const AVAX_TOKEN_ADDRESSES = {\n USDC: '0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e',\n USDT: '0xc7198437980c041c805a1edcba50c1ce5db95118',\n};\n\nexport const FTM_TOKEN_ADDRESSES = {\n USDC: '0x04068da6c83afcfa0e13ba15a6696662335d5b75',\n DAI: '0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e',\n};\n\nexport const MATIC_TOKEN_ADDRESSES = {\n USDC: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n USDT: '0xc2132d05d31c914a87c6611c10748aeb04b58e8f',\n};\n\nexport const SOL_TOKEN_ADDRESSES = {\n USDT: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',\n USDC: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',\n};\n","const ABI = [\n {\n constant: false,\n inputs: [\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'value',\n type: 'uint256',\n },\n ],\n name: 'transfer',\n outputs: [\n {\n name: '',\n type: 'bool',\n },\n ],\n type: 'function',\n },\n];\n\nexport default ABI;\n","import { useState, useEffect } from 'react';\nimport Web3 from 'web3';\nimport Web3Modal from 'web3modal';\nimport { useConnection, useWallet } from '@solana/wallet-adapter-react';\nimport { useWalletModal } from '@solana/wallet-adapter-react-ui';\nimport * as solanaWeb3 from '@solana/web3.js';\nimport { getOrCreateAssociatedTokenAccount, TOKEN_PROGRAM_ID, createTransferInstruction } from '@solana/spl-token';\nimport toast from 'react-hot-toast';\n\nimport { isEVMNetwork } from 'src/utils/blockchain';\nimport { EVM_CHAIN_IDS, SUPPORTED_TOKENS } from 'src/utils/constants';\nimport { createProviderOptions } from 'src/utils/providers';\nimport * as tokenAddresses from 'src/utils/tokenAddresses';\nimport EVM_TOKEN_ABI from 'src/utils/evmTokenABI';\nimport Button from 'src/components/button/Button';\n\nconst PayWithWalletBtn = ({ network, token, amount, toAddress, onComplete }) => {\n // Solana wallet\n const { connection } = useConnection();\n const {\n publicKey: solPublicKey,\n connected: solConnected,\n wallet,\n disconnect,\n sendTransaction,\n signTransaction,\n } = useWallet();\n const { setVisible } = useWalletModal();\n // UI state\n const [isWalletConnected, setIsWalletConnected] = useState();\n // payment\n const [web3Account, setWeb3Account] = useState();\n const [web3, setWeb3] = useState();\n\n // remove cached connections\n useEffect(() => {\n if (!isWalletConnected) {\n disconnect();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (solConnected) {\n setWeb3Account(solPublicKey.toBase58());\n setIsWalletConnected(true);\n }\n }, [solConnected, solPublicKey]);\n\n useEffect(() => {\n if (wallet) {\n wallet.adapter.connect();\n }\n }, [wallet]);\n\n const onConnectClick = async () => {\n if (isEVMNetwork(network)) {\n const web3Modal = new Web3Modal({\n disableInjectedProvider: false,\n cacheProvider: false, // optional\n providerOptions: createProviderOptions(EVM_CHAIN_IDS[network]), // required\n });\n\n const provider = await web3Modal.connect();\n const web3 = new Web3(provider);\n const accounts = await web3.eth.getAccounts();\n\n web3.currentProvider.on('accountsChanged', (account) => setWeb3Account(account));\n web3.currentProvider.on('chainChanged', async (currentChainId) => {\n const chainId = EVM_CHAIN_IDS[network];\n if (currentChainId !== chainId) {\n try {\n await web3.currentProvider.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: Web3.utils.toHex(chainId) }],\n });\n } catch (switchError) {\n // This error code indicates that the chain has not been added to MetaMask.\n if (switchError.code === 4902) {\n toast(`The ${network} network is not in your wallet. Please add it and try again.`);\n }\n }\n }\n });\n\n setWeb3(web3);\n setWeb3Account(accounts[0]);\n setIsWalletConnected(true);\n }\n\n if (network === 'SOL') {\n setVisible(true);\n }\n };\n\n const onPayClick = async (e) => {\n e.preventDefault();\n if (isEVMNetwork(network) && web3 && web3Account) {\n // switch to the right network\n const currentChainId = await web3.eth.getChainId();\n if (EVM_CHAIN_IDS[network] !== currentChainId) {\n toast.error(`You are connected to the wrong network.\\nPlease switch to the ${network} network`);\n try {\n await web3.currentProvider.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: Web3.utils.toHex(EVM_CHAIN_IDS[network]) }],\n });\n } catch (err) {}\n }\n if (EVM_CHAIN_IDS[network] !== currentChainId) {\n return;\n }\n if (token === SUPPORTED_TOKENS[network][0]) {\n web3.eth\n .sendTransaction({\n from: web3Account,\n to: toAddress,\n value: Web3.utils.toHex(Web3.utils.toWei(amount.toString(), 'ether')),\n })\n .on('transactionHash', () => {\n displaySuccessToastAndComplete();\n })\n .on('error', () => {\n displayError();\n });\n } else {\n const tokenAddress = tokenAddresses[`${network.toLowerCase()}TokenAddresses`][token];\n if (!tokenAddress) return;\n const contract = new web3.eth.Contract(EVM_TOKEN_ABI, tokenAddress);\n web3.eth\n .sendTransaction({\n from: web3Account,\n to: tokenAddress,\n data: contract.methods\n .transfer(toAddress, Web3.utils.toWei(amount.toString(), 'ether'))\n .encodeABI(),\n })\n .on('transactionHash', () => {\n displaySuccessToastAndComplete();\n })\n .on('error', () => {\n displayError();\n });\n }\n }\n\n if (network === 'SOL' && solPublicKey && connection) {\n if (token === 'SOL') {\n try {\n const transaction = new solanaWeb3.Transaction().add(\n solanaWeb3.SystemProgram.transfer({\n fromPubkey: solPublicKey,\n toPubkey: new solanaWeb3.PublicKey(toAddress),\n lamports: solanaWeb3.LAMPORTS_PER_SOL * amount,\n })\n );\n const txId = await sendTransaction(transaction, connection);\n const latestBlockHash = await connection.getLatestBlockhash();\n await connection.confirmTransaction({\n signature: txId,\n lastValidBlockHeight: latestBlockHash.lastValidBlockHeight,\n blockhash: latestBlockHash.blockhash,\n });\n displaySuccessToastAndComplete();\n } catch (error) {\n displayError();\n }\n } else {\n try {\n const tokenAddress = tokenAddresses.SOL_TOKEN_ADDRESSES[token];\n if (!tokenAddress) return;\n\n const tokenPubKey = new solanaWeb3.PublicKey(tokenAddress);\n const fromTokenAccount = await getOrCreateAssociatedTokenAccount(\n connection,\n solPublicKey,\n tokenPubKey,\n solPublicKey,\n signTransaction\n );\n\n const toTokenAccount = await getOrCreateAssociatedTokenAccount(\n connection,\n solPublicKey,\n tokenPubKey,\n new solanaWeb3.PublicKey(toAddress),\n signTransaction\n );\n\n const transaction = new solanaWeb3.Transaction().add(\n createTransferInstruction(\n fromTokenAccount.address, // source\n toTokenAccount.address, // dest\n solPublicKey,\n parseInt(amount * Math.pow(10, 6)),\n [],\n TOKEN_PROGRAM_ID\n )\n );\n\n const latestBlockHash = await connection.getLatestBlockhash();\n transaction.recentBlockhash = latestBlockHash.blockhash;\n transaction.feePayer = solPublicKey;\n const signed = await signTransaction(transaction);\n const signature = await connection.sendRawTransaction(signed.serialize());\n await connection.confirmTransaction({\n signature,\n lastValidBlockHeight: latestBlockHash.lastValidBlockHeight,\n blockhash: latestBlockHash.blockhash,\n });\n displaySuccessToastAndComplete();\n } catch (error) {\n displayError();\n }\n }\n }\n };\n\n const displayError = () => {\n toast.error('Could not send the transaction... Please try again');\n };\n\n const displaySuccessToastAndComplete = () => {\n toast.success(\n 'Thank you for the deposit. Your transaction has been sent successfully and will appear in your account soon!'\n );\n onComplete();\n };\n\n return (\n
    \n {isWalletConnected ? (\n
    \n );\n};\n\nexport default PayWithWalletBtn;\n","import WalletConnectProvider from '@walletconnect/web3-provider';\nimport CoinbaseWalletSDK from '@coinbase/wallet-sdk';\nimport Fortmatic from 'fortmatic';\nimport Torus from '@toruslabs/torus-embed';\n\nexport const createProviderOptions = (chainId) => ({\n walletconnect: {\n package: WalletConnectProvider, // required\n options: {\n infuraId: process.env.REACT_APP_INFURA_ID, // required\n },\n },\n\n coinbasewallet: {\n package: CoinbaseWalletSDK, // Required\n options: {\n appName: 'Payonix', // Required\n infuraId: process.env.REACT_APP_INFURA_ID, // Required\n chainId: chainId, // Optional. It defaults to 1 if not provided\n },\n },\n\n fortmatic: {\n package: Fortmatic, // required\n options: {\n key: process.env.REACT_APP_FORTMATIC_KEY, // required\n },\n },\n\n torus: {\n package: Torus, // required\n options: {\n networkParams: {\n chainId: chainId,\n networkId: chainId,\n },\n },\n },\n\n binancechainwallet: {\n package: true,\n },\n});\n","const Select = ({ value, onChange, options, className = '', fieldName, label }) => (\n \n);\n\nexport default Select;\n","import { useEffect, useRef, useState } from 'react';\nimport toast from 'react-hot-toast';\nimport DownIcon from 'src/icons/down';\nimport API from 'src/utils/api';\nimport { NETWORK_NAME_LABELS, SUPPORTED_TOKENS } from 'src/utils/constants';\nimport Modal from 'src/components/modal/Modal';\nimport QRCode from 'qrcode';\nimport CopyIcon from 'src/icons/copy';\nimport WarningIcon from 'src/icons/warning';\nimport Button from 'src/components/button/Button';\nimport Input from 'src/components/input/Input';\nimport PayWithWalletBtn from 'src/components/pay-with-wallet-btn/PayWithWalletBtn';\nimport Select from '../select/Select';\nimport { copyToClipboard } from 'src/utils/strings';\n\nconst networks = Object.keys(SUPPORTED_TOKENS);\n\nconst DepositModal = ({ isOpen, setIsOpen, addresses }) => {\n const [walletDepositSelected, setWalletDepositSelected] = useState(false);\n const [selectedToken, setSelectedToken] = useState();\n const [selectedNetwork, setSelectedNetwork] = useState();\n const [accounts, setAccounts] = useState(addresses);\n const [address, setAddress] = useState();\n const [qrCodeURL, setQrCodeURL] = useState();\n const [tokenAmount, setTokenAmount] = useState();\n const fetchingAccounts = useRef(false);\n\n useEffect(() => {\n if (addresses) return;\n if (fetchingAccounts.current) return; // make sure to run it only at first render\n\n const fetchAccounts = async () => {\n fetchingAccounts.current = true;\n try {\n const response = await API.get('/accounts/list');\n setAccounts(response.data.accounts);\n fetchingAccounts.current = false;\n } catch (error) {\n toast.error('Failed to fetch, please try again');\n fetchingAccounts.current = false;\n }\n };\n\n fetchAccounts();\n }, [addresses]);\n\n useEffect(() => {\n if (address) {\n QRCode.toDataURL(address, (err, url) => {\n if (!err && url) {\n setQrCodeURL(url);\n }\n });\n }\n }, [address]);\n\n useEffect(() => {\n if (!selectedNetwork || !accounts?.length) return;\n const account = accounts.find((a) => a.network === selectedNetwork);\n setAddress(account.address);\n }, [accounts, selectedNetwork]);\n\n const onCopyAddressClick = () => {\n copyToClipboard(address);\n };\n\n const onBackBtnClick = () => {\n if (walletDepositSelected) return setWalletDepositSelected(false);\n if (selectedNetwork) return setSelectedNetwork(null);\n };\n\n const onSeeFullTokensListClick = () => {\n toast(\n (t) => (\n

    \n You selected the about to withdraw {NETWORK_NAME_LABELS[selectedNetwork]} network. Here is the full\n list of the tokens we support:\n
    \n
    \n

      \n {SUPPORTED_TOKENS[selectedNetwork].map((token, i) => (\n
    • - {token}
    • \n ))}\n
    \n
    \n
    \n
    \n
    \n

    \n ),\n { duration: 100000 }\n );\n };\n\n const onWalletDepositClick = () => {\n setWalletDepositSelected(true);\n setSelectedToken(SUPPORTED_TOKENS[selectedNetwork][0]);\n };\n\n const onSelectTokenChange = (e) => {\n setSelectedToken(e.target.value);\n };\n\n return (\n \n {walletDepositSelected && (\n
    \n \n Connect a wallet that supports the {NETWORK_NAME_LABELS[selectedNetwork]} network and select a\n token and an amount to deposit.\n \n \n \n {selectedToken && tokenAmount && (\n setIsOpen(false)}\n />\n )}\n
    \n )}\n {!walletDepositSelected && selectedNetwork && (\n
    \n \n Send crypto to the following address on the{' '}\n {NETWORK_NAME_LABELS[selectedNetwork]} network and it will\n appear in your account in a few minutes\n \n {qrCodeURL && \"address}\n \n {address} \n \n \n \n \n

    \n \n Only send tokens that are accepted by our platform, otherwise you won't have access to it. See\n the full list of supported tokens for the {NETWORK_NAME_LABELS[selectedNetwork]} network{' '}\n \n .\n

    \n {selectedNetwork !== 'BTC' && (\n \n )}\n
    \n )}\n {!walletDepositSelected && !selectedNetwork && (\n <>\n Select network\n {networks.map((network, i) => (\n setSelectedNetwork(network)}\n >\n \n {NETWORK_NAME_LABELS[network]}\n \n \n ))}\n \n )}\n \n );\n};\n\nexport default DepositModal;\n","var _circle, _path, _path2, _path3, _path4, _path5, _path6, _ellipse, _ellipse2, _ellipse3, _ellipse4, _path7, _path8, _path9, _path10, _path11, _rect, _rect2, _circle2, _path12, _polygon, _path13, _path14, _ellipse5, _circle3, _polygon2, _rect3, _rect4, _rect5, _rect6, _rect7, _rect8, _rect9, _rect10, _rect11, _rect12, _rect13, _rect14, _rect15, _circle4, _rect16, _rect17, _ellipse6, _ellipse7, _circle5, _circle6, _path15, _ellipse8, _ellipse9, _path16;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgErrorIllustration(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n \"data-name\": \"Layer 1\",\n width: 1119.60911,\n height: 699,\n viewBox: \"0 0 1119.60911 699\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"server down\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 292.60911,\n cy: 213,\n r: 213,\n fill: \"#f2f2f2\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.39089,151.64237c0,77.49789,48.6181,140.20819,108.70073,140.20819\",\n transform: \"translate(-31.39089 -100.5)\",\n fill: \"#2f2e41\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M140.09162,291.85056c0-78.36865,54.255-141.78356,121.30372-141.78356\",\n transform: \"translate(-31.39089 -100.5)\",\n fill: \"#e41689\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M70.77521,158.66768c0,73.61476,31.00285,133.18288,69.31641,133.18288\",\n transform: \"translate(-31.39089 -100.5)\",\n fill: \"#e41689\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M140.09162,291.85056c0-100.13772,62.7103-181.16788,140.20819-181.16788\",\n transform: \"translate(-31.39089 -100.5)\",\n fill: \"#2f2e41\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.22379,292.83905s15.41555-.47479,20.06141-3.783,23.713-7.2585,24.86553-1.95278,23.16671,26.38821,5.76263,26.5286-40.43935-2.711-45.07627-5.53549S117.22379,292.83905,117.22379,292.83905Z\",\n transform: \"translate(-31.39089 -100.5)\",\n fill: \"#a8a8a8\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M168.224,311.78489c-17.40408.14042-40.43933-2.71094-45.07626-5.53548-3.53126-2.151-4.93843-9.86945-5.40926-13.43043-.32607.014-.51463.02-.51463.02s.97638,12.43276,5.61331,15.2573,27.67217,5.67589,45.07626,5.53547c5.02386-.04052,6.7592-1.82793,6.66391-4.47526C173.87935,310.756,171.96329,311.75474,168.224,311.78489Z\",\n transform: \"translate(-31.39089 -100.5)\",\n opacity: 0.2\n })), _ellipse || (_ellipse = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 198.60911,\n cy: 424.5,\n rx: 187,\n ry: 25.43993,\n fill: \"#3f3d56\"\n })), _ellipse2 || (_ellipse2 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 198.60911,\n cy: 424.5,\n rx: 157,\n ry: 21.35866,\n opacity: 0.1\n })), _ellipse3 || (_ellipse3 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 836.60911,\n cy: 660.5,\n rx: 283,\n ry: 38.5,\n fill: \"#3f3d56\"\n })), _ellipse4 || (_ellipse4 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 310.60911,\n cy: 645.5,\n rx: 170,\n ry: 23.12721,\n fill: \"#3f3d56\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M494,726.5c90,23,263-30,282-90\",\n transform: \"translate(-31.39089 -100.5)\",\n fill: \"none\",\n stroke: \"#2f2e41\",\n strokeMiterlimit: 10,\n strokeWidth: 2\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M341,359.5s130-36,138,80-107,149-17,172\",\n transform: \"translate(-31.39089 -100.5)\",\n fill: \"none\",\n stroke: \"#2f2e41\",\n strokeMiterlimit: 10,\n strokeWidth: 2\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M215.40233,637.78332s39.0723-10.82,41.47675,24.04449-32.15951,44.78287-5.10946,51.69566\",\n transform: \"translate(-31.39089 -100.5)\",\n fill: \"none\",\n stroke: \"#2f2e41\",\n strokeMiterlimit: 10,\n strokeWidth: 2\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M810.09554,663.73988,802.218,714.03505s-38.78182,20.60284-11.51335,21.20881,155.73324,0,155.73324,0,24.84461,0-14.54318-21.81478l-7.87756-52.719Z\",\n transform: \"translate(-31.39089 -100.5)\",\n fill: \"#2f2e41\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M785.21906,734.69812c6.193-5.51039,16.9989-11.252,16.9989-11.252l7.87756-50.2952,113.9216.10717,7.87756,49.582c9.185,5.08711,14.8749,8.987,18.20362,11.97818,5.05882-1.15422,10.58716-5.44353-18.20362-21.38921l-7.87756-52.719-113.9216,3.02983L802.218,714.03506S769.62985,731.34968,785.21906,734.69812Z\",\n transform: \"translate(-31.39089 -100.5)\",\n opacity: 0.1\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 578.43291,\n y: 212.68859,\n width: 513.25314,\n height: 357.51989,\n rx: 18.04568,\n fill: \"#2f2e41\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 595.70294,\n y: 231.77652,\n width: 478.71308,\n height: 267.83694,\n fill: \"#3f3d56\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 835.05948,\n cy: 223.29299,\n r: 3.02983,\n fill: \"#f2f2f2\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1123.07694,621.32226V652.6628a18.04341,18.04341,0,0,1-18.04568,18.04568H627.86949A18.04341,18.04341,0,0,1,609.8238,652.6628V621.32226Z\",\n transform: \"translate(-31.39089 -100.5)\",\n fill: \"#2f2e41\"\n })), _polygon || (_polygon = /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"968.978 667.466 968.978 673.526 642.968 673.526 642.968 668.678 643.417 667.466 651.452 645.651 962.312 645.651 968.978 667.466\",\n fill: \"#2f2e41\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1125.828,762.03359c-.59383,2.539-2.83591,5.21743-7.90178,7.75032-18.179,9.08949-55.1429-2.42386-55.1429-2.42386s-28.4804-4.84773-28.4804-17.573a22.72457,22.72457,0,0,1,2.49658-1.48459c7.64294-4.04351,32.98449-14.02122,77.9177.42248a18.73921,18.73921,0,0,1,8.54106,5.59715C1125.07908,756.45353,1126.50669,759.15715,1125.828,762.03359Z\",\n transform: \"translate(-31.39089 -100.5)\",\n fill: \"#2f2e41\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1125.828,762.03359c-22.251,8.526-42.0843,9.1622-62.43871-4.975-10.26507-7.12617-19.59089-8.88955-26.58979-8.75618,7.64294-4.04351,32.98449-14.02122,77.9177.42248a18.73921,18.73921,0,0,1,8.54106,5.59715C1125.07908,756.45353,1126.50669,759.15715,1125.828,762.03359Z\",\n transform: \"translate(-31.39089 -100.5)\",\n opacity: 0.1\n })), _ellipse5 || (_ellipse5 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 1066.53846,\n cy: 654.13477,\n rx: 7.87756,\n ry: 2.42386,\n fill: \"#f2f2f2\"\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 835.05948,\n cy: 545.66686,\n r: 11.51335,\n fill: \"#f2f2f2\"\n })), _polygon2 || (_polygon2 = /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"968.978 667.466 968.978 673.526 642.968 673.526 642.968 668.678 643.417 667.466 968.978 667.466\",\n opacity: 0.1\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 108.60911,\n y: 159,\n width: 208,\n height: 242,\n fill: \"#2f2e41\"\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 87.60911,\n y: 135,\n width: 250,\n height: 86,\n fill: \"#3f3d56\"\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 87.60911,\n y: 237,\n width: 250,\n height: 86,\n fill: \"#3f3d56\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 87.60911,\n y: 339,\n width: 250,\n height: 86,\n fill: \"#3f3d56\"\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 271.60911,\n y: 150,\n width: 16,\n height: 16,\n fill: \"#e41689\",\n opacity: 0.4\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 294.60911,\n y: 150,\n width: 16,\n height: 16,\n fill: \"#e41689\",\n opacity: 0.8\n })), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 317.60911,\n y: 150,\n width: 16,\n height: 16,\n fill: \"#e41689\"\n })), _rect10 || (_rect10 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 271.60911,\n y: 251,\n width: 16,\n height: 16,\n fill: \"#e41689\",\n opacity: 0.4\n })), _rect11 || (_rect11 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 294.60911,\n y: 251,\n width: 16,\n height: 16,\n fill: \"#e41689\",\n opacity: 0.8\n })), _rect12 || (_rect12 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 317.60911,\n y: 251,\n width: 16,\n height: 16,\n fill: \"#e41689\"\n })), _rect13 || (_rect13 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 271.60911,\n y: 352,\n width: 16,\n height: 16,\n fill: \"#e41689\",\n opacity: 0.4\n })), _rect14 || (_rect14 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 294.60911,\n y: 352,\n width: 16,\n height: 16,\n fill: \"#e41689\",\n opacity: 0.8\n })), _rect15 || (_rect15 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 317.60911,\n y: 352,\n width: 16,\n height: 16,\n fill: \"#e41689\"\n })), _circle4 || (_circle4 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 316.60911,\n cy: 538,\n r: 79,\n fill: \"#2f2e41\"\n })), _rect16 || (_rect16 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 280.60911,\n y: 600,\n width: 24,\n height: 43,\n fill: \"#2f2e41\"\n })), _rect17 || (_rect17 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 328.60911,\n y: 600,\n width: 24,\n height: 43,\n fill: \"#2f2e41\"\n })), _ellipse6 || (_ellipse6 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 300.60911,\n cy: 643.5,\n rx: 20,\n ry: 7.5,\n fill: \"#2f2e41\"\n })), _ellipse7 || (_ellipse7 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 348.60911,\n cy: 642.5,\n rx: 20,\n ry: 7.5,\n fill: \"#2f2e41\"\n })), _circle5 || (_circle5 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 318.60911,\n cy: 518,\n r: 27,\n fill: \"#fff\"\n })), _circle6 || (_circle6 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 318.60911,\n cy: 518,\n r: 9,\n fill: \"#3f3d56\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M271.36733,565.03228c-6.37889-28.56758,14.01185-57.43392,45.544-64.47477s62.2651,10.41,68.644,38.9776-14.51861,39.10379-46.05075,46.14464S277.74622,593.59986,271.36733,565.03228Z\",\n transform: \"translate(-31.39089 -100.5)\",\n fill: \"#e41689\"\n })), _ellipse8 || (_ellipse8 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 417.21511,\n cy: 611.34365,\n rx: 39.5,\n ry: 12.40027,\n transform: \"translate(-238.28665 112.98044) rotate(-23.17116)\",\n fill: \"#2f2e41\"\n })), _ellipse9 || (_ellipse9 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 269.21511,\n cy: 664.34365,\n rx: 39.5,\n ry: 12.40027,\n transform: \"translate(-271.07969 59.02084) rotate(-23.17116)\",\n fill: \"#2f2e41\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M394,661.5c0,7.732-19.90861,23-42,23s-43-14.268-43-22,20.90861-6,43-6S394,653.768,394,661.5Z\",\n transform: \"translate(-31.39089 -100.5)\",\n fill: \"#fff\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgErrorIllustration);\nexport default __webpack_public_path__ + \"static/media/error-illustration.6ddb2138939f65bd051767dec8e08d9c.svg\";\nexport { ForwardRef as ReactComponent };","import errorIllustration from 'src/icons/error-illustration.svg';\n\nconst ErrorState = () => {\n return (\n
    \n \"An\n An unexpected error has occured, please try again...\n
    \n );\n};\n\nexport default ErrorState;\n","import { useEffect, useRef, useState } from 'react';\nimport toast from 'react-hot-toast';\n\nimport Loader from 'src/components/loader/Loader';\nimport API from 'src/utils/api';\nimport rightArrowIcon from 'src/icons/right-arrow.svg';\nimport Button from 'src/components/button/Button';\nimport TransactionsTable from 'src/components/transactions-table/TransactionsTable';\nimport { Link, useNavigate } from 'react-router-dom';\nimport Portfolio from 'src/components/portfolio/Portfolio';\nimport DepositModal from 'src/components/deposit-modal/DepositModal';\nimport ErrorState from 'src/components/error-state/ErrorState';\n\nconst Home = () => {\n const navigate = useNavigate();\n // API Data\n const [totalBalance, setTotalBalance] = useState();\n const [balances, setBalances] = useState();\n const [prices, setPrices] = useState();\n const [transactions, setTransactions] = useState();\n const [accounts, setAccounts] = useState();\n const [withdrawPendingtransactions, setWithdrawPendingTransactions] = useState();\n // API states\n const [loading, setLoading] = useState(true);\n const fetchingBalances = useRef(false);\n const fetchingTransactions = useRef(false);\n const fetchingPendingWithdrawTransactions = useRef(false);\n const [error, setError] = useState(false);\n // Deposit modal\n const [depositModalOpen, setDepositModalOpen] = useState(false);\n\n useEffect(() => {\n if (fetchingBalances.current) return; // make sure to fetch data only at first render\n const fetchBalances = async () => {\n fetchingBalances.current = true;\n try {\n const response = await API.get('/accounts/balances');\n\n const filteredBalances = response.data.balances.filter((balance) => balance.amount > 0);\n const pricesResponse = response.data.prices;\n const totalUSDBalance = filteredBalances.reduce(\n (total, balance) => total + pricesResponse[balance.token] * balance.amount,\n 0\n );\n\n setBalances(filteredBalances);\n setPrices(pricesResponse);\n setTotalBalance(totalUSDBalance);\n\n fetchingBalances.current = false;\n } catch (error) {\n setError(true);\n toast.error('Failed to fetch');\n fetchingBalances.current = false;\n }\n };\n\n fetchBalances();\n }, []);\n\n useEffect(() => {\n if (fetchingTransactions.current) return; // make sure to fetch data only at first render\n const fetchTransactions = async () => {\n fetchingTransactions.current = true;\n try {\n const response = await API.get('/accounts/transactions');\n const txs = response.data.transactions;\n setAccounts(response.data.accounts);\n setTransactions(txs.slice(0, 8));\n fetchingTransactions.current = false;\n } catch (error) {\n setError(true);\n toast.error('Failed to fetch');\n fetchingTransactions.current = false;\n }\n };\n\n fetchTransactions();\n }, []);\n\n // get pending withdraw transactions when the modal is closed and at first renders\n useEffect(() => {\n if (fetchingPendingWithdrawTransactions.current) return;\n const fetchPendingWithdrawTransactions = async () => {\n setLoading(true);\n fetchingPendingWithdrawTransactions.current = true;\n try {\n const response = await API.get('/accounts/pending-withdraw-tx');\n const txs = response.data.transactions;\n setWithdrawPendingTransactions(txs);\n fetchingPendingWithdrawTransactions.current = false;\n } catch (error) {\n setError(true);\n toast.error('Failed to fetch');\n fetchingPendingWithdrawTransactions.current = false;\n }\n };\n\n fetchPendingWithdrawTransactions();\n }, []);\n\n useEffect(() => {\n if ((transactions && totalBalance && balances) || error) setLoading(false);\n }, [balances, error, totalBalance, transactions]);\n\n const onWithdrawClick = () => {\n navigate('/withdraw', { replace: true });\n };\n\n const onDepositClick = () => setDepositModalOpen(true);\n\n if (loading) {\n return (\n
    \n \n
    \n );\n }\n\n if (error) {\n return ;\n }\n\n return (\n
    \n
    \n
    \n Total balance\n ${totalBalance.toFixed(2)}\n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n Transactions\n \n View all \"right\n \n
    \n \n
    \n
    \n {depositModalOpen && (\n ({ address: accounts[network], network }))}\n />\n )}\n
    \n );\n};\n\nexport default Home;\n","var _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLoginIllustration(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 464,\n height: 501,\n viewBox: \"0 0 464 501\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_129_247)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.522 372.465C144.443 372.465 144.443 372.465 144.364 372.465C133.046 372.228 125.052 352.679 117.375 333.842C110.964 318.091 104.949 303.291 98.3794 303.924C94.1846 304.399 85.795 310.652 69.3324 338.116C59.4391 354.657 51.2869 371.278 51.2078 371.437L49.8623 370.803C51.2078 368.112 82.7874 304.083 98.2211 302.42C105.898 301.629 111.913 316.271 118.799 333.209C125.922 350.779 134.075 370.724 144.364 370.883H144.443C149.192 370.883 154.099 364.472 159.322 351.254C164.071 339.303 168.424 323.711 172.698 308.594C179.426 284.454 185.283 263.559 191.694 260.789C192.881 260.314 194.068 260.314 195.334 260.868C203.012 264.113 211.401 286.354 219.553 307.802C222.957 316.825 226.202 325.373 229.051 331.467C233.087 340.094 234.829 340.648 235.462 340.49C242.268 338.67 291.656 284.771 316.825 256.594L317.933 257.623C314.925 260.947 244.801 339.54 235.858 341.994C231.584 343.181 226.597 330.597 218.129 308.356C210.451 288.174 201.824 265.301 194.701 262.293C193.831 261.897 193.039 261.897 192.248 262.214C186.47 264.667 180.455 286.195 174.123 309.069C165.575 340.253 156.552 372.465 144.522 372.465Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M308.118 279.864L306.773 279.23L317.22 257.307L300.283 268.546L299.412 267.358L320.94 252.954L308.118 279.864Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M414.809 256.515C414.73 262.135 413.385 267.438 411.089 272.265C409.981 274.64 408.557 276.856 407.053 278.993C405.549 281.051 403.808 282.871 401.908 284.533C399.455 286.749 396.685 288.57 393.756 290.074C389.087 292.448 383.863 293.873 378.323 294.11C377.452 294.189 376.661 294.189 375.79 294.11C370.566 294.031 365.58 292.844 360.989 290.865C358.457 289.757 356.003 288.332 353.787 286.67C344.052 279.547 337.879 267.992 338.116 255.011C338.195 250.896 338.907 247.018 340.174 243.377C341.915 238.232 344.764 233.563 348.326 229.684C348.326 229.684 348.326 229.684 348.405 229.605C350.621 227.231 353.154 225.094 356.003 223.274C360.277 220.583 365.184 218.683 370.329 217.812C372.545 217.417 374.919 217.258 377.294 217.338C398.347 217.812 415.205 235.304 414.809 256.515Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M376.423 294.981C376.186 294.981 375.948 294.981 375.711 294.981C370.487 294.902 365.422 293.793 360.594 291.657C357.982 290.548 355.528 289.124 353.233 287.383C342.944 279.864 337.008 267.754 337.166 255.011C337.245 250.896 337.958 246.938 339.224 243.06C340.965 237.837 343.815 233.167 347.534 229.051L347.614 228.972C349.909 226.519 352.521 224.382 355.37 222.561C359.881 219.712 364.788 217.812 370.012 216.942C372.307 216.546 374.682 216.388 377.056 216.467C387.504 216.625 397.318 220.899 404.52 228.418C411.802 235.937 415.68 245.83 415.522 256.357C415.442 261.976 414.176 267.358 411.802 272.424C410.694 274.798 409.269 277.173 407.686 279.23C406.103 281.288 404.362 283.188 402.383 284.929C399.851 287.145 397.001 289.124 393.994 290.628C389.087 293.081 383.784 294.506 378.243 294.743C377.689 294.981 377.056 294.981 376.423 294.981ZM376.423 218.208C374.365 218.208 372.307 218.366 370.329 218.683C365.342 219.475 360.594 221.295 356.241 224.065C353.55 225.806 351.017 227.864 348.801 230.238C345.16 234.117 342.469 238.628 340.807 243.614C339.541 247.255 338.907 251.133 338.828 255.011C338.591 267.2 344.369 278.835 354.183 286.037C356.399 287.62 358.773 289.045 361.227 290.074C365.817 292.052 370.645 293.16 375.711 293.239C376.581 293.239 377.373 293.239 378.243 293.239C383.546 293.002 388.612 291.657 393.36 289.282C396.289 287.857 398.98 285.958 401.354 283.821C403.175 282.159 404.916 280.339 406.42 278.36C408.003 276.302 409.348 274.086 410.377 271.791C412.672 266.963 413.86 261.739 414.018 256.357C414.176 246.305 410.456 236.808 403.491 229.605C396.526 222.403 387.187 218.287 377.135 218.129C376.898 218.208 376.66 218.208 376.423 218.208Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M379.765 285.688C396.271 283.833 408.148 268.948 406.292 252.442C404.437 235.936 389.552 224.06 373.047 225.915C356.541 227.771 344.664 242.655 346.52 259.161C348.375 275.667 363.26 287.543 379.765 285.688Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M376.424 286.67C376.266 286.67 376.028 286.67 375.87 286.67C367.639 286.512 359.882 283.188 354.184 277.252C348.485 271.316 345.398 263.48 345.557 255.249C345.715 247.018 349.039 239.261 354.975 233.563C360.911 227.864 368.747 224.777 376.978 224.936C385.209 225.094 392.966 228.418 398.664 234.354C404.363 240.29 407.449 248.126 407.291 256.357H406.5H407.291C407.133 264.588 403.809 272.345 397.873 278.043C392.095 283.583 384.497 286.67 376.424 286.67ZM376.424 226.519C368.826 226.519 361.623 229.447 356.083 234.75C350.464 240.211 347.298 247.492 347.14 255.328C346.981 263.164 349.91 270.603 355.371 276.223C360.832 281.842 368.113 285.008 375.949 285.166C383.785 285.325 391.145 282.396 396.844 276.935C402.463 271.474 405.629 264.192 405.787 256.357C405.946 248.521 403.017 241.082 397.556 235.462C392.095 229.843 384.813 226.677 376.978 226.519C376.82 226.519 376.582 226.519 376.424 226.519Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M387.583 257.228C386.158 255.724 384.417 254.695 382.359 254.141V253.666C386.158 252.241 388.058 249.788 388.137 246.305C388.137 244.722 387.82 243.377 387.108 242.19C386.554 241.24 385.604 240.448 384.417 239.736C383.942 239.419 383.309 239.182 382.596 239.024L382.755 232.138L378.481 232.059L378.323 238.232C377.373 238.153 376.423 238.074 375.315 238.074H375.157L375.236 231.98L370.962 231.901L370.883 237.995L363.285 237.837C363.126 237.837 363.047 237.916 363.047 238.074V239.419C363.047 239.578 363.126 239.657 363.285 239.657L367.717 240.132C367.875 240.132 367.954 240.211 367.954 240.369L367.4 270.208C367.4 270.366 367.321 270.445 367.163 270.445L362.731 270.762C362.572 270.762 362.493 270.841 362.493 270.999V272.345C362.493 272.503 362.572 272.582 362.731 272.582L370.329 272.74L370.17 279.31L374.444 279.389L374.603 272.819H376.027C376.66 272.819 377.294 272.819 377.848 272.819L377.689 279.389L381.963 279.468L382.122 272.265C384.971 271.632 387.108 270.366 388.374 268.466C389.482 266.883 390.115 265.142 390.115 263.243C390.115 261.027 389.245 258.969 387.583 257.228ZM376.66 240.607C377.214 240.607 377.848 240.686 378.323 240.844C379.51 241.082 380.539 241.556 381.409 242.19C381.884 242.506 382.201 242.902 382.517 243.377C383.151 244.327 383.388 245.435 383.388 246.78C383.388 248.205 382.992 249.313 382.438 250.342C381.963 251.054 381.33 251.687 380.46 252.162C379.826 252.558 379.035 252.795 378.085 253.033C377.135 253.27 376.106 253.349 374.84 253.349C374.603 253.349 374.286 253.349 373.969 253.349H372.387C372.228 253.349 372.149 253.27 372.149 253.112L372.387 240.765C372.387 240.607 372.466 240.528 372.624 240.528H374.603H375.078L376.66 240.607ZM382.042 269.258C380.934 269.97 379.51 270.366 377.769 270.524C377.056 270.603 376.265 270.603 375.394 270.603H374.524L372.07 270.524C371.912 270.524 371.832 270.445 371.832 270.287L372.07 255.486C372.07 255.328 372.149 255.249 372.307 255.249L374.603 255.328C374.682 255.328 374.682 255.328 374.761 255.328C375.948 255.328 376.977 255.486 377.927 255.645C379.668 255.961 381.093 256.594 382.201 257.465C383.942 258.89 384.813 260.947 384.733 263.797C384.813 266.25 383.863 268.071 382.042 269.258Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M381.884 280.259L377.611 280.18C377.294 280.18 377.057 279.864 377.057 279.547L377.136 273.611C376.74 273.611 376.344 273.611 375.948 273.611H375.157L375.078 279.547C375.078 279.705 374.999 279.864 374.92 279.943C374.84 280.022 374.682 280.101 374.524 280.101L370.25 280.022C369.933 280.022 369.696 279.705 369.696 279.389L369.775 273.453L362.81 273.294C362.493 273.294 362.335 273.136 362.177 273.057C362.098 272.978 361.939 272.74 361.939 272.424V271.078C361.939 270.603 362.256 270.208 362.81 270.208L366.926 269.891L367.48 240.686L363.364 240.211C362.889 240.211 362.573 239.815 362.573 239.34V237.995C362.573 237.678 362.731 237.52 362.81 237.362C362.889 237.283 363.127 237.124 363.443 237.124L370.408 237.283L370.487 231.742C370.487 231.584 370.566 231.426 370.646 231.347C370.725 231.267 370.883 231.188 371.041 231.188L375.315 231.267C375.632 231.267 375.869 231.584 375.869 231.901L375.79 237.441C376.502 237.441 377.136 237.52 377.769 237.52L377.848 231.98C377.848 231.821 377.927 231.663 378.006 231.584C378.085 231.505 378.244 231.426 378.402 231.426L382.676 231.505C382.834 231.505 382.993 231.584 383.072 231.663C383.151 231.742 383.23 231.901 383.23 232.059L383.151 238.47C383.705 238.628 384.18 238.865 384.655 239.103C386 239.815 386.95 240.765 387.583 241.794C388.375 243.06 388.691 244.564 388.691 246.226C388.612 249.629 386.871 252.162 383.467 253.745C385.209 254.378 386.792 255.407 387.979 256.674C389.799 258.573 390.67 260.789 390.591 263.322C390.591 265.301 389.957 267.2 388.77 268.941C387.425 270.841 385.367 272.107 382.597 272.899L382.439 279.626C382.439 280.022 382.201 280.259 381.884 280.259ZM378.244 278.993L381.33 279.072L381.489 272.503C381.489 272.265 381.647 272.028 381.964 271.949C384.655 271.316 386.712 270.129 387.9 268.387C388.929 266.883 389.483 265.221 389.562 263.48C389.641 261.264 388.849 259.365 387.266 257.702C385.921 256.278 384.259 255.328 382.28 254.774C382.043 254.695 381.805 254.457 381.884 254.22V253.745C381.884 253.508 382.043 253.27 382.28 253.191C385.842 251.846 387.583 249.629 387.662 246.384C387.662 244.96 387.346 243.614 386.712 242.585C386.238 241.715 385.367 241.002 384.259 240.369C383.784 240.132 383.23 239.894 382.597 239.657C382.359 239.578 382.201 239.34 382.201 239.103L382.28 232.85L379.193 232.771L379.114 238.391C379.114 238.549 379.035 238.707 378.877 238.786C378.719 238.865 378.56 238.945 378.402 238.945C377.531 238.865 376.502 238.786 375.474 238.786H375.236C374.92 238.786 374.682 238.47 374.682 238.153L374.761 232.613L371.675 232.534L371.595 238.074C371.595 238.232 371.516 238.391 371.437 238.47C371.358 238.549 371.2 238.628 371.041 238.628L363.76 238.47V239.182L367.875 239.657C368.192 239.657 368.35 239.815 368.43 239.894C368.509 239.974 368.667 240.211 368.667 240.528L368.113 270.366C368.113 270.683 367.955 270.841 367.875 270.999C367.796 271.078 367.559 271.237 367.321 271.237L363.206 271.553V272.265L370.487 272.424C370.804 272.424 371.041 272.74 371.041 273.057L370.962 278.993L374.049 279.072L374.128 273.136C374.128 272.978 374.207 272.82 374.286 272.74C374.366 272.661 374.524 272.582 374.682 272.582H376.107C376.74 272.582 377.294 272.582 377.927 272.582C378.085 272.582 378.244 272.661 378.402 272.74C378.481 272.82 378.56 272.978 378.56 273.215L378.244 278.993ZM375.869 271.237C375.711 271.237 375.553 271.237 375.394 271.237L372.149 271.157C371.675 271.157 371.279 270.762 371.279 270.287L371.516 255.486C371.516 255.011 371.912 254.616 372.387 254.616L374.682 254.695C374.761 254.695 374.84 254.695 374.84 254.695C376.028 254.695 377.136 254.853 378.085 255.011C379.906 255.328 381.41 256.04 382.597 256.911C384.496 258.415 385.446 260.71 385.367 263.718C385.288 266.409 384.259 268.387 382.28 269.654C381.093 270.366 379.589 270.841 377.69 271.078C377.215 271.157 376.582 271.237 375.869 271.237ZM372.466 269.97L375.394 270.049C376.265 270.049 376.977 270.049 377.69 269.97C379.352 269.812 380.697 269.416 381.726 268.783C383.388 267.754 384.18 266.171 384.18 263.797C384.259 261.185 383.467 259.206 381.884 257.94C380.856 257.148 379.589 256.594 377.927 256.278C376.977 256.119 375.948 255.961 374.84 255.961H374.761H374.682H372.783L372.466 269.97ZM374.445 253.903C374.286 253.903 374.128 253.903 374.049 253.903H372.466C372.149 253.903 371.991 253.745 371.833 253.666C371.754 253.587 371.595 253.349 371.595 253.033L371.833 240.686C371.833 240.369 371.991 240.211 372.07 240.053C372.149 239.974 372.387 239.815 372.703 239.815L375.157 239.894L376.661 239.974C377.294 239.974 377.927 240.053 378.481 240.211C379.748 240.448 380.856 241.002 381.805 241.715C382.28 242.11 382.676 242.585 383.072 243.06C383.705 244.089 384.021 245.356 384.021 246.859C384.021 248.363 383.626 249.629 382.913 250.738C382.359 251.529 381.647 252.241 380.776 252.716C380.064 253.112 379.193 253.429 378.244 253.666C377.294 253.903 376.186 253.983 374.92 253.983C374.761 253.903 374.603 253.903 374.445 253.903ZM372.783 252.716H374.049C374.366 252.716 374.603 252.716 374.84 252.716C376.028 252.716 377.057 252.558 377.927 252.4C378.798 252.241 379.51 251.925 380.143 251.608C380.856 251.212 381.489 250.658 381.884 250.025C382.439 249.155 382.755 248.047 382.755 246.78C382.755 245.514 382.518 244.485 381.964 243.693C381.726 243.298 381.41 242.981 381.014 242.665C380.222 242.031 379.273 241.636 378.165 241.398C377.69 241.319 377.136 241.24 376.582 241.161L374.603 241.082H373.02L372.783 252.716Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M177.447 242.19H75.4269C63.0009 242.19 52.9492 232.138 52.9492 219.712V106.453C52.9492 94.0265 63.0009 83.9749 75.4269 83.9749H177.447C189.873 83.9749 199.925 94.0265 199.925 106.453V219.712C199.925 232.138 189.873 242.19 177.447 242.19Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M188.528 242.823H64.2676C57.6193 242.823 52.2373 237.441 52.2373 230.792V95.2929C52.2373 88.6446 57.6193 83.2626 64.2676 83.2626H188.528C195.177 83.2626 200.559 88.6446 200.559 95.2929V230.792C200.559 237.441 195.177 242.823 188.528 242.823ZM64.2676 84.5289C58.3316 84.5289 53.5037 89.3569 53.5037 95.2929V230.792C53.5037 236.728 58.3316 241.556 64.2676 241.556H188.528C194.464 241.556 199.292 236.728 199.292 230.792V95.2929C199.292 89.3569 194.464 84.5289 188.528 84.5289H64.2676Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M419.874 293.398V302.341C419.874 304.241 419.399 305.903 418.687 307.328C417.658 309.148 416.075 310.335 414.255 310.335H338.59C336.77 310.335 335.187 309.148 334.158 307.328C333.366 305.982 332.892 304.241 332.892 302.341V293.398C332.892 289.045 335.424 285.483 338.511 285.483H414.175C417.341 285.404 419.874 288.965 419.874 293.398Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M414.255 311.047H338.591C336.533 311.047 334.712 309.781 333.525 307.644C332.655 306.14 332.18 304.241 332.18 302.262V293.318C332.18 288.491 335.029 284.612 338.591 284.612H414.255C417.817 284.612 420.666 288.57 420.666 293.318V302.262C420.666 304.241 420.191 306.061 419.32 307.644C418.133 309.781 416.234 311.047 414.255 311.047ZM338.591 286.195C335.9 286.195 333.763 289.361 333.763 293.318V302.262C333.763 303.924 334.158 305.507 334.871 306.853C335.82 308.515 337.166 309.464 338.591 309.464H414.255C415.68 309.464 417.025 308.515 417.975 306.853C418.687 305.586 419.083 303.924 419.083 302.262V293.318C419.083 289.361 416.946 286.195 414.255 286.195H338.591Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M419.953 318.171V327.114C419.953 329.251 419.32 331.23 418.37 332.654C417.341 334.158 415.917 335.029 414.334 335.029H338.669C337.086 335.029 335.662 334.079 334.633 332.654C333.683 331.23 333.05 329.251 333.05 327.114V318.171C333.05 316.271 333.525 314.609 334.316 313.184C335.345 311.364 336.928 310.177 338.748 310.177H414.413C416.233 310.177 417.816 311.364 418.845 313.184C419.478 314.609 419.953 316.271 419.953 318.171Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M414.334 335.82H338.67C336.849 335.82 335.187 334.791 334 333.05C332.892 331.467 332.259 329.33 332.259 327.035V318.171C332.259 316.192 332.734 314.372 333.604 312.789C334.792 310.652 336.691 309.385 338.67 309.385H414.334C416.392 309.385 418.212 310.652 419.4 312.789C420.27 314.292 420.745 316.192 420.745 318.171V327.114C420.745 329.33 420.112 331.467 419.004 333.129C417.737 334.871 416.075 335.82 414.334 335.82ZM338.67 311.047C337.245 311.047 335.9 311.997 334.95 313.659C334.237 314.926 333.842 316.588 333.842 318.25V327.193C333.842 329.093 334.396 330.913 335.266 332.259C336.216 333.604 337.403 334.317 338.67 334.317H414.334C415.601 334.317 416.788 333.604 417.737 332.259C418.687 330.913 419.162 329.093 419.162 327.193V318.171C419.162 316.508 418.766 314.926 418.054 313.58C417.104 311.918 415.759 310.968 414.334 310.968H338.67V311.047Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M419.953 343.023V351.966C419.953 353.154 419.795 354.262 419.478 355.211C418.924 356.873 417.974 358.219 416.866 359.09C416.075 359.644 415.283 359.881 414.334 359.881H338.669C337.719 359.881 336.849 359.564 336.137 359.01C335.028 358.219 334.079 356.873 333.525 355.211C333.208 354.182 333.05 353.074 333.05 351.966V343.023C333.05 341.44 333.366 339.936 334 338.67C335.028 336.533 336.77 335.108 338.669 335.108H414.334C416.312 335.108 418.054 336.533 419.003 338.67C419.557 339.857 419.953 341.361 419.953 343.023Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M414.334 360.672H338.67C337.641 360.672 336.612 360.356 335.662 359.644C334.396 358.694 333.367 357.19 332.813 355.449C332.417 354.341 332.259 353.154 332.259 351.966V343.023C332.259 341.361 332.575 339.699 333.288 338.353C334.475 335.82 336.533 334.317 338.749 334.317H414.413C416.629 334.317 418.687 335.82 419.874 338.353C420.508 339.778 420.903 341.361 420.903 343.023V351.966C420.903 353.154 420.745 354.341 420.349 355.449C419.795 357.269 418.687 358.773 417.421 359.723C416.313 360.356 415.363 360.672 414.334 360.672ZM338.67 335.82C337.087 335.82 335.583 337.008 334.712 338.907C334.158 340.094 333.842 341.519 333.842 342.944V351.887C333.842 352.916 334 353.945 334.317 354.895C334.791 356.399 335.583 357.586 336.612 358.298C337.245 358.773 337.957 359.01 338.67 359.01H414.334C415.046 359.01 415.759 358.773 416.392 358.298C417.421 357.586 418.212 356.399 418.766 354.895C419.083 353.945 419.241 352.916 419.241 351.887V342.944C419.241 341.519 418.925 340.094 418.371 338.907C417.421 336.928 415.996 335.82 414.413 335.82H338.67Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M338.67 310.256C336.849 310.256 335.266 309.069 334.237 307.248H418.687C417.658 309.069 416.075 310.256 414.255 310.256H414.334C416.154 310.256 417.737 311.443 418.766 313.264H334.237C335.266 311.443 336.849 310.256 338.67 310.256Z\",\n fill: \"#F7960B\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M420.112 314.055H332.892L333.604 312.868C334.237 311.76 335.029 310.889 335.978 310.256C335.029 309.702 334.237 308.752 333.525 307.644L332.812 306.457H420.032L419.32 307.644C418.687 308.752 417.895 309.623 416.946 310.256C417.895 310.81 418.687 311.76 419.399 312.868L420.112 314.055ZM335.82 312.393H417.183C416.392 311.522 415.363 310.968 414.334 310.968H414.255V309.385C415.284 309.385 416.312 308.91 417.104 307.961H335.741C336.532 308.831 337.561 309.385 338.59 309.385H338.669V310.968C337.64 311.047 336.612 311.522 335.82 312.393Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M338.67 335.029C337.087 335.029 335.662 334.079 334.633 332.655H418.371C417.342 334.158 415.917 335.029 414.334 335.029C416.313 335.029 418.054 336.454 419.004 338.591H333.921C334.95 336.454 336.691 335.029 338.67 335.029Z\",\n fill: \"#F7960B\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M420.27 339.461H332.654L333.208 338.353C333.921 336.928 334.87 335.82 335.899 335.108C335.187 334.633 334.475 334 333.921 333.129L333.05 331.863H419.795L418.924 333.129C418.37 334 417.658 334.633 416.946 335.108C418.054 335.82 419.004 336.928 419.637 338.353L420.27 339.461ZM335.345 337.799H417.658C416.787 336.533 415.6 335.82 414.334 335.82V334.237C415.125 334.237 415.838 333.921 416.55 333.446H336.453C337.166 334 337.878 334.237 338.669 334.237V335.82C337.403 335.82 336.216 336.612 335.345 337.799Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M419.874 366.134V375.077C419.874 376.977 419.399 378.639 418.608 380.064C417.579 381.884 415.996 383.071 414.176 383.071H338.511C336.691 383.071 335.108 381.884 334.079 380.064C333.287 378.718 332.812 376.977 332.812 375.077V366.134C332.812 364.234 333.287 362.572 334.079 361.147C334.554 360.277 335.266 359.485 335.978 359.01C336.77 358.456 337.561 358.219 338.511 358.219H414.176C415.125 358.219 415.996 358.536 416.708 359.09C417.421 359.644 418.054 360.356 418.529 361.227C419.399 362.572 419.874 364.234 419.874 366.134Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M414.255 383.783H338.591C336.533 383.783 334.712 382.517 333.525 380.38C332.655 378.876 332.18 376.977 332.18 374.998V366.054C332.18 364.076 332.655 362.255 333.525 360.672C334.079 359.644 334.871 358.852 335.662 358.219C336.533 357.586 337.562 357.269 338.591 357.269H414.255C415.284 357.269 416.313 357.586 417.263 358.298C418.054 358.852 418.766 359.723 419.32 360.672C420.191 362.176 420.666 364.076 420.666 366.054V374.998C420.666 376.977 420.191 378.797 419.32 380.38C418.133 382.596 416.234 383.783 414.255 383.783ZM338.591 359.01C337.878 359.01 337.166 359.248 336.533 359.723C335.9 360.198 335.346 360.831 334.871 361.622C334.158 362.889 333.763 364.551 333.763 366.213V375.156C333.763 376.818 334.158 378.401 334.871 379.747C335.82 381.409 337.166 382.359 338.591 382.359H414.255C415.68 382.359 417.025 381.409 417.975 379.747C418.687 378.481 419.083 376.818 419.083 375.156V366.213C419.083 364.551 418.687 362.968 417.975 361.622C417.5 360.831 416.946 360.198 416.313 359.723C415.68 359.248 414.967 359.01 414.255 359.01H338.591Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M419.953 390.986V399.929C419.953 402.066 419.32 404.045 418.37 405.47C417.341 406.973 415.917 407.844 414.334 407.844H338.669C337.086 407.844 335.662 406.894 334.633 405.47C333.683 404.045 333.05 402.066 333.05 399.929V390.986C333.05 389.086 333.525 387.424 334.316 386C335.345 384.179 336.928 382.992 338.748 382.992H414.413C416.233 382.992 417.816 384.179 418.845 386C419.478 387.345 419.953 389.086 419.953 390.986Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M414.334 408.636H338.67C336.849 408.636 335.187 407.607 334 405.865C332.892 404.203 332.259 402.145 332.259 399.85V390.986C332.259 389.007 332.734 387.187 333.604 385.604C334.792 383.467 336.691 382.2 338.67 382.2H414.334C416.392 382.2 418.212 383.467 419.4 385.604C420.27 387.108 420.745 389.007 420.745 390.986V399.929C420.745 402.145 420.112 404.282 419.004 405.945C417.737 407.686 416.075 408.636 414.334 408.636ZM338.67 383.783C337.245 383.783 335.9 384.733 334.95 386.395C334.237 387.662 333.842 389.324 333.842 390.986V399.929C333.842 401.829 334.396 403.649 335.266 404.995C336.216 406.34 337.403 407.053 338.67 407.053H414.334C415.601 407.053 416.788 406.34 417.737 404.995C418.687 403.649 419.162 401.829 419.162 399.929V390.986C419.162 389.324 418.766 387.741 418.054 386.395C417.104 384.733 415.759 383.783 414.334 383.783H338.67Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M419.953 415.759V424.702C419.953 429.055 417.42 432.617 414.334 432.617H338.669C335.583 432.617 333.05 429.055 333.05 424.702V415.759C333.05 414.176 333.366 412.672 334 411.406C335.028 409.269 336.77 407.844 338.669 407.844H414.334C416.312 407.844 418.054 409.269 419.003 411.406C419.557 412.672 419.953 414.176 419.953 415.759Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M414.255 433.488H338.591C335.029 433.488 332.18 429.53 332.18 424.781V415.838C332.18 414.176 332.496 412.514 333.209 411.168C334.396 408.635 336.454 407.132 338.67 407.132H414.334C416.55 407.132 418.608 408.635 419.795 411.168C420.429 412.593 420.824 414.176 420.824 415.838V424.781C420.745 429.53 417.817 433.488 414.255 433.488ZM338.67 408.635C337.087 408.635 335.583 409.823 334.712 411.722C334.158 412.909 333.842 414.334 333.842 415.759V424.702C333.842 428.66 335.979 431.826 338.67 431.826H414.334C417.025 431.826 419.162 428.66 419.162 424.702V415.759C419.162 414.334 418.846 412.909 418.292 411.722C417.342 409.744 415.917 408.635 414.334 408.635H338.67Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M338.67 382.992C336.849 382.992 335.266 381.805 334.237 379.984H418.687C417.658 381.805 416.075 382.992 414.255 382.992H414.334C416.154 382.992 417.737 384.179 418.766 386H334.237C335.266 384.179 336.849 382.992 338.67 382.992Z\",\n fill: \"#F7960B\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M420.112 386.791H332.892L333.604 385.604C334.237 384.496 335.029 383.625 335.978 382.992C335.029 382.438 334.237 381.488 333.525 380.38L332.812 379.193H420.032L419.32 380.38C418.687 381.488 417.895 382.359 416.946 382.992C417.895 383.546 418.687 384.496 419.399 385.604L420.112 386.791ZM335.82 385.208H417.183C416.392 384.337 415.363 383.783 414.334 383.783H414.255V382.2C415.284 382.2 416.312 381.726 417.104 380.776H335.741C336.532 381.646 337.561 382.2 338.59 382.2H338.669V383.783C337.64 383.783 336.612 384.337 335.82 385.208Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M418.688 361.227H334.159C334.634 360.356 335.346 359.564 336.058 359.09C334.95 358.298 334 356.953 333.446 355.291H419.321C418.767 356.953 417.817 358.298 416.709 359.169C417.5 359.564 418.133 360.277 418.688 361.227Z\",\n fill: \"#F7960B\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M420.033 362.018H332.813L333.525 360.831C333.921 360.119 334.396 359.564 334.871 359.01C333.921 358.14 333.208 356.873 332.734 355.449L332.417 354.42H420.508L420.191 355.449C419.716 356.873 419.004 358.14 418.054 359.09C418.529 359.564 419.004 360.198 419.399 360.831L420.033 362.018ZM335.741 360.356H417.104C416.867 360.119 416.629 359.881 416.313 359.644L415.363 359.01L416.313 358.377C417.104 357.823 417.737 357.032 418.212 356.003H334.712C335.187 357.032 335.82 357.823 336.612 358.377L337.562 359.01L336.612 359.644C336.295 359.881 335.979 360.119 335.741 360.356Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M338.67 407.844C337.087 407.844 335.662 406.894 334.633 405.47H418.371C417.342 406.973 415.917 407.844 414.334 407.844C416.313 407.844 418.054 409.269 419.004 411.406H333.921C334.95 409.269 336.691 407.844 338.67 407.844Z\",\n fill: \"#F7960B\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M419.004 412.197H332.654L333.208 411.089C333.921 409.664 334.87 408.556 335.899 407.844C335.187 407.369 334.475 406.736 333.921 405.865L333.05 404.599H419.795L418.924 405.865C418.37 406.736 417.658 407.369 416.946 407.844C418.054 408.556 419.004 409.664 419.637 411.089L420.191 412.197H419.004ZM335.345 410.614H417.658C416.787 409.348 415.6 408.635 414.334 408.635V407.053C415.125 407.053 415.838 406.736 416.55 406.261H336.453C337.166 406.815 337.878 407.053 338.669 407.053V408.635C337.403 408.635 336.216 409.348 335.345 410.614Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.29\n }, /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.29\n }, /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.29,\n d: \"M367.162 285.404H349.671V432.617H367.162V285.404Z\",\n fill: \"#F7960B\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.29\n }, /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.29,\n d: \"M368.033 433.488H348.88V284.612H368.033V433.488ZM350.463 431.826H366.371V286.195H350.463V431.826Z\",\n fill: \"#101010\"\n }))), /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.22\n }, /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.22\n }, /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.22,\n d: \"M402.936 285.404H384.416V432.617H402.936V285.404Z\",\n fill: \"white\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.22\n }, /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.22,\n d: \"M402.937 433.25H384.416C384.1 433.25 383.783 433.013 383.783 432.617V285.404C383.783 285.087 384.1 284.771 384.416 284.771H402.937C403.253 284.771 403.57 285.087 403.57 285.404V432.617C403.57 433.013 403.253 433.25 402.937 433.25ZM384.97 432.063H402.224V286.037H384.97V432.063Z\",\n fill: \"#101010\"\n }))), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M343.813 343.023V351.966C343.813 353.154 343.655 354.262 343.339 355.211C342.785 356.874 341.835 358.219 340.727 359.09C340.014 359.644 339.144 359.881 338.194 359.881H262.53C261.58 359.881 260.709 359.565 259.997 359.011C258.889 358.219 257.939 356.874 257.385 355.211C257.068 354.183 256.91 353.075 256.91 351.966V343.023C256.91 341.44 257.227 339.936 257.86 338.67C258.889 336.533 260.63 335.108 262.53 335.108H338.194C340.173 335.108 341.914 336.533 342.864 338.67C343.497 339.857 343.813 341.361 343.813 343.023Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M338.194 360.673H262.53C261.501 360.673 260.472 360.356 259.522 359.644C258.256 358.694 257.227 357.19 256.673 355.449C256.357 354.341 256.119 353.154 256.119 351.966V343.023C256.119 341.361 256.436 339.699 257.148 338.274C258.335 335.741 260.393 334.238 262.609 334.238H338.274C340.49 334.238 342.548 335.741 343.735 338.274C344.368 339.699 344.764 341.282 344.764 343.023V351.966C344.764 353.154 344.605 354.341 344.21 355.449C343.656 357.269 342.548 358.773 341.281 359.723C340.252 360.356 339.223 360.673 338.194 360.673ZM262.53 335.82C260.947 335.82 259.443 337.008 258.573 338.907C258.019 340.094 257.702 341.519 257.702 342.944V351.887C257.702 352.916 257.86 353.945 258.177 354.895C258.652 356.399 259.443 357.586 260.472 358.298C261.105 358.773 261.818 359.011 262.53 359.011H338.194C338.907 359.011 339.619 358.773 340.252 358.298C341.281 357.586 342.073 356.399 342.627 354.895C342.943 353.945 343.102 352.916 343.102 351.887V342.944C343.102 341.519 342.785 340.094 342.231 338.907C341.36 336.929 339.857 335.82 338.274 335.82H262.53Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M343.734 366.134V375.077C343.734 376.977 343.26 378.639 342.468 380.064C341.439 381.884 339.856 383.071 338.036 383.071H262.371C260.551 383.071 258.968 381.884 257.939 380.064C257.148 378.718 256.673 376.977 256.673 375.077V366.134C256.673 364.234 257.148 362.572 257.939 361.148C258.414 360.277 259.126 359.485 259.839 359.011C260.63 358.457 261.422 358.219 262.371 358.219H338.036C338.986 358.219 339.856 358.536 340.569 359.09C341.281 359.644 341.914 360.356 342.389 361.227C343.26 362.572 343.734 364.234 343.734 366.134Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M338.115 383.784H262.451C260.393 383.784 258.573 382.517 257.386 380.38C256.515 378.876 256.04 376.977 256.04 374.998V366.055C256.04 364.076 256.515 362.256 257.386 360.673C257.94 359.644 258.731 358.852 259.522 358.219C260.393 357.586 261.422 357.269 262.451 357.269H338.115C339.144 357.269 340.173 357.586 341.123 358.298C341.914 358.852 342.627 359.723 343.181 360.673C344.051 362.176 344.526 364.076 344.526 366.055V374.998C344.526 376.977 344.051 378.797 343.181 380.38C341.994 382.596 340.173 383.784 338.115 383.784ZM262.451 359.011C261.739 359.011 261.026 359.248 260.393 359.723C259.76 360.198 259.206 360.831 258.731 361.622C258.019 362.889 257.623 364.551 257.623 366.213V375.156C257.623 376.819 258.019 378.402 258.731 379.747C259.681 381.409 261.026 382.359 262.451 382.359H338.115C339.54 382.359 340.886 381.409 341.835 379.747C342.548 378.481 342.943 376.819 342.943 375.156V366.213C342.943 364.551 342.548 362.968 341.835 361.622C341.36 360.831 340.806 360.198 340.173 359.723C339.54 359.248 338.828 359.011 338.115 359.011H262.451Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M343.813 390.986V399.93C343.813 402.066 343.18 404.045 342.231 405.47C341.202 406.974 339.777 407.844 338.194 407.844H262.53C260.947 407.844 259.522 406.894 258.493 405.47C257.543 404.045 256.91 402.066 256.91 399.93V390.986C256.91 389.086 257.385 387.424 258.177 386C259.205 384.179 260.788 382.992 262.609 382.992H338.273C340.094 382.992 341.676 384.179 342.705 386C343.339 387.345 343.813 389.086 343.813 390.986Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M338.194 408.636H262.53C260.71 408.636 259.048 407.607 257.86 405.865C256.752 404.203 256.119 402.146 256.119 399.85V390.986C256.119 389.007 256.594 387.187 257.465 385.604C258.652 383.467 260.551 382.201 262.53 382.201H338.194C340.252 382.201 342.073 383.467 343.26 385.604C344.131 387.108 344.605 389.007 344.605 390.986V399.929C344.605 402.146 343.972 404.283 342.864 405.945C341.677 407.686 340.015 408.636 338.194 408.636ZM262.53 383.783C261.105 383.783 259.76 384.733 258.81 386.395C258.098 387.662 257.702 389.324 257.702 390.986V399.929C257.702 401.829 258.256 403.649 259.127 404.995C260.076 406.34 261.264 407.053 262.53 407.053H338.194C339.461 407.053 340.648 406.34 341.598 404.995C342.548 403.649 343.022 401.829 343.022 399.929V390.986C343.022 389.324 342.627 387.741 341.914 386.395C340.965 384.733 339.619 383.783 338.194 383.783H262.53Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M343.813 415.759V424.702C343.813 429.055 341.281 432.617 338.194 432.617H262.53C259.443 432.617 256.91 429.055 256.91 424.702V415.759C256.91 414.176 257.227 412.672 257.86 411.406C258.889 409.269 260.63 407.844 262.53 407.844H338.194C340.173 407.844 341.914 409.269 342.864 411.406C343.497 412.672 343.813 414.176 343.813 415.759Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M338.194 433.488H262.53C258.968 433.488 256.119 429.53 256.119 424.782V415.838C256.119 414.176 256.436 412.514 257.148 411.168C258.335 408.636 260.393 407.132 262.609 407.132H338.274C340.49 407.132 342.548 408.636 343.735 411.168C344.368 412.593 344.764 414.176 344.764 415.838V424.782C344.605 429.53 341.756 433.488 338.194 433.488ZM262.53 408.636C260.947 408.636 259.443 409.823 258.573 411.722C258.019 412.91 257.702 414.334 257.702 415.759V424.702C257.702 428.66 259.839 431.826 262.53 431.826H338.194C340.885 431.826 343.022 428.66 343.022 424.702V415.759C343.022 414.334 342.706 412.91 342.152 411.722C341.202 409.744 339.777 408.636 338.194 408.636H262.53Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M262.53 382.992C260.71 382.992 259.127 381.805 258.098 379.984H342.547C341.518 381.805 339.936 382.992 338.115 382.992H338.194C340.015 382.992 341.598 384.179 342.627 386H258.098C259.127 384.179 260.71 382.992 262.53 382.992Z\",\n fill: \"#F7960B\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M343.972 386.791H256.752L257.464 385.604C258.097 384.496 258.889 383.625 259.839 382.992C258.889 382.438 258.098 381.488 257.385 380.38L256.673 379.193H343.893L343.18 380.38C342.547 381.488 341.756 382.359 340.806 382.992C341.756 383.546 342.547 384.496 343.26 385.604L343.972 386.791ZM259.68 385.208H341.043C340.252 384.338 339.223 383.784 338.194 383.784H338.115V382.201C339.144 382.201 340.173 381.726 340.964 380.776H259.601C260.393 381.647 261.422 382.201 262.451 382.201H262.53V383.784C261.501 383.784 260.472 384.338 259.68 385.208Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M342.548 361.227H258.098C258.573 360.356 259.285 359.565 259.998 359.09C258.89 358.298 257.94 356.953 257.386 355.291H343.26C342.706 356.953 341.756 358.298 340.648 359.169C341.361 359.565 341.994 360.277 342.548 361.227Z\",\n fill: \"#F7960B\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M343.893 362.018H256.673L257.385 360.831C257.781 360.119 258.256 359.565 258.731 359.011C257.781 358.14 257.069 356.874 256.594 355.449L256.277 354.42H344.368L344.051 355.449C343.576 356.874 342.864 358.14 341.914 359.09C342.389 359.565 342.864 360.198 343.26 360.831L343.893 362.018ZM259.602 360.356H340.965C340.727 360.119 340.49 359.881 340.173 359.644L339.223 359.011L340.173 358.377C340.965 357.823 341.598 357.032 342.073 356.003H258.573C259.048 357.032 259.681 357.823 260.472 358.377L261.422 359.011L260.472 359.644C260.156 359.881 259.918 360.119 259.602 360.356Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M262.53 407.844C260.947 407.844 259.522 406.894 258.494 405.47H342.231C341.202 406.974 339.777 407.844 338.194 407.844C340.173 407.844 341.914 409.269 342.864 411.406H257.86C258.81 409.269 260.551 407.844 262.53 407.844Z\",\n fill: \"#F7960B\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M342.864 412.197H256.594L257.148 411.089C257.86 409.665 258.81 408.556 259.839 407.844C259.126 407.369 258.414 406.736 257.86 405.865L256.989 404.599H343.734L342.864 405.865C342.31 406.736 341.598 407.369 340.885 407.844C341.993 408.556 342.943 409.665 343.576 411.089L344.13 412.197H342.864ZM259.206 410.614H341.518C340.648 409.348 339.461 408.636 338.194 408.636V407.053C338.986 407.053 339.698 406.736 340.41 406.261H260.314C261.026 406.815 261.738 407.053 262.53 407.053V408.636C261.263 408.636 260.076 409.348 259.206 410.614Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.29\n }, /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.29\n }, /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.29,\n d: \"M291.023 335.029H273.531V432.617H291.023V335.029Z\",\n fill: \"#F7960B\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.29\n }, /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.29,\n d: \"M291.894 433.488H272.74V334.238H291.894V433.488ZM274.402 431.826H290.311V335.82H274.402V431.826Z\",\n fill: \"#101010\"\n }))), /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.22\n }, /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.22\n }, /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.22,\n d: \"M326.797 335.029H308.276V432.617H326.797V335.029Z\",\n fill: \"white\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.22\n }, /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.22,\n d: \"M326.797 433.25H308.277C307.96 433.25 307.644 432.934 307.644 432.617V335.029C307.644 334.712 307.881 334.396 308.277 334.396H326.797C327.114 334.396 327.43 334.712 327.43 335.029V432.617C327.43 433.013 327.114 433.25 326.797 433.25ZM308.91 432.063H326.164V335.662H308.91V432.063Z\",\n fill: \"#101010\"\n }))), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M447.576 431.746H0V433.329H447.576V431.746Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M463.168 449.396H357.428V450.979H463.168V449.396Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M154.89 494.589H47.8047V496.172H154.89V494.589Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M324.74 499.417H278.914V501H324.74V499.417Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 386.709 76.85 C 386.709 81.124 385.839 85.161 384.177 88.801 C 383.385 90.622 382.356 92.363 381.248 93.946 C 380.14 95.529 378.874 96.953 377.449 98.22 C 375.629 99.882 373.571 101.386 371.355 102.573 C 367.872 104.393 363.915 105.58 359.799 105.897 C 359.166 105.976 358.533 105.976 357.9 105.976 C 353.943 105.976 350.144 105.185 346.74 103.76 C 344.762 102.969 342.941 101.94 341.279 100.752 C 333.839 95.529 328.932 86.902 328.932 77.167 C 328.932 74.08 329.407 71.152 330.278 68.302 C 331.544 64.424 333.523 60.862 336.214 57.855 C 337.876 56.034 339.775 54.372 341.833 52.948 C 344.999 50.811 348.64 49.307 352.597 48.595 C 354.259 48.278 356 48.12 357.821 48.12 C 373.729 47.961 386.709 60.862 386.709 76.85 Z\",\n fill: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 357.066 107.283 C 353.109 107.283 349.31 106.491 345.669 104.987 C 343.69 104.196 341.791 103.088 340.05 101.901 C 332.135 96.36 327.386 87.258 327.386 77.602 C 327.386 74.516 327.861 71.429 328.732 68.501 C 329.998 64.543 332.056 60.902 334.826 57.737 C 336.488 55.837 338.467 54.175 340.604 52.75 C 343.928 50.534 347.648 49.03 351.605 48.239 C 353.346 47.922 355.167 47.764 356.987 47.764 L 357.066 47.764 C 373.45 47.764 386.746 61.061 386.826 77.365 C 386.826 81.639 385.955 85.755 384.214 89.633 C 383.422 91.453 382.393 93.274 381.206 94.856 C 380.019 96.439 378.753 97.943 377.328 99.289 C 375.428 101.03 373.371 102.534 371.075 103.721 C 367.355 105.7 363.398 106.808 359.203 107.124 C 358.57 107.203 357.858 107.203 357.225 107.203 C 357.145 107.283 357.066 107.283 357.066 107.283 Z M 335.38 58.37 L 335.934 58.924 C 333.322 61.931 331.344 65.335 330.156 69.055 C 329.286 71.825 328.811 74.753 328.89 77.682 C 328.89 86.783 333.401 95.41 340.92 100.634 C 342.582 101.821 344.403 102.771 346.302 103.563 C 349.706 104.987 353.346 105.7 357.066 105.7 L 357.145 105.7 C 357.779 105.7 358.412 105.7 359.045 105.62 C 363.002 105.383 366.801 104.275 370.284 102.375 C 372.421 101.267 374.399 99.843 376.22 98.181 C 377.565 96.914 378.832 95.49 379.94 93.986 C 381.048 92.403 381.998 90.741 382.789 89 C 384.451 85.359 385.243 81.481 385.243 77.365 C 385.163 62.01 372.5 49.426 357.066 49.426 L 356.987 49.426 C 355.246 49.426 353.584 49.584 351.922 49.901 C 348.202 50.613 344.64 52.038 341.474 54.175 C 339.496 55.52 337.596 57.103 336.013 58.924 L 335.38 58.37 Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 378.493 87.727 C 384.177 76.543 379.719 62.868 368.535 57.184 C 357.35 51.5 343.676 55.958 337.992 67.142 C 332.307 78.326 336.766 92.001 347.95 97.685 C 359.134 103.369 372.809 98.911 378.493 87.727 Z\",\n fill: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 357.084 101.263 C 350.831 101.263 344.974 98.81 340.542 94.456 C 336.11 90.024 333.656 84.167 333.577 77.836 C 333.577 71.583 335.951 65.647 340.384 61.215 C 344.816 56.783 350.673 54.329 357.004 54.25 L 357.084 54.25 C 363.336 54.25 369.193 56.703 373.625 61.056 C 378.058 65.489 380.511 71.346 380.59 77.677 C 380.669 90.657 370.143 101.184 357.163 101.263 C 357.084 101.263 357.084 101.263 357.084 101.263 Z M 357.084 55.912 C 357.084 55.912 357.004 55.912 357.084 55.912 C 351.148 55.912 345.686 58.207 341.571 62.402 C 337.455 66.518 335.16 72.058 335.239 77.915 C 335.239 83.772 337.534 89.233 341.729 93.348 C 345.845 97.464 351.306 99.68 357.163 99.68 L 357.242 99.68 C 369.351 99.601 379.086 89.787 379.086 77.677 C 379.086 71.82 376.791 66.359 372.596 62.244 C 368.402 58.128 362.861 55.912 357.084 55.912 Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 365.883 78.504 C 364.774 77.396 363.508 76.684 361.925 76.209 L 361.925 75.892 C 364.774 74.705 366.199 72.885 366.12 70.273 C 366.12 69.086 365.803 68.057 365.249 67.186 C 364.774 66.474 364.141 65.841 363.192 65.366 C 362.796 65.128 362.321 64.97 361.846 64.812 L 361.846 59.667 L 358.601 59.667 L 358.601 64.337 C 357.889 64.258 357.176 64.258 356.306 64.258 L 356.147 64.258 L 356.147 59.667 L 352.902 59.667 L 352.902 64.258 L 347.204 64.258 C 347.046 64.258 347.046 64.337 347.046 64.416 L 347.046 65.445 C 347.046 65.603 347.125 65.603 347.204 65.603 L 350.528 65.92 C 350.686 65.92 350.686 65.999 350.686 66.078 L 350.765 88.556 C 350.765 88.714 350.686 88.714 350.607 88.714 L 347.283 89.031 C 347.125 89.031 347.125 89.11 347.125 89.268 L 347.125 90.297 C 347.125 90.455 347.204 90.455 347.283 90.455 L 352.982 90.455 L 352.982 95.362 L 356.227 95.362 L 356.227 90.455 L 357.256 90.455 C 357.73 90.455 358.205 90.455 358.601 90.376 L 358.601 95.362 L 361.846 95.362 L 361.846 89.901 C 363.983 89.347 365.566 88.398 366.516 86.973 C 367.307 85.786 367.782 84.44 367.782 83.016 C 367.861 81.353 367.228 79.771 365.883 78.504 Z M 357.335 66.157 C 357.81 66.157 358.205 66.236 358.601 66.316 C 359.551 66.474 360.342 66.79 360.975 67.344 C 361.292 67.582 361.609 67.898 361.846 68.215 C 362.321 68.927 362.558 69.719 362.558 70.748 C 362.558 71.777 362.321 72.726 361.846 73.439 C 361.529 73.993 360.975 74.468 360.421 74.863 C 359.947 75.18 359.313 75.417 358.68 75.576 C 357.968 75.734 357.176 75.813 356.227 75.892 C 355.989 75.892 355.831 75.892 355.593 75.892 L 354.406 75.892 C 354.248 75.892 354.248 75.813 354.248 75.734 L 354.248 66.395 C 354.248 66.236 354.327 66.236 354.406 66.236 L 355.91 66.236 L 356.227 66.236 L 357.335 66.157 Z M 361.925 87.685 C 361.134 88.239 360.026 88.556 358.68 88.714 C 358.126 88.793 357.493 88.793 356.86 88.793 L 356.227 88.793 L 354.406 88.793 C 354.248 88.793 354.248 88.714 354.248 88.635 L 354.248 77.475 C 354.248 77.317 354.327 77.317 354.406 77.317 L 356.147 77.317 C 356.227 77.317 356.227 77.317 356.227 77.317 C 357.097 77.317 357.889 77.396 358.68 77.475 C 360.026 77.713 361.055 78.108 361.925 78.742 C 363.271 79.771 363.983 81.353 363.983 83.49 C 363.983 85.39 363.271 86.735 361.925 87.685 Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 353.341 96.501 C 353.183 96.501 353.025 96.422 352.945 96.343 C 352.866 96.263 352.787 96.105 352.787 95.947 L 352.787 91.594 L 347.643 91.594 C 347.168 91.594 346.851 91.277 346.851 90.802 L 346.851 89.773 C 346.851 89.298 347.168 88.982 347.563 88.982 L 350.492 88.665 L 350.413 66.9 L 347.484 66.583 C 347.009 66.583 346.772 66.267 346.693 65.792 L 346.693 64.763 C 346.693 64.446 346.851 64.288 346.93 64.209 C 347.009 64.13 347.247 63.971 347.484 63.971 L 352.629 63.971 L 352.629 59.935 C 352.629 59.618 352.866 59.302 353.262 59.302 L 356.507 59.302 C 356.665 59.302 356.824 59.381 356.903 59.46 C 356.982 59.539 357.061 59.697 357.061 59.856 L 357.061 63.892 C 357.457 63.892 357.932 63.892 358.248 63.892 L 358.248 59.856 C 358.248 59.539 358.486 59.223 358.881 59.223 L 362.127 59.223 C 362.285 59.223 362.443 59.302 362.522 59.381 C 362.601 59.46 362.681 59.618 362.681 59.777 L 362.681 64.525 C 363.076 64.684 363.393 64.763 363.709 65 C 364.738 65.554 365.53 66.188 366.005 67.058 C 366.638 68.008 366.954 69.195 366.954 70.461 C 366.954 72.994 365.767 74.894 363.314 76.16 C 364.58 76.635 365.609 77.347 366.48 78.218 C 367.904 79.643 368.617 81.305 368.617 83.283 C 368.617 84.866 368.142 86.291 367.271 87.636 C 366.321 89.061 364.738 90.09 362.681 90.723 L 362.681 95.709 C 362.681 95.868 362.601 96.026 362.522 96.105 C 362.443 96.184 362.285 96.263 362.127 96.263 L 358.881 96.263 C 358.565 96.263 358.248 96.026 358.248 95.63 L 358.248 91.277 C 358.011 91.277 357.773 91.277 357.457 91.277 L 356.982 91.277 L 356.982 95.63 C 356.982 95.947 356.745 96.263 356.349 96.263 L 353.341 96.501 Z M 353.262 90.327 C 353.42 90.327 353.579 90.407 353.658 90.486 C 353.737 90.565 353.816 90.723 353.816 90.881 L 353.816 95.234 L 355.874 95.234 L 355.874 90.881 C 355.874 90.565 356.111 90.248 356.507 90.248 L 357.536 90.248 C 358.011 90.248 358.407 90.248 358.881 90.169 C 359.04 90.169 359.198 90.248 359.356 90.327 C 359.515 90.407 359.515 90.565 359.515 90.723 L 359.515 95.076 L 361.573 95.076 L 361.573 90.248 C 361.573 90.011 361.731 89.773 362.047 89.694 C 364.026 89.219 365.53 88.27 366.4 87.003 C 367.113 85.895 367.509 84.629 367.509 83.362 C 367.509 81.7 366.954 80.355 365.688 79.168 C 364.738 78.139 363.472 77.426 361.968 77.031 C 361.731 76.952 361.493 76.714 361.493 76.477 L 361.493 76.16 C 361.493 75.923 361.652 75.685 361.889 75.606 C 364.501 74.498 365.767 72.836 365.767 70.541 C 365.767 69.512 365.53 68.562 365.055 67.77 C 364.659 67.137 364.026 66.583 363.235 66.188 C 362.918 66.029 362.522 65.871 361.968 65.713 C 361.731 65.634 361.493 65.396 361.493 65.159 L 361.493 60.568 L 359.436 60.568 L 359.436 64.684 C 359.436 64.842 359.356 65 359.277 65.159 C 359.119 65.238 358.961 65.317 358.802 65.317 C 358.09 65.238 357.378 65.238 356.586 65.238 L 356.428 65.238 C 356.27 65.238 356.111 65.159 356.032 65.079 C 355.953 65 355.874 64.842 355.874 64.684 L 355.874 60.647 L 353.816 60.647 L 353.816 64.684 C 353.816 65 353.579 65.317 353.183 65.317 L 347.88 65.317 L 347.88 65.554 L 350.809 65.871 C 351.046 65.871 351.204 66.029 351.363 66.108 C 351.442 66.188 351.6 66.425 351.6 66.662 L 351.679 89.14 C 351.679 89.457 351.521 89.615 351.442 89.694 C 351.363 89.773 351.204 89.932 350.888 89.932 L 347.959 90.248 L 347.959 90.486 L 353.262 90.327 Z M 354.687 89.773 C 354.449 89.773 354.291 89.694 354.133 89.536 C 354.054 89.457 353.895 89.219 353.895 88.982 L 353.895 77.822 C 353.895 77.347 354.212 77.031 354.687 77.031 L 356.428 77.031 C 356.507 77.031 356.507 77.031 356.586 77.031 C 357.457 77.031 358.327 77.11 359.119 77.189 C 360.544 77.426 361.731 77.901 362.601 78.614 C 364.105 79.801 364.897 81.542 364.897 83.837 C 364.897 85.895 364.105 87.478 362.601 88.507 C 361.731 89.061 360.544 89.457 359.119 89.615 C 358.565 89.694 357.932 89.694 357.299 89.694 L 354.687 89.773 Z M 355.003 78.218 L 355.003 88.586 L 357.061 88.586 C 357.694 88.586 358.248 88.586 358.802 88.507 C 360.069 88.349 361.018 88.032 361.731 87.557 C 362.918 86.766 363.472 85.579 363.472 83.916 C 363.472 81.938 362.839 80.592 361.652 79.643 C 360.939 79.088 359.91 78.693 358.723 78.455 C 358.011 78.297 357.219 78.297 356.428 78.297 L 356.349 78.297 L 355.003 78.218 Z M 354.608 76.714 C 354.291 76.714 354.133 76.556 354.054 76.477 C 353.974 76.397 353.816 76.16 353.816 75.923 L 353.816 66.583 C 353.816 66.108 354.133 65.792 354.608 65.792 L 356.111 65.792 L 357.615 65.871 C 358.09 65.871 358.565 65.95 358.961 66.029 C 359.91 66.188 360.86 66.583 361.573 67.137 C 361.968 67.454 362.285 67.77 362.601 68.166 C 363.155 68.958 363.393 69.907 363.393 71.095 C 363.393 72.282 363.155 73.232 362.601 74.102 C 362.206 74.735 361.652 75.289 360.939 75.685 C 360.385 76.002 359.752 76.239 359.04 76.397 C 358.327 76.556 357.457 76.714 356.507 76.714 C 356.27 76.714 356.111 76.714 355.874 76.714 L 354.608 76.714 Z M 355.003 67.058 L 355.003 75.527 L 355.795 75.527 C 356.032 75.527 356.191 75.527 356.428 75.527 C 357.299 75.527 358.09 75.369 358.723 75.21 C 359.356 75.052 359.91 74.894 360.306 74.577 C 360.86 74.261 361.256 73.865 361.573 73.39 C 361.968 72.757 362.206 71.965 362.206 71.016 C 362.206 70.145 361.968 69.353 361.573 68.799 C 361.414 68.483 361.177 68.245 360.86 68.087 C 360.306 67.612 359.515 67.375 358.723 67.216 C 358.327 67.137 358.011 67.137 357.536 67.058 L 356.032 66.979 L 355.003 67.058 Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96.6381 128.376H80.6504V177.131H96.6381V128.376Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M97.3508 177.843H79.9385V127.743H97.3508V177.843ZM81.284 176.498H95.9262V129.089H81.284V176.498Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.885 119.828H105.897V177.131H121.885V119.828Z\",\n fill: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.886 177.922H105.898C105.423 177.922 105.106 177.527 105.106 177.131V119.828C105.106 119.354 105.502 119.037 105.898 119.037H121.886C122.36 119.037 122.677 119.433 122.677 119.828V177.131C122.677 177.606 122.36 177.922 121.886 177.922ZM106.689 176.339H121.094V120.62H106.689V176.339Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M147.133 104.632H131.146V177.131H147.133V104.632Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M147.846 177.843H130.434V103.999H147.846V177.843ZM131.779 176.498H146.421V105.345H131.779V176.498Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M172.302 121.886H156.314V177.21H172.302V121.886Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M173.094 177.843H155.682V121.174H173.094V177.843ZM157.027 176.498H171.669V122.599H157.027V176.498Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M106.128 121.972L105.537 123.181L121.534 131.008L122.125 129.799L106.128 121.972Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M106.162 129.311L105.57 130.519L121.567 138.346L122.159 137.137L106.162 129.311Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M106.132 136.617L105.54 137.825L121.535 145.655L122.127 144.447L106.132 136.617Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M106.166 143.952L105.574 145.161L121.571 152.988L122.163 151.779L106.166 143.952Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M106.131 151.259L105.539 152.468L121.534 160.298L122.126 159.09L106.131 151.259Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M106.168 158.593L105.577 159.802L121.574 167.628L122.165 166.42L106.168 158.593Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M106.131 165.901L105.54 167.109L121.537 174.936L122.128 173.727L106.131 165.901Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M159.718 177.922C159.243 177.922 158.927 177.527 158.927 177.131V121.649C158.927 121.174 159.322 120.857 159.718 120.857C160.193 120.857 160.51 121.253 160.51 121.649V177.131C160.589 177.606 160.193 177.922 159.718 177.922Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M164.546 177.922C164.071 177.922 163.755 177.527 163.755 177.131V121.649C163.755 121.174 164.151 120.857 164.546 120.857C165.021 120.857 165.338 121.253 165.338 121.649V177.131C165.338 177.606 165.021 177.922 164.546 177.922Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M169.374 177.922C168.9 177.922 168.583 177.527 168.583 177.131V121.649C168.583 121.174 168.979 120.857 169.374 120.857C169.77 120.857 170.166 121.253 170.166 121.649V177.131C170.166 177.606 169.849 177.922 169.374 177.922Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M186.153 176.577H66.7998V178.081H186.153V176.577Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M174.281 204.516H78.5133C76.9304 204.516 75.7432 203.249 75.7432 201.745C75.7432 200.163 77.0095 198.975 78.5133 198.975H174.281C175.864 198.975 177.051 200.242 177.051 201.745C177.051 203.249 175.864 204.516 174.281 204.516Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M174.598 205.149H78.1971C76.535 205.149 75.1104 203.803 75.1104 202.062V201.35C75.1104 199.688 76.4559 198.263 78.1971 198.263H174.677C176.339 198.263 177.764 199.609 177.764 201.35V202.062C177.685 203.724 176.339 205.149 174.598 205.149ZM78.1971 199.529C77.1682 199.529 76.3767 200.321 76.3767 201.35V202.062C76.3767 203.091 77.1682 203.882 78.1971 203.882H174.677C175.706 203.882 176.498 203.091 176.498 202.062V201.35C176.498 200.321 175.706 199.529 174.677 199.529H78.1971Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M174.281 218.525H78.5133C76.9304 218.525 75.7432 217.258 75.7432 215.755C75.7432 214.172 77.0095 212.984 78.5133 212.984H174.281C175.864 212.984 177.051 214.251 177.051 215.755C177.051 217.258 175.864 218.525 174.281 218.525Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M174.598 219.158H78.1971C76.535 219.158 75.1104 217.812 75.1104 216.071V215.359C75.1104 213.697 76.4559 212.272 78.1971 212.272H174.677C176.339 212.272 177.764 213.618 177.764 215.359V216.071C177.685 217.812 176.339 219.158 174.598 219.158ZM78.1971 213.538C77.1682 213.538 76.3767 214.33 76.3767 215.359V216.071C76.3767 217.1 77.1682 217.892 78.1971 217.892H174.677C175.706 217.892 176.498 217.1 176.498 216.071V215.359C176.498 214.33 175.706 213.538 174.677 213.538H78.1971Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M79.8586 219.158C72.4188 219.395 73.2894 231.742 54.8481 237.757C47.4083 240.211 39.9685 229.21 33.7951 214.251L47.6458 202.458L31.1041 207.207C29.6794 203.17 28.2548 198.975 27.0676 194.781L40.9183 189.953L25.5638 189.399C21.1316 173.174 18.5988 157.661 19.232 151.487C20.815 135.895 40.4434 140.644 40.4434 140.644C51.1282 143.019 63.5543 150.617 75.1097 159.956C70.9941 164.863 66.8785 169.928 66.8785 169.928L79.7003 163.755C81.8372 165.575 83.9742 167.475 85.9529 169.374C79.4628 171.432 72.1022 173.886 72.1022 173.886H90.6225C101.228 184.571 109.539 195.335 112.546 202.3C119.828 219.316 87.3775 218.92 79.8586 219.158Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M52.7905 238.707C44.955 238.707 37.9109 225.885 33.2412 214.488C33.1621 214.251 33.2412 213.934 33.3995 213.776L45.1133 203.803L31.1834 207.84C30.8668 207.919 30.5502 207.761 30.4711 207.444C29.0464 203.566 27.7009 199.371 26.4346 195.018C26.3554 194.701 26.5137 194.385 26.8303 194.306L37.5943 190.586L25.4057 190.111C25.1682 190.111 24.9308 189.953 24.8516 189.636C20.4986 173.569 17.8867 157.898 18.5199 151.487C18.9156 147.372 20.6569 144.206 23.5061 142.227C29.917 137.716 40.0478 140.09 40.4436 140.169C52.8697 142.939 66.2455 152.279 75.3474 159.56C75.5057 159.639 75.5848 159.798 75.5848 159.956C75.5848 160.114 75.5848 160.273 75.4265 160.431C72.973 163.359 70.5194 166.367 68.9365 168.266L79.3047 163.28C79.5422 163.201 79.7796 163.201 79.9379 163.359C81.9957 165.101 84.1327 167 86.1905 168.979C86.3488 169.137 86.4279 169.374 86.3488 169.533C86.2697 169.77 86.1114 169.929 85.9531 170.008C82.3123 171.195 78.355 172.461 75.5848 173.332H90.3853C90.5436 173.332 90.7019 173.411 90.781 173.49C101.387 184.096 109.855 195.097 112.863 202.141C114.367 205.624 114.288 208.71 112.705 211.243C107.718 219.079 89.1981 219.474 81.2834 219.633C80.6502 219.633 80.0962 219.633 79.7005 219.633C76.8512 219.712 75.2682 221.849 73.1313 224.698C70.0445 228.893 65.7706 234.671 54.8483 238.153C54.2943 238.549 53.582 238.707 52.7905 238.707ZM34.5076 214.409C41.4725 231.03 48.5957 239.182 54.69 237.203C65.2166 233.8 69.3322 228.181 72.3398 224.144C74.6351 221.057 76.3763 218.683 79.7796 218.604C80.2545 218.604 80.8085 218.604 81.3625 218.604C88.4066 218.446 107.164 218.05 111.834 210.768C113.259 208.631 113.259 205.94 111.913 202.774C108.985 195.889 100.674 185.204 90.3061 174.677H72.1024C71.7858 174.677 71.5483 174.44 71.5483 174.202C71.4692 173.886 71.7066 173.648 71.9441 173.569C72.0232 173.569 78.6715 171.353 84.845 169.374C83.1038 167.712 81.3625 166.209 79.6213 164.705L67.1952 170.72C66.9578 170.878 66.6412 170.799 66.4829 170.562C66.3246 170.324 66.3246 170.008 66.4829 169.849C66.5621 169.77 70.4403 165.021 74.3185 160.352C65.2957 152.991 52.3156 144.047 40.3644 141.356C40.2853 141.356 30.3919 138.982 24.3768 143.177C21.7649 144.997 20.2611 147.847 19.8654 151.646C19.2322 157.819 21.7649 173.094 26.0388 188.924L40.9185 189.478C41.2351 189.478 41.4725 189.715 41.4725 189.953C41.5516 190.269 41.3142 190.507 41.0768 190.586L27.7801 195.176C28.9673 199.134 30.2336 202.933 31.5 206.494L47.5668 201.904C47.8042 201.825 48.1208 201.983 48.2791 202.22C48.4374 202.458 48.3583 202.774 48.1208 202.933L34.5076 214.409Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.7708 286.987C60.3096 289.361 64.6627 298.226 52.8698 308.119C48.121 312.076 39.3357 306.219 30.3921 297.038L37.1196 284.296L26.3556 292.685C24.0603 290.153 21.8442 287.462 19.7073 284.771L28.4926 277.173L17.0163 281.288C8.94327 270.603 2.53237 259.919 1.18687 255.249C-2.29559 243.298 13.6129 241.002 13.6129 241.002C22.1608 239.578 33.6371 241.477 44.876 244.96C43.293 249.788 41.7101 254.695 41.7101 254.695L49.3082 246.384C51.4452 247.097 53.503 247.888 55.5608 248.68C51.366 252.083 46.6963 256.12 46.6963 256.12L60.3096 250.658C71.311 255.328 80.6504 260.868 84.9243 265.142C95.2926 275.273 71.2319 284.612 65.7708 286.987Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.3083 309.939C44.6386 309.939 38.0694 305.745 29.9964 297.434C29.8381 297.276 29.759 296.959 29.9173 296.722L35.3784 286.433L26.7514 293.16C26.514 293.318 26.1182 293.318 25.9599 293.081C23.7438 290.627 21.5277 287.937 19.3116 285.087C19.0742 284.85 19.1533 284.454 19.3907 284.296L25.7225 278.755L17.2538 281.763C17.0163 281.842 16.6997 281.763 16.5415 281.526C8.54761 270.92 1.97842 260.156 0.553773 255.249C-0.39599 252.083 -0.0794024 249.234 1.50354 246.78C4.90685 241.477 13.1381 240.211 13.4547 240.211C23.4272 238.549 36.0907 241.477 45.0343 244.168C45.1926 244.247 45.3509 244.327 45.4301 244.485C45.5092 244.643 45.5092 244.801 45.4301 244.96C44.5595 247.572 43.6888 250.263 43.1348 252.162L48.9125 245.83C49.0708 245.672 49.3083 245.593 49.5457 245.672C51.6035 246.384 53.7405 247.176 55.8775 247.967C56.0358 248.046 56.1941 248.205 56.2732 248.442C56.2732 248.68 56.1941 248.838 56.0358 248.996C53.9779 250.737 51.6827 252.558 50.0206 254.062L60.2305 249.946C60.3888 249.867 60.5471 249.867 60.7054 249.946C71.7068 254.616 81.2045 260.235 85.4784 264.509C87.6945 266.646 88.5651 269.02 88.0903 271.395C86.6656 278.676 73.1315 284.454 67.3538 286.987C66.8789 287.145 66.4832 287.382 66.1666 287.462C64.1879 288.332 63.6339 290.232 62.9215 293.081C61.8926 297.118 60.3888 302.658 53.4239 308.515C52.1576 309.544 50.8121 309.939 49.3083 309.939ZM31.1045 296.959C41.077 307.09 48.6751 310.889 52.4742 307.644C59.2016 302.025 60.5471 296.722 61.576 292.844C62.3675 289.915 63.0007 287.541 65.5334 286.433C65.85 286.274 66.2457 286.116 66.7206 285.958C71.8652 283.742 85.4784 277.964 86.7448 271.237C87.1405 269.258 86.349 267.358 84.4495 265.459C80.2547 261.264 70.9945 255.882 60.2305 251.212L46.8547 256.594C46.6173 256.673 46.3007 256.594 46.1424 256.357C45.9841 256.119 46.0633 255.803 46.3007 255.565C46.3798 255.565 50.4955 252.004 54.3737 248.759C52.7116 248.126 51.0495 247.492 49.4666 246.938L42.1059 255.011C41.9476 255.249 41.631 255.249 41.3936 255.091C41.1561 254.932 41.077 254.695 41.1561 254.378C41.1561 254.299 42.5808 249.788 44.0846 245.197C35.3784 242.585 23.1898 239.894 13.613 241.477C13.5339 241.477 5.61918 242.664 2.4533 247.492C1.1078 249.55 0.870361 252.083 1.66183 254.932C3.00733 259.523 9.49738 270.208 17.1746 280.418L28.2552 276.46C28.4926 276.381 28.8092 276.46 28.9675 276.698C29.1258 276.935 29.0467 277.252 28.8092 277.489L20.4988 284.771C22.4775 287.224 24.4561 289.599 26.4348 291.815L36.8031 283.742C37.0405 283.583 37.3571 283.583 37.5154 283.742C37.7528 283.9 37.7528 284.217 37.6737 284.454L31.1045 296.959Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M94.58 357.665L92.997 357.507C92.997 357.19 96.4795 324.977 92.6804 285.404C89.198 248.917 78.7506 198.58 48.7539 165.892L49.9411 164.784C63.3961 179.426 74.0809 198.659 81.7582 222.007C87.8525 240.686 92.1264 261.976 94.3425 285.325C98.0624 324.977 94.58 357.348 94.58 357.665Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M94.5807 365.342C84.6873 318.725 66.3252 292.369 52.7119 278.518C37.9906 263.48 25.4854 259.444 25.4062 259.365L25.8811 257.861C26.4352 258.019 38.8612 262.135 53.82 277.41C62.6053 286.354 70.4408 297.355 77.01 310.019C85.2413 325.848 91.6522 344.368 96.0844 365.105L94.5807 365.342Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M108.748 433.488C98.8544 433.25 88.961 433.092 79.0676 432.855C76.5349 419.321 74.5563 404.599 73.4482 388.77C72.3402 372.307 72.3402 356.953 73.0525 342.865C87.0615 342.865 101.07 342.865 115.159 342.865C115.713 357.032 115.554 372.386 114.367 388.77C113.18 404.758 111.201 419.716 108.748 433.488Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M109.064 433.884L78.7511 433.25L78.672 432.934C75.981 418.371 74.0814 403.491 73.0525 388.849C72.0236 373.653 71.8653 358.14 72.6568 342.944V342.548H115.554V342.944C116.108 358.219 115.871 373.653 114.763 388.849C113.655 403.729 111.835 418.766 109.144 433.567L109.064 433.884ZM79.3843 432.459L108.352 433.013C110.964 418.371 112.863 403.491 113.892 388.77C115 373.732 115.238 358.457 114.684 343.339H73.4483C72.6568 358.457 72.8151 373.732 73.844 388.77C74.8729 403.333 76.7724 418.054 79.3843 432.459Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M103.603 358.931C101.545 358.931 99.1705 358.298 96.2421 356.953C93.2345 355.528 90.8601 356.082 88.1691 356.794C85.4781 357.507 82.4705 358.219 78.2758 356.953C76.4554 356.399 74.5559 356.32 72.7355 356.636C72.4189 356.715 72.1023 356.478 72.0232 356.161C71.944 355.845 72.1814 355.528 72.498 355.449C74.5559 355.053 76.6137 355.132 78.6715 355.766C82.4705 356.874 85.2407 356.24 87.8525 355.528C90.7018 354.816 93.3137 354.183 96.7961 355.766C103.207 358.773 106.294 357.665 109.855 355.766C111.28 354.974 113.18 354.895 115.554 355.37C115.871 355.449 116.108 355.766 116.029 356.082C115.95 356.399 115.633 356.636 115.317 356.557C113.18 356.161 111.597 356.24 110.409 356.874C108.035 358.14 105.977 358.931 103.603 358.931Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M103.603 378.876C101.545 378.876 99.1705 378.243 96.242 376.898C93.2344 375.473 90.86 376.027 88.169 376.739C85.478 377.452 82.4705 378.164 78.2757 376.898C76.5344 376.344 74.7141 376.265 72.8937 376.581C72.5771 376.66 72.2605 376.423 72.1814 376.106C72.1022 375.79 72.3397 375.473 72.6562 375.394C74.6349 375.077 76.6927 375.157 78.5923 375.711C82.3913 376.819 85.1615 376.185 87.7733 375.473C90.6226 374.761 93.2344 374.128 96.7169 375.711C103.128 378.718 106.215 377.61 109.776 375.711C111.122 374.998 112.863 374.84 115.079 375.236C115.396 375.315 115.633 375.631 115.554 375.948C115.475 376.265 115.158 376.502 114.842 376.423C112.942 376.106 111.438 376.185 110.33 376.739C108.035 378.085 105.977 378.876 103.603 378.876Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M103.602 398.742C101.544 398.742 99.1701 398.109 96.2416 396.764C93.234 395.339 90.8596 395.893 88.1686 396.605C85.4776 397.318 82.4701 398.03 78.2753 396.764C76.8506 396.368 75.426 396.21 74.0013 396.289C73.6848 396.289 73.3682 396.051 73.3682 395.735C73.3682 395.418 73.6056 395.102 73.9222 395.102C75.5051 394.943 77.0881 395.181 78.5919 395.656C82.3909 396.764 85.1611 396.13 87.7729 395.418C90.6222 394.706 93.234 394.073 96.7165 395.656C103.127 398.663 106.214 397.555 109.776 395.656C110.884 395.102 112.15 394.864 113.812 395.022C114.129 395.022 114.366 395.339 114.366 395.656C114.366 395.972 114.05 396.289 113.733 396.21C112.388 396.13 111.28 396.289 110.409 396.685C108.035 398.03 105.977 398.742 103.602 398.742Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M103.603 418.687C101.545 418.687 99.1707 418.054 96.2423 416.709C93.2347 415.284 90.8603 415.838 88.1693 416.55C85.4783 417.263 82.4707 417.975 78.2759 416.709C77.5636 416.471 76.8513 416.392 76.2181 416.313C75.9015 416.313 75.6641 415.996 75.6641 415.601C75.6641 415.284 75.9807 415.047 76.3764 415.047C77.1679 415.126 77.9593 415.284 78.6716 415.521C82.4707 416.629 85.2408 415.996 87.8527 415.284C90.702 414.572 93.3138 413.939 96.7963 415.521C103.207 418.529 106.294 417.421 109.856 415.521C110.33 415.284 110.884 415.126 111.438 414.967C111.755 414.888 112.072 415.126 112.151 415.442C112.23 415.759 111.993 416.075 111.676 416.155C111.201 416.234 110.805 416.392 110.41 416.55C108.035 417.896 105.977 418.687 103.603 418.687Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M336.612 230.08C330.676 218.129 324.819 206.257 318.883 194.306L289.836 148.559L281.051 173.49L306.615 216.388L306.774 216.309L317.854 236.887C340.332 236.887 336.612 230.08 336.612 230.08Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M317.854 237.441C317.696 237.441 317.459 237.362 317.38 237.203L306.536 217.021C306.536 217.021 306.536 217.021 306.457 217.021C306.299 217.021 306.22 216.863 306.141 216.783L280.576 173.886C280.497 173.728 280.497 173.569 280.497 173.411L289.282 148.48C289.362 148.321 289.52 148.163 289.757 148.163C289.995 148.163 290.153 148.242 290.232 148.401L319.279 194.147C319.279 194.147 319.279 194.147 319.279 194.227L337.008 230.001C337.087 230.159 337.72 231.505 336.85 233.009C335.029 235.858 328.698 237.441 317.854 237.441ZM306.774 215.755H306.853C307.011 215.755 307.09 215.913 307.17 215.992L318.092 236.254C331.468 236.254 335.029 233.721 335.9 232.217C336.533 231.188 336.058 230.238 336.058 230.238L318.329 194.464L289.916 149.667L281.526 173.332L306.774 215.755Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M306.22 175.152C306.22 175.152 305.032 192.327 290.39 193.593C286.829 190.032 284.454 186.708 282.871 184.096C279.784 178.872 278.36 174.282 276.46 167.633C274.956 162.568 274.244 159.956 273.69 155.999C273.69 155.999 272.028 144.839 274.244 133.521L274.323 132.967C274.323 132.967 275.669 132.967 278.676 135.42C279.943 136.449 281.447 137.874 283.267 140.011C288.332 145.71 295.772 156.157 306.22 175.152Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M290.391 194.227C290.232 194.227 290.074 194.147 289.916 194.068C286.908 191.14 284.375 187.895 282.318 184.412C279.073 179.03 277.648 174.123 275.828 167.871C274.324 162.726 273.611 160.114 272.978 156.157C272.978 156.078 271.395 144.76 273.532 133.521L273.611 132.967C273.691 132.65 273.928 132.413 274.245 132.413C274.482 132.413 275.986 132.492 278.993 135.025C280.418 136.212 282.001 137.795 283.663 139.615C290.153 146.897 297.91 158.769 306.695 174.836C306.774 174.915 306.774 175.073 306.774 175.231C306.853 175.31 305.428 192.96 290.391 194.227ZM274.799 133.758C272.741 144.76 274.245 155.761 274.245 155.919C274.799 159.798 275.59 162.33 277.015 167.475C278.914 173.886 280.26 178.476 283.347 183.779C285.325 187.103 287.7 190.111 290.549 192.96C303.529 191.615 305.27 177.289 305.508 175.31C296.722 159.402 289.124 147.688 282.713 140.486C281.051 138.665 279.547 137.162 278.202 135.974C276.54 134.55 275.432 133.996 274.799 133.758Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M304.795 179.347C304.557 177.131 288.016 152.833 277.647 138.111L278.756 137.32C281.526 141.277 305.824 175.944 306.14 179.268L304.795 179.347Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M302.5 185.995C294.427 171.591 281.288 158.769 281.13 158.69L281.446 158.373C281.605 158.531 294.743 171.274 302.816 185.758L302.5 185.995Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M281.586 169.592L280.525 170.419L297.075 191.638L298.136 190.81L281.586 169.592Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M177.21 450.9C171.037 456.599 164.863 462.218 158.69 467.917C158.848 470.212 159.481 474.248 161.856 478.601C163.993 482.559 166.763 485.091 168.504 486.437C170.483 487.387 172.224 488.257 173.649 489.049C175.39 489.919 176.102 490.394 176.261 491.107C176.419 492.294 174.757 493.323 174.203 493.718C172.224 494.985 170.245 495.143 168.029 495.301C158.927 495.855 157.424 496.014 155.366 494.747C154.891 494.431 154.733 494.273 153.15 492.69C143.731 483.509 143.098 482.401 139.774 479.789C137.32 477.889 136.766 477.81 135.104 476.148C133.363 474.407 130.039 471.082 130.514 467.363C130.751 465.621 131.622 464.513 133.046 462.772C134.471 461.031 137.162 458.261 141.832 456.045C148.559 450.583 155.208 445.043 161.935 439.582C166.921 443.381 172.066 447.18 177.21 450.9Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M159.482 496.172C157.187 496.172 156.158 495.855 154.891 495.143C154.337 494.827 154.179 494.589 152.517 493.006C149.034 489.603 146.818 487.308 145.156 485.645C142.307 482.796 141.278 481.767 139.22 480.184C138.271 479.472 137.637 478.997 137.083 478.601C136.134 477.968 135.58 477.493 134.551 476.464C132.73 474.644 129.327 471.162 129.802 467.125C130.039 465.226 131.068 463.959 132.493 462.218C134.788 459.369 137.796 457.073 141.357 455.411L161.381 438.949C161.619 438.791 161.856 438.791 162.094 438.949L177.527 450.267C177.686 450.346 177.765 450.504 177.765 450.742C177.765 450.9 177.686 451.058 177.607 451.217L159.324 467.996C159.64 471.557 160.669 475.04 162.41 478.127C164.072 481.055 166.209 483.667 168.821 485.725C170.562 486.516 172.225 487.387 173.887 488.257C175.628 489.128 176.657 489.682 176.815 490.79C176.973 492.294 175.153 493.481 174.52 493.956C172.383 495.301 170.325 495.46 168.109 495.618L166.447 495.697C163.202 496.093 161.065 496.172 159.482 496.172ZM161.777 440.373L142.07 456.519C142.07 456.519 141.99 456.599 141.911 456.599C138.429 458.261 135.58 460.398 133.363 463.168C131.939 464.909 131.147 465.938 130.989 467.442C130.593 470.924 133.68 474.09 135.421 475.752C136.371 476.702 136.925 477.098 137.796 477.731C138.35 478.127 138.983 478.601 139.933 479.314C142.07 480.976 143.098 482.005 146.027 484.933C147.689 486.595 149.984 488.891 153.388 492.215C154.971 493.719 155.129 493.956 155.525 494.193C157.266 495.301 158.611 495.222 166.209 494.747L167.871 494.668C170.008 494.51 171.908 494.431 173.728 493.244C175.311 492.215 175.549 491.582 175.549 491.265C175.47 490.869 174.836 490.473 173.253 489.682C171.591 488.811 169.85 487.941 168.109 487.149C168.03 487.149 168.03 487.07 168.03 487.07C165.26 484.854 162.964 482.163 161.223 479.076C159.403 475.752 158.295 471.953 157.978 468.154C157.978 467.996 158.057 467.758 158.136 467.679L176.103 451.217L161.777 440.373Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M167.316 484.617C167.316 484.617 159.402 487.703 155.682 493.244L146.738 486.912C146.738 486.912 155.444 477.652 162.568 475.831C169.691 473.932 171.274 485.329 167.316 484.617Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M155.682 493.639L146.264 486.991L146.501 486.754C146.897 486.358 155.366 477.414 162.489 475.594C164.863 474.961 166.921 475.673 168.267 477.573C169.77 479.551 170.166 482.559 169.216 484.063C168.821 484.775 168.108 485.091 167.317 484.933C166.525 485.25 159.323 488.337 155.84 493.402L155.682 493.639ZM147.055 486.833L155.524 492.848C159.323 487.466 167.079 484.379 167.158 484.379H167.238H167.317C167.95 484.458 168.425 484.3 168.741 483.746C169.454 482.559 169.295 479.789 167.792 477.81C166.525 476.148 164.705 475.515 162.568 476.069C156.236 477.731 148.48 485.408 147.055 486.833Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M130.197 463.643L159.64 492.69L177.368 492.531L177.448 498.863L166.05 498.942L157.107 499.021L150.696 492.69L125.765 468.154L130.197 463.643Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M156.949 499.259L125.369 468.154L130.197 463.247L159.798 492.373L177.685 492.215L177.764 499.1L156.949 499.259ZM126.161 468.154L157.186 498.705L177.21 498.547L177.131 492.769L159.561 492.927L159.481 492.848L130.197 464.038L126.161 468.154Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M278.043 177.289C275.985 183.304 274.323 192.723 276.46 207.761C272.978 210.531 258.256 221.691 237.52 220.029C223.59 218.92 213.776 212.589 209.581 209.423C212.747 202.141 216.071 192.565 217.971 181.009C220.978 162.41 219 146.738 216.783 136.529C233.958 128.535 249.075 126.952 256.832 127.743C262.689 128.376 267.833 129.722 272.186 131.305C273.928 131.938 275.431 132.571 276.935 133.204C277.964 141.277 278.993 147.767 279.705 152.12C280.497 157.186 280.972 159.402 280.892 162.964C280.734 169.929 278.755 175.073 278.043 177.289Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M241.794 220.82C240.369 220.82 238.944 220.741 237.52 220.662C224.698 219.633 215.042 214.251 209.185 209.898C208.948 209.739 208.869 209.423 208.948 209.106C212.905 200.004 215.754 190.507 217.337 180.851C219.712 166.209 219.316 151.329 216.15 136.608C216.071 136.291 216.229 135.975 216.546 135.895C233.325 128.06 248.838 126.239 256.99 127.11C262.293 127.664 267.516 128.851 272.503 130.672C274.086 131.226 275.748 131.938 277.251 132.65C277.489 132.73 277.568 132.967 277.647 133.125C278.518 139.536 279.388 145.868 280.417 151.962L280.655 153.387C281.288 157.423 281.684 159.719 281.605 162.964C281.525 169.691 279.784 174.677 278.914 177.131L278.755 177.606C276.064 185.6 275.51 195.73 277.172 207.761C277.172 207.998 277.093 208.236 276.935 208.394C271.949 212.193 259.206 220.82 241.794 220.82ZM210.372 209.106C216.15 213.301 225.41 218.287 237.599 219.316C256.436 220.82 270.366 211.718 275.748 207.444C274.086 195.335 274.64 185.125 277.41 177.052L277.568 176.577C278.36 174.202 280.101 169.375 280.18 162.884C280.259 159.798 279.863 157.661 279.23 153.545L278.993 152.12C278.043 146.105 277.093 139.853 276.302 133.6C274.877 132.967 273.452 132.334 271.949 131.859C267.041 130.039 261.897 128.851 256.752 128.376C248.838 127.585 233.879 129.326 217.496 136.845C220.582 151.566 220.978 166.446 218.604 181.009C217.021 190.586 214.25 200.084 210.372 209.106Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M241.319 69.8077C240.132 73.211 238.469 78.3556 236.649 84.7665C231.505 103.524 232.85 107.086 228.972 111.043C222.64 117.454 209.264 117.771 198.738 112.785C197.63 112.31 196.601 111.756 195.572 111.122C193.751 110.014 192.01 108.669 190.506 107.165C188.686 105.424 182.196 98.9338 183.542 92.048C185.204 83.5793 196.522 85.1622 203.091 75.0314C206.415 69.966 206.573 64.9798 206.415 60.2309C206.336 58.9646 206.257 57.6982 206.257 56.4319C206.019 51.5248 206.257 47.0134 210.056 43.1352C214.33 38.8613 221.057 37.4366 225.885 38.8613C228.418 39.5736 230.555 41.1565 232.375 43.2143C232.929 43.8475 233.483 44.5598 233.958 45.2722C234.591 46.1428 235.145 47.0925 235.62 48.1215C235.858 48.6755 236.174 49.1504 236.412 49.7044C237.045 51.0499 237.52 52.3954 237.995 53.7409C238.153 54.2949 238.39 54.8489 238.549 55.403C238.707 56.0361 238.944 56.6693 239.103 57.3025C239.34 58.0148 239.498 58.8063 239.657 59.4395C241.002 65.138 241.319 69.8077 241.319 69.8077Z\",\n fill: \"url(#paint0_linear_129_247)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M213.696 116.584C208.71 116.584 203.328 115.475 198.5 113.18C197.471 112.705 196.363 112.151 195.334 111.518C193.435 110.331 191.694 108.985 190.19 107.561C184.57 101.941 182.117 96.7968 183.067 92.048C183.937 87.5366 187.499 85.7954 191.535 83.7375C195.255 81.838 199.529 79.701 202.695 74.8731C206.019 69.8077 206.098 64.6631 205.94 60.31C205.94 59.5977 205.861 58.9645 205.861 58.3314C205.861 57.6982 205.782 57.1442 205.782 56.511C205.544 51.6039 205.703 46.9342 209.739 42.8977C213.934 38.7821 220.582 36.9617 225.964 38.5446C228.418 39.257 230.713 40.7608 232.613 43.056C233.167 43.6892 233.721 44.4807 234.275 45.193C234.829 46.0636 235.462 47.0134 235.937 48.0423C236.253 48.5963 236.491 49.1503 236.728 49.7044C237.282 50.8916 237.757 52.1579 238.232 53.5034L238.311 53.82C238.469 54.374 238.707 54.9281 238.865 55.4821C239.023 56.0361 239.182 56.6693 239.419 57.3816C239.578 58.0939 239.815 58.8063 239.973 59.5977C241.319 65.2963 241.635 69.966 241.635 69.966V70.0451V70.1243C239.973 75.0314 238.39 80.0968 236.966 85.083C234.908 92.602 233.879 97.6674 233.167 101.308C232.059 106.769 231.584 109.065 229.209 111.518C225.727 114.763 220.028 116.584 213.696 116.584ZM222.007 38.7029C218.129 38.7029 213.617 40.1276 210.293 43.3726C206.494 47.1717 206.415 51.683 206.573 56.3527C206.573 56.9067 206.652 57.5399 206.652 58.1731C206.652 58.8063 206.732 59.5186 206.732 60.2309C206.89 64.7423 206.811 69.966 203.328 75.2688C200.083 80.2551 195.651 82.4712 191.852 84.3707C187.815 86.3494 184.65 88.0115 183.858 92.1271C182.987 96.5593 185.283 101.546 190.744 106.928C192.248 108.352 193.91 109.698 195.73 110.806C196.759 111.439 197.788 111.993 198.817 112.468C209.502 117.533 222.64 116.742 228.655 110.806C230.951 108.511 231.346 106.374 232.454 100.992C233.167 97.2717 234.196 92.2062 236.253 84.6873C237.599 79.701 239.182 74.6356 240.844 69.8077C240.765 69.1745 240.448 64.8214 239.182 59.5977C239.024 58.8063 238.786 58.0939 238.628 57.4608C238.469 56.7484 238.232 56.1944 238.074 55.6404C237.915 55.1655 237.757 54.6906 237.599 54.2157L237.52 54.0574C237.045 52.6328 236.491 51.2873 235.937 50.0209C235.699 49.4669 235.462 48.992 235.145 48.438C234.591 47.4091 234.116 46.4593 233.483 45.6679C233.008 44.9555 232.454 44.2432 231.9 43.61C230.001 41.4731 227.943 40.0484 225.569 39.3361C224.698 38.8612 223.352 38.7029 222.007 38.7029Z\",\n fill: \"url(#paint1_linear_129_247)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M239.103 57.3025C237.204 59.6769 235.779 62.6845 234.434 65.5338C233.009 68.4622 231.743 71.2324 230.081 73.1319C226.915 76.8518 227.31 83.1044 227.627 89.0404C227.944 93.9475 228.181 99.0921 226.44 102.337C222.324 110.014 216.151 112.705 207.92 110.41C205.703 109.777 204.437 108.431 204.2 106.294C204.12 105.503 204.12 104.553 204.358 103.603C204.754 105.186 205.387 106.453 206.257 107.244C207.365 108.273 209.423 109.065 212.668 106.928C219 102.812 220.029 94.9764 217.892 91.494C216.547 89.357 214.251 88.8821 211.719 90.3859C209.661 91.5731 207.524 93.6309 205.862 96.0845C206.257 92.9186 207.286 89.357 208.948 86.0328C212.273 79.3845 213.143 78.7513 214.33 77.8807C215.122 77.2475 216.151 76.5352 217.892 74.1608C220.741 70.3617 219.475 66.0878 218.05 61.0224C217.021 57.4608 215.834 53.4243 216.072 49.0712C216.151 47.5674 216.705 46.4594 217.892 45.6679C221.454 43.2144 229.052 44.2433 233.959 45.2722C233.484 44.5599 232.93 43.8475 232.376 43.2144C227.231 42.2646 220.504 41.7897 216.942 44.3224C215.359 45.4305 214.489 47.0926 214.41 49.1504C214.172 53.82 215.359 58.0148 216.467 61.6556C217.813 66.4044 218.921 70.1243 216.626 73.211C214.964 75.4272 214.093 76.0603 213.381 76.6144C212.035 77.6433 211.006 78.3556 207.524 85.3997C205.229 89.9902 204.041 95.293 204.041 99.6461C202.933 102.021 202.3 104.474 202.617 106.69C202.933 109.539 204.674 111.439 207.603 112.23C209.661 112.785 211.56 113.101 213.381 113.101C219.633 113.101 224.699 109.777 228.181 103.287C230.16 99.567 229.843 94.2641 229.527 89.0404C229.21 83.421 228.814 77.5641 231.584 74.3191C233.326 72.2613 234.75 69.412 236.175 66.3253C237.362 63.8717 238.47 61.4973 239.816 59.5186C239.499 58.7271 239.262 58.0148 239.103 57.3025ZM212.668 91.9689C214.41 91.0191 215.676 91.1774 216.467 92.5229C218.209 95.3722 217.021 102.179 211.798 105.582C209.898 106.769 208.474 106.928 207.524 106.057C206.416 105.107 205.783 102.812 205.783 99.9627C207.207 96.6385 209.819 93.5518 212.668 91.9689Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M209.027 72.9735C206.257 78.9887 201.746 81.6005 197.709 83.8958C192.961 86.5868 189.478 88.5655 190.982 95.5304C192.486 102.258 195.81 108.431 198.659 112.784C197.551 112.31 196.522 111.756 195.493 111.122C193.04 106.928 190.507 101.625 189.241 95.9261C187.42 87.774 191.932 85.1621 196.76 82.392C200.559 80.255 204.833 77.8015 207.365 72.2612C209.661 67.2749 208.394 63.7925 206.336 60.1517C206.257 58.8854 206.178 57.619 206.178 56.3527C206.416 56.7484 206.574 57.065 206.811 57.4607C209.502 62.0512 212.035 66.4043 209.027 72.9735Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M259.127 65.8502C259.127 65.8502 234.037 61.3389 230.555 73.3692C227.072 85.3995 238.944 102.812 238.944 102.812L259.127 65.8502Z\",\n fill: \"url(#paint2_linear_129_247)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M238.944 103.603L238.548 103.049C238.074 102.337 226.597 85.3204 230.08 73.2901C233.641 61.0223 258.098 65.2962 259.127 65.4545L259.681 65.5337L238.944 103.603ZM248.996 65.4545C241.714 65.4545 232.85 66.8792 230.95 73.5275C227.864 84.0541 236.965 98.9337 238.944 102.02L258.573 66.1669C257.069 65.9294 253.349 65.4545 248.996 65.4545Z\",\n fill: \"url(#paint3_linear_129_247)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M247.809 69.4911C247.255 75.7437 246.621 81.9963 246.067 88.328C248.6 87.6948 251.054 86.9825 253.586 86.3493C253.665 83.4209 253.745 80.4925 253.824 77.564L255.328 86.1119C259.918 84.6873 264.509 83.2626 269.099 81.838C268.862 80.4925 268.466 78.5138 267.595 76.2977C266.171 72.7361 263.955 67.1166 259.047 65.7711C253.586 64.1882 248.363 69.0162 247.809 69.4911Z\",\n fill: \"url(#paint4_linear_129_247)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M245.593 88.8821L247.413 69.3328L247.492 69.2536C248.125 68.6996 253.507 63.7925 259.206 65.3754C264.271 66.8001 266.646 72.6569 267.991 76.1394C268.704 77.9598 269.179 79.7802 269.495 81.7588L269.574 82.0754L255.011 86.5868L254.141 81.6005L253.982 86.6659L245.593 88.8821ZM248.205 69.7285L246.543 87.774L253.191 86.0328L253.587 73.5276L255.724 85.5579L268.704 81.5214C268.387 79.7802 267.912 78.0389 267.279 76.456C265.854 72.8944 263.717 67.5124 259.048 66.1669C254.061 64.7422 249.154 68.8579 248.205 69.7285Z\",\n fill: \"url(#paint5_linear_129_247)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M267.358 85.5579C266.725 83.2627 265.775 79.7802 265.301 75.2688C264.43 74.1608 261.343 70.7575 256.832 70.52C253.429 70.3617 248.917 72.0238 248.917 73.4485C248.363 74.6357 247.809 75.9812 247.413 77.5641C246.464 80.8883 246.305 83.8959 246.384 86.112C244.089 81.9172 239.974 80.3342 237.362 81.6006C234.671 82.8669 234.433 86.9034 234.433 87.1409C234.354 90.1485 236.095 92.9977 238.945 94.739V129.168C238.945 131.78 239.974 134.075 241.556 135.816C243.298 137.795 254.616 150.775 256.436 159.323L258.652 130.909C258.81 130.118 258.969 129.326 258.969 128.535V110.41C259.681 110.489 260.789 110.568 262.056 110.331C265.934 109.619 268.466 106.69 268.466 106.69C270.445 104.316 270.841 101.704 270.999 100.2C271.474 95.0556 269.416 92.4437 267.358 85.5579Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M256.436 159.956C256.119 159.956 255.803 159.719 255.724 159.402C253.903 151.012 242.348 137.716 241.002 136.212C239.182 134.312 238.232 131.78 238.232 129.089V95.0556C235.304 93.2352 233.563 90.1485 233.721 87.0617C233.721 86.9034 233.958 82.3921 237.045 80.8883C239.419 79.7802 243.06 80.6508 245.672 83.7376C245.751 81.5215 246.147 79.3845 246.78 77.2475C247.176 75.8229 247.651 74.4774 248.284 73.211C248.363 72.8153 248.521 72.4196 248.917 72.103C250.342 70.7575 254.062 69.6494 256.911 69.8077C261.264 69.966 264.43 73.0527 265.855 74.794C265.934 74.8731 266.013 75.0314 266.013 75.1897C266.409 78.6722 267.121 82.1546 268.071 85.3997C268.704 87.5366 269.337 89.2778 269.891 90.7816C271.157 94.185 272.028 96.5594 271.632 100.2C271.474 101.625 271.157 104.553 268.941 107.086C268.862 107.244 266.171 110.252 262.135 110.964C261.343 111.122 260.473 111.122 259.681 111.122V128.535C259.681 129.326 259.602 130.197 259.365 130.988L257.148 159.323C257.069 159.639 256.832 159.956 256.436 159.956ZM239.182 81.838C238.628 81.838 238.074 81.9172 237.599 82.1546C235.225 83.2627 235.066 87.0617 235.066 87.0617C234.987 89.7527 236.57 92.4437 239.261 94.0267C239.499 94.185 239.578 94.4224 239.578 94.6598V129.089C239.578 131.384 240.448 133.6 242.031 135.262C243.931 137.399 252.558 147.451 255.961 155.603L257.861 130.751V130.672C258.019 129.959 258.177 129.168 258.177 128.456V110.331C258.177 110.093 258.256 109.935 258.415 109.777C258.573 109.619 258.731 109.539 258.969 109.619C259.919 109.698 260.868 109.698 261.818 109.539C265.38 108.906 267.754 106.136 267.833 106.136C269.733 103.92 270.049 101.387 270.208 99.9627C270.603 96.7177 269.812 94.5015 268.546 91.1774C267.991 89.5944 267.358 87.8532 266.725 85.7162C265.775 82.4712 265.063 78.9888 264.667 75.5063C263.322 73.9233 260.552 71.3115 256.832 71.1532C253.428 70.9949 249.709 72.7361 249.629 73.3693C249.629 73.4485 249.629 73.6068 249.55 73.6859C248.917 74.9523 248.442 76.2978 248.046 77.6433C247.255 80.3342 246.938 83.1044 247.018 85.9537C247.018 86.2703 246.78 86.5869 246.464 86.666C246.147 86.7451 245.83 86.5869 245.672 86.3494C244.089 83.421 241.398 81.838 239.182 81.838Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M237.995 53.7408C238.153 54.2948 238.39 54.8489 238.549 55.4029C235.937 56.2735 233.483 57.8565 231.663 59.0437C230.08 60.0726 229.051 60.7057 228.26 60.7057C227.943 60.7057 227.705 60.6266 227.468 60.3892C226.677 59.6768 226.993 58.4105 228.972 54.1365C230.396 51.0498 232.85 49.1503 235.62 48.0422C235.858 48.5963 236.174 49.0711 236.412 49.6252C233.958 50.6541 231.821 52.3162 230.555 54.928C229.605 56.9067 229.209 58.0147 228.972 58.6479C229.447 58.3313 230.159 57.9356 230.713 57.5399C232.613 56.3527 235.224 54.6906 237.995 53.7408Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M258.889 110.252V115.95C254.536 112.943 250.342 107.877 249.154 106.453C251.291 108.827 254.695 110.094 258.889 110.252Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M259.364 116.663L258.731 116.188C254.299 113.18 250.104 108.115 248.917 106.611L249.55 106.057C251.45 108.352 254.774 109.619 258.969 109.777H259.364V116.663ZM252.083 109.065C253.824 110.964 256.119 113.259 258.494 115.08V110.568C256.04 110.489 253.824 110.014 252.083 109.065Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M263.48 94.6598L263.243 93.4726C263.638 93.3935 264.509 93.0769 264.746 92.6811C264.826 92.602 264.826 92.4437 264.746 92.2854C264.272 90.7816 260.789 82.392 260.71 82.3129L261.818 81.838C261.976 82.1546 265.38 90.3859 265.855 91.8897C266.013 92.3645 266.013 92.8394 265.696 93.3143C265.221 94.3432 263.638 94.6598 263.48 94.6598Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M214.963 212.826L213.696 212.43C213.775 212.193 220.503 191.298 222.482 182.434C224.46 173.569 229.209 132.967 229.288 132.571L230.634 132.729C230.475 134.392 225.806 173.807 223.827 182.75C221.848 191.694 215.042 212.668 214.963 212.826Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M225.806 217.654L225.41 217.575C225.489 217.258 232.929 187.42 234.116 171.195C235.304 154.97 234.67 130.038 234.67 129.801H235.066C235.066 130.038 235.699 154.97 234.512 171.274C233.404 187.499 225.885 217.338 225.806 217.654Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M239.103 214.963L237.758 214.884C237.758 214.726 238.154 202.537 240.528 177.21C242.902 151.962 240.924 135.816 240.924 135.658L242.269 135.5C242.269 135.658 244.248 151.883 241.873 177.289C239.499 202.616 239.103 214.805 239.103 214.963Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M248.996 217.733H248.601C248.601 217.417 248.601 189.161 249.788 179.268C250.975 169.375 249.788 146.818 249.788 146.58H250.184C250.184 146.818 251.371 169.375 250.184 179.347C248.996 189.161 248.996 217.417 248.996 217.733Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M258.969 212.51C258.177 184.808 255.803 159.56 255.803 159.244L257.148 159.085C257.148 159.323 259.602 184.65 260.393 212.43L258.969 212.51Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M265.855 209.344H265.459C265.459 209.027 267.833 179.98 265.459 168.108C263.085 156.236 258.811 140.328 258.731 140.169L259.127 140.09C259.206 140.248 263.48 156.157 265.855 168.029C268.229 179.901 265.855 209.027 265.855 209.344Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M271.633 211.718L270.287 211.481C275.036 188.291 271.712 169.058 270.129 159.798C268.15 148.321 264.984 128.772 264.905 128.535L266.251 128.297C266.251 128.456 269.496 148.084 271.474 159.56C273.137 168.82 276.461 188.291 271.633 211.718Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M278.439 173.807H278.044C278.993 159.719 271.949 131.542 271.87 131.305L272.266 131.226C272.345 131.463 279.389 159.639 278.439 173.807Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M271.79 452.72C271.949 456.282 272.344 461.585 273.215 467.917C273.848 472.27 274.086 474.486 274.64 475.515C275.352 477.019 277.568 480.659 295.06 487.387C300.442 489.445 304.32 490.711 304.241 492.373C304.241 492.769 303.924 493.798 300.758 494.985C293.398 497.755 288.57 494.827 277.964 494.51C275.431 494.431 276.935 494.668 263.717 494.985C255.803 495.222 251.845 495.064 249.946 492.611C247.413 489.445 249.234 483.904 249.471 483.113C250.5 480.026 251.845 479.551 253.27 475.99C253.824 474.565 254.378 472.665 254.695 468.392C255.17 461.822 254.536 455.411 253.745 450.346C259.76 451.138 265.775 451.929 271.79 452.72Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M294.268 496.805C292.131 496.805 289.915 496.489 287.54 496.093C284.849 495.697 281.763 495.222 277.964 495.143C276.856 495.143 276.618 495.143 275.431 495.222C273.927 495.302 271.157 495.46 263.717 495.618C255.565 495.856 251.529 495.618 249.471 493.006C247.017 489.92 248.283 484.933 248.917 482.955C249.471 481.293 250.104 480.422 250.737 479.393C251.37 478.443 252.003 477.493 252.716 475.752C253.27 474.407 253.824 472.507 254.14 468.312C254.536 462.772 254.219 456.757 253.191 450.346C253.191 450.188 253.191 450.029 253.349 449.871C253.507 449.713 253.665 449.713 253.824 449.713L271.869 452.087C272.107 452.087 272.344 452.325 272.344 452.641C272.582 457.628 273.056 462.772 273.769 467.838C274.323 471.874 274.639 474.248 275.114 475.277C275.668 476.465 277.489 480.026 295.297 486.912C295.93 487.149 296.563 487.387 297.196 487.624C301.945 489.445 304.874 490.553 304.794 492.452C304.715 493.56 303.528 494.589 300.995 495.539C298.621 496.489 296.484 496.805 294.268 496.805ZM277.014 494.035C277.251 494.035 277.568 494.035 277.964 494.035C281.842 494.193 284.928 494.589 287.699 495.064C292.527 495.776 296.088 496.33 300.6 494.589C303.449 493.481 303.686 492.69 303.686 492.452C303.765 491.344 300.52 490.157 296.801 488.732C296.167 488.495 295.534 488.257 294.901 488.02C276.697 480.976 274.877 477.256 274.165 475.831C273.61 474.723 273.294 472.666 272.661 468.075C271.948 463.168 271.553 458.182 271.236 453.275L254.378 451.058C255.328 457.311 255.565 463.168 255.248 468.55C254.932 472.903 254.299 474.882 253.824 476.306C253.111 478.127 252.399 479.235 251.766 480.105C251.133 481.055 250.579 481.926 250.025 483.35C249.471 485.171 248.283 489.682 250.42 492.373C252.162 494.589 256.04 494.747 263.796 494.51C271.236 494.273 274.006 494.193 275.51 494.114C276.143 494.035 276.539 494.035 277.014 494.035Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M295.138 485.566C295.138 485.566 289.915 492.215 289.44 498.863L278.518 497.913C278.518 497.913 281.367 485.566 286.591 480.343C291.814 475.04 298.937 484.142 295.138 485.566Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M289.677 499.18L278.201 498.151L278.28 497.834C278.359 497.359 281.209 485.329 286.432 480.105C288.174 478.364 290.232 477.968 292.448 478.918C294.743 479.868 296.563 482.242 296.563 484.063C296.563 484.854 296.168 485.487 295.376 485.804C294.901 486.437 290.232 492.769 289.757 498.942L289.677 499.18ZM278.834 497.676L289.203 498.547C289.836 491.977 294.901 485.408 294.98 485.329L295.059 485.25H295.139C295.693 485.012 296.009 484.617 296.009 483.983C296.009 482.559 294.505 480.343 292.21 479.314C290.232 478.522 288.332 478.839 286.828 480.422C282.079 485.171 279.309 495.776 278.834 497.676Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M306.061 492.69H248.046V499.021H306.061V492.69Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M306.377 499.338H247.65V492.294H306.377V499.338ZM248.363 498.626H305.665V493.006H248.363V498.626Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M292.764 359.96C293.793 385.129 293.793 410.535 293.793 410.535C293.793 426.839 293.397 442.669 292.764 457.944C286.749 460.081 277.885 462.376 267.121 462.693C253.903 463.089 243.297 460.239 236.649 457.944C240.132 425.256 243.614 392.648 247.097 359.96C244.564 329.33 242.031 298.78 239.498 268.15C233.642 296.959 226.281 327.668 217.179 359.96C207.127 395.339 196.126 428.027 184.808 457.944C177.051 459.369 165.179 460.714 151.012 458.419C138.982 456.44 129.484 452.641 122.994 449.396C141.831 422.565 154.811 399.296 163.438 382.359C173.015 363.443 176.497 353.628 178.16 348.563C186.391 323.711 187.578 304.478 188.607 292.923C190.586 271.949 195.73 241.794 210.372 203.328C232.296 204.12 254.141 204.911 276.064 205.703C277.489 214.726 290.073 296.168 292.764 359.96Z\",\n fill: \"#008EC8\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M264.667 463.484C255.011 463.484 245.514 461.822 236.333 458.656C236.016 458.498 235.779 458.182 235.779 457.865L246.226 359.96L239.103 273.69C233.088 302.658 225.965 331.705 217.812 360.119C208.473 393.123 197.551 426.048 185.441 458.102C185.362 458.34 185.125 458.577 184.887 458.577C173.569 460.714 162.172 460.873 150.854 459.052C141.04 457.469 131.542 454.383 122.599 449.95C122.361 449.871 122.203 449.634 122.203 449.475C122.124 449.238 122.203 449.001 122.361 448.842C137.637 427.077 151.25 404.599 162.726 381.884C171.828 363.838 175.469 354.024 177.447 348.247C184.966 325.69 186.549 307.882 187.578 296.01C187.657 294.902 187.737 293.793 187.895 292.765C190.586 264.272 197.867 234.038 209.66 203.012C209.819 202.695 210.056 202.458 210.452 202.537L276.144 204.911C276.539 204.911 276.856 205.228 276.856 205.545C278.281 214.647 290.944 296.564 293.556 359.881C294.585 384.812 294.585 410.219 294.585 410.456C294.585 426.206 294.189 442.194 293.556 457.944C293.556 458.261 293.319 458.577 293.002 458.656C284.612 461.585 275.906 463.247 267.121 463.484C266.25 463.484 265.459 463.484 264.667 463.484ZM237.441 457.39C247.018 460.635 256.911 462.139 266.963 461.901C275.431 461.664 283.821 460.16 291.894 457.39C292.527 441.877 292.844 426.048 292.844 410.535C292.844 410.298 292.844 384.892 291.815 360.039C289.282 298.147 277.093 218.366 275.273 206.574L210.768 204.199C199.134 234.908 191.931 264.826 189.24 293.081C189.161 294.11 189.082 295.218 188.924 296.326C187.895 308.198 186.312 326.165 178.714 348.88C176.735 354.737 173.094 364.63 163.913 382.755C152.516 405.232 139.061 427.552 123.944 449.159C132.492 453.354 141.594 456.203 150.933 457.707C161.935 459.448 173.015 459.369 184.017 457.311C196.047 425.415 206.89 392.648 216.15 359.802C224.698 329.647 232.217 298.78 238.47 268.071C238.549 267.675 238.865 267.438 239.261 267.438C239.657 267.438 239.974 267.754 239.974 268.15L247.572 359.96C247.572 360.039 247.572 360.039 247.572 360.119L237.441 457.39Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M286.195 350.542L285.008 350.384C286.433 341.994 279.389 276.065 279.31 275.431L280.497 275.273C280.734 277.964 287.62 341.994 286.195 350.542Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M286.195 356.161H285.008V368.033H286.195V356.161Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M189.161 342.548L188.053 342.073C193.751 327.827 196.047 292.765 195.651 291.102L196.759 290.786C197.392 293.239 194.701 328.697 189.161 342.548Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M185.677 347.818L180.911 358.778L182 359.252L186.766 348.291L185.677 347.818Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M164.705 454.224C164.388 454.224 164.151 454.224 163.834 454.224L163.913 453.037C167.712 453.195 170.72 452.246 172.857 450.9C169.928 451.296 168.979 450.267 168.662 449.238C167.791 446.547 171.432 441.877 174.123 440.532C175.627 439.74 176.893 439.899 177.685 440.928C178.634 442.194 178.872 444.093 178.318 445.993C185.52 437.682 191.852 418.529 191.931 418.292L193.039 418.687C192.643 419.795 185.045 442.827 176.577 449.317C174.281 451.929 170.403 454.224 164.705 454.224ZM175.864 441.165C175.548 441.165 175.073 441.323 174.598 441.561C171.907 442.906 169.137 447.101 169.691 448.921C170.007 449.95 171.511 449.95 172.778 449.713C173.727 449.555 174.598 449.159 175.548 448.526C175.943 448.051 176.26 447.497 176.577 447.022C177.606 444.964 177.685 442.906 176.735 441.64C176.497 441.323 176.181 441.165 175.864 441.165Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M283.267 430.559L282.238 430.084C282.238 430.005 285.166 423.515 282.554 413.305C282 416.471 281.288 416.788 280.971 416.946C280.734 417.025 280.101 417.183 279.547 416.55C277.568 414.572 277.568 409.981 278.518 407.844C279.072 406.657 279.784 406.499 280.18 406.578C280.813 406.657 281.446 407.132 282 408.161C282.079 407.369 282.079 406.578 282.159 405.707C282.396 400.721 282.238 395.814 282.238 395.814H283.425C283.425 395.893 283.504 400.8 283.346 405.786C283.267 407.686 283.187 409.269 283.029 410.535C283.187 410.931 283.267 411.327 283.425 411.802C286.67 423.12 283.425 430.243 283.267 430.559ZM280.022 407.607C279.942 407.607 279.705 407.765 279.547 408.24C278.755 409.981 278.755 414.097 280.338 415.68C280.496 415.838 280.576 415.838 280.576 415.838C280.655 415.759 281.288 415.363 281.763 410.535C280.734 407.686 280.022 407.607 280.022 407.607Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M251.45 371.437L250.263 371.278C253.033 353.075 250.263 337.403 250.263 337.245L251.45 337.008C251.45 337.166 254.299 352.995 251.45 371.437Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M251.371 383.942L250.342 383.388C251.054 381.963 250.579 378.718 250.263 377.61L251.371 377.373C251.529 377.61 252.479 381.884 251.371 383.942Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M249.867 233.958C249.234 233.958 247.097 233.8 245.119 231.663C242.507 228.893 239.895 222.245 242.269 206.653L243.456 206.811C241.082 221.849 243.536 228.181 245.91 230.793C247.255 232.296 248.68 232.613 249.392 232.771V206.732H250.58V233.879L250.026 233.958C250.026 233.958 249.946 233.958 249.867 233.958Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M217.654 301.233L216.625 300.679C216.704 300.6 222.719 288.807 222.719 279.072C222.719 277.964 222.561 277.41 222.403 277.173C222.245 276.856 222.086 276.856 222.007 276.856C221.453 276.856 220.741 277.489 219.87 278.518C220.503 282.475 220.741 286.67 219.316 288.491C218.762 289.203 217.971 289.599 217.021 289.599C216.071 289.599 215.517 289.203 215.2 288.807C214.884 288.332 214.646 287.778 214.646 286.987C214.646 284.612 216.467 280.655 218.525 278.043C217.892 274.561 217.021 271.078 216.388 269.179L217.496 268.862C217.575 269.179 218.683 272.82 219.474 276.935C220.345 276.144 221.137 275.59 221.849 275.59C222.165 275.59 222.878 275.748 223.273 276.539C223.511 277.093 223.669 277.885 223.669 278.914C223.907 289.124 217.891 300.758 217.654 301.233ZM218.92 279.864C217.337 282.159 215.913 285.166 215.913 287.145C215.913 287.62 215.992 288.016 216.15 288.253C216.309 288.491 216.625 288.57 217.021 288.57C217.575 288.57 218.05 288.332 218.366 287.937C219.474 286.433 219.395 283.267 218.92 279.864Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M332.1 239.894L321.653 238.628C319.12 238.311 316.983 236.412 316.508 233.879C316.112 231.98 316.033 229.764 316.825 227.785C318.645 223.274 334.475 231.505 334.475 231.505L332.1 239.894Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M332.733 240.765L321.574 239.42C318.645 239.103 316.35 236.887 315.796 234.038C315.321 231.505 315.479 229.289 316.192 227.468C316.508 226.756 317.062 226.202 317.854 225.885C322.286 224.302 333.604 230.159 334.87 230.793L335.424 231.109L332.733 240.765ZM319.753 227.231C319.199 227.231 318.803 227.31 318.408 227.389C317.854 227.547 317.695 227.864 317.616 228.102C316.983 229.684 316.904 231.584 317.3 233.8C317.695 235.937 319.516 237.599 321.732 237.837L331.546 239.024L333.604 231.98C330.359 230.318 323.473 227.231 319.753 227.231Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M303.766 200.242C303.212 201.192 300.363 200.558 299.097 200.242C295.377 199.371 290.865 198.342 285.483 197.076C286.829 198.026 288.333 198.975 289.678 200.242C290.707 201.192 291.419 201.983 291.578 202.537C291.815 203.17 291.815 203.883 291.815 203.883C291.815 204.437 291.815 205.07 291.34 205.466C290.865 205.861 290.153 205.703 289.995 205.703C290.153 205.782 291.024 206.732 290.865 208.236C290.707 209.66 289.678 210.452 289.52 210.531C289.599 210.927 289.836 211.956 289.282 212.826C288.807 213.539 287.937 213.776 286.987 213.934C282.317 214.884 280.022 215.359 278.993 214.172C278.835 214.013 278.518 213.618 278.518 213.064C278.518 212.51 278.993 211.876 279.785 211.402C280.893 210.689 282.634 210.056 284.929 209.66C280.339 209.819 276.461 209.344 273.374 208.711C272.107 208.473 270.92 208.157 269.891 207.84C266.725 206.89 264.034 206.099 261.977 204.911C238.628 211.402 220.425 210.768 209.186 209.423C194.939 207.682 189.241 204.357 186.629 200.004C186.55 199.846 186.471 199.688 186.391 199.53C185.758 198.342 185.283 196.997 185.125 195.256C186.47 191.615 189.716 185.125 195.018 173.015C200.875 159.719 204.279 150.775 208.473 144.522C210.373 143.968 213.618 143.493 216.784 145.235C220.504 147.293 222.72 151.487 222.245 155.92C218.921 165.417 215.597 174.836 212.352 184.333C212.272 184.65 212.114 184.966 212.035 185.204C228.181 187.103 244.327 189.082 260.473 190.982L260.552 191.14C260.631 191.061 260.631 190.982 260.631 190.982C262.452 191.14 264.905 191.377 267.913 191.536C270.208 190.269 272.266 189.557 273.69 189.161C275.115 188.766 274.719 188.924 277.41 188.212C281.051 187.262 282.476 186.629 283.03 187.262C283.425 187.737 283.267 188.607 283.03 189.161C282.397 190.507 280.18 191.536 279.31 192.011C283.267 192.327 286.829 193.198 293.319 194.702C296.564 195.493 302.816 196.997 303.608 199.371C303.766 199.45 303.925 199.846 303.766 200.242Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M281.13 215.359C280.022 215.359 279.231 215.121 278.677 214.488C278.519 214.251 278.044 213.697 278.123 212.984C278.123 212.193 278.677 211.481 279.627 210.848C280.022 210.61 280.497 210.373 281.051 210.135C278.439 210.056 275.907 209.66 273.453 209.185C272.345 208.948 271.237 208.711 269.971 208.315C266.884 207.444 264.193 206.653 262.135 205.466C243.931 210.452 226.202 211.956 209.344 209.898C196.364 208.315 189.478 205.386 186.392 200.242C186.312 200.084 186.233 199.925 186.154 199.767C185.363 198.342 184.967 196.918 184.809 195.256C184.809 195.176 184.809 195.097 184.809 195.018C185.521 192.96 186.866 190.111 188.845 185.837C190.428 182.434 192.407 178.16 194.781 172.699C196.047 169.77 197.156 167.158 198.264 164.626C202.142 155.603 204.991 149.113 208.236 144.127C208.315 144.048 208.394 143.968 208.553 143.889C210.69 143.256 214.014 142.86 217.259 144.602C221.216 146.739 223.432 151.171 223.037 155.84C223.037 155.92 223.037 155.92 223.037 155.999C219.712 165.496 216.388 174.915 213.143 184.412L213.064 184.65L260.79 190.348H260.869C263.164 190.586 265.538 190.744 267.992 190.902C269.892 189.874 271.87 189.082 273.77 188.528C274.482 188.291 274.72 188.291 275.115 188.212C275.511 188.132 276.065 187.974 277.49 187.657C278.202 187.42 278.914 187.262 279.468 187.103C282.001 186.391 283.03 186.075 283.663 186.866C284.296 187.578 284.059 188.766 283.742 189.32C283.267 190.269 282.238 191.061 281.289 191.615C284.613 192.011 287.937 192.802 293.636 194.148C298.464 195.256 303.529 196.759 304.32 199.213C304.4 199.45 304.637 200.004 304.241 200.638C303.529 201.904 301.155 201.429 298.938 200.875C296.643 200.321 294.11 199.767 291.182 199.055C290.232 198.817 289.203 198.58 288.174 198.342C288.808 198.817 289.441 199.292 290.074 199.846C290.865 200.558 291.815 201.587 292.132 202.379C292.369 203.091 292.369 203.883 292.369 203.962C292.369 204.595 292.369 205.466 291.736 206.02C291.499 206.178 291.34 206.336 291.103 206.336C291.34 206.811 291.578 207.523 291.499 208.315C291.34 209.581 290.628 210.373 290.232 210.768C290.391 211.402 290.391 212.351 289.837 213.143C289.203 214.093 288.174 214.33 287.225 214.488C284.455 214.963 282.555 215.359 281.13 215.359ZM285.009 208.948C285.325 208.948 285.563 209.185 285.563 209.423C285.563 209.739 285.404 209.977 285.088 210.056C282.951 210.373 281.21 211.006 280.181 211.718C279.547 212.114 279.231 212.589 279.152 212.984C279.152 213.301 279.389 213.618 279.468 213.697C280.26 214.647 282.792 214.172 286.908 213.301C287.858 213.143 288.491 212.905 288.808 212.43C289.203 211.797 289.045 210.927 288.966 210.61C288.887 210.373 288.966 210.135 289.203 209.977C289.441 209.819 290.232 209.185 290.311 208.077C290.47 206.89 289.599 206.02 289.599 206.02C289.441 205.861 289.362 205.545 289.52 205.386C289.599 205.149 289.916 205.07 290.153 205.07C290.311 205.149 290.786 205.149 291.024 204.991C291.261 204.753 291.261 204.357 291.261 203.803C291.261 203.803 291.261 203.17 291.103 202.616C291.024 202.458 290.707 201.825 289.362 200.558C288.333 199.609 287.304 198.896 286.196 198.184C285.879 197.947 285.483 197.709 285.167 197.472C284.929 197.313 284.85 196.997 285.009 196.759C285.088 196.522 285.404 196.364 285.642 196.443C287.7 196.918 289.678 197.393 291.499 197.788C294.427 198.501 296.96 199.055 299.255 199.609C302.579 200.4 303.212 200.084 303.292 199.846C303.292 199.767 303.371 199.688 303.212 199.371C302.5 197.234 295.614 195.572 293.319 195.018C286.671 193.435 283.267 192.644 279.389 192.327C279.152 192.327 278.993 192.169 278.914 191.931C278.835 191.694 278.993 191.457 279.152 191.298C279.31 191.219 279.547 191.061 279.706 190.982C280.656 190.507 282.159 189.636 282.555 188.686C282.792 188.291 282.872 187.657 282.634 187.42C282.397 187.183 281.21 187.499 279.547 187.974C278.993 188.132 278.36 188.291 277.569 188.528C276.144 188.924 275.511 189.082 275.115 189.161C274.72 189.24 274.482 189.32 273.849 189.478C271.949 190.032 270.05 190.823 268.15 191.852C268.071 191.931 267.992 191.931 267.834 191.931C265.459 191.773 263.085 191.615 260.869 191.457C260.71 191.536 260.552 191.615 260.394 191.615C260.236 191.615 260.077 191.536 259.998 191.377L211.877 185.6C211.719 185.6 211.56 185.521 211.481 185.362C211.402 185.204 211.402 185.046 211.402 184.887L211.719 184.017C215.043 174.598 218.288 165.101 221.612 155.682C222.008 151.487 219.95 147.53 216.388 145.63C213.539 144.048 210.69 144.364 208.711 144.918C205.545 149.746 202.775 156.236 198.897 165.101C197.789 167.633 196.681 170.324 195.414 173.174C193.04 178.556 191.061 182.83 189.478 186.312C187.579 190.507 186.312 193.277 185.521 195.256C185.679 196.68 186.075 197.947 186.708 199.213C186.787 199.371 186.866 199.53 186.946 199.688C189.795 204.516 196.681 207.365 209.107 208.869C225.886 210.927 243.536 209.423 261.66 204.357C261.819 204.278 261.977 204.357 262.056 204.437C264.035 205.624 266.726 206.415 269.812 207.365C271.079 207.761 272.108 207.998 273.216 208.236C277.252 208.79 281.13 209.106 285.009 208.948Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M389.167 171.907L367.164 222.561C367.085 222.799 366.847 222.957 366.61 222.957H287.384C286.909 222.957 286.592 222.324 286.83 221.77L311.444 171.116C311.524 170.878 311.761 170.72 311.999 170.72H388.613C389.167 170.799 389.404 171.432 389.167 171.907Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M366.689 223.353H287.383C287.067 223.353 286.75 223.194 286.513 222.878C286.275 222.482 286.275 222.007 286.434 221.611L311.048 170.957C311.207 170.562 311.602 170.324 311.919 170.324H388.533C388.85 170.324 389.166 170.483 389.325 170.799C389.562 171.195 389.641 171.67 389.404 172.065L367.401 222.719C367.401 223.115 367.084 223.353 366.689 223.353ZM311.998 171.195C311.998 171.195 311.919 171.195 311.84 171.353L287.225 222.007C287.146 222.165 287.146 222.324 287.225 222.482L287.304 222.561H366.53C366.609 222.561 366.609 222.482 366.689 222.403L388.691 171.749C388.771 171.591 388.691 171.432 388.691 171.274L388.612 171.195H311.998Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M248.68 222.957L250.658 217.575H258.494L259.602 223.194L248.68 222.957Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M260.077 223.669L248.047 223.353L250.263 217.179H258.811L260.077 223.669ZM249.313 222.561L259.048 222.799L258.099 218.05H250.896L249.313 222.561Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M258.336 222.957L260.235 217.654H268.15L269.258 223.273L258.336 222.957Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M269.733 223.748L257.703 223.432L259.919 217.258H268.467L269.733 223.748ZM258.969 222.561L268.705 222.799L267.755 218.05H260.552L258.969 222.561Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M268.388 222.957L270.366 217.654H278.202L279.31 223.273L268.388 222.957Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M279.785 223.748L267.755 223.432L269.971 217.258H278.519L279.785 223.748ZM269.021 222.561L278.756 222.799L277.807 218.05H270.604L269.021 222.561Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M278.201 222.957L280.101 217.654H288.015L289.044 223.273L278.201 222.957Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M289.599 223.748L277.568 223.432L279.784 217.258H288.332L289.599 223.748ZM278.835 222.561L288.57 222.799L287.62 218.05H280.418L278.835 222.561Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M367.084 221.77H244.96V229.447H367.084V221.77Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M367.559 229.922H244.485V221.374H367.48V229.922H367.559ZM245.356 229.051H366.688V222.245H245.356V229.051Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M320.861 232.613C320.861 232.613 322.049 215.913 323.869 217.417C325.689 218.921 324.898 230.634 324.898 230.634C324.898 230.634 325.135 212.351 327.747 213.776C330.359 215.201 329.093 231.109 329.093 231.109C329.33 231.109 329.647 231.03 329.884 231.03C330.834 225.411 331.23 221.295 331.388 218.446C331.546 216.625 331.704 213.064 333.446 212.43C333.762 212.351 334.079 212.351 334.237 212.351C335.424 212.668 336.295 216.546 334.87 231.426L336.532 231.267C336.532 231.267 338.59 214.488 340.252 215.201C341.994 215.913 340.648 230.951 340.648 230.951C340.49 231.584 340.648 231.742 340.727 231.742C341.519 232.217 345.318 225.49 347.771 226.202C348.167 226.281 348.484 226.598 348.642 226.993C349.038 227.785 348.167 228.497 347.217 230.397C346.268 232.455 346.347 233.563 345.08 234.75C344.843 234.987 344.605 235.067 344.447 235.225C341.677 237.283 338.986 238.232 337.957 238.628C335.424 239.42 332.654 240.29 329.726 239.261C329.567 239.182 329.409 239.182 329.093 239.024C324.819 237.283 321.415 235.858 320.94 233.325C320.94 233.325 320.861 233.009 320.861 232.613Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M332.575 240.765C331.547 240.765 330.518 240.607 329.489 240.211C329.33 240.132 329.172 240.053 328.856 239.974C324.582 238.232 320.862 236.649 320.229 233.642C320.149 233.325 320.149 233.009 320.149 232.613C320.149 232.613 320.387 228.893 320.862 225.173C321.732 217.812 322.524 216.942 323.236 216.625C323.632 216.467 324.028 216.546 324.423 216.863C324.661 217.1 324.898 217.417 325.057 217.812C325.611 214.409 326.244 213.538 326.877 213.143C327.273 212.905 327.748 212.905 328.222 213.143C329.172 213.697 330.28 215.28 330.28 223.036C330.28 223.115 330.28 223.194 330.28 223.274C330.439 221.611 330.597 219.949 330.755 218.446V218.287C330.913 216.15 331.151 212.51 333.288 211.797C333.684 211.639 334.238 211.639 334.554 211.718C336.137 212.114 337.324 214.726 335.9 230.713H335.979C336.137 229.447 336.533 226.598 337.008 223.669C338.432 215.517 339.303 214.963 339.778 214.726C340.094 214.567 340.411 214.488 340.728 214.647C341.519 214.963 342.311 215.913 342.073 223.59C341.994 226.281 341.836 229.051 341.677 230.397C341.915 230.159 342.073 229.922 342.311 229.684C344.052 227.627 346.189 225.173 348.167 225.727C348.801 225.885 349.275 226.36 349.592 226.914C349.988 227.864 349.592 228.576 349.038 229.447C348.801 229.843 348.484 230.397 348.167 231.03C347.851 231.742 347.613 232.296 347.455 232.771C347.139 233.8 346.822 234.671 345.793 235.541C345.556 235.7 345.397 235.858 345.239 236.016L345.081 236.095C343.023 237.599 340.728 238.786 338.353 239.578C336.533 240.132 334.633 240.765 332.575 240.765ZM321.732 232.692C321.732 232.929 321.732 233.088 321.812 233.325C322.286 235.462 325.769 236.966 329.489 238.47C329.805 238.628 329.964 238.628 330.043 238.707C332.734 239.657 335.346 238.866 337.799 238.074C340.015 237.362 342.231 236.254 344.052 234.829L344.21 234.671C344.368 234.592 344.527 234.433 344.606 234.354C345.318 233.721 345.476 233.167 345.793 232.217C345.951 231.663 346.189 231.03 346.584 230.318C346.901 229.605 347.218 229.051 347.534 228.576C347.851 228.022 348.088 227.627 348.009 227.548C347.93 227.389 347.772 227.231 347.613 227.231C346.664 226.914 344.527 229.368 343.419 230.713C341.994 232.375 341.282 233.246 340.332 232.692C339.699 232.296 339.778 231.426 339.857 231.03C340.332 225.331 340.569 218.92 340.094 216.704C339.224 218.841 338.037 225.648 337.324 231.584L337.245 232.217L334 232.455L334.079 231.505C335.583 215.201 334.317 213.459 334 213.222C334 213.222 333.842 213.222 333.684 213.301C332.496 213.697 332.259 217.021 332.18 218.446V218.604C331.942 222.403 331.388 226.677 330.676 231.267L330.597 231.901L328.222 232.059L328.302 231.109C328.856 223.907 328.697 215.834 327.51 214.647C326.798 215.596 326.165 220.345 325.927 225.49C325.927 227.627 325.848 229.684 325.769 230.713L324.186 230.634C324.186 230.634 324.186 228.576 324.344 225.885C324.344 222.64 324.186 219.791 323.711 218.525C322.92 220.583 322.128 227.073 321.732 232.692Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M223.59 164.072C221.136 169.454 217.496 176.419 212.43 184.175C212.272 184.412 212.114 184.65 211.955 184.887C195.968 197.313 189.557 199.846 186.787 199.846C185.916 199.846 185.362 199.609 185.124 199.292C184.333 198.58 184.412 197.472 185.283 195.097C186.628 191.456 189.873 184.966 195.176 172.857C201.033 159.56 204.436 150.617 208.631 144.364C211.401 140.169 214.488 137.162 218.841 134.787C221.69 133.204 224.302 132.413 225.964 132.017C226.993 133.125 228.26 134.866 229.209 137.241C230.634 140.723 231.584 146.738 223.59 164.072Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M186.787 200.479C185.916 200.479 185.204 200.242 184.65 199.767C183.542 198.738 183.779 197.155 184.57 194.86C185.283 192.802 186.628 189.953 188.607 185.679C190.19 182.275 192.169 178.001 194.543 172.54C195.809 169.612 196.917 167 198.025 164.467C201.904 155.445 204.753 148.875 207.998 143.968C210.926 139.536 214.171 136.529 218.445 134.233C220.741 132.967 223.194 132.017 225.727 131.384C225.964 131.305 226.202 131.384 226.36 131.542C227.864 133.204 228.972 135.025 229.763 136.924C231.425 140.961 231.979 147.372 224.144 164.309C220.978 171.195 217.179 178.001 212.984 184.492C212.826 184.729 212.668 184.966 212.509 185.204C212.509 185.283 212.43 185.283 212.351 185.362C199.529 195.414 190.902 200.479 186.787 200.479ZM225.648 132.729C223.352 133.363 221.136 134.233 218.999 135.341C214.884 137.557 211.876 140.407 209.027 144.681C205.782 149.588 203.012 155.999 199.134 165.021C198.025 167.554 196.917 170.245 195.651 173.094C193.277 178.476 191.298 182.75 189.715 186.233C187.736 190.507 186.47 193.356 185.758 195.335C184.887 197.788 185.045 198.501 185.441 198.817C185.679 199.055 186.153 199.213 186.707 199.213C189.319 199.213 195.73 196.601 211.401 184.492C211.56 184.254 211.639 184.096 211.797 183.858C215.992 177.368 219.712 170.641 222.878 163.834C230.476 147.372 230.001 141.277 228.497 137.478C227.864 135.737 226.914 134.154 225.648 132.729Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M191.931 198.817L190.665 198.421C194.227 187.024 198.58 175.785 203.724 165.021C209.027 153.862 215.28 142.939 222.166 132.65L223.274 133.442C216.388 143.652 210.214 154.495 204.911 165.576C199.846 176.26 195.493 187.499 191.931 198.817Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M199.688 193.989L199.292 193.831C204.832 182.117 228.735 137.557 228.972 137.162L229.289 137.32C229.13 137.716 205.228 182.355 199.688 193.989Z\",\n fill: \"#E41689\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_129_247\",\n x1: 183.359,\n y1: 77.2749,\n x2: 241.319,\n y2: 77.2749,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#008EC8\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint1_linear_129_247\",\n x1: 182.867,\n y1: 77.2806,\n x2: 241.635,\n y2: 77.2806,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#008EC8\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint2_linear_129_247\",\n x1: 229.915,\n y1: 83.9167,\n x2: 259.127,\n y2: 83.9167,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#008EC8\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint3_linear_129_247\",\n x1: 229.423,\n y1: 84.1054,\n x2: 259.681,\n y2: 84.1054,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#008EC8\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint4_linear_129_247\",\n x1: 246.067,\n y1: 76.8909,\n x2: 269.099,\n y2: 76.8909,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#008EC8\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint5_linear_129_247\",\n x1: 245.593,\n y1: 76.9722,\n x2: 269.574,\n y2: 76.9722,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#008EC8\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_129_247\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 463.168,\n height: 501,\n fill: \"white\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLoginIllustration);\nexport default __webpack_public_path__ + \"static/media/login-illustration.f7fca19a897973180dc2121bb4f122e8.svg\";\nexport { ForwardRef as ReactComponent };","/* eslint-disable no-useless-escape */\nconst emailRegEx =\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\nexport const isValidEmail = (email) => emailRegEx.test(email) && email.length <= 255;\n\nexport const isValidPassword = (password) => password.length > 6 && password.length <= 255;\n\nexport const isValidName = (name) => name.length > 0 && name.length <= 255;\n","import { useCallback, useEffect, useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport toast from 'react-hot-toast';\n\nimport logoIcon from 'src/icons/logo.svg';\nimport loginIllustration from 'src/icons/login-illustration.svg';\nimport Input from 'src/components/input/Input';\nimport Button from 'src/components/button/Button';\nimport { isValidEmail, isValidPassword } from 'src/utils/forms';\nimport API from 'src/utils/api';\nimport { LOCAL_STORAGE_TOKEN_KEY } from 'src/utils/constants';\nimport Modal from 'src/components/modal/Modal';\nimport Loader from 'src/components/loader/Loader';\n\nconst Login = () => {\n const [email, setEmail] = useState();\n const [password, setPassword] = useState();\n const [errors, setErrors] = useState();\n const [loading, setLoading] = useState();\n // reset password\n const [resetPasswordEmail, setResetPasswordEmail] = useState();\n const [isResetPasswordModalOpen, setIsResetPasswordModalOpen] = useState();\n\n const checkErrors = useCallback(() => {\n let newErrors = {};\n if (!email || !isValidEmail(email)) newErrors.email = 'Please enter a valid email (max 255 characters)';\n if (!password || !isValidPassword(password)) {\n newErrors.password = 'Please enter a valid password (between 6 and 255 characters long)';\n }\n return newErrors;\n }, [email, password]);\n\n useEffect(() => {\n if (email === undefined || password === undefined) return;\n setErrors(checkErrors());\n }, [email, password, checkErrors]);\n\n const onSubmit = async (e) => {\n e.preventDefault();\n\n let newErrors = checkErrors();\n if (Object.keys(newErrors).length !== 0) return setErrors(newErrors);\n\n setLoading(true);\n\n try {\n const response = await API.post('/auth/login/', { email, password });\n if (response) {\n localStorage.setItem(LOCAL_STORAGE_TOKEN_KEY, response.data.token);\n window.location.href = '/';\n return;\n }\n toast.error('Invalid email or password');\n setLoading(false);\n } catch (error) {\n setLoading(false);\n console.log(error);\n if (error.response.status === 400) {\n toast.error('Invalid email or password');\n return;\n }\n toast.error('Unexpected error, please try again');\n }\n };\n\n const sendResetPasswordLink = async () => {\n if (!resetPasswordEmail) return;\n\n setLoading(true);\n\n try {\n const response = await API.post('/user/forgot-password', {\n email: resetPasswordEmail,\n });\n if (response.status === 200) {\n setLoading(false);\n setIsResetPasswordModalOpen(false);\n toast.success(\n 'If the account exists, you will receive an email shortly (it might be in your spams folder)!',\n { duration: 4000 }\n );\n return;\n }\n toast.error('Could not send a link to that email');\n setIsResetPasswordModalOpen(false);\n setLoading(false);\n } catch (error) {\n toast.error('Could not send a link to that email');\n setIsResetPasswordModalOpen(false);\n setLoading(false);\n }\n };\n\n const onForgotPasswordClick = () => {\n setIsResetPasswordModalOpen(true);\n };\n\n if (loading) return ;\n\n return (\n
    \n
    \n \"Payonix\n
    \n
    \n
    \n Log in\n \n Don't have an account yet?{' '}\n \n Sign up\n \n \n \n \n \n Forgot password?\n \n
    \n
    \n © 2022 Payonix.com. All rights reserved\n
    \n \n

    \n A link to reset your password will be sent to the email address you enter here
    \n if it has an account on Payonix.\n

    \n {\n e.preventDefault();\n sendResetPasswordLink();\n }}\n >\n \n
    \n );\n};\n\nexport default Login;\n","import './Checkbox.css';\n\nconst Checkbox = ({ fieldName, className, checked, onChange }) => (\n onChange(e.target.checked)}\n />\n);\n\nexport default Checkbox;\n","var _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSignupIllustration(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 636,\n height: 501,\n viewBox: \"0 0 636 501\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_92_1651)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M610.87 497.597H36.623V499.654H610.87V497.597Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M240.595 116.9C244.241 121.649 246.699 126.952 248.046 132.413C248.68 135.104 249.077 137.953 249.156 140.724C249.235 143.415 248.998 146.106 248.601 148.797C247.967 152.279 246.936 155.682 245.51 158.848C243.211 163.914 239.802 168.583 235.363 172.461C234.649 173.095 234.015 173.649 233.222 174.203C228.783 177.606 223.868 179.98 218.795 181.326C215.941 182.117 213.008 182.513 209.996 182.671C197.154 183.225 184.312 177.685 175.829 166.763C173.213 163.36 171.152 159.56 169.725 155.682C167.744 150.221 167.03 144.523 167.427 138.903V138.824C167.664 135.342 168.378 131.859 169.488 128.535C171.232 123.39 174.006 118.642 177.811 114.447C179.476 112.626 181.22 110.964 183.281 109.46C201.117 95.6889 226.801 99.0131 240.595 116.9Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M208.252 183.463C195.331 183.463 183.123 177.448 175.196 167.238C172.58 163.834 170.439 160.035 169.012 155.999C167.031 150.459 166.238 144.76 166.634 138.903V138.824C166.872 135.262 167.586 131.701 168.775 128.377C170.598 122.995 173.452 118.167 177.257 114.051C178.921 112.231 180.824 110.489 182.806 108.906C201.038 94.8974 227.277 98.3007 241.309 116.505C244.955 121.253 247.492 126.556 248.839 132.334C249.474 135.104 249.87 137.953 249.949 140.803C250.028 143.573 249.791 146.343 249.394 149.034C248.76 152.596 247.73 155.999 246.223 159.323C243.766 164.626 240.278 169.296 235.918 173.174C235.205 173.807 234.491 174.361 233.778 174.915C229.338 178.318 224.424 180.772 219.033 182.196C216.1 182.988 213.088 183.463 210.075 183.542C209.441 183.463 208.807 183.463 208.252 183.463ZM208.173 101.783C199.611 101.783 191.05 104.474 183.757 110.094C181.854 111.597 180.031 113.259 178.446 115.001C174.799 119.037 172.104 123.707 170.281 128.851C169.171 132.096 168.458 135.5 168.22 138.903H167.427L168.22 138.982C167.823 144.602 168.616 150.142 170.519 155.445C171.945 159.323 173.927 162.964 176.464 166.288C184.391 176.577 196.916 182.434 209.996 181.88C212.929 181.722 215.783 181.326 218.557 180.614C223.71 179.268 228.466 176.894 232.747 173.649C233.461 173.095 234.174 172.541 234.808 171.987C239.089 168.267 242.418 163.755 244.717 158.611C246.144 155.445 247.175 152.121 247.73 148.717C248.205 146.105 248.364 143.414 248.285 140.803C248.205 138.032 247.888 135.341 247.254 132.65C245.906 127.11 243.528 121.966 239.961 117.454C232.113 107.165 220.222 101.783 208.173 101.783Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M240.086 145.914C242.365 128.358 229.957 112.281 212.373 110.006C194.789 107.731 178.687 120.119 176.409 137.676C174.13 155.232 186.538 171.308 204.122 173.583C221.706 175.858 237.808 163.47 240.086 145.914Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M208.253 174.598C198.423 174.598 188.673 170.166 182.173 161.855C171.074 147.53 173.77 126.873 188.118 115.792C202.466 104.711 223.156 107.402 234.254 121.728C245.352 136.054 242.657 156.711 228.309 167.792C222.363 172.382 215.308 174.598 208.253 174.598ZM208.174 110.568C201.515 110.568 194.777 112.705 189.148 117.058C175.514 127.585 172.898 147.213 183.441 160.827C193.984 174.44 213.644 177.052 227.278 166.525C240.913 155.999 243.529 136.37 232.986 122.757C226.882 114.763 217.607 110.568 208.174 110.568Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M223.071 132.254L217.125 145.472V145.551L214.985 150.221L195.167 152.437L192.551 119.353L223.071 132.254Z\",\n fill: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M195.166 153.466C194.611 153.466 194.215 153.07 194.136 152.516L191.52 119.433C191.52 119.116 191.678 118.72 191.916 118.562C192.233 118.324 192.55 118.324 192.867 118.483L223.387 131.384C223.625 131.463 223.863 131.7 223.942 131.938C224.021 132.175 224.021 132.492 223.942 132.729L215.856 150.696C215.698 151.012 215.38 151.25 215.063 151.25L195.325 153.466C195.245 153.466 195.245 153.466 195.166 153.466ZM193.66 120.936L196.038 151.329L214.191 149.271L221.643 132.729L193.66 120.936Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M224.418 134.154L224.735 163.676C215.381 160.431 205.948 157.186 196.594 153.941L216.412 152.041C216.491 152.041 216.491 152.041 216.57 152.041C219.107 146.105 221.802 140.169 224.418 134.154Z\",\n fill: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M224.735 164.705C224.655 164.705 224.497 164.705 224.418 164.625L196.276 154.89C195.8 154.732 195.562 154.257 195.562 153.782C195.642 153.307 195.959 152.912 196.434 152.912L215.777 151.091L223.466 133.679C223.625 133.204 224.1 132.967 224.576 133.125C225.052 133.204 225.369 133.6 225.369 134.075L225.686 163.597C225.686 163.913 225.527 164.23 225.29 164.388C225.131 164.625 224.893 164.705 224.735 164.705ZM201.27 154.574L223.704 162.251L223.466 138.824L217.442 152.516C217.283 152.833 216.966 153.07 216.649 153.149L201.27 154.574Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M216.492 152.12C219.108 146.105 221.803 140.169 224.419 134.154L224.736 163.676L216.333 152.12C216.412 152.12 216.412 152.12 216.492 152.12Z\",\n fill: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M224.735 164.705C224.418 164.705 224.101 164.546 223.942 164.309L215.539 152.753C215.302 152.437 215.302 152.041 215.46 151.724C215.539 151.566 215.619 151.408 215.777 151.329L223.546 133.758C223.704 133.283 224.18 133.046 224.656 133.204C225.131 133.283 225.448 133.679 225.448 134.154L225.765 163.676C225.765 164.151 225.528 164.546 225.052 164.625C224.893 164.705 224.814 164.705 224.735 164.705ZM217.6 152.12L223.704 160.51L223.467 138.824L217.6 152.12Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M223.074 132.254L214.989 150.221L192.555 119.354L223.074 132.254Z\",\n fill: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M214.989 151.25C214.672 151.25 214.355 151.091 214.196 150.854L191.762 119.987C191.525 119.591 191.525 119.116 191.762 118.799C192.079 118.483 192.555 118.325 192.951 118.483L223.471 131.384C223.709 131.463 223.947 131.7 224.026 131.938C224.105 132.175 224.105 132.492 224.026 132.729L215.94 150.696C215.782 151.012 215.465 151.25 215.148 151.25C215.068 151.25 214.989 151.25 214.989 151.25ZM195.488 121.728L214.751 148.242L221.727 132.808L195.488 121.728Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M223.074 132.255L217.128 145.472V145.551L214.988 150.221L195.17 152.437L204.603 135.974L223.074 132.255Z\",\n fill: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M195.17 153.466C194.773 153.466 194.456 153.308 194.298 152.991C194.139 152.674 194.139 152.279 194.298 151.962L203.731 135.42C203.89 135.183 204.127 135.025 204.444 134.945L222.915 131.305C223.311 131.226 223.708 131.384 223.866 131.7C224.104 132.017 224.183 132.413 224.025 132.729L215.939 150.696C215.78 151.012 215.463 151.25 215.146 151.25L195.407 153.466C195.249 153.466 195.249 153.466 195.17 153.466ZM205.237 136.845L197.072 151.25L214.353 149.35L221.409 133.679L205.237 136.845Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M322.735 91.0328C337.761 89.4946 348.693 76.086 347.152 61.0839C345.611 46.0818 332.182 35.1672 317.156 36.7054C302.13 38.2436 291.198 51.6522 292.739 66.6543C294.279 81.6564 307.709 92.571 322.735 91.0328Z\",\n fill: \"#008EC8\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M319.939 92.1269C315.499 92.1269 311.06 91.098 307.017 88.961C300.279 85.4786 295.285 79.6217 292.986 72.4193C290.687 65.2169 291.321 57.5397 294.73 50.8122C301.865 36.9615 318.987 31.4212 332.86 38.5444C346.733 45.6677 352.282 62.7634 345.147 76.6141C341.659 83.3416 335.793 88.3278 328.579 90.6231C325.805 91.7312 322.872 92.1269 319.939 92.1269ZM320.018 37.5947C310.426 37.5947 301.23 42.8184 296.553 51.8411C293.382 58.0937 292.748 65.217 294.889 71.8653C297.029 78.5136 301.706 83.9748 307.889 87.2198C314.152 90.3857 321.286 91.0188 327.945 88.8819C334.604 86.7449 340.074 82.0752 343.324 75.9018C349.983 63.0008 344.83 47.1714 331.909 40.5231C328.183 38.5444 324.061 37.5947 320.018 37.5947Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M335.571 76.5907C342.591 67.9805 341.291 55.3185 332.667 48.3093C324.043 41.3002 311.361 42.598 304.341 51.2082C297.321 59.8184 298.621 72.4804 307.245 79.4896C315.868 86.4987 328.55 85.2009 335.571 76.5907Z\",\n fill: \"#008EC8\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M319.94 85.0037C316.611 85.0037 313.361 84.2122 310.269 82.6293C305.275 80.0174 301.549 75.6644 299.805 70.2824C298.061 64.9004 298.537 59.2018 301.153 54.1364C303.769 49.1502 308.129 45.4302 313.519 43.689C318.91 41.9478 324.617 42.4227 329.691 45.0345C334.685 47.6464 338.411 51.9994 340.155 57.3814C341.899 62.7634 341.423 68.462 338.807 73.5274C336.191 78.5137 331.831 82.2336 326.44 83.9748C324.3 84.6871 322.16 85.0037 319.94 85.0037ZM320.019 44.7179C318.038 44.7179 316.056 45.0345 314.153 45.6677C309.318 47.2506 305.354 50.5748 302.976 55.1653C300.677 59.6767 300.201 64.9004 301.787 69.7283C303.372 74.5563 306.702 78.5137 311.299 80.8881C315.818 83.1833 321.05 83.6582 325.886 82.0753C330.721 80.4923 334.685 77.1682 337.063 72.5776C339.362 68.0663 339.837 62.8426 338.252 58.0146C336.667 53.1866 333.337 49.2293 328.739 46.8549C325.965 45.4302 322.952 44.7179 320.019 44.7179Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M315.025 68.937L320.019 62.7635L329.69 61.5763L332.385 57.8564L322.952 59.1227L330.166 50.1L324.22 47.0924L313.598 60.3099L309.793 60.7848L306.939 64.3464L310.744 63.8716L305.354 70.599L323.824 80.0175L327.629 75.3479L315.025 68.937Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M323.824 80.809C323.666 80.809 323.587 80.809 323.428 80.7299L304.958 71.2322C304.72 71.1531 304.561 70.9156 304.561 70.6782C304.482 70.4408 304.561 70.2033 304.72 70.045L308.842 64.9005L307.019 65.1379C306.702 65.2171 306.385 64.9796 306.226 64.7422C306.068 64.4256 306.068 64.109 306.305 63.8716L309.159 60.31C309.318 60.1517 309.476 60.0725 309.714 59.9934L313.281 59.5185L323.745 46.5384C323.983 46.2218 324.379 46.1427 324.696 46.3009L330.563 49.3085C330.8 49.3877 330.959 49.6251 330.959 49.8626C331.038 50.1 330.959 50.3374 330.8 50.4957L324.776 57.9355L332.307 56.9858C332.624 56.9858 332.941 57.0649 333.099 57.3815C333.258 57.619 333.258 58.0147 333.02 58.2521L330.325 61.8929C330.166 62.0512 330.008 62.2095 329.77 62.2095L320.416 63.3967L316.294 68.5412L328.026 74.5564C328.264 74.6355 328.422 74.873 328.422 75.1104C328.502 75.3479 328.422 75.5853 328.264 75.7436L324.459 80.4133C324.3 80.7299 324.062 80.809 323.824 80.809ZM306.543 70.2825L323.587 78.9886L326.361 75.5853L314.708 69.6493C314.47 69.5701 314.312 69.3327 314.312 69.0953C314.233 68.8578 314.312 68.6204 314.47 68.4621L319.465 62.2886C319.623 62.1303 319.782 62.0512 320.019 61.972L329.374 60.7848L330.721 58.8853L323.111 59.8351C322.794 59.8351 322.477 59.7559 322.318 59.4393C322.16 59.1228 322.16 58.8062 322.398 58.5687L328.977 50.3374L324.538 48.0422L314.312 60.7057C314.153 60.864 313.995 60.9431 313.757 61.0223L310.19 61.4972L308.763 63.3175L310.665 63.0801C310.982 63.0009 311.299 63.2384 311.458 63.4758C311.617 63.7924 311.617 64.109 311.379 64.3465L306.543 70.2825Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M490.768 371.911C496.481 357.951 489.777 342.01 475.795 336.307C461.812 330.604 445.847 337.297 440.134 351.257C434.422 365.217 441.126 381.157 455.108 386.861C469.09 392.564 485.056 385.871 490.768 371.911Z\",\n fill: \"#008EC8\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M465.482 389.798C462.311 389.798 459.14 389.244 456.048 388.216C448.914 385.683 443.206 380.538 439.877 373.732C433.139 359.644 439.084 342.706 453.194 335.979C467.305 329.251 484.269 335.187 491.007 349.275C494.257 356.082 494.733 363.759 492.196 370.882C489.66 378.006 484.507 383.704 477.689 387.028C473.805 388.849 469.604 389.798 465.482 389.798ZM465.402 335.266C461.597 335.266 457.713 336.058 454.066 337.878C440.986 344.131 435.437 359.881 441.7 372.94C444.712 379.272 450.023 384.021 456.682 386.395C463.341 388.69 470.476 388.374 476.817 385.287C483.159 382.28 487.916 376.977 490.294 370.328C492.593 363.68 492.275 356.557 489.184 350.225C484.665 340.727 475.232 335.266 465.402 335.266Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M483.536 370.353C488.405 360.371 484.249 348.338 474.251 343.476C464.254 338.615 452.202 342.765 447.333 352.746C442.463 362.727 446.62 374.76 456.617 379.622C466.614 384.484 478.666 380.334 483.536 370.353Z\",\n fill: \"#008EC8\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M465.486 382.675C463.108 382.675 460.73 382.28 458.431 381.488C453.12 379.589 448.839 375.789 446.382 370.724C441.308 360.198 445.827 347.534 456.291 342.548C461.364 340.094 467.151 339.778 472.462 341.677C477.773 343.577 482.054 347.376 484.512 352.441C489.585 362.968 485.066 375.631 474.603 380.617C471.669 381.963 468.578 382.675 465.486 382.675ZM465.407 342.389C462.553 342.389 459.779 343.023 457.163 344.289C447.65 348.88 443.607 360.277 448.205 369.774C450.425 374.365 454.309 377.847 459.144 379.509C463.98 381.171 469.133 380.934 473.81 378.718C483.322 374.127 487.365 362.73 482.768 353.233C480.548 348.642 476.664 345.16 471.828 343.498C469.688 342.785 467.547 342.389 465.407 342.389Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M466.514 368.508L464.611 360.831L469.526 352.362L468.179 348.009L463.422 356.24L460.648 345.08L454.623 347.93L458.745 364.392L456.843 367.796L457.952 372.149L459.855 368.904L461.916 377.214L480.704 368.27L479.277 362.334L466.514 368.508Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M461.915 378.006C461.836 378.006 461.678 378.006 461.598 377.926C461.36 377.847 461.202 377.61 461.202 377.372L459.616 370.962L458.665 372.544C458.507 372.861 458.19 372.94 457.872 372.94C457.555 372.861 457.318 372.624 457.238 372.386L456.129 367.954C456.049 367.716 456.129 367.558 456.208 367.4L457.952 364.313L453.909 348.167C453.83 347.771 453.988 347.455 454.305 347.297L460.251 344.447C460.488 344.368 460.726 344.368 460.964 344.447C461.202 344.526 461.36 344.764 461.36 345.001L463.659 354.262L467.464 347.692C467.623 347.455 467.94 347.297 468.257 347.297C468.574 347.297 468.812 347.534 468.891 347.851L470.16 352.204C470.239 352.441 470.16 352.679 470.08 352.837L465.324 360.989L466.91 367.4L478.8 361.701C479.038 361.622 479.276 361.622 479.514 361.701C479.752 361.78 479.91 362.018 479.91 362.255L481.337 368.112C481.416 368.508 481.258 368.825 480.941 368.983L462.232 377.926C462.153 378.006 462.074 378.006 461.915 378.006ZM459.854 368.112H459.934C460.251 368.191 460.488 368.429 460.568 368.745L462.391 376.106L479.672 367.796L478.642 363.522L466.751 369.22C466.513 369.299 466.275 369.299 466.038 369.22C465.8 369.141 465.641 368.904 465.641 368.666L463.739 360.989C463.659 360.752 463.739 360.593 463.818 360.435L468.574 352.283L467.94 350.067L464.135 356.715C463.976 357.032 463.659 357.111 463.342 357.111C463.025 357.032 462.787 356.794 462.708 356.557L460.171 346.347L455.653 348.484L459.616 364.313C459.696 364.551 459.616 364.709 459.537 364.867L457.793 367.954L458.348 370.17L459.299 368.508C459.299 368.191 459.616 368.112 459.854 368.112Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M501.554 70.0449C499.572 74.7146 496.718 78.6719 493.23 81.917C491.487 83.4999 489.584 84.9245 487.602 86.1118C485.62 87.299 483.559 88.2487 481.419 89.0402C478.644 90.0691 475.711 90.7023 472.778 90.9397C468.101 91.3354 463.266 90.7814 458.589 89.1985C457.875 88.961 457.162 88.6444 456.448 88.407C452.088 86.5866 448.362 83.9748 445.192 80.8089C443.448 78.9885 441.862 77.089 440.594 74.952C434.886 65.771 433.539 54.1364 437.978 43.3724C439.405 39.9691 441.307 36.9615 443.527 34.3497C446.698 30.6298 450.582 27.7013 454.863 25.6435C454.863 25.6435 454.863 25.6435 454.942 25.6435C457.637 24.3772 460.412 23.4274 463.345 22.8734C467.784 22.0027 472.54 22.0819 477.138 23.0317C479.12 23.5065 481.102 24.0606 483.084 24.9312C500.603 32.4501 508.926 52.5535 501.554 70.0449Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M469.766 92.2061C465.882 92.2061 461.997 91.5729 458.272 90.3066C457.558 90.0691 456.765 89.7525 456.052 89.4359C451.692 87.6156 447.808 85.0037 444.478 81.6004C442.655 79.78 441.07 77.7222 439.722 75.5852C433.618 65.8502 432.587 53.6615 437.106 43.0558C438.533 39.6525 440.435 36.5658 442.814 33.7165C446.064 29.9175 449.948 26.9099 454.467 24.7729H454.546C457.32 23.5066 460.174 22.5568 463.186 21.9236C467.943 21.053 472.699 21.1322 477.376 22.1611C479.437 22.6359 481.498 23.2691 483.48 24.0606C501.475 31.5795 510.036 52.3952 502.426 70.3615C500.444 75.0312 497.591 79.1468 493.865 82.5502C492.121 84.2122 490.139 85.6369 488.078 86.9032C486.096 88.0904 483.956 89.1194 481.736 89.9108C478.882 90.9397 475.87 91.6521 472.778 91.8895C471.827 92.1269 470.797 92.2061 469.766 92.2061ZM454.942 25.7227L455.418 26.6724C451.137 28.7303 447.491 31.5004 444.399 35.062C442.179 37.6739 440.356 40.6023 439.008 43.8473C434.807 53.8198 435.758 65.2961 441.545 74.4772C442.814 76.535 444.32 78.4345 446.064 80.1758C449.155 83.3416 452.802 85.7952 456.924 87.5364C457.637 87.853 458.351 88.0904 458.985 88.3279C463.424 89.8317 468.101 90.3857 472.778 89.99C475.632 89.7525 478.486 89.1194 481.181 88.0904C483.242 87.3781 485.224 86.3492 487.127 85.2412C489.108 84.054 490.932 82.7085 492.596 81.1255C496.084 77.8805 498.78 74.0023 500.603 69.5701C507.737 52.6326 499.731 33.0042 482.687 25.9601C480.785 25.1686 478.882 24.5355 476.901 24.1397C472.461 23.19 468.022 23.1108 463.504 23.9814C460.729 24.5355 457.955 25.4061 455.339 26.6724L454.942 25.7227Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M480.011 81.7437C493.829 76.1004 500.449 60.3412 494.797 46.5445C489.145 32.7478 473.361 26.1382 459.542 31.7814C445.724 37.4247 439.104 53.1839 444.756 66.9806C450.408 80.7773 466.192 87.387 480.011 81.7437Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M469.767 84.7663C466.121 84.7663 462.474 84.0539 458.986 82.5502C452.089 79.6217 446.699 74.2397 443.924 67.3539C441.071 60.4682 441.15 52.8701 444.004 45.9051C449.949 31.6587 466.438 24.9312 480.707 30.9464C494.976 36.8824 501.714 53.3449 495.689 67.5914C491.171 78.2762 480.707 84.7663 469.767 84.7663ZM469.846 30.8672C459.7 30.8672 450.028 36.8824 445.827 46.7757C443.132 53.1866 443.132 60.2307 445.748 66.6416C448.364 73.0525 453.358 78.0388 459.779 80.7298C466.2 83.4208 473.255 83.4208 479.676 80.8089C486.097 78.1971 491.091 73.2108 493.787 66.7999C499.336 53.5824 493.073 38.3862 479.914 32.8459C476.584 31.5004 473.176 30.8672 469.846 30.8672Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M478.563 61.6554C477.929 59.9933 476.819 58.5687 475.233 57.3023L475.392 56.9066C479.038 56.9066 481.417 55.5611 482.606 52.7118C483.161 51.4455 483.319 50.1791 483.161 48.9128C483.002 47.963 482.526 46.9341 481.734 45.9843C481.417 45.5886 481.02 45.1929 480.465 44.7971L482.843 39.0986L479.276 37.5948L477.136 42.7393C476.422 42.3436 475.55 42.027 474.678 41.6313L474.52 41.5521L476.66 36.4867L473.093 34.9829L470.953 40.0483L464.69 37.4365C464.532 37.3573 464.452 37.4365 464.373 37.5948L463.897 38.7028C463.818 38.8611 463.897 38.9403 464.056 39.0194L467.544 40.9189C467.703 40.9981 467.703 41.0772 467.703 41.2355L457.397 65.8502C457.318 66.0085 457.239 66.0085 457.08 66.0085L453.275 64.8213C453.116 64.7422 453.037 64.8213 452.958 64.9796L452.482 66.0877C452.403 66.2459 452.482 66.3251 452.641 66.4042L458.903 69.0161L456.604 74.3981L460.172 75.9019L462.471 70.5199L463.58 70.9948C464.135 71.2322 464.611 71.3905 465.087 71.5488L462.788 77.0099L466.355 78.5137L468.892 72.5777C471.508 72.9734 473.648 72.6568 475.392 71.4696C476.898 70.5199 477.929 69.2535 478.563 67.6706C479.435 65.6919 479.435 63.7132 478.563 61.6554ZM474.996 44.164C475.471 44.4014 475.947 44.6388 476.343 44.8763C477.294 45.5095 478.008 46.2218 478.484 47.0924C478.721 47.4881 478.88 47.963 479.038 48.4379C479.197 49.3877 479.118 50.4166 478.642 51.6038C478.166 52.791 477.453 53.6616 476.66 54.2156C476.026 54.6905 475.233 54.9279 474.441 55.0862C473.806 55.1654 473.014 55.1654 472.221 55.0071C471.349 54.8488 470.477 54.6113 469.447 54.2156C469.209 54.1365 468.971 54.0573 468.733 53.899L467.385 53.345C467.227 53.2659 467.227 53.1867 467.227 53.0284L471.508 42.8185C471.587 42.6602 471.666 42.6602 471.825 42.6602L473.489 43.3725L473.886 43.5308L474.996 44.164ZM470.001 69.8076C468.892 70.045 467.544 69.8867 465.959 69.491C465.324 69.3327 464.69 69.0952 463.977 68.7786L463.263 68.4621L461.282 67.5914C461.123 67.5123 461.123 67.4332 461.202 67.2749L466.355 55.0862C466.434 54.9279 466.513 54.9279 466.672 54.9279L468.574 55.7194C468.654 55.7194 468.654 55.7194 468.733 55.7986C469.684 56.1943 470.556 56.6692 471.27 57.144C472.617 58.0147 473.569 58.9644 474.203 60.0725C475.233 61.8137 475.233 63.8715 474.203 66.1668C473.252 68.3038 471.904 69.491 470.001 69.8076Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M466.435 79.226C466.355 79.226 466.197 79.226 466.118 79.1468L462.55 77.643C462.392 77.5639 462.233 77.4056 462.154 77.2473C462.075 77.089 462.075 76.8516 462.154 76.6933L464.136 71.9445C463.898 71.8653 463.581 71.707 463.343 71.6279L462.868 71.4696L460.886 76.1392C460.727 76.535 460.251 76.6933 459.855 76.535L456.288 75.0312C456.129 74.952 455.971 74.7938 455.892 74.6355C455.812 74.4772 455.812 74.2397 455.892 74.0814L457.873 69.4118L452.324 67.0374C452.007 66.8791 451.849 66.6416 451.769 66.4833C451.69 66.325 451.69 66.0876 451.769 65.6919L452.245 64.5838C452.404 64.2672 452.562 64.1089 452.721 64.0298C452.958 63.9506 453.196 63.9506 453.513 64.0298L456.843 65.0587L466.831 41.3146L463.739 39.6525C463.264 39.4151 463.026 38.8611 463.264 38.3862L463.739 37.2781C463.898 36.9615 464.136 36.8032 464.294 36.7241C464.453 36.6449 464.77 36.5658 465.087 36.7241L470.636 39.0985L472.459 34.8246C472.618 34.4288 473.094 34.2705 473.49 34.4288L477.057 35.9326C477.216 36.0118 477.374 36.1701 477.454 36.3284C477.533 36.4866 477.533 36.7241 477.454 36.8824L475.63 41.2355C476.027 41.3938 476.423 41.6312 476.819 41.7895L478.643 37.4364C478.722 37.2781 478.88 37.1198 479.039 37.0407C479.198 36.9615 479.435 36.9615 479.594 37.0407L483.161 38.5445C483.558 38.7028 483.716 39.1776 483.558 39.5734L481.417 44.7179C481.814 45.0345 482.051 45.3511 482.368 45.6677C483.24 46.7757 483.795 47.8838 483.954 48.9919C484.192 50.3374 483.954 51.762 483.399 53.1866C482.21 55.9568 480.07 57.4606 476.819 57.7772C477.929 58.8852 478.722 60.0724 479.277 61.4971C480.149 63.7132 480.149 65.9293 479.277 68.0663C478.563 69.8075 477.374 71.153 475.789 72.1819C474.045 73.29 471.904 73.7648 469.368 73.4483L467.069 78.8302C466.99 79.0677 466.673 79.226 466.435 79.226ZM463.898 76.535L466.038 77.4056L468.258 72.1819C468.417 71.8653 468.734 71.707 469.051 71.707C471.429 72.1028 473.49 71.7862 474.996 70.7573C476.344 69.8866 477.295 68.6994 477.929 67.2748C478.643 65.5336 478.643 63.7132 477.929 61.8928C477.295 60.3099 476.264 58.9644 474.838 57.8563C474.6 57.6189 474.441 57.3023 474.6 56.9857L474.758 56.59C474.917 56.2734 475.155 56.1151 475.472 56.1151C478.801 56.1942 480.942 54.9279 481.972 52.3952C482.448 51.208 482.606 50.0999 482.448 48.9919C482.289 48.1212 481.893 47.2506 481.179 46.38C480.862 46.0634 480.545 45.6677 480.07 45.272C479.832 45.0345 479.673 44.7179 479.832 44.4013L481.893 39.4151L479.752 38.5445L477.929 42.9767C477.85 43.135 477.691 43.2933 477.454 43.3724C477.216 43.4516 477.057 43.4516 476.819 43.3724C476.106 42.9767 475.313 42.6601 474.441 42.2644L474.283 42.1852C473.886 42.0269 473.728 41.552 473.886 41.1563L475.71 36.8032L473.569 35.9326L471.746 40.2857C471.587 40.6814 471.112 40.8397 470.715 40.6814L464.929 38.2279L464.849 38.3862L467.941 40.0483C468.258 40.2065 468.417 40.3648 468.417 40.5231C468.496 40.7606 468.496 40.998 468.417 41.3146L458.111 65.9293C457.873 66.4833 457.398 66.6416 456.843 66.4833L453.513 65.4544L453.434 65.6127L459.221 68.0663C459.617 68.2246 459.776 68.6994 459.617 69.0952L457.636 73.7648L459.776 74.6355L461.758 69.9658C461.916 69.5701 462.392 69.4118 462.788 69.5701L463.898 70.0449C464.374 70.2824 464.929 70.4407 465.404 70.599C465.642 70.6781 465.801 70.8364 465.88 70.9947C465.959 71.153 465.959 71.3904 465.88 71.6279L463.898 76.535ZM468.892 70.6781C467.941 70.6781 466.91 70.5198 465.801 70.2032C465.166 70.0449 464.453 69.8075 463.739 69.4909L461.044 68.3829C460.489 68.1454 460.331 67.5914 460.489 67.1165L465.642 54.9279C465.88 54.3738 466.435 54.2156 466.91 54.3738L468.813 55.1653C468.892 55.1653 468.892 55.2445 468.971 55.2445C469.923 55.6402 470.874 56.1151 471.587 56.59C473.014 57.5397 474.124 58.5686 474.758 59.7558C475.868 61.7345 475.868 64.0298 474.838 66.5625C473.886 68.8577 472.301 70.2824 470.161 70.6781C469.764 70.6781 469.289 70.6781 468.892 70.6781ZM462.075 67.1165L464.294 68.0663C465.008 68.3829 465.642 68.5411 466.197 68.7786C467.624 69.1743 468.813 69.2535 469.843 69.0952C471.429 68.7786 472.618 67.7497 473.411 65.9293C474.283 63.7923 474.283 62.0511 473.411 60.4682C472.856 59.5184 471.984 58.6478 470.715 57.8563C470.002 57.3814 469.209 56.9857 468.258 56.59H468.179L466.752 55.9568L462.075 67.1165ZM473.49 55.8776C473.014 55.8776 472.459 55.7985 471.984 55.7193C471.112 55.5611 470.081 55.3236 469.051 54.8487C468.813 54.7696 468.575 54.6904 468.337 54.5321L466.99 53.9781C466.752 53.899 466.514 53.6615 466.435 53.4241C466.355 53.1866 466.355 52.9492 466.435 52.6326L470.715 42.4227C470.795 42.1852 471.033 41.9478 471.27 41.8686C471.508 41.7895 471.746 41.7895 472.063 41.8686L474.124 42.7393L475.392 43.2933C475.947 43.5307 476.423 43.8473 476.819 44.0847C477.85 44.7179 478.643 45.5885 479.198 46.5383C479.515 47.0132 479.673 47.5672 479.832 48.1212C480.07 49.2293 479.911 50.4165 479.356 51.6829C478.801 52.9492 478.088 53.9781 477.057 54.6113C476.344 55.1653 475.472 55.4819 474.52 55.561C474.124 55.8776 473.807 55.8776 473.49 55.8776ZM468.099 52.8701L468.892 53.1866C469.13 53.2658 469.368 53.3449 469.526 53.4241C470.478 53.8198 471.35 54.0573 472.142 54.2156C472.856 54.3738 473.569 54.3738 474.124 54.2947C474.838 54.2156 475.472 53.9781 476.027 53.5824C476.74 53.1075 477.295 52.316 477.771 51.2871C478.167 50.3374 478.326 49.3876 478.167 48.5961C478.088 48.2004 477.929 47.8047 477.771 47.4881C477.295 46.7757 476.661 46.0634 475.868 45.5885C475.472 45.3511 475.075 45.1137 474.6 44.8762L473.014 44.1639L471.904 43.689L468.099 52.8701Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M234.729 19.2327C235.363 22.4777 235.363 25.7227 234.649 28.8095C234.332 30.3133 233.777 31.8171 233.143 33.2417C232.509 34.5872 231.795 35.9327 230.844 37.1199C229.734 38.7028 228.307 40.1275 226.801 41.3938C224.423 43.3725 221.569 44.8763 218.398 45.7469C217.923 45.9052 217.447 45.9844 216.892 46.0635C213.801 46.6967 210.788 46.6967 207.935 46.0635C206.27 45.7469 204.764 45.272 203.257 44.5597C196.678 41.7104 191.604 35.7744 190.098 28.2554C189.623 25.881 189.543 23.5066 189.781 21.2114C190.098 18.0455 191.129 14.9588 192.714 12.2678C193.666 10.6057 194.934 9.02275 196.282 7.67725C198.422 5.54028 200.959 3.79905 203.892 2.69099C205.16 2.21611 206.428 1.82038 207.855 1.50379C220.142 -1.02891 232.192 6.88578 234.729 19.2327Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M212.374 47.5673C210.868 47.5673 209.282 47.409 207.776 47.0924C206.111 46.7758 204.447 46.2218 202.861 45.5094C195.806 42.4227 190.653 36.0118 189.068 28.4929C188.592 26.0393 188.434 23.5857 188.751 21.1322C189.147 17.808 190.178 14.6421 191.843 11.7929C192.873 9.97248 194.141 8.38954 195.568 6.96489C197.867 4.66963 200.562 2.9284 203.496 1.7412C204.843 1.18717 206.191 0.791433 207.618 0.474845C213.88 -0.791505 220.222 0.395699 225.533 3.95731C230.844 7.43977 234.491 12.8218 235.759 18.9952C236.473 22.3194 236.393 25.7227 235.68 28.9677C235.284 30.5507 234.808 32.0545 234.095 33.5583C233.46 34.9829 232.668 36.3284 231.716 37.5947C230.527 39.2568 229.1 40.7606 227.515 42.027C224.899 44.1639 221.966 45.6677 218.716 46.5384C218.24 46.6966 217.685 46.7758 217.21 46.9341C215.545 47.409 213.959 47.5673 212.374 47.5673ZM212.453 2.05778C211.026 2.05778 209.52 2.21608 208.093 2.53267C206.825 2.77011 205.557 3.16584 204.288 3.64072C201.593 4.74878 199.136 6.33172 196.995 8.46868C195.648 9.81418 194.538 11.2388 193.586 12.9009C192.001 15.5919 191.05 18.4412 190.733 21.5279C190.495 23.744 190.574 26.0393 191.05 28.2554C192.477 35.1412 197.154 40.9981 203.654 43.8474C205.081 44.4805 206.587 44.9554 208.173 45.272C211.026 45.826 213.88 45.826 216.734 45.272C217.21 45.1929 217.685 45.0346 218.161 44.9554C221.094 44.1639 223.789 42.7393 226.167 40.8398C227.594 39.6526 228.942 38.3071 229.972 36.7241C230.844 35.5369 231.558 34.3497 232.113 33.0042C232.747 31.6587 233.223 30.2341 233.54 28.8094C234.253 25.8019 234.253 22.7151 233.619 19.6284C232.43 13.9298 229.18 9.02271 224.265 5.85684C220.777 3.24499 216.655 2.05778 212.453 2.05778Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M227.238 33.5865C232.67 25.3811 230.411 14.333 222.192 8.90989C213.974 3.48681 202.908 5.74235 197.476 13.9478C192.045 22.1532 194.304 33.2013 202.522 38.6244C210.741 44.0475 221.806 41.792 227.238 33.5865Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M212.371 42.6602C203.572 42.6602 195.724 36.4867 193.9 27.5431C192.87 22.636 193.9 17.5706 196.675 13.3758C199.449 9.18105 203.73 6.33176 208.645 5.30285C218.871 3.24503 228.859 9.81423 230.92 20.0242C232.981 30.2341 226.402 40.2066 216.176 42.2645C214.907 42.5019 213.639 42.6602 212.371 42.6602ZM212.371 6.96494C211.261 6.96494 210.151 7.04408 208.962 7.28153C204.523 8.15214 200.797 10.764 198.26 14.4839C195.803 18.2038 194.931 22.7152 195.803 27.1474C197.626 36.2493 206.584 42.1062 215.7 40.2858C224.816 38.4654 230.683 29.5218 228.859 20.4199C227.274 12.4261 220.219 6.96494 212.371 6.96494Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M219.031 23.1899C218 22.4776 216.89 22.161 215.622 22.0819L215.543 21.8444C217.524 20.4989 218.317 18.8369 217.921 16.8582C217.762 15.9084 217.366 15.1961 216.811 14.5629C216.335 14.088 215.701 13.6923 214.908 13.4549C214.591 13.3757 214.195 13.2966 213.799 13.2966L213.006 9.33923L210.548 9.81411L211.262 13.4549C210.707 13.534 210.152 13.6132 209.518 13.7715H209.439L208.725 10.2098L206.268 10.6847L206.902 14.2463L202.463 15.117C202.383 15.117 202.304 15.1961 202.383 15.2753L202.542 16.0667C202.542 16.1459 202.621 16.225 202.701 16.1459L205.316 15.9084C205.396 15.9084 205.475 15.9084 205.475 15.9876L209.042 33.3207C209.042 33.3999 209.042 33.479 208.963 33.479L206.426 34.2705C206.347 34.2705 206.268 34.3497 206.347 34.4288L206.506 35.2203C206.506 35.2994 206.585 35.3786 206.664 35.2994L211.103 34.4288L211.896 38.2279L214.354 37.753L213.561 33.9539L214.354 33.7956C214.75 33.7165 215.067 33.6373 215.384 33.5582L216.177 37.3572L218.634 36.8824L217.762 32.6876C219.348 31.8961 220.378 30.9463 220.933 29.68C221.409 28.5719 221.488 27.543 221.25 26.435C221.012 25.0895 220.22 23.9814 219.031 23.1899ZM210.548 14.9587C210.866 14.8795 211.262 14.8795 211.579 14.8795C212.292 14.8795 213.006 15.0378 213.561 15.2753C213.878 15.4335 214.116 15.5918 214.354 15.8293C214.829 16.3042 215.146 16.9373 215.305 17.7288C215.463 18.5203 215.463 19.2326 215.225 19.8658C215.067 20.3407 214.75 20.8155 214.354 21.1321C214.036 21.4487 213.64 21.6862 213.085 21.9236C212.61 22.161 211.975 22.3985 211.262 22.5568C211.103 22.5568 210.945 22.6359 210.786 22.6359L209.835 22.7942C209.756 22.7942 209.676 22.7942 209.676 22.7151L208.17 15.5127C208.17 15.4335 208.17 15.3544 208.25 15.3544L209.439 15.117L209.676 15.0378L210.548 14.9587ZM217.366 30.7881C216.811 31.3421 216.018 31.7378 215.067 32.1335C214.671 32.2918 214.195 32.371 213.719 32.5293L213.244 32.6084L211.817 32.925C211.738 32.925 211.658 32.925 211.658 32.7667L209.914 24.2189C209.914 24.1397 209.914 24.0606 209.994 24.0606L211.341 23.8231H211.42C212.134 23.6648 212.768 23.5857 213.323 23.5857C214.354 23.5857 215.305 23.744 216.018 24.0606C217.207 24.6146 218 25.7226 218.317 27.3847C218.555 28.7302 218.317 29.9174 217.366 30.7881Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M211.817 39.0193C211.658 39.0193 211.5 38.9402 211.42 38.861C211.262 38.7819 211.103 38.5444 211.103 38.3862L210.469 35.2994L206.823 36.0117C206.347 36.0909 205.871 35.7743 205.713 35.2994L205.554 34.5079C205.475 34.0331 205.713 33.5582 206.188 33.3999L208.17 32.8459L204.841 16.6207L202.78 16.8582C202.542 16.8582 202.304 16.8582 202.146 16.6999C201.908 16.5416 201.828 16.3833 201.749 16.1459L201.591 15.3544C201.511 15.117 201.591 14.8795 201.749 14.6421C201.908 14.4046 202.066 14.3255 202.304 14.2463L205.951 13.534L205.396 10.7639C205.316 10.3681 205.554 9.9724 206.03 9.89326L208.487 9.41837C208.725 9.33923 208.884 9.41837 209.042 9.49752C209.201 9.57667 209.359 9.81411 209.359 9.9724L209.914 12.7425C210.073 12.7425 210.152 12.6634 210.311 12.6634L209.756 9.81411C209.676 9.57667 209.756 9.41837 209.835 9.26008C209.914 9.10179 210.152 8.94349 210.311 8.94349L212.768 8.46861C213.164 8.38946 213.561 8.62691 213.64 9.10179L214.353 12.5051C214.591 12.5051 214.829 12.5843 215.067 12.6634C216.018 12.9008 216.732 13.3757 217.287 13.9297C217.921 14.6421 218.396 15.5127 218.634 16.5416C218.872 17.8871 218.793 19.7075 217.049 21.3696C217.921 21.607 218.634 21.9236 219.348 22.3985C220.695 23.3482 221.567 24.6146 221.884 26.1184C222.122 27.3847 222.043 28.6511 221.488 29.8383C220.933 31.1046 219.982 32.1335 218.476 32.925L219.189 36.5658C219.268 36.9615 219.031 37.3572 218.555 37.4364L216.097 37.9113C215.939 37.9904 215.701 37.9113 215.543 37.8321C215.384 37.753 215.225 37.5155 215.225 37.3572L214.591 34.2705C214.512 34.2705 214.353 34.3497 214.274 34.3497H214.195L214.829 37.4364C214.908 37.8321 214.671 38.2279 214.195 38.307L211.738 38.7819C211.896 39.0193 211.817 39.0193 211.817 39.0193ZM211.024 33.7165C211.183 33.7165 211.341 33.7956 211.42 33.8748C211.579 33.9539 211.738 34.1914 211.738 34.3497L212.372 37.4364L213.323 37.1989L212.689 34.1122C212.609 33.8748 212.689 33.5582 212.927 33.3999L211.896 33.6373C211.42 33.7165 210.945 33.3999 210.786 32.925L209.042 24.3771C208.963 24.1397 209.042 23.9023 209.201 23.6648L209.28 23.5857C209.28 23.5857 209.201 23.5857 209.201 23.5065C208.963 23.3482 208.884 23.1899 208.804 22.9525L207.298 15.7501C207.219 15.5127 207.298 15.2752 207.457 15.0378C207.615 14.8004 207.774 14.7212 208.012 14.6421L209.042 14.4046C208.963 14.4046 208.963 14.3255 208.884 14.3255C208.725 14.2463 208.567 14.0089 208.567 13.8506L208.012 11.0805L207.06 11.3179L207.615 14.088C207.695 14.4838 207.457 14.8795 206.981 14.9587L205.634 15.1961C205.871 15.2752 206.109 15.5127 206.109 15.8293L209.676 33.1625C209.756 33.3999 209.676 33.6373 209.518 33.8748L209.439 33.9539L210.707 33.7165C210.945 33.7165 210.945 33.7165 211.024 33.7165ZM215.463 32.7667C215.543 32.7667 215.701 32.8459 215.78 32.8459C215.939 32.925 216.097 33.1625 216.097 33.3207L216.732 36.4075L217.683 36.17L216.969 32.7667C216.89 32.4501 217.049 32.0544 217.366 31.8961C218.793 31.2629 219.665 30.3132 220.14 29.2843C220.537 28.3345 220.616 27.4639 220.457 26.435C220.22 25.2478 219.585 24.3771 218.555 23.6648C217.683 23.0316 216.652 22.7151 215.543 22.6359C215.225 22.6359 214.908 22.3985 214.829 22.0027L214.75 21.7653C214.75 21.6861 214.75 21.607 214.75 21.5279C214.353 21.8444 213.878 22.161 213.323 22.4776C213.244 22.4776 213.244 22.5568 213.164 22.5568C213.244 22.5568 213.244 22.5568 213.323 22.5568C214.512 22.5568 215.543 22.7151 216.335 23.1108C217.762 23.8231 218.634 25.0895 219.031 26.989C219.348 28.7302 219.031 30.1549 217.921 31.1838C217.366 31.9753 216.494 32.4501 215.463 32.7667ZM210.786 24.6146L212.292 31.9753L213.561 31.7378C214.036 31.6587 214.433 31.5004 214.829 31.4212C215.701 31.1046 216.415 30.788 216.89 30.3132C217.604 29.6008 217.841 28.7302 217.604 27.4639C217.287 26.0392 216.732 25.1686 215.701 24.6937C215.067 24.3771 214.274 24.2189 213.402 24.298C212.847 24.298 212.292 24.3771 211.658 24.5354H211.579L210.786 24.6146ZM208.963 15.9876L210.152 21.9236L210.469 21.8444C210.628 21.8444 210.786 21.7653 210.945 21.7653C211.579 21.607 212.134 21.4487 212.609 21.2113C213.006 21.053 213.402 20.8155 213.64 20.5781C213.957 20.2615 214.195 19.9449 214.353 19.5492C214.512 19.0743 214.591 18.4411 214.433 17.808C214.274 17.1748 214.036 16.6999 213.719 16.3042C213.561 16.1459 213.323 15.9876 213.164 15.9084C212.689 15.671 212.134 15.5918 211.5 15.5918C211.262 15.5918 210.945 15.5918 210.628 15.671L208.963 15.9876ZM211.658 14.088C212.451 14.088 213.164 14.2463 213.878 14.5629C214.274 14.7212 214.591 14.9587 214.908 15.2752C215.463 15.8293 215.86 16.6207 216.097 17.5705C216.256 18.5203 216.256 19.3909 215.939 20.1824C215.86 20.4198 215.701 20.7364 215.543 20.9738C217.049 19.8658 217.604 18.5994 217.287 17.0165C217.128 16.225 216.811 15.5918 216.335 15.117C216.018 14.7212 215.463 14.4838 214.829 14.2463C214.591 14.1672 214.274 14.088 213.878 14.088C213.561 14.088 213.244 13.8506 213.164 13.4549L212.53 10.2098L211.579 10.4473L212.134 13.2966C212.213 13.534 212.134 13.6923 211.975 13.9297C211.896 14.088 211.737 14.1672 211.658 14.1672C211.579 14.088 211.658 14.088 211.658 14.088Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M345.388 456.836C343.802 461.031 341.424 464.671 338.412 467.6C336.906 469.104 335.32 470.37 333.576 471.557C331.912 472.665 330.088 473.615 328.265 474.327C325.808 475.277 323.271 475.989 320.655 476.306C316.533 476.86 312.252 476.544 308.051 475.198C307.417 475.04 306.782 474.802 306.148 474.565C302.264 473.061 298.855 470.924 296.001 468.233C294.416 466.729 292.989 464.988 291.721 463.247C286.33 455.332 284.745 445.043 288.391 435.387C289.501 432.379 291.086 429.609 292.989 427.235C295.684 423.832 299.014 421.141 302.739 419.162C302.739 419.162 302.739 419.162 302.819 419.162C305.118 417.975 307.575 417.025 310.191 416.471C314.155 415.6 318.277 415.442 322.399 416.234C324.143 416.55 325.966 417.025 327.71 417.737C343.327 423.594 351.333 441.165 345.388 456.836Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M316.85 477.572C313.759 477.572 310.746 477.097 307.734 476.227C307.1 475.989 306.386 475.831 305.752 475.515C301.788 474.011 298.3 471.795 295.209 468.945C293.544 467.362 292.038 465.621 290.77 463.722C285.062 455.253 283.714 444.489 287.361 434.991C288.55 431.905 290.135 429.055 292.117 426.523C294.892 423.04 298.221 420.27 302.185 418.212C304.642 416.946 307.179 415.996 309.795 415.442C313.996 414.492 318.198 414.413 322.399 415.125C324.222 415.442 326.125 415.996 327.869 416.629C344.12 422.724 352.364 440.927 346.26 457.152C344.675 461.347 342.217 465.146 339.046 468.312C337.54 469.816 335.875 471.161 334.052 472.349C332.308 473.457 330.485 474.486 328.503 475.198C325.966 476.227 323.35 476.939 320.655 477.256C319.466 477.493 318.198 477.572 316.85 477.572ZM316.85 416.708C314.631 416.708 312.49 416.946 310.35 417.421C307.892 417.975 305.514 418.845 303.295 420.033H303.215C299.569 421.932 296.398 424.544 293.782 427.789C291.879 430.163 290.373 432.854 289.343 435.704C286.013 444.647 287.202 454.699 292.514 462.614C293.703 464.355 295.13 466.017 296.636 467.442C299.49 470.133 302.819 472.19 306.465 473.536C307.1 473.773 307.734 474.011 308.289 474.169C312.252 475.356 316.374 475.752 320.497 475.198C323.033 474.881 325.491 474.248 327.869 473.298C329.692 472.586 331.436 471.636 333.022 470.607C334.686 469.499 336.272 468.233 337.699 466.808C340.632 463.88 342.931 460.318 344.437 456.44C350.144 441.244 342.455 424.307 327.235 418.608C325.57 417.975 323.826 417.5 322.082 417.183C320.338 416.867 318.594 416.708 316.85 416.708Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M326.679 467.881C338.685 462.455 344.011 448.34 338.577 436.354C333.142 424.367 319.004 419.049 306.999 424.475C294.994 429.901 289.667 444.017 295.102 456.003C300.537 467.989 314.674 473.307 326.679 467.881Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M316.848 471.003C313.914 471.003 310.902 470.449 308.048 469.42C301.786 467.046 296.871 462.455 294.096 456.361C291.322 450.346 291.163 443.539 293.462 437.366C295.84 431.113 300.438 426.206 306.542 423.436C312.567 420.666 319.384 420.508 325.567 422.803C331.83 425.177 336.745 429.768 339.519 435.862C342.294 441.877 342.452 448.684 340.154 454.857C337.775 461.11 333.178 466.017 327.074 468.787C323.903 470.291 320.415 471.003 316.848 471.003ZM316.848 423.278C313.677 423.278 310.427 423.99 307.414 425.336C301.865 427.868 297.584 432.38 295.444 438.078C293.304 443.777 293.462 449.95 295.999 455.57C298.536 461.11 303.054 465.384 308.762 467.521C314.469 469.658 320.653 469.499 326.281 466.967C331.83 464.434 336.111 459.923 338.251 454.224C340.391 448.526 340.233 442.352 337.696 436.733C335.159 431.192 330.641 426.918 324.933 424.781C322.317 423.832 319.543 423.278 316.848 423.278Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M324.777 450.188C324.143 448.684 323.113 447.496 321.686 446.468L321.844 446.151C325.094 446.072 327.155 444.726 328.107 442.194C328.582 441.006 328.662 439.898 328.424 438.87C328.265 437.999 327.79 437.128 327.076 436.337C326.759 436.02 326.363 435.624 325.966 435.308L327.869 430.242L324.698 429.055L322.954 433.646C322.32 433.329 321.527 433.013 320.734 432.696L320.576 432.617L322.32 428.106L319.149 426.918L317.405 431.43L311.777 429.293C311.618 429.214 311.539 429.293 311.539 429.451L311.142 430.48C311.063 430.638 311.142 430.717 311.222 430.717L314.393 432.3C314.551 432.379 314.551 432.459 314.551 432.538L306.228 454.62C306.148 454.778 306.069 454.778 305.99 454.699L302.581 453.749C302.423 453.67 302.343 453.749 302.343 453.907L301.947 454.936C301.868 455.095 301.947 455.174 302.026 455.174L307.654 457.311L305.831 462.139L309.002 463.326L310.825 458.498L311.856 458.894C312.332 459.052 312.807 459.21 313.204 459.369L311.38 464.276L314.551 465.463L316.533 460.16C318.832 460.397 320.734 460.081 322.241 458.973C323.509 458.102 324.381 456.915 324.936 455.49C325.649 453.67 325.57 451.929 324.777 450.188ZM321.051 434.833C321.448 434.991 321.923 435.229 322.241 435.466C323.113 435.941 323.747 436.574 324.222 437.366C324.46 437.761 324.619 438.157 324.698 438.553C324.936 439.424 324.777 440.294 324.46 441.323C324.064 442.352 323.509 443.143 322.795 443.697C322.241 444.093 321.606 444.41 320.814 444.489C320.259 444.568 319.545 444.568 318.832 444.489C318.118 444.41 317.246 444.172 316.374 443.856C316.137 443.777 315.978 443.697 315.74 443.618L314.551 443.143C314.393 443.064 314.393 442.985 314.472 442.906L317.96 433.725C318.039 433.567 318.118 433.567 318.198 433.646L319.704 434.2L320.021 434.358L321.051 434.833ZM317.484 457.706C316.454 457.944 315.265 457.865 313.917 457.548C313.362 457.39 312.728 457.232 312.094 456.994L311.539 456.678L309.716 455.965C309.557 455.886 309.557 455.807 309.636 455.728L313.758 444.726C313.838 444.568 313.917 444.568 313.996 444.647L315.661 445.28C315.74 445.28 315.74 445.28 315.74 445.36C316.612 445.676 317.405 446.072 318.039 446.468C319.228 447.18 320.179 448.051 320.734 448.921C321.686 450.425 321.765 452.245 320.972 454.303C320.338 456.203 319.149 457.311 317.484 457.706Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M314.551 466.175C314.472 466.175 314.393 466.175 314.313 466.096L311.142 464.909C310.746 464.751 310.508 464.355 310.667 463.959L312.252 459.843C312.014 459.764 311.856 459.685 311.618 459.606L311.301 459.527L309.716 463.642C309.636 463.801 309.478 463.959 309.319 464.038C309.161 464.117 308.923 464.117 308.764 464.038L305.593 462.851C305.197 462.693 304.959 462.297 305.118 461.901L306.703 457.786L301.788 455.965C301.233 455.728 300.996 455.253 301.233 454.699L301.63 453.67C301.788 453.116 302.343 452.879 302.819 453.037L305.673 453.828L313.679 432.696L310.984 431.351C310.746 431.271 310.588 431.113 310.508 430.876C310.429 430.638 310.429 430.401 310.508 430.163L310.905 429.134C311.142 428.58 311.618 428.343 312.173 428.58L317.088 430.401L318.515 426.602C318.673 426.206 319.07 425.969 319.466 426.127L322.637 427.314C322.795 427.393 322.954 427.551 323.033 427.71C323.113 427.868 323.113 428.105 323.033 428.264L321.606 432.063C321.923 432.221 322.241 432.3 322.558 432.459L323.985 428.58C324.064 428.422 324.222 428.264 324.381 428.185C324.539 428.106 324.777 428.106 324.936 428.185L328.107 429.372C328.265 429.451 328.424 429.609 328.503 429.768C328.582 429.926 328.582 430.163 328.503 430.322L326.759 434.912C327.076 435.15 327.314 435.466 327.552 435.704C328.344 436.653 328.899 437.603 329.058 438.632C329.296 439.819 329.137 441.086 328.662 442.431C327.71 444.885 325.887 446.309 323.113 446.784C324.064 447.655 324.777 448.684 325.332 449.871C326.204 451.85 326.283 453.828 325.57 455.728C325.015 457.311 323.985 458.577 322.558 459.527C321.051 460.556 319.149 461.031 316.929 460.872L315.106 465.7C315.027 465.859 314.868 466.017 314.71 466.096C314.789 466.175 314.71 466.175 314.551 466.175ZM312.411 463.801L314.155 464.434L315.899 459.843C316.057 459.527 316.374 459.289 316.691 459.369C318.832 459.606 320.576 459.289 321.844 458.34C322.954 457.548 323.826 456.519 324.302 455.253C324.857 453.67 324.857 452.166 324.143 450.583C323.588 449.238 322.637 448.13 321.289 447.18C320.972 446.942 320.893 446.626 321.051 446.309L321.21 445.993C321.289 445.676 321.606 445.518 321.923 445.518C324.857 445.439 326.68 444.331 327.472 442.035C327.869 441.006 327.948 440.057 327.79 439.107C327.631 438.395 327.235 437.682 326.6 436.891C326.363 436.574 325.966 436.258 325.57 436.02C325.253 435.783 325.174 435.466 325.332 435.15L326.997 430.796L325.253 430.163L323.747 434.042C323.667 434.279 323.509 434.437 323.35 434.516C323.192 434.596 322.954 434.596 322.716 434.516C322.082 434.2 321.369 433.883 320.576 433.646L320.417 433.567C320.259 433.487 320.1 433.329 320.021 433.171C319.942 433.013 319.942 432.775 320.021 432.617L321.448 428.818L319.704 428.185L318.277 431.984C318.118 432.379 317.722 432.617 317.326 432.459L312.332 430.559L314.868 431.825C315.106 431.905 315.265 432.063 315.344 432.3C315.423 432.538 315.423 432.775 315.344 433.013L307.02 455.095C306.862 455.569 306.307 455.807 305.831 455.649L302.977 454.857L308.051 456.757C308.209 456.836 308.368 456.994 308.447 457.152C308.526 457.311 308.526 457.548 308.447 457.706L306.862 461.822L308.606 462.455L310.191 458.34C310.27 458.181 310.429 458.023 310.588 457.944C310.746 457.865 310.984 457.865 311.142 457.944L312.173 458.34C312.649 458.498 313.045 458.656 313.521 458.815C313.758 458.894 313.917 459.052 313.996 459.21C314.076 459.369 314.076 459.606 313.996 459.843L312.411 463.801ZM316.216 458.577C315.423 458.577 314.63 458.498 313.758 458.26C313.204 458.102 312.569 457.944 311.856 457.706L309.398 456.757C309.161 456.678 308.923 456.519 308.844 456.282C308.764 456.044 308.764 455.807 308.844 455.569L312.966 444.568C313.045 444.331 313.204 444.093 313.441 444.014C313.679 443.935 313.917 443.935 314.155 444.014L315.819 444.647C315.899 444.647 315.899 444.647 315.978 444.726C316.85 445.043 317.643 445.439 318.356 445.834C319.704 446.626 320.655 447.496 321.289 448.605C322.32 450.346 322.478 452.404 321.606 454.699C320.814 456.836 319.466 458.102 317.563 458.498C317.246 458.498 316.771 458.577 316.216 458.577ZM310.508 455.49L312.411 456.203C313.045 456.44 313.6 456.598 314.155 456.757C315.423 457.073 316.454 457.152 317.405 456.915C318.832 456.598 319.783 455.649 320.338 454.066C321.051 452.166 320.972 450.662 320.179 449.317C319.704 448.525 318.832 447.734 317.722 447.101C317.088 446.705 316.374 446.388 315.502 446.072H315.423L314.234 445.597L310.508 455.49ZM319.862 445.36C319.466 445.36 319.149 445.36 318.753 445.28C317.96 445.201 317.088 444.964 316.137 444.647C315.899 444.568 315.74 444.489 315.502 444.41L314.313 443.935C314.076 443.856 313.838 443.697 313.758 443.46C313.679 443.223 313.679 442.985 313.758 442.748L317.246 433.567C317.326 433.329 317.484 433.092 317.722 433.013C317.96 432.933 318.198 432.933 318.435 433.013L320.259 433.725L321.369 434.2C321.844 434.437 322.32 434.596 322.716 434.912C323.667 435.466 324.381 436.178 324.936 436.97C325.253 437.445 325.411 437.92 325.57 438.395C325.808 439.424 325.728 440.452 325.253 441.64C324.777 442.827 324.143 443.697 323.35 444.331C322.716 444.806 321.923 445.122 321.051 445.28C320.655 445.28 320.259 445.36 319.862 445.36ZM315.344 442.669L315.978 442.906C316.216 442.985 316.374 443.064 316.612 443.143C317.484 443.46 318.277 443.618 318.99 443.697C319.625 443.777 320.259 443.777 320.734 443.697C321.369 443.618 321.923 443.381 322.399 442.985C323.033 442.51 323.509 441.877 323.826 440.927C324.143 440.057 324.222 439.265 324.064 438.553C323.985 438.236 323.826 437.92 323.667 437.603C323.271 436.97 322.716 436.416 321.923 436.02C321.606 435.783 321.21 435.624 320.814 435.466L319.387 434.833L318.435 434.516L315.344 442.669Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M87.5159 207.286C87.1196 207.286 86.8025 206.969 86.7232 206.653C83.7109 187.341 83.3938 157.977 98.614 127.664C105.669 113.655 115.182 101.15 127.073 90.4648C127.39 90.1483 127.865 90.2274 128.183 90.544C128.5 90.8606 128.42 91.3355 128.103 91.652C116.371 102.258 106.938 114.605 100.041 128.376C84.9792 158.294 85.3756 187.341 88.3087 206.415C88.3879 206.811 88.0708 207.286 87.6745 207.286C87.5952 207.286 87.5952 207.286 87.5159 207.286Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.1654 172.144C46.769 172.144 46.4519 171.828 46.3727 171.432C44.5494 156.79 44.3116 134.629 53.5864 111.676C57.8671 101.071 63.654 91.6521 70.7885 83.4999C71.1056 83.1833 71.5812 83.1042 71.8983 83.4208C72.2154 83.7374 72.2946 84.2122 71.9776 84.5288C64.9223 92.5227 59.2147 101.783 55.0133 112.23C45.897 134.787 46.1348 156.711 47.9581 171.195C48.0374 171.59 47.7203 171.986 47.2447 172.065C47.2447 172.144 47.1654 172.144 47.1654 172.144Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M603.973 219.949C603.735 219.949 603.577 219.87 603.418 219.712C603.101 219.395 603.101 218.92 603.497 218.604C613.803 209.106 622.047 197.313 627.279 184.571C636.633 161.935 635.127 141.04 632.273 127.427C632.194 127.031 632.432 126.556 632.907 126.477C633.304 126.398 633.779 126.635 633.859 127.11C636.792 140.882 638.219 162.172 628.785 185.125C623.474 198.105 615.071 210.056 604.607 219.712C604.369 219.87 604.211 219.949 603.973 219.949Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M147.051 500.288C147.923 482.955 145.862 465.621 142.057 448.684C138.093 431.43 132.385 414.73 126.202 398.188C119.86 381.409 112.964 364.867 106.543 348.167C100.28 331.705 94.414 315.005 90.2918 297.83C86.249 280.892 83.9501 263.559 84.6635 246.147C84.7428 244.01 84.9013 241.873 85.0599 239.736C85.1392 238.786 83.633 238.786 83.5537 239.736C82.1268 256.99 83.7915 274.323 87.2795 291.261C90.8467 308.515 96.3958 325.215 102.5 341.677C108.762 358.456 115.659 374.998 122.08 391.698C128.501 408.24 134.526 424.94 138.886 442.115C143.246 459.052 145.941 476.385 145.782 493.877C145.782 496.014 145.703 498.151 145.544 500.288C145.465 501.237 146.971 501.237 147.051 500.288Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M98.059 259.839C99.1688 248.917 97.1077 237.836 92.1929 228.022C90.2111 224.065 87.278 217.971 82.3631 217.1C77.369 216.229 75.3872 222.324 74.1981 226.044C67.7771 246.859 78.5581 268.704 72.7712 289.599C71.3443 294.822 69.2832 299.808 67.8563 304.953C66.588 309.464 65.716 314.371 66.9844 318.962C68.1734 323.315 71.1858 326.481 74.8323 328.855C78.3203 331.072 82.2046 332.734 85.3755 335.345C88.3085 337.799 90.2111 341.202 89.894 345.16C89.6562 348.721 87.9915 352.045 86.1682 355.053C82.601 361.226 77.2105 367.4 76.6555 374.761C76.3385 378.085 77.369 381.409 79.4301 384.021C81.4911 386.633 84.3449 388.295 87.278 389.64C93.6198 392.49 101.151 393.756 106.541 398.267C109.95 401.117 111.535 405.074 111.377 409.506C111.139 415.126 108.84 420.349 107.968 425.889C106.462 434.991 110.108 443.935 116.688 450.188C123.109 456.282 132.225 459.685 141.024 457.627C148.952 455.807 155.531 449.95 159.178 442.827C162.904 435.625 163.776 426.998 160.446 419.479C156.403 410.298 148 404.124 141.976 396.368C129.768 380.459 132.622 359.248 131.512 340.569C130.957 331.309 129.53 321.89 124.853 313.659C120.255 305.586 112.566 299.967 107.255 292.448C104.797 288.965 102.974 285.087 102.736 280.734C102.657 279.784 101.151 279.705 101.23 280.734C101.706 289.599 108.047 296.247 113.834 302.341C116.926 305.586 120.017 308.831 122.475 312.63C125.012 316.508 126.676 320.862 127.865 325.294C132.463 343.418 128.341 362.572 132.939 380.697C134.049 384.971 135.634 389.165 137.854 392.964C140.311 397.159 143.64 400.721 146.97 404.282C153.153 410.852 160.129 417.817 160.922 427.314C161.556 435.387 158.227 443.618 152.519 449.238C146.415 455.332 137.774 458.023 129.371 455.649C120.81 453.274 113.438 446.309 110.505 437.999C108.84 433.408 108.84 428.66 109.871 423.911C110.98 418.845 112.883 413.859 112.962 408.556C112.962 404.52 111.535 400.721 108.681 397.872C106.303 395.497 103.291 393.993 100.199 392.727C94.1747 390.194 86.8024 388.928 81.9668 384.258C79.5093 381.963 78.1617 378.797 78.1617 375.473C78.241 371.99 79.7472 368.745 81.3326 365.738C84.7413 359.644 90.0525 353.787 91.2416 346.663C91.7965 343.418 91.2416 340.015 89.3391 337.245C87.1987 334.079 83.7108 332.021 80.4606 330.201C76.8141 328.143 72.9298 326.164 70.4723 322.682C67.6978 318.645 67.5393 313.659 68.4905 308.99C69.4418 304.003 71.3443 299.175 72.9298 294.347C74.5945 289.44 75.7043 284.454 76.0214 279.23C76.6556 268.783 74.753 258.415 74.0396 248.046C73.6432 242.823 73.5639 237.441 74.4359 232.296C74.8323 229.843 75.3872 227.389 76.2592 225.015C76.9726 222.878 77.9239 219.87 80.0642 218.841C82.601 217.575 85.2169 219.87 86.7231 221.69C88.3878 223.748 89.7354 226.202 90.8453 228.497C93.3027 233.404 95.0467 238.628 95.9979 244.01C96.9492 249.154 97.1077 254.457 96.5528 259.76C96.3943 260.868 97.9005 260.868 98.059 259.839Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M82.2041 360.356C79.8259 346.664 71.6609 334.871 62.7031 324.582C57.8675 318.962 52.7148 313.659 47.4829 308.436C42.0131 302.974 36.4641 297.592 30.7565 292.369C24.3354 286.433 17.6766 280.734 10.9384 275.115C10.1457 274.482 9.11519 275.59 9.82864 276.223C21.7195 286.037 33.2139 296.405 44.1535 307.248C49.4647 312.472 54.6174 317.854 59.6115 323.394C64.2093 328.539 68.5693 333.921 72.2158 339.699C76.2587 346.189 79.3503 353.233 80.6979 360.752C80.9357 361.781 82.3626 361.385 82.2041 360.356Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.457 274.719C25.2068 270.049 21.0847 265.3 15.6149 263.163C11.0171 261.343 5.62664 262.53 2.6143 266.646C-0.00168211 270.207 -0.477315 275.115 0.394678 279.309C1.42522 284.533 4.91319 288.728 8.87679 292.131C13.4746 296.089 18.8651 299.017 23.5421 302.974C28.0606 306.852 32.4206 312.155 32.817 318.329C33.2133 324.74 28.2192 329.489 27.585 335.583C27.0301 341.123 30.3595 346.189 34.4024 349.671C38.9209 353.628 44.47 355.765 49.8605 358.219C55.251 360.672 60.7207 363.522 64.0502 368.587C70.4712 378.322 67.5381 391.461 62.8611 401.275C60.4036 406.419 56.5193 411.722 58.4218 417.737C59.8487 422.328 63.9709 425.415 68.093 427.393C72.7701 429.609 77.7642 430.401 82.8376 431.43C87.7525 432.459 93.143 433.804 97.0274 437.207C99.0092 438.949 100.436 441.244 100.991 443.777C101.784 447.18 101.07 450.742 100.198 453.987C98.6921 459.606 96.3139 465.067 96.9481 471.003C97.503 476.227 100.753 480.738 106.223 481.53C112.089 482.4 117.4 479.155 121.205 474.961C123.266 472.665 124.931 470.212 126.596 467.679C127.151 466.888 125.803 466.096 125.248 466.888C121.998 471.795 118.272 477.335 112.485 479.314C109.869 480.263 106.857 480.422 104.241 479.393C101.784 478.443 99.9604 476.306 99.1677 473.853C95.3626 462.455 107.174 451.216 101.387 440.057C96.7103 431.113 84.8987 430.48 76.2581 428.422C71.5017 427.314 66.5869 425.415 63.0196 421.932C61.4342 420.349 60.1658 418.45 59.7695 416.234C59.1353 413.147 60.1658 410.139 61.5135 407.448C62.7818 404.836 64.2087 402.383 65.3185 399.692C66.4283 397.08 67.3796 394.389 68.0138 391.619C69.2821 386.474 69.7578 381.092 68.7272 375.869C67.6967 370.724 65.0014 366.054 60.8793 362.651C56.44 359.01 50.9703 356.873 45.7383 354.578C40.5856 352.283 35.4329 349.354 32.0242 344.685C30.4388 342.548 29.329 340.015 29.1704 337.324C29.0119 334.237 30.2803 331.388 31.5486 328.697C32.817 326.085 34.0853 323.553 34.3231 320.624C34.6402 317.854 34.0853 315.163 32.9755 312.63C30.7559 307.327 26.5545 303.133 22.036 299.729C13.8709 293.714 2.05939 287.936 1.58376 276.223C1.42522 272.028 2.69357 267.358 6.49863 265.142C11.7306 262.055 17.5174 265.142 21.4018 268.783C23.5421 270.762 25.4447 273.057 27.1094 275.431C27.6643 276.302 29.0119 275.51 28.457 274.719Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M479.913 497.122C486.572 483.588 494.578 470.766 503.219 458.419C511.86 445.993 521.134 434.042 530.171 421.932C539.129 409.981 547.928 397.951 555.776 385.287C563.545 372.782 570.442 359.644 575.594 345.872C580.668 332.338 584.076 318.171 584.869 303.687C584.948 301.866 585.028 300.046 585.028 298.226C585.028 297.197 583.522 297.197 583.522 298.226C583.442 312.789 580.589 327.114 575.911 340.807C571.155 354.736 564.496 367.875 556.965 380.538C549.355 393.281 540.715 405.311 531.915 417.263C522.958 429.293 513.762 441.165 505.042 453.433C496.402 465.621 488.157 478.127 481.261 491.423C480.389 493.085 479.517 494.747 478.724 496.489C478.169 497.201 479.517 497.992 479.913 497.122Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M511.862 427.393C507.82 421.141 511.942 413.701 516.619 409.111C521.93 404.045 529.223 401.75 535.406 397.951C538.419 396.13 541.193 393.914 543.254 391.144C545.474 388.216 546.901 384.733 547.614 381.093C549.12 373.494 548.011 365.659 547.693 357.982C547.535 354.183 547.535 349.829 549.834 346.664C551.023 345.002 552.846 343.893 554.511 342.785C555.938 341.836 557.285 340.807 558.554 339.62C563.469 334.712 565.371 327.668 565.847 320.941C566.481 312.63 564.737 304.399 564.341 296.168C563.944 288.174 564.816 279.705 570.444 273.532C574.725 268.783 581.701 265.301 588.043 268.15C594.702 271.237 597.159 279.151 599.141 285.641C601.757 294.11 604.294 303.37 602.074 312.235C600.33 319.516 595.574 325.69 592.879 332.655C591.689 335.662 590.976 338.907 591.452 342.152C591.927 345.556 593.83 348.405 596.366 350.621C599.062 352.995 602.312 354.737 604.69 357.428C606.989 360.039 608.178 363.364 608.337 366.767C608.733 373.811 605.403 380.776 600.568 385.762C594.86 391.54 587.488 395.339 580.512 399.375C574.012 403.174 567.67 407.448 563.072 413.464C560.932 416.313 559.188 419.479 558.237 422.961C557.285 426.681 557.523 430.401 557.999 434.121C558.554 438.078 559.426 442.273 558.237 446.23C557.048 450.267 553.56 452.562 550.151 454.699C542.382 459.448 534.376 463.88 526.211 467.838C522.247 469.737 518.283 471.557 514.241 473.299C513.369 473.694 514.082 475.04 515.033 474.644C523.595 471.003 531.918 466.888 540.083 462.376C544.126 460.16 548.09 457.865 551.974 455.411C555.224 453.354 558.316 450.979 559.584 447.18C560.853 443.46 560.218 439.345 559.664 435.546C559.109 431.509 558.633 427.473 559.664 423.436C561.645 415.917 567.511 409.981 573.615 405.628C585.982 396.764 603.184 391.619 608.574 375.79C610.715 369.458 610.556 361.939 605.958 356.636C603.501 353.787 600.172 352.046 597.397 349.592C594.622 347.218 592.799 344.131 592.799 340.411C592.72 336.849 594.147 333.367 595.574 330.201C597.238 326.719 599.141 323.394 600.806 319.833C602.55 316.192 603.818 312.393 604.214 308.357C604.611 303.924 604.135 299.413 603.184 294.981C602.312 290.707 601.044 286.433 599.617 282.238C598.507 278.835 597.238 275.431 595.177 272.503C593.275 269.733 590.738 267.438 587.488 266.25C584.476 265.142 581.146 265.301 578.134 266.329C571.792 268.466 566.639 274.086 564.42 280.339C561.408 288.966 562.834 298.463 563.706 307.248C564.499 314.847 564.895 322.603 562.438 329.884C561.328 333.209 559.505 336.375 556.968 338.828C554.194 341.44 550.389 342.785 548.248 346.03C546.108 349.275 545.949 353.47 546.029 357.269C546.108 361.306 546.504 365.342 546.663 369.379C546.901 377.135 546.267 385.525 540.797 391.54C535.644 397.08 528.193 399.692 521.771 403.333C515.826 406.736 510.118 412.197 508.771 419.162C508.137 422.249 508.692 425.415 510.356 428.106C511.07 429.056 512.417 428.264 511.862 427.393Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M190.727 407.29L148.555 439.661C156.165 443.856 163.854 448.051 171.464 452.246C186.685 441.323 201.826 430.48 217.046 419.558L190.727 407.29Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M171.464 453.037C171.306 453.037 171.226 453.037 171.068 452.958L148.158 440.373C147.92 440.215 147.762 439.978 147.762 439.74C147.762 439.503 147.841 439.186 148.079 439.028L190.252 406.657C190.489 406.499 190.806 406.419 191.044 406.578L217.363 418.846C217.6 419.004 217.759 419.241 217.838 419.479C217.838 419.795 217.759 420.033 217.521 420.191L171.94 452.879C171.781 453.037 171.623 453.037 171.464 453.037ZM149.981 439.582L171.385 451.375L215.46 419.716L190.806 408.24L149.981 439.582Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M156.243 433.725L106.936 451.296L106.619 460.398L181.214 462.93L182.007 440.532C181.928 440.453 162.189 455.57 156.243 433.725Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M181.927 463.643L105.905 461.11L106.222 450.821L106.698 450.663L156.719 432.854L156.956 433.646C158.542 439.503 161.316 443.144 165.122 444.41C172.415 446.863 181.452 440.057 181.531 439.978L182.72 439.028L181.927 463.643ZM107.411 459.685L180.5 462.139L181.214 441.877C178.36 443.777 171.146 447.813 164.646 445.676C160.524 444.252 157.511 440.611 155.767 434.675L107.649 451.771L107.411 459.685Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M183.104 459.726L104.514 457.085L104.325 462.701L182.916 465.342L183.104 459.726Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M183.276 465.78L103.925 463.089L104.163 456.678L183.514 459.369L183.276 465.78ZM104.718 462.376L182.483 464.988L182.642 460.081L104.876 457.469L104.718 462.376Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M154.579 434.833C154.499 434.833 154.499 434.833 154.42 434.833C151.328 433.963 135.791 429.214 135.87 424.861C135.87 423.357 137.614 422.249 141.023 421.457C145.938 420.27 149.664 420.903 152.121 423.119C156.243 426.918 155.134 434.042 155.134 434.358C155.134 434.517 154.975 434.675 154.896 434.754C154.816 434.833 154.737 434.833 154.579 434.833ZM145.621 422.011C144.353 422.011 142.926 422.17 141.34 422.565C137.614 423.436 137.06 424.386 137.06 424.94C136.98 427.473 147.206 431.509 154.103 433.567C154.262 431.746 154.341 426.76 151.408 423.99C149.981 422.645 147.999 422.011 145.621 422.011Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M158.779 453.274C157.273 453.274 155.925 452.799 154.895 451.929C149.901 447.576 153.23 434.042 153.389 433.408C153.468 433.25 153.547 433.092 153.706 433.013C153.864 432.934 154.023 432.934 154.181 433.013C154.816 433.329 169.085 440.294 168.847 446.626C168.767 448.921 166.944 450.742 163.377 452.166C161.633 452.958 160.127 453.274 158.779 453.274ZM154.34 434.437C153.706 437.208 151.724 447.734 155.608 451.137C157.194 452.562 159.651 452.562 162.981 451.217C166.072 449.95 167.658 448.446 167.737 446.705C167.895 442.194 158.621 436.574 154.34 434.437Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M136.98 452.72C133.651 452.72 130.956 451.85 130.797 451.771C130.48 451.691 130.322 451.375 130.48 451.058C130.559 450.742 130.877 450.583 131.194 450.742C131.273 450.742 139.042 453.354 144.353 449.555C147.999 446.943 150.457 441.165 151.646 437.603C149.268 440.294 144.828 444.252 138.804 445.201C138.487 445.281 138.17 445.043 138.17 444.727C138.09 444.41 138.328 444.093 138.645 444.093C147.286 442.669 152.597 434.596 152.676 434.517C152.835 434.279 153.152 434.2 153.39 434.279C153.628 434.358 153.786 434.675 153.707 434.912C153.628 435.387 150.774 446.389 145.066 450.425C142.45 452.246 139.517 452.72 136.98 452.72Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M171.306 263.876L123.822 287.857C130.56 293.398 137.299 298.938 143.957 304.478C160.922 296.564 177.886 288.728 194.85 280.813L171.306 263.876Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M143.957 305.27C143.799 305.27 143.561 305.191 143.481 305.111L123.346 288.491C123.109 288.332 123.029 288.095 123.029 287.778C123.029 287.541 123.188 287.303 123.426 287.145L170.91 263.164C171.147 263.005 171.465 263.084 171.702 263.243L195.246 280.18C195.484 280.338 195.563 280.655 195.563 280.892C195.563 281.209 195.325 281.446 195.088 281.526L144.274 305.191C144.195 305.27 144.036 305.27 143.957 305.27ZM125.17 288.016L144.036 303.528L193.264 280.655L171.227 264.746L125.17 288.016Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M132.463 283.425L80.7777 291.498L78.7959 300.362L151.568 316.746L156.483 294.822C156.403 294.822 134.207 305.982 132.463 283.425Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M152.042 317.537L77.8438 300.837L80.1426 290.786L133.096 282.554L133.176 283.346C133.651 289.361 135.633 293.477 139.2 295.455C145.938 299.254 156.006 294.268 156.165 294.189L157.512 293.477L152.042 317.537ZM79.5877 299.808L150.933 315.875L155.372 296.089C152.201 297.355 144.353 300.046 138.408 296.722C134.603 294.585 132.383 290.39 131.749 284.296L81.2525 292.131L79.5877 299.808Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M153.998 313.973L77.2793 296.731L76.0433 302.213L152.762 319.455L153.998 313.973Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M152.995 319.991L75.5459 302.579L76.9728 296.326L154.422 313.738L152.995 319.991ZM76.4972 302.025L152.44 319.12L153.55 314.372L77.607 297.276L76.4972 302.025Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M130.718 284.217C130.639 284.217 130.56 284.217 130.48 284.137C127.627 282.634 113.199 275.115 114.15 270.92C114.468 269.495 116.37 268.704 119.858 268.545C124.931 268.308 128.419 269.574 130.401 272.265C133.731 276.777 131.352 283.583 131.273 283.9C131.194 284.058 131.115 284.217 130.956 284.217C130.877 284.217 130.798 284.217 130.718 284.217ZM120.889 269.654C120.571 269.654 120.175 269.654 119.858 269.654C116.053 269.812 115.34 270.682 115.181 271.157C114.626 273.69 123.901 279.468 130.322 282.792C130.798 281.051 131.828 276.144 129.45 272.899C127.865 270.762 125.011 269.654 120.889 269.654Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M133.019 303.291C130.64 303.291 128.817 302.579 127.707 301.075C123.585 295.851 129.451 283.188 129.689 282.634C129.768 282.475 129.927 282.396 130.085 282.317C130.244 282.238 130.403 282.317 130.561 282.396C131.116 282.792 143.8 292.29 142.452 298.542C141.976 300.758 139.836 302.262 136.031 302.974C134.921 303.133 133.97 303.291 133.019 303.291ZM130.403 283.742C129.293 286.354 125.329 296.247 128.579 300.363C129.848 302.025 132.305 302.5 135.793 301.866C139.043 301.233 140.866 300.046 141.263 298.305C142.293 293.952 134.287 286.67 130.403 283.742Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M113.122 298.859C108.366 298.859 104.323 296.564 104.085 296.484C103.847 296.326 103.688 296.009 103.847 295.693C104.006 295.455 104.323 295.297 104.64 295.455C104.719 295.535 111.854 299.413 117.799 296.722C121.842 294.901 125.33 289.599 127.232 286.354C124.458 288.491 119.305 291.577 113.201 291.419C112.884 291.419 112.646 291.182 112.646 290.865C112.646 290.548 112.884 290.311 113.201 290.311C113.36 290.311 113.439 290.311 113.597 290.311C122.159 290.311 128.659 283.583 128.738 283.504C128.897 283.267 129.214 283.267 129.452 283.425C129.69 283.583 129.769 283.9 129.61 284.137C129.373 284.612 124.616 294.822 118.195 297.751C116.531 298.542 114.787 298.859 113.122 298.859Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M322.081 179.347C322.002 179.03 321.923 178.476 322.16 178.08C322.636 177.21 324.063 177.052 324.618 177.052C324.697 177.052 324.697 177.052 324.776 177.052C326.679 176.893 329.612 176.26 333.813 175.231C333.813 175.231 329.295 175.706 325.331 176.181C323.349 176.418 321.447 176.656 320.416 176.735C319.307 176.893 317.325 176.814 316.532 175.706C316.532 175.706 316.136 175.152 316.294 174.44C316.611 172.065 325.807 171.116 330.405 170.799C325.569 170.562 313.758 172.698 314.075 168.583C314.154 167.475 316.215 166.762 319.227 166.208C324.539 165.338 332.624 165.259 337.698 165.259C339.362 166.208 341.027 167.237 342.692 168.187C343.167 175.627 339.759 177.21 337.064 178.397C334.527 179.584 331.752 180.297 329.295 180.613C325.648 181.009 322.557 180.534 322.081 179.347Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M326.837 181.484C324.3 181.484 321.922 181.009 321.367 179.584C321.208 179.109 321.129 178.318 321.525 177.606C321.605 177.527 321.605 177.447 321.684 177.368L320.653 177.527C319.623 177.685 317.086 177.764 316.056 176.102C315.976 176.023 315.58 175.231 315.659 174.281C315.739 173.807 315.897 172.778 318.672 171.828C316.69 171.67 315.025 171.274 314.153 170.403C313.598 169.849 313.36 169.216 313.44 168.425C313.519 166.921 315.342 165.971 319.306 165.338C324.538 164.467 332.306 164.309 337.935 164.388C338.093 164.388 338.252 164.388 338.331 164.467L343.325 167.396C343.563 167.554 343.722 167.791 343.722 168.029C344.197 176.023 340.392 177.764 337.697 179.03C334.605 180.455 331.672 181.009 329.69 181.246C328.739 181.484 327.788 181.484 326.837 181.484ZM322.873 179.03C323.032 179.426 325.172 180.218 329.453 179.743C331.276 179.505 334.05 178.951 336.983 177.606C339.52 176.418 342.374 175.073 342.136 168.583L337.697 165.971C333.099 165.971 324.776 166.05 319.544 166.921C315.263 167.633 315.025 168.504 315.025 168.504C315.025 168.82 315.104 168.979 315.263 169.216C316.611 170.562 321.843 170.245 325.648 170.008C327.471 169.928 329.215 169.77 330.562 169.849C330.959 169.849 331.355 170.245 331.355 170.641C331.355 171.036 331.038 171.432 330.642 171.432C317.72 172.461 317.245 174.361 317.245 174.44C317.165 174.836 317.403 175.152 317.403 175.152C317.8 175.785 319.227 175.944 320.495 175.785L333.813 174.281C334.209 174.202 334.605 174.519 334.685 174.915C334.764 175.31 334.526 175.706 334.05 175.864C329.849 176.893 326.837 177.527 324.855 177.685H324.696C324.3 177.685 323.19 177.843 322.873 178.318C322.794 178.635 322.873 178.951 322.873 179.03Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M580.272 179.584C579.558 182.513 578.607 185.125 577.735 187.262C574.326 188.211 568.857 189.24 562.832 187.736C552.447 185.204 551.575 178.001 540.239 173.886C530.648 170.403 526.05 173.648 521.769 168.741C518.995 165.575 517.409 160.352 518.677 155.919C519.391 153.308 520.897 151.725 521.214 151.329C524.385 147.609 525.495 136.687 518.677 107.165C520.184 106.769 522.8 106.215 525.891 106.69C534.849 108.035 541.429 116.742 549.039 127.189C552.844 132.334 553.954 135.579 558.314 137.953C561.405 139.694 562.753 139.219 568.064 141.515C573.137 143.731 576.15 144.997 578.369 147.688C579.717 149.271 579.955 150.379 580.272 153.624C577.339 152.595 572.186 150.617 568.619 148.163C569.095 148.559 575.991 153.545 580.51 155.919C580.668 157.898 580.906 160.51 581.302 163.913C579.4 163.438 576.784 162.489 574.247 160.985L581.699 166.921C581.62 170.403 581.382 174.677 580.272 179.584Z\",\n fill: \"url(#paint0_linear_92_1651)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M569.016 189.003C566.796 189.003 564.656 188.765 562.595 188.211C557.125 186.866 554.271 184.254 551.259 181.563C548.405 178.951 545.393 176.339 539.923 174.361C535.801 172.857 532.551 172.619 529.935 172.461C526.526 172.224 523.751 171.986 521.215 169.137C518.123 165.655 516.775 160.193 518.044 155.84C518.757 153.308 520.184 151.646 520.66 151.092L520.739 151.012C524.623 146.422 523.751 131.701 518.044 107.323L517.965 106.848L518.361 106.69C520.818 105.978 523.355 105.819 525.733 106.136C535.087 107.482 541.905 116.9 549.198 126.873C550.149 128.218 551.021 129.484 551.734 130.592C553.796 133.758 555.222 135.816 558.314 137.557C559.82 138.428 560.93 138.745 562.278 139.061C563.625 139.457 565.369 139.932 567.985 141.119C573.059 143.335 576.15 144.681 578.449 147.372C579.797 149.034 580.114 150.221 580.431 153.624L580.51 154.337L579.797 154.099C578.528 153.624 576.705 152.991 574.803 152.2C576.705 153.466 578.687 154.732 580.352 155.603L580.589 155.682V155.919C580.827 158.136 580.986 160.589 581.382 163.913L581.461 164.626L580.827 164.467C579.955 164.23 578.766 163.913 577.498 163.359L581.779 166.763V167C581.937 171.274 581.461 175.548 580.51 179.664C579.876 182.275 579.004 184.966 577.894 187.42L577.815 187.657L577.577 187.737C574.803 188.607 571.87 189.003 569.016 189.003ZM519.074 107.561C524.782 132.413 525.575 146.818 521.452 151.646L521.373 151.725C520.977 152.2 519.629 153.703 518.995 156.078C517.885 160.114 519.074 165.18 522.007 168.504C524.306 171.116 526.764 171.274 530.093 171.511C532.788 171.67 536.039 171.986 540.319 173.49C545.948 175.548 548.96 178.239 551.893 180.851C554.826 183.542 557.68 185.995 562.833 187.262C567.351 188.37 572.187 188.211 577.26 186.787C578.291 184.412 579.083 181.88 579.717 179.347C580.669 175.39 581.065 171.274 580.986 167.158L573.693 161.381L574.248 160.589C576.547 161.935 578.845 162.805 580.51 163.28C580.193 160.431 579.955 158.215 579.797 156.236C575.437 153.862 568.857 149.113 568.144 148.559L568.699 147.767C571.949 149.983 576.626 151.883 579.559 152.912C579.242 150.3 579.004 149.271 577.815 147.926C575.675 145.393 572.821 144.127 567.747 141.91C565.131 140.802 563.467 140.328 562.119 139.932C560.692 139.536 559.503 139.219 557.918 138.27C554.667 136.449 553.082 134.154 551.021 130.988C550.308 129.88 549.515 128.693 548.484 127.347C541.35 117.533 534.612 108.273 525.654 107.007C523.514 106.848 521.373 107.007 519.074 107.561Z\",\n fill: \"url(#paint1_linear_92_1651)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M454.07 280.418C450.027 290.865 442.496 305.824 428.385 318.883C418.397 328.143 407.616 334 371.864 347.138C354.98 353.312 333.1 360.831 307.099 368.666C274.043 396.051 240.986 423.436 207.93 450.742C203.253 449.238 196.277 446.31 189.459 440.453C176.697 429.451 173.05 415.363 172.02 410.139C207.692 382.596 243.285 355.053 278.958 327.51C312.173 311.76 345.467 296.01 378.682 280.259C360.925 271.711 340.631 263.48 318.039 256.674C311.063 254.537 304.166 252.716 297.507 251.054C253.115 267.279 208.722 283.583 164.409 299.809C161.159 297.276 156.007 292.527 152.043 284.929C147.128 275.431 146.811 266.646 146.89 262.372L285.934 200.242C291.72 197.63 298.3 197.234 304.404 199.213L399.055 229.21C408.171 236.491 417.684 244.564 427.355 253.587C437.026 262.768 445.984 271.791 454.07 280.418Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M207.85 451.692C207.771 451.692 207.691 451.692 207.612 451.692C200.557 449.475 194.294 445.993 188.825 441.244C176.696 430.797 172.495 417.5 171.068 410.535C170.988 410.219 171.147 409.902 171.385 409.664L278.244 326.956C278.323 326.956 278.323 326.877 278.402 326.877L376.541 280.418C357.516 271.316 337.698 263.718 317.642 257.623C310.983 255.645 304.166 253.745 297.348 252.083L164.409 300.758C164.171 300.837 163.854 300.837 163.616 300.6C158.384 296.484 154.104 291.261 151.091 285.483C146.493 276.619 145.701 268.071 145.859 262.451C145.859 262.135 146.097 261.818 146.335 261.739L285.378 199.609C291.403 196.918 298.141 196.522 304.403 198.501L399.054 228.497C399.134 228.497 399.213 228.576 399.292 228.655C408.963 236.412 418.555 244.643 427.672 253.033C436.946 261.581 446.063 270.603 454.624 279.864C454.862 280.101 454.941 280.418 454.783 280.734C448.837 296.089 440.117 309.148 428.861 319.516C419.189 328.46 409.201 334.317 372.022 347.93C350.857 355.607 329.136 362.889 307.336 369.458L208.246 451.454C208.246 451.612 208.009 451.692 207.85 451.692ZM172.812 410.614C174.318 417.5 178.44 430.084 189.935 439.899C195.087 444.331 201.112 447.734 207.691 449.871L306.464 368.033C306.544 367.954 306.623 367.875 306.782 367.875C328.581 361.306 350.381 354.024 371.468 346.347C408.329 332.892 418.238 327.035 427.751 318.329C438.69 308.198 447.172 295.535 453.039 280.655C444.556 271.553 435.599 262.689 426.482 254.299C417.445 245.91 407.933 237.757 398.341 230.08L303.848 200.083C297.982 198.184 291.641 198.58 286.012 201.112L147.524 263.084C147.445 268.466 148.237 276.46 152.597 284.692C155.451 290.153 159.494 295.139 164.33 299.017L297.031 250.421C297.19 250.342 297.348 250.342 297.507 250.421C304.403 252.162 311.3 254.062 318.117 256.04C338.807 262.293 359.26 270.287 378.919 279.705C379.236 279.864 379.395 280.18 379.395 280.497C379.395 280.813 379.236 281.13 378.919 281.288L279.274 328.46L172.812 410.614Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M458.112 173.015C435.123 179.822 408.488 184.729 408.488 184.729C389.938 181.009 371.309 177.368 352.76 173.648C352.76 173.728 352.76 173.807 352.76 173.886H352.68C349.43 171.986 346.18 170.087 342.851 168.108C341.186 167.158 339.521 166.129 337.856 165.18L331.356 161.381C326.441 160.035 322.478 160.035 319.862 160.273C317.246 160.51 312.648 160.906 311.934 163.28C311.697 163.992 311.855 164.863 312.331 165.575C313.441 167 315.74 166.209 319.386 166.209C320.02 166.209 320.734 166.209 321.526 166.288C322.636 166.367 325.886 166.683 329.295 168.662C332.783 170.641 334.765 173.411 335.716 174.915C330.563 174.598 326.838 175.073 326.362 175.469C326.283 175.469 325.807 175.864 325.411 176.26C325.331 176.339 325.252 176.419 325.173 176.577C325.014 176.814 324.935 176.973 324.856 177.131C324.777 177.368 324.777 177.527 324.777 177.606C324.777 178.872 326.996 179.743 329.612 180.692C330.405 180.93 331.277 181.246 332.07 181.563C339.442 184.096 338.174 184.65 343.009 185.995C345.07 186.549 348.003 187.182 351.57 187.42C351.57 187.578 351.57 187.657 351.57 187.816C351.57 187.816 393.743 212.747 406.427 210.61C419.19 208.473 469.527 193.752 469.527 193.752L489.742 174.519C489.583 174.282 481.18 166.209 458.112 173.015Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M404.683 211.481C390.097 211.481 352.681 189.399 351.016 188.449C350.857 188.37 350.778 188.211 350.699 188.132C347.924 187.895 345.308 187.42 342.692 186.708C340.314 186.074 339.284 185.52 338.174 184.966C336.985 184.333 335.478 183.542 331.753 182.275C331.277 182.117 330.801 181.959 330.405 181.8L329.295 181.405C326.362 180.376 323.905 179.426 323.826 177.527C323.826 177.21 323.905 176.972 323.984 176.656C324.063 176.418 324.222 176.181 324.46 175.944C324.618 175.785 324.698 175.627 324.777 175.548C325.252 175.073 325.728 174.756 325.807 174.677C326.521 174.123 329.85 173.807 333.972 173.886C332.863 172.382 331.119 170.72 328.82 169.374C325.569 167.554 322.478 167.237 321.447 167.158C320.734 167.079 320.1 167.079 319.386 167.079C318.276 167.079 317.404 167.158 316.532 167.237C314.392 167.396 312.648 167.475 311.618 166.129C310.983 165.259 310.746 164.072 311.063 163.043C311.935 160.114 316.85 159.718 319.783 159.481C323.667 159.164 327.631 159.56 331.594 160.668C331.673 160.668 331.753 160.747 331.832 160.747L352.601 172.936C352.681 172.936 352.839 172.936 352.918 172.936L408.488 183.937C410.787 183.542 436.075 178.714 457.875 172.303C481.101 165.496 489.821 173.49 490.218 173.807C490.376 173.965 490.455 174.202 490.455 174.44C490.455 174.677 490.376 174.915 490.218 175.073L470.083 194.227C470.003 194.306 469.845 194.385 469.686 194.464C469.211 194.622 419.19 209.185 406.506 211.322C405.951 211.401 405.317 211.481 404.683 211.481ZM352.363 187.182C357.041 189.873 394.616 211.56 406.189 209.581C418.318 207.523 465.405 193.831 468.973 192.802L488.236 174.44C485.778 172.778 476.821 168.425 458.35 173.886L458.112 173.015L458.35 173.886C435.599 180.613 408.884 185.6 408.647 185.6C408.567 185.6 408.409 185.6 408.33 185.6L353.156 174.677C352.998 174.756 352.76 174.836 352.522 174.756H352.443C352.363 174.756 352.284 174.677 352.205 174.677L331.039 162.251C327.313 161.222 323.588 160.827 319.941 161.222C317.801 161.381 313.282 161.776 312.727 163.597C312.569 163.992 312.648 164.626 312.965 165.1C313.441 165.734 314.392 165.654 316.374 165.496C317.246 165.417 318.197 165.338 319.307 165.338C319.386 165.338 319.386 165.338 319.466 165.338C320.179 165.338 320.892 165.338 321.606 165.417C322.716 165.496 326.124 165.813 329.692 167.871C333.1 169.849 335.241 172.461 336.43 174.361C336.588 174.677 336.588 174.994 336.43 175.31C336.271 175.627 335.954 175.785 335.637 175.706C330.801 175.39 327.393 175.864 326.838 176.102C326.759 176.181 326.362 176.498 326.045 176.814C325.966 176.893 325.966 176.893 325.887 177.052C325.807 177.21 325.728 177.289 325.649 177.368C325.649 177.447 325.649 177.527 325.649 177.527C325.649 178.318 328.82 179.426 329.929 179.743L331.039 180.138C331.515 180.297 331.991 180.455 332.466 180.613C336.35 181.959 337.936 182.75 339.204 183.383C340.314 184.017 341.186 184.412 343.406 185.045C346.101 185.758 348.875 186.312 351.729 186.47C351.967 186.47 352.205 186.628 352.363 186.787C352.284 186.866 352.363 187.024 352.363 187.182Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M493.864 175.627C493.864 175.627 486.016 158.452 436.233 178.793L428.623 206.653C428.623 206.653 474.442 199.292 478.564 194.464C482.687 189.715 493.864 175.627 493.864 175.627Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M427.514 207.681L435.52 178.239L435.917 178.081C485.858 157.661 494.261 174.598 494.578 175.31L494.816 175.785L494.499 176.181C494.419 176.339 483.242 190.348 479.199 195.097C474.998 200.004 433.459 206.811 428.782 207.523L427.514 207.681ZM436.947 179.347L429.813 205.624C448.124 202.616 475.235 197.155 478.01 193.91C481.657 189.636 491.011 177.922 492.913 175.469C492.2 174.44 489.663 171.511 483.321 170.245C476.028 168.82 461.997 169.137 436.947 179.347Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M437.739 196.918C437.184 197.947 433.776 203.962 427.989 211.481C425.928 214.092 424.342 216.071 423.787 216.546C411.5 228.26 390.572 230.951 390.572 230.951C411.024 250.263 431.477 269.574 451.929 288.886C454.545 286.987 458.588 284.217 463.423 280.892C493.626 260.077 501.87 255.961 509.718 249.55C519.786 241.398 532.152 227.152 540.238 200.558C533.896 194.385 524.066 186.391 510.511 179.901C500.998 175.39 492.278 172.857 485.223 171.353C451.136 183.779 440.672 191.773 437.739 196.918Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M451.85 289.994L388.749 230.397L390.414 230.159C390.652 230.159 411.183 227.31 423.153 215.913C423.549 215.517 424.976 213.776 427.275 210.927C430.763 206.415 434.013 201.666 436.788 196.759L437.026 196.363C441.227 189.161 457.002 180.692 485.065 170.562L485.302 170.482L485.54 170.562C494.339 172.382 502.901 175.31 510.987 179.109C522.005 184.333 532.073 191.377 540.872 199.925L541.189 200.242L541.031 200.717C534.451 222.245 524.066 238.865 510.194 250.104C506.23 253.349 502.029 256.04 495.132 260.552C488.235 265.063 478.802 271.157 463.82 281.526C459.935 284.217 456.13 286.908 452.325 289.519L451.85 289.994ZM392.316 231.505L452.008 287.857C455.655 285.325 459.301 282.713 463.027 280.18C478.009 269.891 487.443 263.717 494.339 259.206C501.157 254.774 505.358 252.083 509.243 248.838C522.719 237.916 532.866 221.69 539.366 200.717C530.725 192.406 520.975 185.679 510.194 180.534C502.267 176.735 493.943 173.965 485.302 172.145C458.112 181.959 442.258 190.348 438.294 197.155L438.056 197.472C435.282 202.379 432.032 207.207 428.464 211.797C426.403 214.409 424.739 216.467 424.184 217.021C413.878 227.152 397.548 230.634 392.316 231.505Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M456.446 237.757C456.446 237.757 450.025 226.598 446.775 225.569C443.446 224.54 443.684 226.993 446.062 229.763C448.361 232.613 452.641 237.916 456.446 237.757Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M456.21 238.549C452.167 238.549 448.044 233.642 445.587 230.634L445.27 230.318C443.526 228.181 442.892 226.36 443.605 225.252C444.002 224.698 444.874 224.144 446.855 224.698C450.343 225.806 456.368 236.095 457.002 237.282C457.161 237.52 457.161 237.836 457.002 238.074C456.844 238.311 456.606 238.47 456.289 238.549C456.447 238.549 456.289 238.549 456.21 238.549ZM445.429 226.202C445.191 226.202 445.111 226.281 445.111 226.281C445.032 226.439 445.191 227.547 446.618 229.289L446.935 229.605C448.758 231.821 451.929 235.62 454.783 236.649C452.246 232.455 448.441 226.993 446.459 226.439C445.983 226.202 445.666 226.202 445.429 226.202Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M404.208 192.406C419.666 172.936 435.124 153.387 450.582 133.917C427.593 116.742 404.683 99.5668 381.694 82.392C368.694 100.279 355.693 118.246 342.692 136.133C363.224 154.891 383.676 173.648 404.208 192.406Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M404.207 193.039L403.89 192.723L342.137 136.212L381.614 81.7588L381.931 81.9962L451.136 133.758L404.207 193.039ZM343.326 136.054L404.127 191.773L449.947 133.996L381.773 83.0251L343.326 136.054Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M404.206 192.406C408.17 209.344 412.134 226.202 416.097 243.139C392.553 219.554 369.089 195.968 345.545 172.382C344.594 160.352 343.722 148.242 342.771 136.212L404.206 192.406Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M416.89 244.485L345.07 172.54V172.382L342.216 135.104L404.603 192.169L416.89 244.485ZM345.942 172.145L415.305 241.715L403.81 192.564L343.246 137.162L345.942 172.145Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M422.44 222.561C424.977 221.928 437.661 219.554 439.88 221.532C442.1 223.511 458.113 238.47 458.113 238.47C458.271 238.628 460.412 240.765 461.68 244.089C475.474 246.938 489.267 249.788 502.981 252.637C504.17 248.363 509.878 228.814 516.219 212.509C517.567 209.106 520.342 202.458 525.811 200.163C529.299 198.738 534.373 198.738 538.495 200.796C538.495 200.796 540.556 201.825 542.062 203.17C549.831 210.531 531.915 251.766 531.915 251.766C523.75 270.524 519.549 279.943 513.207 282.871C500.761 288.728 485.858 280.655 476.028 275.352C465.565 269.654 458.43 262.689 454.07 257.702C454.07 257.702 454.07 257.702 454.07 257.623C452.009 256.594 449.314 255.328 448.442 254.536C446.301 252.558 444.002 249.55 441.783 244.801C441.783 244.801 426.483 249.075 426.88 244.327C427.038 242.19 429.892 240.844 432.984 240.053C428.465 240.527 423.63 240.527 423.471 238.549C423.154 235.383 424.739 235.225 425.294 235.304C424.105 235.066 417.922 233.642 422.044 228.735L435.362 226.835C435.362 226.835 421.093 227.627 420.379 225.569C419.666 223.511 419.904 223.194 422.44 222.561Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M503.694 285.8C493.548 285.8 483.163 280.18 475.711 276.144C467.388 271.632 459.936 265.696 453.515 258.336C453.119 258.177 452.802 257.94 452.405 257.782C450.503 256.832 448.759 255.961 447.966 255.249C445.509 253.112 443.368 249.946 441.466 245.909C438.453 246.701 429.734 248.759 427.038 246.543C426.404 245.989 426.087 245.276 426.166 244.406C426.246 243.218 426.959 242.19 428.227 241.319C425.928 241.24 424.343 240.923 423.55 240.211C423.075 239.815 422.758 239.34 422.758 238.707C422.599 237.362 422.758 236.333 423.233 235.62C421.965 235.145 420.617 234.275 420.142 232.929C419.666 231.584 420.142 230.001 421.489 228.26C421.648 228.101 421.806 228.022 422.044 227.943L424.026 227.627C420.697 227.31 419.904 226.598 419.666 225.885C419.349 224.856 419.111 223.907 419.507 223.115C419.904 222.324 420.855 222.007 422.282 221.611C422.44 221.611 437.502 218.208 440.515 220.82C442.734 222.799 458.113 237.203 458.826 237.836C458.906 237.916 461.046 240.053 462.394 243.298L502.505 251.608C504.646 244.089 509.798 226.835 515.506 212.114C516.616 209.264 519.549 201.825 525.494 199.292C529.458 197.63 534.769 197.867 538.891 199.925C538.97 200.004 541.111 201.033 542.617 202.458C546.105 205.782 545.471 215.121 540.714 230.397C537.226 241.556 532.787 251.925 532.708 252.004C524.701 270.287 520.342 280.418 513.603 283.583C510.433 285.166 507.024 285.8 503.694 285.8ZM454.942 257.465C461.205 264.509 468.418 270.366 476.504 274.719C486.175 279.943 500.841 287.857 512.89 282.159C518.756 279.389 522.72 270.762 531.123 251.45C536.037 240.132 547.453 209.502 541.428 203.803C540.08 202.537 538.098 201.587 538.098 201.587C534.373 199.767 529.616 199.529 526.049 201.033C520.738 203.249 517.963 210.214 516.933 212.905C511.067 228.022 505.755 245.989 503.694 252.954C503.536 253.349 503.139 253.666 502.743 253.508L461.442 244.96C461.125 244.881 460.967 244.722 460.808 244.406C459.619 241.161 457.558 239.182 457.479 239.103C457.32 238.945 441.466 224.144 439.246 222.165C437.661 220.741 426.721 222.324 422.52 223.353C421.251 223.669 420.934 223.907 420.855 223.986C420.776 224.223 421.014 225.015 421.093 225.41C421.965 226.281 429.099 226.518 435.203 226.123C435.679 226.123 436.075 226.439 436.075 226.914C436.155 227.389 435.837 227.785 435.362 227.864L422.361 229.684C421.489 230.792 421.172 231.742 421.489 232.454C421.886 233.642 423.867 234.354 425.374 234.671C425.849 234.75 426.087 235.145 426.087 235.62C426.008 236.095 425.611 236.412 425.136 236.333C424.977 236.333 424.739 236.333 424.581 236.491C424.422 236.649 424.105 237.124 424.264 238.628C424.264 238.707 424.343 238.786 424.502 238.945C424.977 239.34 426.642 240.053 432.904 239.419C433.38 239.34 433.776 239.657 433.856 240.132C433.935 240.527 433.697 241.002 433.221 241.081C429.813 241.952 427.831 243.218 427.752 244.643C427.752 244.96 427.831 245.197 427.99 245.355C429.734 246.78 437.264 245.435 441.624 244.247C442.021 244.168 442.417 244.327 442.655 244.722C444.557 248.838 446.698 252.004 449.076 254.141C449.631 254.695 451.533 255.565 453.119 256.357C453.594 256.594 454.07 256.832 454.466 257.069C454.704 257.069 454.863 257.227 454.942 257.465Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M535.639 197.234C538.89 198.738 544.835 202.062 547.53 208.869C550.384 215.992 548.164 223.273 545.311 230.872C541.347 241.24 533.499 258.098 518.12 278.676C511.144 268.466 504.168 258.256 497.192 247.967C503.296 238.074 507.577 229.684 510.431 223.59C516.138 211.481 518.754 203.487 526.602 199.45C530.011 197.63 533.34 197.234 535.639 197.234Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M518.041 279.863L496.241 247.888L496.479 247.492C501.394 239.499 505.833 231.346 509.717 223.194C510.589 221.374 511.382 219.633 512.175 217.971C516.376 208.869 519.389 202.22 526.285 198.738C529.139 197.313 532.31 196.522 535.719 196.443H535.877L536.036 196.522C540.237 198.421 545.707 202.062 548.323 208.552C551.335 216.15 548.878 223.827 546.103 231.109C539.999 246.938 530.804 263.005 518.755 279.072L518.041 279.863ZM498.064 247.888L518.12 277.252C529.694 261.66 538.652 245.909 544.597 230.555C547.292 223.59 549.671 216.229 546.817 209.106C544.439 203.17 539.365 199.767 535.481 198.026C532.389 198.105 529.535 198.817 526.92 200.083C520.578 203.328 517.724 209.423 513.523 218.604C512.73 220.266 511.937 222.007 511.065 223.827C507.26 231.9 502.9 239.973 498.064 247.888Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M526.126 270.208L504.089 244.168C502.345 242.11 499.174 242.11 497.271 244.247L494.338 247.572C492.911 249.234 492.673 251.687 493.942 253.428L513.284 280.655C514.79 282.713 517.723 283.109 519.705 281.446L525.254 276.935C527.395 275.194 527.791 272.186 526.126 270.208Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M516.851 283.188C516.613 283.188 516.376 283.188 516.138 283.109C514.711 282.95 513.522 282.159 512.65 281.051L493.307 253.824C491.881 251.766 492.039 248.917 493.704 247.018L496.637 243.693C497.667 242.506 499.253 241.794 500.759 241.794C502.265 241.794 503.613 242.427 504.564 243.614L526.602 269.654C527.553 270.762 527.949 272.107 527.791 273.611C527.632 275.115 526.919 276.539 525.73 277.489L520.181 282.001C519.309 282.792 518.12 283.188 516.851 283.188ZM500.759 243.377C499.649 243.377 498.619 243.852 497.826 244.722L494.893 248.047C493.704 249.471 493.545 251.529 494.576 252.954L513.918 280.18C514.473 280.972 515.345 281.526 516.376 281.605C517.406 281.763 518.437 281.447 519.309 280.734L524.858 276.223C525.73 275.511 526.285 274.482 526.364 273.453C526.443 272.424 526.126 271.395 525.492 270.603L503.454 244.564C502.82 243.852 501.869 243.456 500.759 243.377C500.838 243.377 500.759 243.377 500.759 243.377Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M505.833 122.599C502.583 123.311 499.333 121.965 497.748 119.433C495.766 116.267 496.559 111.439 499.967 109.618C502.663 108.194 506.388 109.064 508.529 111.835C509.084 110.885 510.828 108.431 513.999 107.481C518.279 106.136 521.926 108.59 523.353 109.46C524.462 110.172 526.523 111.597 527.554 114.13C528.109 115.475 528.188 116.742 528.188 117.533C529.536 117.533 534.213 117.612 537.939 121.016C542.14 124.815 542.299 130.197 542.378 132.017C542.695 142.781 532.31 154.97 522.877 154.416C513.364 153.862 502.821 140.407 505.833 122.599Z\",\n fill: \"url(#paint2_linear_92_1651)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M523.432 154.97C523.194 154.97 522.956 154.97 522.798 154.97C518.676 154.732 514.474 152.199 511.065 148.005C505.913 141.594 503.772 132.571 505.199 123.311C502.028 123.707 498.937 122.361 497.351 119.749C496.242 117.929 495.924 115.554 496.479 113.417C497.034 111.518 498.144 110.014 499.809 109.144C502.583 107.719 506.23 108.431 508.608 110.964C509.559 109.618 511.303 107.798 513.919 106.927C518.438 105.582 522.243 108.035 523.67 108.985C524.7 109.698 526.92 111.122 528.03 113.972C528.426 114.921 528.585 115.95 528.664 116.979C531.042 117.058 534.926 117.612 538.256 120.541C542.695 124.498 542.854 130.038 542.854 131.859C543.012 137.795 540 144.522 535.006 149.35C531.438 152.991 527.316 154.97 523.432 154.97ZM506.547 121.886L506.388 122.678C504.803 131.938 506.864 140.881 511.937 147.292C515.108 151.25 519.072 153.624 522.877 153.862C526.523 154.099 530.725 152.199 534.371 148.717C539.128 144.047 542.061 137.636 541.902 132.017C541.823 130.276 541.664 125.131 537.622 121.411C534.371 118.483 530.329 118.087 528.267 118.087H527.713V117.533C527.713 116.425 527.554 115.317 527.158 114.367C526.206 111.835 524.225 110.568 523.194 109.935C521.846 109.064 518.358 106.769 514.316 108.035C511.541 108.906 509.876 110.964 509.163 112.151L508.767 112.784L508.291 112.151C506.309 109.618 502.9 108.748 500.364 110.093C499.016 110.806 498.065 112.072 497.589 113.655C497.114 115.475 497.351 117.533 498.303 119.116C499.809 121.49 502.821 122.678 505.833 122.044L506.547 121.886Z\",\n fill: \"url(#paint3_linear_92_1651)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M499.73 132.175C501.236 130.118 503.377 126.873 505.517 122.52C506.865 121.728 511.145 119.354 515.743 120.778C519.231 121.807 523.195 125.131 522.719 126.556C522.878 127.901 522.878 129.484 522.798 131.226C522.561 134.946 521.689 138.032 520.817 140.248C524.622 136.845 529.378 136.766 531.598 138.903C533.896 141.198 532.628 145.314 532.549 145.551C531.598 148.638 528.744 150.933 525.256 151.566L512.81 186.312C510.353 193.277 501.395 195.572 496.084 190.507V190.586L482.132 201.825L492.358 180.059H492.437C492.516 179.505 492.675 179.03 492.834 178.476L499.334 160.193C498.541 160.035 497.431 159.639 496.242 159.006C492.596 156.948 491.09 153.07 491.09 153.07C489.9 149.983 490.535 147.213 490.931 145.63C492.199 140.328 495.291 138.428 499.73 132.175Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M482.133 202.695C481.974 202.695 481.736 202.616 481.578 202.537C481.261 202.3 481.181 201.825 481.34 201.429L491.566 179.664C491.566 179.584 491.645 179.584 491.645 179.505C491.725 179.03 491.883 178.556 492.042 178.16L498.225 160.748C497.432 160.51 496.64 160.114 495.847 159.719C491.962 157.502 490.377 153.466 490.298 153.308C489.029 149.904 489.743 146.818 490.06 145.314C490.932 141.515 492.755 139.378 495.213 136.37C496.322 135.025 497.591 133.521 499.018 131.542C501.158 128.614 503.061 125.369 504.805 122.045C504.884 121.886 504.963 121.807 505.122 121.649C507.262 120.383 511.543 118.404 516.061 119.829C518.994 120.699 522.482 123.232 523.433 125.131C523.671 125.606 523.751 126.16 523.671 126.556C523.83 128.139 523.83 129.643 523.751 131.226C523.592 133.442 523.196 135.737 522.562 137.874C526.287 135.816 530.251 136.291 532.233 138.27C534.849 140.882 533.58 145.314 533.422 145.789C532.391 149.034 529.537 151.487 525.891 152.279L513.683 186.629C512.415 190.269 509.323 192.96 505.597 193.831C502.189 194.622 498.701 193.831 496.085 191.615L482.688 202.458C482.529 202.616 482.291 202.695 482.133 202.695ZM492.993 180.772L484.59 198.738L495.371 190.032C495.53 189.874 495.688 189.715 495.926 189.636C496.243 189.557 496.481 189.636 496.719 189.874C499.018 192.09 502.03 192.881 505.201 192.169C508.372 191.456 510.988 189.161 512.018 186.075L524.464 151.329C524.543 151.012 524.86 150.854 525.098 150.775C528.348 150.142 530.885 148.084 531.757 145.393C531.757 145.393 532.946 141.594 530.964 139.615C529.141 137.795 524.86 137.874 521.452 140.961C521.135 141.198 520.659 141.277 520.342 141.04C520.025 140.802 519.866 140.407 520.025 140.011C521.135 137.162 521.769 134.233 522.007 131.305C522.086 129.801 522.086 128.297 521.927 126.793C521.927 126.635 521.927 126.556 522.007 126.398C522.007 125.685 518.994 122.757 515.586 121.728C511.86 120.541 508.213 122.124 506.311 123.232C504.646 126.635 502.664 129.801 500.524 132.809C499.097 134.787 497.829 136.37 496.64 137.716C494.261 140.565 492.676 142.544 491.883 145.947C491.566 147.372 490.932 149.984 492.042 152.912C492.042 152.912 493.469 156.553 496.798 158.452C497.67 158.927 498.621 159.323 499.652 159.56C499.89 159.639 500.127 159.798 500.207 160.035C500.365 160.273 500.365 160.51 500.286 160.748L493.786 179.03C493.627 179.426 493.469 179.901 493.389 180.455C493.231 180.455 493.152 180.693 492.993 180.772Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M499.412 160.114L497.351 165.813C502.82 164.388 508.924 160.747 510.589 159.718C507.656 161.38 503.772 161.46 499.412 160.114Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M496.559 166.604L499.095 159.402L499.571 159.56C503.852 160.906 507.577 160.826 510.352 159.244L510.907 160.193C509.163 161.301 503.059 164.863 497.51 166.367L496.559 166.604ZM499.729 160.747L498.223 164.942C500.998 164.071 503.931 162.726 506.23 161.539C504.248 161.697 502.108 161.46 499.729 160.747Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M500.363 142.939C500.204 142.86 498.698 141.91 498.46 140.565C498.381 140.011 498.46 139.457 498.857 138.982C499.887 137.637 506.308 130.592 506.546 130.276L507.735 131.384C507.656 131.463 501.156 138.745 500.125 140.011C500.046 140.169 500.046 140.248 500.046 140.328C500.125 140.802 500.838 141.356 501.235 141.594L500.363 142.939Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M462.552 224.777C462.394 224.777 462.235 224.698 462.077 224.619C461.68 224.382 461.601 223.907 461.839 223.511C472.858 206.811 481.657 201.192 481.974 200.954C482.053 200.875 482.133 200.875 482.212 200.875L501.237 196.918C501.713 196.838 502.109 197.076 502.188 197.551C502.268 198.026 502.03 198.421 501.554 198.501L482.687 202.379C481.578 203.091 473.254 209.027 463.107 224.382C463.107 224.698 462.869 224.777 462.552 224.777Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M446.698 196.68C446.46 196.68 446.302 196.601 446.143 196.443C445.826 196.126 445.826 195.651 446.143 195.335C452.326 188.844 471.51 181.563 472.303 181.246C472.699 181.088 473.175 181.326 473.333 181.721C473.492 182.117 473.254 182.592 472.858 182.75C472.699 182.829 453.198 190.19 447.253 196.443C447.094 196.601 446.936 196.68 446.698 196.68Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M533.024 243.535C532.866 243.535 532.787 243.535 532.628 243.456C532.232 243.219 532.073 242.744 532.311 242.348C539.525 229.051 542.537 216.783 542.537 216.704C542.616 216.309 543.092 215.992 543.488 216.071C543.885 216.15 544.202 216.625 544.123 217.021C544.123 217.179 541.031 229.605 533.738 243.06C533.579 243.377 533.262 243.535 533.024 243.535Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M480.864 235.066C480.705 235.066 480.547 235.066 480.468 234.987C479.913 234.908 479.199 234.512 478.882 233.404C478.089 230.713 477.772 227.073 479.516 226.044C480.23 225.648 481.419 225.411 483.242 227.073C484.352 228.102 485.541 228.893 486.571 229.605C488.078 228.181 489.663 226.519 491.09 224.856C491.407 224.54 491.883 224.461 492.2 224.777C492.517 225.094 492.596 225.569 492.279 225.885C491.645 226.598 489.901 228.576 487.919 230.476C489.584 231.584 490.694 232.375 490.694 233.484C490.694 233.958 490.297 234.275 489.822 234.275C489.346 234.275 489.029 233.879 489.029 233.404C488.95 233.088 487.681 232.296 486.73 231.663C486.73 231.663 486.651 231.663 486.651 231.584C484.59 233.563 482.449 235.066 480.864 235.066ZM480.547 227.389C480.468 227.389 480.388 227.389 480.388 227.468C479.833 227.785 479.516 230.001 480.468 233.009C480.547 233.404 480.705 233.404 480.785 233.484C481.577 233.642 483.321 232.534 485.303 230.872C484.273 230.159 483.242 229.368 482.132 228.418C481.419 227.706 480.864 227.389 480.547 227.389Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M521.293 229.368C520.976 229.368 520.659 229.209 520.5 229.051C520.263 228.814 519.787 228.339 520.421 225.885C519.47 225.964 518.36 226.202 517.012 226.835C516.616 226.993 516.14 226.835 515.903 226.439C515.744 226.044 515.903 225.569 516.299 225.331C517.884 224.619 519.549 224.223 520.897 224.223C521.61 222.165 522.878 219.237 525.019 215.042C525.257 214.646 525.732 214.488 526.129 214.646C526.525 214.884 526.684 215.359 526.525 215.755C525.019 218.683 523.592 222.007 522.641 224.461C523.354 224.698 523.909 225.094 524.226 225.569C524.543 226.123 524.86 227.468 522.482 228.972C521.927 229.289 521.61 229.368 521.293 229.368ZM522.086 226.044C521.848 226.677 521.769 227.231 521.689 227.547C522.641 226.914 522.799 226.519 522.72 226.36C522.641 226.281 522.403 226.123 522.086 226.044Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M514.238 268.387C514.08 268.387 513.921 268.308 513.763 268.229C513.049 267.754 495.927 255.803 496.244 246.543C496.244 246.068 496.64 245.751 497.116 245.751C497.591 245.751 497.908 246.147 497.908 246.622C497.591 255.011 514.555 266.804 514.714 266.963C515.11 267.2 515.19 267.754 514.952 268.071C514.793 268.308 514.476 268.387 514.238 268.387Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M441.862 203.17C441.704 203.17 441.466 203.091 441.307 202.933C440.99 202.616 440.99 202.141 441.228 201.825L444.399 198.342C444.716 198.026 445.192 198.026 445.509 198.263C445.826 198.58 445.826 199.055 445.588 199.371L442.417 202.854C442.338 203.091 442.1 203.17 441.862 203.17Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M525.177 195.809C525.018 195.809 524.78 195.73 524.622 195.572L520.658 192.09C520.341 191.773 520.262 191.298 520.579 190.981C520.896 190.665 521.372 190.586 521.689 190.902L525.652 194.385C525.969 194.701 526.049 195.176 525.732 195.493C525.652 195.73 525.414 195.809 525.177 195.809Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M453.99 281.13C453.91 281.13 453.752 281.13 453.673 281.051C453.276 280.892 443.764 276.935 438.928 266.409C438.769 266.013 438.928 265.538 439.324 265.301C439.721 265.142 440.196 265.301 440.434 265.696C445.032 275.669 454.227 279.547 454.307 279.547C454.703 279.705 454.941 280.18 454.782 280.576C454.624 280.972 454.307 281.13 453.99 281.13Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M154.104 289.757C153.787 289.757 153.47 289.599 153.391 289.282C153.232 288.886 153.391 288.411 153.866 288.253C171.702 280.972 187.715 274.482 201.588 268.783C219.741 261.422 234.01 255.565 244.078 251.45C244.157 251.45 252.56 247.967 265.719 243.693C286.805 236.887 293.068 236.966 295.367 236.966C302.977 237.045 308.288 239.103 315.74 241.952C317.167 242.506 318.594 243.06 320.179 243.614C335.637 249.392 351.412 255.645 366.95 262.135C367.346 262.293 367.584 262.768 367.346 263.163C367.187 263.559 366.712 263.797 366.315 263.638C350.778 257.148 335.003 250.975 319.545 245.197C317.959 244.643 316.453 244.01 315.106 243.456C307.813 240.686 302.581 238.628 295.288 238.549C292.989 238.549 286.964 238.47 266.115 245.197C253.036 249.392 244.633 252.874 244.553 252.874C234.486 256.99 220.217 262.847 202.064 270.208C188.191 275.827 172.099 282.396 154.342 289.678C154.262 289.757 154.183 289.757 154.104 289.757Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M191.282 442.985C191.045 442.985 190.807 442.906 190.648 442.669C190.331 442.352 190.41 441.798 190.727 441.561C194.929 437.999 293.781 353.629 299.964 350.542C300.995 349.988 304.721 348.88 310.904 347.139C341.979 338.037 424.58 313.739 444.636 280.022C444.874 279.626 445.349 279.547 445.746 279.705C446.142 279.943 446.221 280.418 446.063 280.813C425.69 315.005 342.692 339.461 311.459 348.642C305.83 350.304 301.788 351.492 300.836 351.966C294.812 354.974 192.947 441.877 191.917 442.748C191.679 442.906 191.52 442.985 191.282 442.985Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M159.017 265.617C158.7 265.617 158.462 265.459 158.304 265.142C158.145 264.747 158.304 264.272 158.7 264.034C160.206 263.322 195.879 245.83 202.458 244.327C202.934 244.247 203.33 244.485 203.41 244.96C203.489 245.435 203.251 245.83 202.776 245.91C196.355 247.334 159.731 265.301 159.334 265.459C159.255 265.617 159.176 265.617 159.017 265.617Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M207.454 244.247C207.137 244.247 206.82 244.01 206.661 243.693C206.502 243.298 206.74 242.823 207.137 242.664L212.527 240.686C212.923 240.528 213.399 240.765 213.558 241.161C213.716 241.556 213.478 242.031 213.082 242.19L207.692 244.168C207.612 244.247 207.533 244.247 207.454 244.247Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M207.296 393.598C207.059 393.598 206.9 393.519 206.741 393.36C206.424 393.044 206.424 392.49 206.821 392.252C208.01 391.144 235.834 365.421 248.597 357.744C248.993 357.507 249.469 357.665 249.707 358.061C249.945 358.456 249.786 358.931 249.39 359.169C236.786 366.767 208.168 393.202 207.851 393.439C207.693 393.519 207.534 393.598 207.296 393.598Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M253.036 356.715C252.798 356.715 252.64 356.636 252.481 356.478C252.164 356.161 252.164 355.686 252.481 355.37L259.695 348.167C260.012 347.851 260.487 347.851 260.805 348.167C261.122 348.484 261.122 348.959 260.805 349.275L253.591 356.478C253.512 356.636 253.274 356.715 253.036 356.715Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M323.983 313.58C323.666 313.58 323.428 313.422 323.27 313.105C323.111 312.71 323.27 312.235 323.666 311.997L356.564 296.089C356.96 295.93 357.436 296.089 357.674 296.484C357.832 296.88 357.674 297.355 357.277 297.593L324.38 313.501C324.221 313.58 324.142 313.58 323.983 313.58Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M356.882 222.719C356.803 222.719 356.724 222.719 356.645 222.719C356.328 222.64 324.222 212.43 321.131 211.401C320.734 211.243 320.497 210.768 320.655 210.372C320.814 209.977 321.289 209.739 321.686 209.898C324.698 210.927 356.803 221.057 357.12 221.216C357.517 221.374 357.754 221.77 357.675 222.245C357.596 222.482 357.2 222.719 356.882 222.719Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M366.631 226.36C366.552 226.36 366.473 226.36 366.394 226.36L361.241 224.856C360.845 224.698 360.607 224.302 360.686 223.827C360.845 223.432 361.241 223.194 361.717 223.273L366.869 224.777C367.266 224.936 367.503 225.331 367.424 225.806C367.345 226.123 367.028 226.36 366.631 226.36Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M359.975 294.585C359.658 294.585 359.341 294.426 359.182 294.031C359.024 293.635 359.262 293.16 359.658 293.002L366.317 290.469C366.713 290.311 367.189 290.548 367.347 290.944C367.506 291.34 367.268 291.815 366.872 291.973L360.213 294.506C360.213 294.585 360.054 294.585 359.975 294.585Z\",\n fill: \"#101010\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_92_1651\",\n x1: 518.234,\n y1: 147.502,\n x2: 581.699,\n y2: 147.502,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#008EC8\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint1_linear_92_1651\",\n x1: 517.569,\n y1: 147.492,\n x2: 581.809,\n y2: 147.492,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#008EC8\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint2_linear_92_1651\",\n x1: 496.679,\n y1: 130.76,\n x2: 542.385,\n y2: 130.76,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#008EC8\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint3_linear_92_1651\",\n x1: 496.212,\n y1: 130.751,\n x2: 542.859,\n y2: 130.751,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#008EC8\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_92_1651\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 636,\n height: 501,\n fill: \"white\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSignupIllustration);\nexport default __webpack_public_path__ + \"static/media/signup-illustration.95690461f2ac9a1506a99e68671cb1ec.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgInfo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17 18.43H13L8.54999 21.39C7.88999 21.83 7 21.36 7 20.56V18.43C4 18.43 2 16.43 2 13.43V7.42993C2 4.42993 4 2.42993 7 2.42993H17C20 2.42993 22 4.42993 22 7.42993V13.43C22 16.43 20 18.43 17 18.43Z\",\n stroke: \"#101010\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.9998 11.36V11.15C11.9998 10.47 12.4198 10.11 12.8398 9.82001C13.2498 9.54001 13.6598 9.18002 13.6598 8.52002C13.6598 7.60002 12.9198 6.85999 11.9998 6.85999C11.0798 6.85999 10.3398 7.60002 10.3398 8.52002\",\n stroke: \"#101010\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.9955 13.75H12.0045\",\n stroke: \"#101010\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgInfo);\nexport default __webpack_public_path__ + \"static/media/info.1d337629540f182bb31d62cd1e5ae6ce.svg\";\nexport { ForwardRef as ReactComponent };","import Checkbox from 'src/components/checkbox/Checkbox';\nimport Modal from 'src/components/modal/Modal';\nimport infoIcon from 'src/icons/info.svg';\n\nconst SecurityLevelCheckbox = ({ checked, setChecked, isModalOpen, setIsModalOpen }) => (\n
    \n \n \n \n

    \n Payonix is safe and no one can ever access your information. Everything is encrypted in the database. If\n you choose the maximum security level, your data will use 2 levels of encryption\n
    \n
    \n If you choose to use the maximum security level, \n \n you will have to re-enter your password to confirm every billing for subscription payments.\n \n
    \n
    \n If you{' '}\n \n don't choose the maximum security level, you won't have to confirm subscription payments for every\n new billing\n \n , only the first one.\n

    \n
    \n
    \n);\n\nexport default SecurityLevelCheckbox;\n","import { useCallback, useEffect, useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport toast from 'react-hot-toast';\n\nimport API from 'src/utils/api';\nimport { isValidEmail, isValidName, isValidPassword } from 'src/utils/forms';\nimport { LOCAL_STORAGE_TOKEN_KEY } from 'src/utils/constants';\nimport Input from 'src/components/input/Input';\nimport Button from 'src/components/button/Button';\nimport Checkbox from 'src/components/checkbox/Checkbox';\nimport logoIcon from 'src/icons/logo.svg';\nimport signupIllustration from 'src/icons/signup-illustration.svg';\nimport SecurityLevelCheckbox from 'src/components/security-level-checkbox/SecurityLevelCheckbox';\nimport Loader from 'src/components/loader/Loader';\n\nconst Signup = () => {\n // form fields\n const [firstName, setFirstName] = useState();\n const [lastName, setLastName] = useState();\n const [email, setEmail] = useState();\n const [password, setPassword] = useState();\n const [maxSecurityLevel, setMaxSecurityLevel] = useState(false);\n const [agreeTerms, setAgreeTerms] = useState(false);\n // UI state\n const [isMaxSecurityLevelModalOpen, setIsMaxSecurityLevelModalOpen] = useState(false);\n const [loading, setLoading] = useState();\n // error\n const [errors, setErrors] = useState();\n\n const checkErrors = useCallback(() => {\n let newErrors = {};\n if (!email || !isValidEmail(email)) newErrors.email = 'Please enter a valid email (max 255 characters)';\n if (!password || !isValidPassword(password)) {\n newErrors.password = 'Please enter a valid password (between 6 and 255 characters long)';\n }\n if (!firstName || !isValidName(firstName))\n newErrors.firstName = 'Please enter your first name (max 255 characters)';\n if (!lastName || !isValidName(lastName))\n newErrors.lastName = 'Please enter your last name (max 255 characters)';\n if (!agreeTerms) {\n newErrors.agreeTerms = 'Please agree to terms of use';\n toast('You need to agree to the terms of use and privacy policy to continue', { icon: '🚨' });\n }\n return newErrors;\n }, [email, password, firstName, lastName, agreeTerms]);\n\n useEffect(() => {\n if (email === undefined || password === undefined || firstName === undefined || lastName === undefined) return;\n setErrors(checkErrors());\n }, [email, password, firstName, lastName, checkErrors]);\n\n const onSubmit = async (e) => {\n e.preventDefault();\n\n let newErrors = checkErrors();\n if (Object.keys(newErrors).length !== 0) return setErrors(newErrors);\n\n setLoading(true);\n\n try {\n const response = await API.post('/auth/signup/', {\n email,\n password,\n firstName,\n lastName,\n securityLevel: maxSecurityLevel ? 1 : 2,\n });\n setLoading(false);\n localStorage.setItem(LOCAL_STORAGE_TOKEN_KEY, response.data.token);\n window.location.href = '/';\n } catch (error) {\n setLoading(false);\n if (error.response.status === 400) {\n if (error.response.data?.errors?.find((e) => e.msg === 'Email is already in use')) {\n toast.error('This email is already in use');\n return;\n }\n toast.error('There is an error on the form');\n return;\n }\n toast.error('Unexpected error, please try again');\n }\n };\n\n if (loading) return ;\n\n return (\n
    \n
    \n \"Payonix\n
    \n
    \n
    \n Welcome to Payonix\n \n Already have an account? \n \n Log in\n \n \n
    \n \n \n
    \n \n \n \n \n
    \n
    \n © 2022 Payonix.com. All rights reserved\n
    \n
    \n );\n};\n\nexport default Signup;\n","import { useNavigate } from 'react-router-dom';\nimport Button from 'src/components/button/Button';\n\nconst PageNotFound = () => {\n const navigate = useNavigate();\n\n return (\n
    \n Page Not Found\n

    \n The page you requested does not exist,
    \n please go back to the log in screen\n

    \n navigate('/login', { replace: true })}\n primary\n />\n
    \n );\n};\n\nexport default PageNotFound;\n","import { useEffect, useRef, useState } from 'react';\nimport toast from 'react-hot-toast';\nimport { Link } from 'react-router-dom';\nimport Loader from 'src/components/loader/Loader';\nimport TransactionsTable from 'src/components/transactions-table/TransactionsTable';\nimport API from 'src/utils/api';\nimport rightArrowIcon from 'src/icons/right-arrow.svg';\nimport ErrorState from 'src/components/error-state/ErrorState';\n\nconst AllTransactions = () => {\n const fetchingTransactions = useRef(false);\n const [transactions, setTransactions] = useState();\n const [accounts, setAccounts] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(false);\n\n useEffect(() => {\n if (fetchingTransactions.current) return; // make sure to fetch data only at first render\n const fetchTransactions = async () => {\n fetchingTransactions.current = true;\n try {\n const response = await API.get('/accounts/transactions');\n setTransactions(response.data.transactions);\n setAccounts(response.data.accounts);\n setLoading(false);\n fetchingTransactions.current = false;\n } catch (error) {\n setError(true);\n setLoading(false);\n toast.error('Failed to fetch');\n fetchingTransactions.current = false;\n }\n };\n\n fetchTransactions();\n }, []);\n\n if (loading) {\n return (\n
    \n \n
    \n );\n }\n\n if (error) {\n return ;\n }\n\n return (\n
    \n \n \"left\n Back\n \n
    \n \n
    \n
    \n );\n};\n\nexport default AllTransactions;\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDoubleArrows(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 14,\n height: 16,\n viewBox: \"0 0 14 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 3.5C0.723858 3.5 0.5 3.72386 0.5 4C0.5 4.27614 0.723858 4.5 1 4.5V3.5ZM13.3536 4.35355C13.5488 4.15829 13.5488 3.84171 13.3536 3.64645L10.1716 0.464466C9.97631 0.269204 9.65973 0.269204 9.46447 0.464466C9.2692 0.659728 9.2692 0.976311 9.46447 1.17157L12.2929 4L9.46447 6.82843C9.2692 7.02369 9.2692 7.34027 9.46447 7.53553C9.65973 7.7308 9.97631 7.7308 10.1716 7.53553L13.3536 4.35355ZM1 4.5H13V3.5H1V4.5Z\",\n fill: \"#101010\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 12.5C13.2761 12.5 13.5 12.2761 13.5 12C13.5 11.7239 13.2761 11.5 13 11.5V12.5ZM0.646446 11.6464C0.451184 11.8417 0.451184 12.1583 0.646446 12.3536L3.82843 15.5355C4.02369 15.7308 4.34027 15.7308 4.53553 15.5355C4.7308 15.3403 4.7308 15.0237 4.53553 14.8284L1.70711 12L4.53553 9.17157C4.7308 8.97631 4.7308 8.65973 4.53553 8.46447C4.34027 8.2692 4.02369 8.2692 3.82843 8.46447L0.646446 11.6464ZM13 11.5L1 11.5V12.5L13 12.5V11.5Z\",\n fill: \"#101010\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDoubleArrows);\nexport default __webpack_public_path__ + \"static/media/double-arrows.450e27d48a159d7feb8883243f53306a.svg\";\nexport { ForwardRef as ReactComponent };","const LockIcon = ({ color, className = '' }) => (\n \n \n \n);\n\nexport default LockIcon;\n","import { useEffect, useRef, useState } from 'react';\nimport DownIcon from 'src/icons/down';\nimport { LOGO_URL, NETWORK_NAME_LABELS } from 'src/utils/constants';\nimport Input from '../../components/input/Input';\nimport doubleArrows from 'src/icons/double-arrows.svg';\nimport Button from '../../components/button/Button';\nimport toast from 'react-hot-toast';\nimport API, { MerchantAPI } from 'src/utils/api';\nimport Loader from '../../components/loader/Loader';\nimport RoundPaginationButtons from '../../components/round-pagination-buttons/RoundPaginationButtons';\nimport { useNavigate } from 'react-router-dom';\nimport ErrorState from 'src/components/error-state/ErrorState';\nimport { removeTrailingZeros } from 'src/utils/strings';\nimport LockIcon from 'src/icons/lock';\nimport { useUserProfile } from 'src/context/user-context/UserProvider';\n\nconst BALANCES_PER_PAGE = 10;\n\nconst Withdraw = () => {\n const navigate = useNavigate();\n // User Profile\n const { email } = useUserProfile();\n // Fees\n const [fees, setFees] = useState();\n const [requireToPayFees, setRequireToPayFees] = useState();\n const [totalFees, setTotalFees] = useState();\n // Balances and prices\n const [balances, setBalances] = useState();\n const [prices, setPrices] = useState();\n const fetchingBalances = useRef(false);\n const fetchingFees = useRef(false);\n // Pages\n const [balancesTotalPages, setBalancesTotalPages] = useState(0);\n const [currentPage, setCurrentPage] = useState(1);\n const [balancesToShow, setBalancesToShow] = useState();\n // Withdraw states\n const [balanceToWithdraw, setBalanceToWithdraw] = useState();\n const [subtitle, setSubtitle] = useState('Select a coin and network to withdraw crypto from');\n const [tokenAmount, setTokenAmount] = useState();\n const [USDAmount, setUSDAmount] = useState();\n const [withdrawAddress, setWithdrawAddress] = useState();\n const [networkFee, setNetworkFee] = useState();\n const [maxWithdrawAmount, setMaxWithdrawAmount] = useState();\n // UI State\n const [fetchFeesLoading, setFetchFeesLoading] = useState(true);\n const [fetchBalancesLoading, setFetchBalancesLoading] = useState(true);\n const [fetchMaxWithdrawLoading, setFetchMaxWithdrawLoading] = useState(false);\n const [createPaymentLoading, setCreatePaymentLoading] = useState(false);\n const [error, setError] = useState(false);\n\n useEffect(() => {\n if (fetchingBalances.current) return; // make sure to fetch data only at first render\n const fetchBalances = async () => {\n fetchingBalances.current = true;\n try {\n const response = await API.get('/accounts/balances');\n\n const filteredBalances = response.data.balances.filter((balance) => balance.amount > 0);\n const pricesResponse = response.data.prices;\n\n setBalances(filteredBalances);\n setPrices(pricesResponse);\n setBalancesTotalPages(Math.ceil(filteredBalances.length / BALANCES_PER_PAGE));\n setBalancesToShow(filteredBalances.slice(0, BALANCES_PER_PAGE));\n setFetchBalancesLoading(false);\n\n fetchingBalances.current = false;\n } catch (error) {\n toast.error('Failed to fetch');\n setFetchBalancesLoading(false);\n setError(true);\n fetchingBalances.current = false;\n }\n };\n\n setFetchBalancesLoading(true);\n fetchBalances();\n }, []);\n\n useEffect(() => {\n if (fetchingFees.current) return; // make sure to fetch data only at first render\n const fetchFees = async () => {\n fetchingFees.current = true;\n try {\n const response = await API.get('/fees/all');\n\n setFees(response.data.fees);\n setTotalFees(response.data.total);\n setRequireToPayFees(response.data.needToPayFees);\n setFetchFeesLoading(false);\n\n fetchingFees.current = false;\n } catch (error) {\n toast.error('Failed to fetch');\n setFetchFeesLoading(false);\n setError(true);\n fetchingFees.current = false;\n }\n };\n\n setFetchFeesLoading(true);\n fetchFees();\n }, []);\n\n const onPayFeesClick = async () => {\n try {\n setCreatePaymentLoading(true);\n\n const response = await MerchantAPI.post(`/api/merchant/create-payment`, {\n formId: process.env.REACT_APP_FEES_FORM_ID,\n costInUSD: `${totalFees}`,\n successURL: `${window.location.href}`,\n cancelURL: `${window.location.href}`,\n callbackEndpoint: `${process.env.REACT_APP_API_BASE_URL}/fees/pay`,\n productNames: ['Payonix Transaction Fees'],\n logoURL: LOGO_URL,\n productsImagesURLs: [LOGO_URL],\n customerEmail: email,\n extraDataForCallback: JSON.stringify({ feesPaid: fees.map(({ id, fee }) => ({ id, amount: fee })) }),\n });\n\n window.location.href = response.data.paymentPageURL;\n } catch (error) {\n toast.error('Something unexpected happened, please try again later');\n setCreatePaymentLoading(false);\n setError(true);\n }\n };\n\n useEffect(() => {\n if (!balanceToWithdraw) return;\n\n const fetchMaxWithdrawAmount = async () => {\n setFetchMaxWithdrawLoading(true);\n setSubtitle('Enter the amount to withdraw and the address you want to withdraw to');\n\n try {\n const response = await API.post('/accounts/max-withdraw-amount', {\n network: balanceToWithdraw.network,\n token: balanceToWithdraw.token,\n });\n if (response.status === 200) {\n setNetworkFee(response.data.networkFee);\n setMaxWithdrawAmount(response.data.maxWithdrawAmount);\n }\n setFetchMaxWithdrawLoading(false);\n } catch (error) {\n setFetchMaxWithdrawLoading(false);\n setBalanceToWithdraw(null);\n setError(true);\n toast.error('An unexpected error occured, please try again later');\n }\n };\n\n fetchMaxWithdrawAmount();\n }, [balanceToWithdraw]);\n\n useEffect(() => {\n if (!balances) return;\n setBalancesToShow(balances.slice((currentPage - 1) * BALANCES_PER_PAGE, BALANCES_PER_PAGE * currentPage));\n }, [balances, currentPage]);\n\n const onTokenAmountChange = (newTokenAmount) => {\n if (!balanceToWithdraw) return;\n setTokenAmount(newTokenAmount);\n const expectedUSDAmount = newTokenAmount * prices[balanceToWithdraw.token];\n if (USDAmount !== expectedUSDAmount) {\n setUSDAmount(expectedUSDAmount.toFixed(2));\n }\n };\n\n const onUSDAmountChange = (newUSDAmount) => {\n if (!balanceToWithdraw) return;\n setUSDAmount(newUSDAmount);\n const expectedTokenAmount = newUSDAmount / prices[balanceToWithdraw.token];\n if (tokenAmount !== expectedTokenAmount) {\n setTokenAmount(expectedTokenAmount.toFixed(8));\n }\n };\n\n const onCancelClick = (toastID) => toast.dismiss(toastID);\n\n const onConfirmClick = async (toastID) => {\n toast.dismiss(toastID);\n try {\n const response = await API.post('/accounts/withdraw', {\n network: balanceToWithdraw.network,\n destination: withdrawAddress,\n token: balanceToWithdraw.token,\n amount: tokenAmount,\n });\n if (response.status === 200) {\n toast.success(\n 'Withdraw successful. The transaction is pending and will be completed in a few moments',\n { duration: 5000 }\n );\n setTimeout(() => {\n navigate('/');\n }, 3000);\n }\n } catch (error) {\n if (error.response.status === 400 && error.response.data.errors[0].msg === 'Invalid address') {\n return toast.error(`Invalid address for the ${NETWORK_NAME_LABELS[balanceToWithdraw.network]} network`);\n }\n setBalanceToWithdraw(null);\n toast.error('Failed to withdraw, an unexpected error occured');\n setTimeout(() => {\n navigate('/');\n }, 3000);\n }\n };\n\n const onSubmit = (e) => {\n e.preventDefault();\n toast(\n (t) => (\n

    \n You are about to withdraw {tokenAmount} {balanceToWithdraw.token} (${USDAmount}) on the{' '}\n {NETWORK_NAME_LABELS[balanceToWithdraw.network]}. Including the network fee,{' '}\n \n you will spend {tokenAmountWithFees()} {balanceToWithdraw.token} in total\n \n
    \n
    \n \n Please make sure that the address you entered is on the{' '}\n {NETWORK_NAME_LABELS[balanceToWithdraw.network]}. Otherwise the transaction will fail and your\n funds will be lost forever.\n \n
    \n
    \n

    \n
    \n

    \n ),\n { duration: 100000 }\n );\n };\n\n const onNextClick = () => {\n if (currentPage === balancesTotalPages) return;\n setCurrentPage(currentPage + 1);\n };\n\n const onPrevClick = () => {\n if (currentPage === 1) return;\n setCurrentPage(currentPage - 1);\n };\n\n const tokenAmountWithFees = () => {\n return (parseFloat(tokenAmount) + parseFloat(networkFee)).toFixed(8); // add network fee\n };\n\n if (fetchBalancesLoading || fetchFeesLoading || fetchMaxWithdrawLoading || createPaymentLoading) {\n return (\n
    \n \n
    \n );\n }\n\n if (error) {\n return ;\n }\n\n if (balanceToWithdraw && maxWithdrawAmount <= 0) {\n return (\n
    \n \n

    \n Insufficient funds to withdraw. Try with another token or add funds first.\n

    \n
    \n );\n }\n\n return (\n
    \n {balanceToWithdraw && (\n \n )}\n {`Withdraw ${\n balanceToWithdraw ? balanceToWithdraw.token : 'funds'\n }`}\n\n {requireToPayFees && (\n
    \n \n You need to pay fees to be allowed to withdraw funds\n
    \n
      \n {fees.map((fee, i) => (\n
    • \n {fee.name}\n ${fee.fee}\n
    • \n ))}\n
    • \n Total:  ${totalFees}\n
    • \n
    \n
    \n
    \n )}\n\n {subtitle}\n {balanceToWithdraw ? (\n
    \n
    \n
    \n \n onTokenAmountChange(maxWithdrawAmount)}\n type=\"button\"\n >\n Max: {maxWithdrawAmount} {balanceToWithdraw.token}\n \n
    \n \"double\n \n
    \n \n \n Estimated network fee: {networkFee} {balanceToWithdraw.token} (≈ $\n {(networkFee * prices[balanceToWithdraw.token]).toFixed(2)})\n \n {tokenAmount && (\n \n Including the network fee, you will spend:{' '}\n \n {tokenAmountWithFees()} {balanceToWithdraw.token} (≈ $\n {(tokenAmountWithFees() * prices[balanceToWithdraw.token]).toFixed(2)})\n \n \n )}\n \n ))}\n {balancesTotalPages > 1 && (\n \n )}\n
    \n )}\n \n );\n};\n\nexport default Withdraw;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDown(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 30,\n viewBox: \"0 0 10 7\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 1L5 5L1 1\",\n stroke: \"#101010\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDown);\nexport default __webpack_public_path__ + \"static/media/down.0f8305cf00719a7b541129457d5ac082.svg\";\nexport { ForwardRef as ReactComponent };","import { useState } from 'react';\nimport downIcon from 'src/icons/down.svg';\nimport exclamationIcon from 'src/icons/exclamation.svg';\n\nimport './SelectDropdown.css';\n\nconst SelectDropdown = ({\n label,\n text,\n placeholder,\n showPlaceholder,\n className = '',\n dropdownContainerClassName = '',\n color = '',\n contentClassName = '',\n icon,\n error,\n children,\n}) => {\n const [open, setOpen] = useState();\n\n return (\n \n );\n};\n\nexport default SelectDropdown;\n","import { useCallback, useEffect, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport Input from 'src/components/input/Input';\nimport { COLLECTED_CUSTOMER_DATE_VALUES, NETWORK_NAME_LABELS, SUPPORTED_TOKENS } from 'src/utils/constants';\nimport Checkbox from 'src/components/checkbox/Checkbox';\nimport downIcon from 'src/icons/down.svg';\nimport './CreateMerchantForm.css';\nimport Button from 'src/components/button/Button';\nimport toast from 'react-hot-toast';\nimport API from 'src/utils/api';\nimport Loader from 'src/components/loader/Loader';\nimport SelectDropdown from 'src/components/select-dropdown/SelectDropdown';\nimport { truncate } from 'src/utils/strings';\n\nconst tokenOptions = Object.keys(SUPPORTED_TOKENS).reduce((acc, val) => {\n const newAcc = { ...acc };\n SUPPORTED_TOKENS[val].forEach((token) => {\n if (Object.keys(newAcc).includes(token)) {\n return newAcc[token].push(val);\n }\n newAcc[token] = [val];\n });\n return newAcc;\n}, {});\n\nconst tokenOptionsArray = Object.keys(tokenOptions);\n\nconst CreateMerchantForm = () => {\n const navigate = useNavigate();\n\n const [formName, setFormName] = useState();\n const [referenceForClients, setReferenceForClients] = useState();\n const [acceptedTokens, setAcceptedTokens] = useState();\n const [collectedCustomerData, setCollectedCustomerData] = useState([]);\n\n const [tokenNetworksSelectOpen, setTokenNetworksSelectOpen] = useState();\n\n const [loading, setLoading] = useState();\n const [errors, setErrors] = useState({});\n\n const onCollectedCustomerDataChange = (fieldName) => {\n setCollectedCustomerData(\n collectedCustomerData.includes(fieldName)\n ? collectedCustomerData.filter((field) => field !== fieldName)\n : [...collectedCustomerData, fieldName]\n );\n };\n\n const onOptionChange = (selected, token, network) => {\n if (selected) {\n if (tokenOptions[token].length === 1) {\n return setAcceptedTokens({\n ...acceptedTokens,\n [token]: tokenOptions[token],\n });\n }\n return setAcceptedTokens({\n ...acceptedTokens,\n [token]: [...(acceptedTokens[token] ?? []), network],\n });\n }\n if (tokenOptions[token].length === 1) {\n const newAcceptedTokens = { ...acceptedTokens };\n delete newAcceptedTokens[token];\n return setAcceptedTokens(newAcceptedTokens);\n }\n setAcceptedTokens({\n ...acceptedTokens,\n [token]: acceptedTokens[token].filter((o) => o !== network),\n });\n };\n\n const onOptionClick = (option) => {\n if (tokenNetworksSelectOpen === option) return setTokenNetworksSelectOpen(null);\n if (tokenOptions[option].length > 1) return setTokenNetworksSelectOpen(option);\n const isOptionSelected = acceptedTokens && Object.keys(acceptedTokens).includes(option);\n onOptionChange(!isOptionSelected, option);\n };\n\n const checkAndSetErrors = useCallback(() => {\n const newErrors = {};\n if (!formName || formName.length > 255) newErrors.formName = 'Please enter a valid name (max 255 characters)';\n if (!referenceForClients || referenceForClients.length > 255)\n newErrors.referenceForClients = 'Please enter a valid reference (max 255 characters)';\n if (!acceptedTokens || Object.keys(acceptedTokens).length === 0) {\n newErrors.acceptedTokens = 'Please select at least 1 token';\n }\n setErrors(newErrors);\n return newErrors;\n }, [acceptedTokens, formName, referenceForClients]);\n\n useEffect(() => {\n if (formName === undefined || referenceForClients === undefined || !acceptedTokens) return;\n checkAndSetErrors();\n }, [formName, referenceForClients, acceptedTokens, collectedCustomerData, checkAndSetErrors]);\n\n const onSubmit = async (e) => {\n e.preventDefault();\n const newErrors = checkAndSetErrors();\n if (Object.keys(newErrors).length !== 0) return;\n setLoading(true);\n try {\n const response = await API.post('/payment-forms/create', {\n name: formName,\n clientReference: referenceForClients,\n acceptedTokens: JSON.stringify(acceptedTokens),\n collectedCustomerData,\n });\n if (response.status === 200) {\n toast.success('Your payment form has been created successfully');\n setTimeout(() => {\n setLoading(false);\n navigate('/merchant');\n }, 3000);\n }\n } catch (error) {\n setLoading(false);\n toast.error('Failed to create form');\n }\n };\n\n if (loading) {\n return (\n
    \n \n
    \n );\n }\n\n return (\n
    \n New payment form\n
    \n \n \n \n {() =>\n tokenOptionsArray.map((option, i) => (\n
    \n onOptionClick(option)}\n type=\"button\"\n >\n \n \n {option}\n \n {tokenOptions[option].length === 1 ? (\n onOptionChange(selected, option)}\n />\n ) : (\n \n )}\n \n {tokenNetworksSelectOpen === option &&\n tokenOptions[option].map((network, j) => (\n
    \n onOptionChange(e, option, network)}\n type=\"button\"\n >\n \n \n {option} on the {NETWORK_NAME_LABELS[network]} network\n \n onOptionChange(selected, option, network)}\n />\n \n {j !== tokenOptions[option].length - 1 &&
    }\n
    \n ))}\n {i !== tokenOptionsArray.length - 1 &&
    }\n
    \n ))\n }\n \n Select the data you want to collect from your clients\n \n \n \n \n \n\n
    \n );\n};\n\nexport default CreateMerchantForm;\n","/**\n * This is a workaround for TypeScript not inferring the correct\n * method overload/signature for some d3 shape methods.\n */\nexport default function setNumberOrNumberAccessor(func, value) {\n if (typeof value === 'number') func(value);else func(value);\n}","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import { arc as d3Arc, area as d3Area, line as d3Line, pie as d3Pie, radialLine as d3RadialLine, stack as d3Stack } from 'd3-shape';\nimport setNumberOrNumberAccessor from './setNumberOrNumberAccessor';\nimport stackOrder from './stackOrder';\nimport stackOffset from './stackOffset';\nexport function arc(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n innerRadius = _ref.innerRadius,\n outerRadius = _ref.outerRadius,\n cornerRadius = _ref.cornerRadius,\n startAngle = _ref.startAngle,\n endAngle = _ref.endAngle,\n padAngle = _ref.padAngle,\n padRadius = _ref.padRadius;\n\n var path = d3Arc();\n if (innerRadius != null) setNumberOrNumberAccessor(path.innerRadius, innerRadius);\n if (outerRadius != null) setNumberOrNumberAccessor(path.outerRadius, outerRadius);\n if (cornerRadius != null) setNumberOrNumberAccessor(path.cornerRadius, cornerRadius);\n if (startAngle != null) setNumberOrNumberAccessor(path.startAngle, startAngle);\n if (endAngle != null) setNumberOrNumberAccessor(path.endAngle, endAngle);\n if (padAngle != null) setNumberOrNumberAccessor(path.padAngle, padAngle);\n if (padRadius != null) setNumberOrNumberAccessor(path.padRadius, padRadius);\n return path;\n}\nexport function area(_temp2) {\n var _ref2 = _temp2 === void 0 ? {} : _temp2,\n x = _ref2.x,\n x0 = _ref2.x0,\n x1 = _ref2.x1,\n y = _ref2.y,\n y0 = _ref2.y0,\n y1 = _ref2.y1,\n defined = _ref2.defined,\n curve = _ref2.curve;\n\n var path = d3Area();\n if (x) setNumberOrNumberAccessor(path.x, x);\n if (x0) setNumberOrNumberAccessor(path.x0, x0);\n if (x1) setNumberOrNumberAccessor(path.x1, x1);\n if (y) setNumberOrNumberAccessor(path.y, y);\n if (y0) setNumberOrNumberAccessor(path.y0, y0);\n if (y1) setNumberOrNumberAccessor(path.y1, y1);\n if (defined) path.defined(defined);\n if (curve) path.curve(curve);\n return path;\n}\nexport function line(_temp3) {\n var _ref3 = _temp3 === void 0 ? {} : _temp3,\n x = _ref3.x,\n y = _ref3.y,\n defined = _ref3.defined,\n curve = _ref3.curve;\n\n var path = d3Line();\n if (x) setNumberOrNumberAccessor(path.x, x);\n if (y) setNumberOrNumberAccessor(path.y, y);\n if (defined) path.defined(defined);\n if (curve) path.curve(curve);\n return path;\n}\nexport function pie(_temp4) {\n var _ref4 = _temp4 === void 0 ? {} : _temp4,\n startAngle = _ref4.startAngle,\n endAngle = _ref4.endAngle,\n padAngle = _ref4.padAngle,\n value = _ref4.value,\n sort = _ref4.sort,\n sortValues = _ref4.sortValues;\n\n var path = d3Pie(); // ts can't distinguish between these method overloads\n\n if (sort === null) path.sort(sort);else if (sort != null) path.sort(sort);\n if (sortValues === null) path.sortValues(sortValues);else if (sortValues != null) path.sortValues(sortValues);\n if (value != null) path.value(value);\n if (padAngle != null) setNumberOrNumberAccessor(path.padAngle, padAngle);\n if (startAngle != null) setNumberOrNumberAccessor(path.startAngle, startAngle);\n if (endAngle != null) setNumberOrNumberAccessor(path.endAngle, endAngle);\n return path;\n}\nexport function radialLine(_temp5) {\n var _ref5 = _temp5 === void 0 ? {} : _temp5,\n angle = _ref5.angle,\n radius = _ref5.radius,\n defined = _ref5.defined,\n curve = _ref5.curve;\n\n var path = d3RadialLine();\n if (angle) setNumberOrNumberAccessor(path.angle, angle);\n if (radius) setNumberOrNumberAccessor(path.radius, radius);\n if (defined) path.defined(defined);\n if (curve) path.curve(curve);\n return path;\n}\nexport function stack(_ref6) {\n var keys = _ref6.keys,\n value = _ref6.value,\n order = _ref6.order,\n offset = _ref6.offset;\n var path = d3Stack();\n if (keys) path.keys(keys);\n if (value) setNumberOrNumberAccessor(path.value, value);\n if (order) path.order(stackOrder(order));\n if (offset) path.offset(stackOffset(offset));\n return path;\n}","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","var _excluded = [\"x\", \"x0\", \"x1\", \"y\", \"y1\", \"y0\", \"yScale\", \"data\", \"defined\", \"className\", \"curve\", \"innerRef\", \"children\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nimport setNumOrAccessor from '../util/setNumberOrNumberAccessor';\nimport { area } from '../util/D3ShapeFactories';\nexport default function AreaClosed(_ref) {\n var x = _ref.x,\n x0 = _ref.x0,\n x1 = _ref.x1,\n y = _ref.y,\n y1 = _ref.y1,\n y0 = _ref.y0,\n yScale = _ref.yScale,\n _ref$data = _ref.data,\n data = _ref$data === void 0 ? [] : _ref$data,\n _ref$defined = _ref.defined,\n defined = _ref$defined === void 0 ? function () {\n return true;\n } : _ref$defined,\n className = _ref.className,\n curve = _ref.curve,\n innerRef = _ref.innerRef,\n children = _ref.children,\n restProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var path = area({\n x: x,\n x0: x0,\n x1: x1,\n defined: defined,\n curve: curve\n });\n\n if (y0 == null) {\n /**\n * by default set the baseline to the first element of the yRange\n * @TODO take the minimum instead?\n */\n path.y0(yScale.range()[0]);\n } else {\n setNumOrAccessor(path.y0, y0);\n }\n\n if (y && !y1) setNumOrAccessor(path.y1, y);\n if (y1 && !y) setNumOrAccessor(path.y1, y1);\n if (children) return /*#__PURE__*/React.createElement(React.Fragment, null, children({\n path: path\n }));\n return /*#__PURE__*/React.createElement(\"path\", _extends({\n ref: innerRef,\n className: cx('visx-area-closed', className),\n d: path(data) || ''\n }, restProps));\n}","var _excluded = [\"children\", \"data\", \"x\", \"y\", \"fill\", \"className\", \"curve\", \"innerRef\", \"defined\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nimport { line } from '../util/D3ShapeFactories';\nexport default function LinePath(_ref) {\n var children = _ref.children,\n _ref$data = _ref.data,\n data = _ref$data === void 0 ? [] : _ref$data,\n x = _ref.x,\n y = _ref.y,\n _ref$fill = _ref.fill,\n fill = _ref$fill === void 0 ? 'transparent' : _ref$fill,\n className = _ref.className,\n curve = _ref.curve,\n innerRef = _ref.innerRef,\n _ref$defined = _ref.defined,\n defined = _ref$defined === void 0 ? function () {\n return true;\n } : _ref$defined,\n restProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var path = line({\n x: x,\n y: y,\n defined: defined,\n curve: curve\n });\n if (children) return /*#__PURE__*/React.createElement(React.Fragment, null, children({\n path: path\n }));\n return /*#__PURE__*/React.createElement(\"path\", _extends({\n ref: innerRef,\n className: cx('visx-linepath', className),\n d: path(data) || '',\n fill: fill // without this a datum surrounded by nulls will not be visible\n // https://github.com/d3/d3-shape#line_defined\n ,\n strokeLinecap: \"round\"\n }, restProps));\n}","var _excluded = [\"className\", \"innerRef\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nexport default function Bar(_ref) {\n var className = _ref.className,\n innerRef = _ref.innerRef,\n restProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"rect\", _extends({\n ref: innerRef,\n className: cx('visx-bar', className)\n }, restProps));\n}","var _excluded = [\"from\", \"to\", \"fill\", \"className\", \"innerRef\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nexport default function Line(_ref) {\n var _ref$from = _ref.from,\n from = _ref$from === void 0 ? {\n x: 0,\n y: 0\n } : _ref$from,\n _ref$to = _ref.to,\n to = _ref$to === void 0 ? {\n x: 1,\n y: 1\n } : _ref$to,\n _ref$fill = _ref.fill,\n fill = _ref$fill === void 0 ? 'transparent' : _ref$fill,\n className = _ref.className,\n innerRef = _ref.innerRef,\n restProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var isRectilinear = from.x === to.x || from.y === to.y;\n return /*#__PURE__*/React.createElement(\"line\", _extends({\n ref: innerRef,\n className: cx('visx-line', className),\n x1: from.x,\n y1: from.y,\n x2: to.x,\n y2: to.y,\n fill: fill,\n shapeRendering: isRectilinear ? 'crispEdges' : 'auto'\n }, restProps));\n}","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","import _pt from \"prop-types\";\nvar _excluded = [\"top\", \"left\", \"transform\", \"className\", \"children\", \"innerRef\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nexport default function Group(_ref) {\n var _ref$top = _ref.top,\n top = _ref$top === void 0 ? 0 : _ref$top,\n _ref$left = _ref.left,\n left = _ref$left === void 0 ? 0 : _ref$left,\n transform = _ref.transform,\n className = _ref.className,\n children = _ref.children,\n innerRef = _ref.innerRef,\n restProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"g\", _extends({\n ref: innerRef,\n className: cx('visx-group', className),\n transform: transform || \"translate(\" + left + \", \" + top + \")\"\n }, restProps), children);\n}\nGroup.propTypes = {\n top: _pt.number,\n left: _pt.number,\n transform: _pt.string,\n className: _pt.string,\n children: _pt.node,\n innerRef: _pt.oneOfType([_pt.string, _pt.func, _pt.object])\n};","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Point = /*#__PURE__*/function () {\n function Point(_ref) {\n var _ref$x = _ref.x,\n x = _ref$x === void 0 ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === void 0 ? 0 : _ref$y;\n\n _defineProperty(this, \"x\", 0);\n\n _defineProperty(this, \"y\", 0);\n\n this.x = x;\n this.y = y;\n }\n\n var _proto = Point.prototype;\n\n _proto.value = function value() {\n return {\n x: this.x,\n y: this.y\n };\n };\n\n _proto.toArray = function toArray() {\n return [this.x, this.y];\n };\n\n return Point;\n}();\n\nexport { Point as default };","export default function getTicks(scale, numTicks) {\n // Because `Scale` is generic type which maybe a subset of AnyD3Scale\n // that may not have `ticks` field,\n // TypeScript will not let us do the `'ticks' in scale` check directly.\n // Have to manually cast and expand type first.\n var s = scale;\n\n if ('ticks' in s) {\n return s.ticks(numTicks);\n }\n\n return s.domain().filter(function (_, index, arr) {\n return numTicks == null || arr.length <= numTicks || index % Math.round((arr.length - 1) / numTicks) === 0;\n });\n}","export default function coerceNumber(val) {\n if ((typeof val === 'function' || typeof val === 'object' && !!val) && 'valueOf' in val) {\n var num = val.valueOf();\n if (typeof num === 'number') return num;\n }\n\n return val;\n}","import _pt from \"prop-types\";\nvar _excluded = [\"top\", \"left\", \"scale\", \"width\", \"stroke\", \"strokeWidth\", \"strokeDasharray\", \"className\", \"children\", \"numTicks\", \"lineStyle\", \"offset\", \"tickValues\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nimport Line from '@visx/shape/lib/shapes/Line';\nimport { Group } from '@visx/group';\nimport { Point } from '@visx/point';\nimport { getTicks, coerceNumber } from '@visx/scale';\nimport getScaleBandwidth from '../utils/getScaleBandwidth';\nexport default function GridRows(_ref) {\n var _ref$top = _ref.top,\n top = _ref$top === void 0 ? 0 : _ref$top,\n _ref$left = _ref.left,\n left = _ref$left === void 0 ? 0 : _ref$left,\n scale = _ref.scale,\n width = _ref.width,\n _ref$stroke = _ref.stroke,\n stroke = _ref$stroke === void 0 ? '#eaf0f6' : _ref$stroke,\n _ref$strokeWidth = _ref.strokeWidth,\n strokeWidth = _ref$strokeWidth === void 0 ? 1 : _ref$strokeWidth,\n strokeDasharray = _ref.strokeDasharray,\n className = _ref.className,\n children = _ref.children,\n _ref$numTicks = _ref.numTicks,\n numTicks = _ref$numTicks === void 0 ? 10 : _ref$numTicks,\n lineStyle = _ref.lineStyle,\n offset = _ref.offset,\n tickValues = _ref.tickValues,\n restProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var ticks = tickValues != null ? tickValues : getTicks(scale, numTicks);\n var scaleOffset = (offset != null ? offset : 0) + getScaleBandwidth(scale) / 2;\n var tickLines = ticks.map(function (d, index) {\n var _coerceNumber;\n\n var y = ((_coerceNumber = coerceNumber(scale(d))) != null ? _coerceNumber : 0) + scaleOffset;\n return {\n index: index,\n from: new Point({\n x: 0,\n y: y\n }),\n to: new Point({\n x: width,\n y: y\n })\n };\n });\n return /*#__PURE__*/React.createElement(Group, {\n className: cx('visx-rows', className),\n top: top,\n left: left\n }, children ? children({\n lines: tickLines\n }) : tickLines.map(function (_ref2) {\n var from = _ref2.from,\n to = _ref2.to,\n index = _ref2.index;\n return /*#__PURE__*/React.createElement(Line, _extends({\n key: \"row-line-\" + index,\n from: from,\n to: to,\n stroke: stroke,\n strokeWidth: strokeWidth,\n strokeDasharray: strokeDasharray,\n style: lineStyle\n }, restProps));\n }));\n}\nGridRows.propTypes = {\n tickValues: _pt.array,\n width: _pt.number.isRequired\n};","export default function getScaleBandwidth(scale) {\n return 'bandwidth' in scale ? scale.bandwidth() : 0;\n}","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(f) {\n let delta = f;\n let compare = f;\n\n if (f.length === 1) {\n delta = (d, x) => f(d) - x;\n compare = ascendingComparator(f);\n }\n\n function left(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n }\n\n function right(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n\n function center(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction ascendingComparator(f) {\n return (d, x) => ascending(f(d), x);\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport millisecond from \"./millisecond.js\";\nimport second from \"./second.js\";\nimport minute from \"./minute.js\";\nimport hour from \"./hour.js\";\nimport day from \"./day.js\";\nimport {sunday as week} from \"./week.js\";\nimport month from \"./month.js\";\nimport year from \"./year.js\";\nimport utcMinute from \"./utcMinute.js\";\nimport utcHour from \"./utcHour.js\";\nimport utcDay from \"./utcDay.js\";\nimport {utcSunday as utcWeek} from \"./utcWeek.js\";\nimport utcMonth from \"./utcMonth.js\";\nimport utcYear from \"./utcYear.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(year, month, week, day, hour, minute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import { interpolateRgb, interpolateLab, interpolateHcl, interpolateHclLong, interpolateHsl, interpolateHslLong, interpolateCubehelix, interpolateCubehelixLong } from 'd3-interpolate';\nvar interpolatorMap = {\n lab: interpolateLab,\n hcl: interpolateHcl,\n 'hcl-long': interpolateHclLong,\n hsl: interpolateHsl,\n 'hsl-long': interpolateHslLong,\n cubehelix: interpolateCubehelix,\n 'cubehelix-long': interpolateCubehelixLong,\n rgb: interpolateRgb\n};\nexport default function createColorInterpolator(interpolate) {\n switch (interpolate) {\n case 'lab':\n case 'hcl':\n case 'hcl-long':\n case 'hsl':\n case 'hsl-long':\n case 'cubehelix':\n case 'cubehelix-long':\n case 'rgb':\n return interpolatorMap[interpolate];\n\n default:\n }\n\n var type = interpolate.type,\n gamma = interpolate.gamma;\n var interpolator = interpolatorMap[type];\n return typeof gamma === 'undefined' ? interpolator : interpolator.gamma(gamma);\n}","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","var TEST_TIME = new Date(Date.UTC(2020, 1, 2, 3, 4, 5));\nvar TEST_FORMAT = '%Y-%m-%d %H:%M';\n/**\n * Check if the scale is UTC or Time scale\n * When local time is equal to UTC, always return true\n * @param scale time or utc scale\n */\n\nexport default function isUtcScale(scale) {\n // The only difference between time and utc scale is\n // whether the tick format function is utcFormat or timeFormat\n var output = scale.tickFormat(1, TEST_FORMAT)(TEST_TIME);\n return output === '2020-02-02 03:04';\n}","import { timeSecond, timeMinute, timeHour, timeDay, timeYear, timeMonth, timeWeek, utcSecond, utcMinute, utcHour, utcDay, utcWeek, utcMonth, utcYear } from 'd3-time';\nimport isUtcScale from '../utils/isUtcScale';\nvar localTimeIntervals = {\n day: timeDay,\n hour: timeHour,\n minute: timeMinute,\n month: timeMonth,\n second: timeSecond,\n week: timeWeek,\n year: timeYear\n};\nvar utcIntervals = {\n day: utcDay,\n hour: utcHour,\n minute: utcMinute,\n month: utcMonth,\n second: utcSecond,\n week: utcWeek,\n year: utcYear\n};\nexport default function applyNice(scale, config) {\n if ('nice' in config && typeof config.nice !== 'undefined' && 'nice' in scale) {\n var nice = config.nice;\n\n if (typeof nice === 'boolean') {\n if (nice) {\n scale.nice();\n }\n } else if (typeof nice === 'number') {\n scale.nice(nice);\n } else {\n var timeScale = scale;\n var isUtc = isUtcScale(timeScale);\n\n if (typeof nice === 'string') {\n timeScale.nice(isUtc ? utcIntervals[nice] : localTimeIntervals[nice]);\n } else {\n var interval = nice.interval,\n step = nice.step;\n var parsedInterval = (isUtc ? utcIntervals[interval] : localTimeIntervals[interval]).every(step);\n\n if (parsedInterval != null) {\n timeScale.nice(parsedInterval);\n }\n }\n }\n }\n}","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","import domain from './domain';\nimport range from './range';\nimport align from './align';\nimport base from './base';\nimport clamp from './clamp';\nimport constant from './constant';\nimport exponent from './exponent';\nimport interpolate from './interpolate';\nimport nice from './nice';\nimport padding from './padding';\nimport reverse from './reverse';\nimport round from './round';\nimport unknown from './unknown';\nimport zero from './zero';\n/**\n * List of all operators, in order of execution\n */\n\nexport var ALL_OPERATORS = [// domain => nice => zero\n'domain', 'nice', 'zero', // interpolate before round\n'interpolate', 'round', // set range then reverse\n'range', 'reverse', // Order does not matter for these operators\n'align', 'base', 'clamp', 'constant', 'exponent', 'padding', 'unknown'];\n// Use Record to enforce that all keys in OperatorType must exist.\nvar operators = {\n domain: domain,\n nice: nice,\n zero: zero,\n interpolate: interpolate,\n round: round,\n align: align,\n base: base,\n clamp: clamp,\n constant: constant,\n exponent: exponent,\n padding: padding,\n range: range,\n reverse: reverse,\n unknown: unknown\n};\nexport default function scaleOperator() {\n for (var _len = arguments.length, ops = new Array(_len), _key = 0; _key < _len; _key++) {\n ops[_key] = arguments[_key];\n }\n\n var selection = new Set(ops);\n var selectedOps = ALL_OPERATORS.filter(function (o) {\n return selection.has(o);\n });\n return function applyOperators(scale, config) {\n if (typeof config !== 'undefined') {\n selectedOps.forEach(function (op) {\n operators[op](scale, config);\n });\n }\n\n return scale;\n };\n}","export default function applyDomain(scale, config) {\n if (config.domain) {\n if ('nice' in scale || 'quantiles' in scale) {\n // continuous input scales\n scale.domain(config.domain);\n } else if ('padding' in scale) {\n // point and band scales\n scale.domain(config.domain);\n } else {\n // ordinal and threshold scale\n scale.domain(config.domain);\n }\n }\n}","export default function applyZero(scale, config) {\n if ('zero' in config && config.zero === true) {\n var domain = scale.domain();\n var a = domain[0],\n b = domain[1];\n var isDescending = b < a;\n\n var _ref = isDescending ? [b, a] : [a, b],\n min = _ref[0],\n max = _ref[1];\n\n var domainWithZero = [Math.min(0, min), Math.max(0, max)];\n scale.domain(isDescending ? domainWithZero.reverse() : domainWithZero);\n }\n}","import createColorInterpolator from '../utils/createColorInterpolator';\nexport default function applyInterpolate(scale, config) {\n if ('interpolate' in config && 'interpolate' in scale && typeof config.interpolate !== 'undefined') {\n var interpolator = createColorInterpolator(config.interpolate);\n scale.interpolate(interpolator);\n }\n}","import { interpolateRound } from 'd3-interpolate';\nexport default function applyRound(scale, config) {\n if ('round' in config && typeof config.round !== 'undefined') {\n if (config.round && 'interpolate' in config && typeof config.interpolate !== 'undefined') {\n console.warn(\"[visx/scale/applyRound] ignoring round: scale config contains round and interpolate. only applying interpolate. config:\", config);\n } else if ('round' in scale) {\n // for point and band scales\n scale.round(config.round);\n } else if ('interpolate' in scale && config.round) {\n // for continuous output scales\n // setting config.round = true\n // is actually setting interpolator to interpolateRound\n // as these scales do not have scale.round() function\n scale.interpolate(interpolateRound);\n }\n }\n}","export default function applyAlign(scale, config) {\n if ('align' in scale && 'align' in config && typeof config.align !== 'undefined') {\n scale.align(config.align);\n }\n}","export default function applyBase(scale, config) {\n if ('base' in scale && 'base' in config && typeof config.base !== 'undefined') {\n scale.base(config.base);\n }\n}","export default function applyClamp(scale, config) {\n if ('clamp' in scale && 'clamp' in config && typeof config.clamp !== 'undefined') {\n scale.clamp(config.clamp);\n }\n}","export default function applyConstant(scale, config) {\n if ('constant' in scale && 'constant' in config && typeof config.constant !== 'undefined') {\n scale.constant(config.constant);\n }\n}","export default function applyExponent(scale, config) {\n if ('exponent' in scale && 'exponent' in config && typeof config.exponent !== 'undefined') {\n scale.exponent(config.exponent);\n }\n}","export default function applyPadding(scale, config) {\n if ('padding' in scale && 'padding' in config && typeof config.padding !== 'undefined') {\n scale.padding(config.padding);\n }\n\n if ('paddingInner' in scale && 'paddingInner' in config && typeof config.paddingInner !== 'undefined') {\n scale.paddingInner(config.paddingInner);\n }\n\n if ('paddingOuter' in scale && 'paddingOuter' in config && typeof config.paddingOuter !== 'undefined') {\n scale.paddingOuter(config.paddingOuter);\n }\n}","export default function applyRange(scale, config) {\n if (config.range) {\n if ('padding' in scale) {\n // point and band scales\n scale.range(config.range);\n } else {\n // the rest\n scale.range(config.range);\n }\n }\n}","export default function applyReverse(scale, config) {\n if (config.reverse) {\n var reversedRange = scale.range().slice().reverse();\n\n if ('padding' in scale) {\n // point and band scales\n scale.range(reversedRange);\n } else {\n // the rest\n scale.range(reversedRange);\n }\n }\n}","export default function applyUnknown(scale, config) {\n if ('unknown' in scale && 'unknown' in config && typeof config.unknown !== 'undefined') {\n scale.unknown(config.unknown);\n }\n}","import { scaleTime } from 'd3-scale';\nimport scaleOperator from '../operators/scaleOperator';\nexport var updateTimeScale = scaleOperator('domain', 'range', 'reverse', 'clamp', 'interpolate', 'nice', 'round');\nexport default function createTimeScale(config) {\n return updateTimeScale(scaleTime(), config);\n}","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import { scaleLinear } from 'd3-scale';\nimport scaleOperator from '../operators/scaleOperator';\nexport var updateLinearScale = scaleOperator('domain', 'range', 'reverse', 'clamp', 'interpolate', 'nice', 'round', 'zero');\nexport default function createLinearScale(config) {\n return updateLinearScale(scaleLinear(), config);\n}","import memoize from 'lodash/memoize';\nvar MEASUREMENT_ELEMENT_ID = '__react_svg_text_measurement_id';\n\nfunction getStringWidth(str, style) {\n try {\n // Calculate length of each word to be used to determine number of words per line\n var textEl = document.getElementById(MEASUREMENT_ELEMENT_ID);\n\n if (!textEl) {\n var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.style.width = '0';\n svg.style.height = '0';\n svg.style.position = 'absolute';\n svg.style.top = '-100%';\n svg.style.left = '-100%';\n textEl = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n textEl.setAttribute('id', MEASUREMENT_ELEMENT_ID);\n svg.appendChild(textEl);\n document.body.appendChild(svg);\n }\n\n Object.assign(textEl.style, style);\n textEl.textContent = str;\n return textEl.getComputedTextLength();\n } catch (e) {\n return null;\n }\n}\n\nexport default memoize(getStringWidth, function (str, style) {\n return str + \"_\" + JSON.stringify(style);\n});","var _excluded = [\"verticalAnchor\", \"scaleToFit\", \"angle\", \"width\", \"lineHeight\", \"capHeight\", \"children\", \"style\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { useMemo } from 'react';\nimport reduceCSSCalc from 'reduce-css-calc';\nimport getStringWidth from '../util/getStringWidth';\n\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\nfunction isXOrYInValid(xOrY) {\n return (// number that is not NaN or Infinity\n typeof xOrY === 'number' && Number.isFinite(xOrY) || // for percentage\n typeof xOrY === 'string'\n );\n}\n\nexport default function useText(props) {\n var _props$verticalAnchor = props.verticalAnchor,\n verticalAnchor = _props$verticalAnchor === void 0 ? 'end' : _props$verticalAnchor,\n _props$scaleToFit = props.scaleToFit,\n scaleToFit = _props$scaleToFit === void 0 ? false : _props$scaleToFit,\n angle = props.angle,\n width = props.width,\n _props$lineHeight = props.lineHeight,\n lineHeight = _props$lineHeight === void 0 ? '1em' : _props$lineHeight,\n _props$capHeight = props.capHeight,\n capHeight = _props$capHeight === void 0 ? '0.71em' : _props$capHeight,\n children = props.children,\n style = props.style,\n textProps = _objectWithoutPropertiesLoose(props, _excluded);\n\n var _textProps$x = textProps.x,\n x = _textProps$x === void 0 ? 0 : _textProps$x,\n _textProps$y = textProps.y,\n y = _textProps$y === void 0 ? 0 : _textProps$y;\n var isXOrYNotValid = !isXOrYInValid(x) || !isXOrYInValid(y);\n\n var _useMemo = useMemo(function () {\n var words = children == null ? [] : children.toString().split(/(?:(?!\\u00A0+)\\s+)/);\n return {\n wordsWithWidth: words.map(function (word) {\n return {\n word: word,\n wordWidth: getStringWidth(word, style) || 0\n };\n }),\n spaceWidth: getStringWidth(\"\\xA0\", style) || 0\n };\n }, [children, style]),\n wordsWithWidth = _useMemo.wordsWithWidth,\n spaceWidth = _useMemo.spaceWidth;\n\n var wordsByLines = useMemo(function () {\n if (isXOrYNotValid) {\n return [];\n } // Only perform calculations if using features that require them (multiline, scaleToFit)\n\n\n if (width || scaleToFit) {\n return wordsWithWidth.reduce(function (result, _ref) {\n var word = _ref.word,\n wordWidth = _ref.wordWidth;\n var currentLine = result[result.length - 1];\n\n if (currentLine && (width == null || scaleToFit || (currentLine.width || 0) + wordWidth + spaceWidth < width)) {\n // Word can be added to an existing line\n currentLine.words.push(word);\n currentLine.width = currentLine.width || 0;\n currentLine.width += wordWidth + spaceWidth;\n } else {\n // Add first word to line or word is too long to scaleToFit on existing line\n var newLine = {\n words: [word],\n width: wordWidth\n };\n result.push(newLine);\n }\n\n return result;\n }, []);\n }\n\n return [{\n words: children == null ? [] : children.toString().split(/(?:(?!\\u00A0+)\\s+)/)\n }];\n }, [isXOrYNotValid, width, scaleToFit, children, wordsWithWidth, spaceWidth]);\n var startDy = useMemo(function () {\n var startDyStr = isXOrYNotValid ? '' : verticalAnchor === 'start' ? reduceCSSCalc(\"calc(\" + capHeight + \")\") : verticalAnchor === 'middle' ? reduceCSSCalc(\"calc(\" + (wordsByLines.length - 1) / 2 + \" * -\" + lineHeight + \" + (\" + capHeight + \" / 2))\") : reduceCSSCalc(\"calc(\" + (wordsByLines.length - 1) + \" * -\" + lineHeight + \")\");\n return startDyStr;\n }, [isXOrYNotValid, verticalAnchor, capHeight, wordsByLines.length, lineHeight]);\n var transform = useMemo(function () {\n var transforms = [];\n\n if (isXOrYNotValid) {\n return '';\n }\n\n if (isNumber(x) && isNumber(y) && isNumber(width) && scaleToFit && wordsByLines.length > 0) {\n var lineWidth = wordsByLines[0].width || 1;\n var sx = scaleToFit === 'shrink-only' ? Math.min(width / lineWidth, 1) : width / lineWidth;\n var sy = sx;\n var originX = x - sx * x;\n var originY = y - sy * y;\n transforms.push(\"matrix(\" + sx + \", 0, 0, \" + sy + \", \" + originX + \", \" + originY + \")\");\n }\n\n if (angle) {\n transforms.push(\"rotate(\" + angle + \", \" + x + \", \" + y + \")\");\n }\n\n return transforms.length > 0 ? transforms.join(' ') : '';\n }, [isXOrYNotValid, x, y, width, scaleToFit, wordsByLines, angle]);\n return {\n wordsByLines: wordsByLines,\n startDy: startDy,\n transform: transform\n };\n}","var _excluded = [\"dx\", \"dy\", \"textAnchor\", \"innerRef\", \"innerTextRef\", \"verticalAnchor\", \"angle\", \"lineHeight\", \"scaleToFit\", \"capHeight\", \"width\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport useText from './hooks/useText';\nvar SVG_STYLE = {\n overflow: 'visible'\n};\nexport default function Text(props) {\n var _props$dx = props.dx,\n dx = _props$dx === void 0 ? 0 : _props$dx,\n _props$dy = props.dy,\n dy = _props$dy === void 0 ? 0 : _props$dy,\n _props$textAnchor = props.textAnchor,\n textAnchor = _props$textAnchor === void 0 ? 'start' : _props$textAnchor,\n innerRef = props.innerRef,\n innerTextRef = props.innerTextRef,\n verticalAnchor = props.verticalAnchor,\n angle = props.angle,\n _props$lineHeight = props.lineHeight,\n lineHeight = _props$lineHeight === void 0 ? '1em' : _props$lineHeight,\n _props$scaleToFit = props.scaleToFit,\n scaleToFit = _props$scaleToFit === void 0 ? false : _props$scaleToFit,\n capHeight = props.capHeight,\n width = props.width,\n textProps = _objectWithoutPropertiesLoose(props, _excluded);\n\n var _textProps$x = textProps.x,\n x = _textProps$x === void 0 ? 0 : _textProps$x,\n fontSize = textProps.fontSize;\n\n var _useText = useText(props),\n wordsByLines = _useText.wordsByLines,\n startDy = _useText.startDy,\n transform = _useText.transform;\n\n return /*#__PURE__*/React.createElement(\"svg\", {\n ref: innerRef,\n x: dx,\n y: dy,\n fontSize: fontSize,\n style: SVG_STYLE\n }, wordsByLines.length > 0 ? /*#__PURE__*/React.createElement(\"text\", _extends({\n ref: innerTextRef,\n transform: transform\n }, textProps, {\n textAnchor: textAnchor\n }), wordsByLines.map(function (line, index) {\n return /*#__PURE__*/React.createElement(\"tspan\", {\n key: index,\n x: x,\n dy: index === 0 ? startDy : lineHeight\n }, line.words.join(' '));\n })) : null);\n}","var Orientation = {\n top: 'top',\n left: 'left',\n right: 'right',\n bottom: 'bottom'\n};\nexport default Orientation;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\nimport cx from 'classnames';\nimport { Line } from '@visx/shape';\nimport { Group } from '@visx/group';\nimport { Text } from '@visx/text';\nimport Orientation from '../constants/orientation';\nexport default function Ticks(_ref) {\n var hideTicks = _ref.hideTicks,\n horizontal = _ref.horizontal,\n orientation = _ref.orientation,\n tickClassName = _ref.tickClassName,\n tickComponent = _ref.tickComponent,\n allTickLabelProps = _ref.tickLabelProps,\n _ref$tickStroke = _ref.tickStroke,\n tickStroke = _ref$tickStroke === void 0 ? '#222' : _ref$tickStroke,\n tickTransform = _ref.tickTransform,\n ticks = _ref.ticks,\n strokeWidth = _ref.strokeWidth,\n tickLineProps = _ref.tickLineProps;\n return ticks.map(function (_ref2) {\n var _allTickLabelProps$in;\n\n var value = _ref2.value,\n index = _ref2.index,\n from = _ref2.from,\n to = _ref2.to,\n formattedValue = _ref2.formattedValue;\n var tickLabelProps = (_allTickLabelProps$in = allTickLabelProps[index]) != null ? _allTickLabelProps$in : {};\n var tickLabelFontSize = Math.max(10, typeof tickLabelProps.fontSize === 'number' && tickLabelProps.fontSize || 0);\n var tickYCoord = to.y + (horizontal && orientation !== Orientation.top ? tickLabelFontSize : 0);\n return /*#__PURE__*/React.createElement(Group, {\n key: \"visx-tick-\" + value + \"-\" + index,\n className: cx('visx-axis-tick', tickClassName),\n transform: tickTransform\n }, !hideTicks && /*#__PURE__*/React.createElement(Line, _extends({\n from: from,\n to: to,\n stroke: tickStroke,\n strokeWidth: strokeWidth,\n strokeLinecap: \"square\"\n }, tickLineProps)), tickComponent ? tickComponent(_extends({}, tickLabelProps, {\n x: to.x,\n y: tickYCoord,\n formattedValue: formattedValue\n })) : /*#__PURE__*/React.createElement(Text, _extends({\n x: to.x,\n y: tickYCoord\n }, tickLabelProps), formattedValue));\n });\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\nimport cx from 'classnames';\nimport { Line } from '@visx/shape';\nimport { Text } from '@visx/text';\nimport getLabelTransform from '../utils/getLabelTransform';\nimport Ticks from './Ticks';\nimport { Orientation } from '..';\nvar defaultTextProps = {\n textAnchor: 'middle',\n fontFamily: 'Arial',\n fontSize: 10,\n fill: '#222'\n};\nexport default function AxisRenderer(_ref) {\n var axisFromPoint = _ref.axisFromPoint,\n axisLineClassName = _ref.axisLineClassName,\n axisToPoint = _ref.axisToPoint,\n hideAxisLine = _ref.hideAxisLine,\n hideTicks = _ref.hideTicks,\n horizontal = _ref.horizontal,\n _ref$label = _ref.label,\n label = _ref$label === void 0 ? '' : _ref$label,\n labelClassName = _ref.labelClassName,\n _ref$labelOffset = _ref.labelOffset,\n labelOffset = _ref$labelOffset === void 0 ? 14 : _ref$labelOffset,\n _ref$labelProps = _ref.labelProps,\n labelProps = _ref$labelProps === void 0 ? defaultTextProps : _ref$labelProps,\n _ref$orientation = _ref.orientation,\n orientation = _ref$orientation === void 0 ? Orientation.bottom : _ref$orientation,\n scale = _ref.scale,\n _ref$stroke = _ref.stroke,\n stroke = _ref$stroke === void 0 ? '#222' : _ref$stroke,\n strokeDasharray = _ref.strokeDasharray,\n _ref$strokeWidth = _ref.strokeWidth,\n strokeWidth = _ref$strokeWidth === void 0 ? 1 : _ref$strokeWidth,\n tickClassName = _ref.tickClassName,\n tickComponent = _ref.tickComponent,\n tickLineProps = _ref.tickLineProps,\n _ref$tickLabelProps = _ref.tickLabelProps,\n tickLabelProps = _ref$tickLabelProps === void 0 ? function () {\n return defaultTextProps;\n } : _ref$tickLabelProps,\n _ref$tickLength = _ref.tickLength,\n tickLength = _ref$tickLength === void 0 ? 8 : _ref$tickLength,\n _ref$tickStroke = _ref.tickStroke,\n tickStroke = _ref$tickStroke === void 0 ? '#222' : _ref$tickStroke,\n tickTransform = _ref.tickTransform,\n ticks = _ref.ticks,\n _ref$ticksComponent = _ref.ticksComponent,\n ticksComponent = _ref$ticksComponent === void 0 ? Ticks : _ref$ticksComponent;\n // compute the max tick label size to compute label offset\n var allTickLabelProps = ticks.map(function (_ref2) {\n var value = _ref2.value,\n index = _ref2.index;\n return tickLabelProps(value, index, ticks);\n });\n var maxTickLabelFontSize = Math.max.apply(Math, [10].concat(allTickLabelProps.map(function (props) {\n return typeof props.fontSize === 'number' ? props.fontSize : 0;\n })));\n return /*#__PURE__*/React.createElement(React.Fragment, null, ticksComponent({\n hideTicks: hideTicks,\n horizontal: horizontal,\n orientation: orientation,\n scale: scale,\n tickClassName: tickClassName,\n tickComponent: tickComponent,\n tickLabelProps: allTickLabelProps,\n tickStroke: tickStroke,\n tickTransform: tickTransform,\n ticks: ticks,\n strokeWidth: strokeWidth,\n tickLineProps: tickLineProps\n }), !hideAxisLine && /*#__PURE__*/React.createElement(Line, {\n className: cx('visx-axis-line', axisLineClassName),\n from: axisFromPoint,\n to: axisToPoint,\n stroke: stroke,\n strokeWidth: strokeWidth,\n strokeDasharray: strokeDasharray\n }), label && /*#__PURE__*/React.createElement(Text, _extends({\n className: cx('visx-axis-label', labelClassName)\n }, getLabelTransform({\n labelOffset: labelOffset,\n labelProps: labelProps,\n orientation: orientation,\n range: scale.range(),\n tickLabelFontSize: maxTickLabelFontSize,\n tickLength: tickLength\n }), labelProps), label));\n}","import Orientation from '../constants/orientation';\nexport default function getLabelTransform(_ref) {\n var labelOffset = _ref.labelOffset,\n labelProps = _ref.labelProps,\n orientation = _ref.orientation,\n range = _ref.range,\n tickLabelFontSize = _ref.tickLabelFontSize,\n tickLength = _ref.tickLength;\n var sign = orientation === Orientation.left || orientation === Orientation.top ? -1 : 1;\n var x;\n var y;\n var transform;\n\n if (orientation === Orientation.top || orientation === Orientation.bottom) {\n var yBottomOffset = orientation === Orientation.bottom && typeof labelProps.fontSize === 'number' ? labelProps.fontSize : 0;\n x = (Number(range[0]) + Number(range[range.length - 1])) / 2;\n y = sign * (tickLength + labelOffset + tickLabelFontSize + yBottomOffset);\n } else {\n x = sign * ((Number(range[0]) + Number(range[range.length - 1])) / 2);\n y = -(tickLength + labelOffset);\n transform = \"rotate(\" + sign * 90 + \")\";\n }\n\n return {\n x: x,\n y: y,\n transform: transform\n };\n}","export default function toString(x) {\n return x == null ? void 0 : x.toString();\n}","import { Point } from '@visx/point';\nexport default function createPoint(_ref, horizontal) {\n var x = _ref.x,\n y = _ref.y;\n return new Point(horizontal ? {\n x: x,\n y: y\n } : {\n x: y,\n y: x\n });\n}","import _pt from \"prop-types\";\nvar _excluded = [\"children\", \"axisClassName\", \"hideAxisLine\", \"hideTicks\", \"hideZero\", \"left\", \"numTicks\", \"orientation\", \"rangePadding\", \"scale\", \"tickFormat\", \"tickLength\", \"tickValues\", \"top\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nimport { Group } from '@visx/group';\nimport { getTicks, coerceNumber } from '@visx/scale';\nimport AxisRenderer from './AxisRenderer';\nimport getTickPosition from '../utils/getTickPosition';\nimport getTickFormatter from '../utils/getTickFormatter';\nimport createPoint from '../utils/createPoint';\nimport Orientation from '../constants/orientation';\nexport default function Axis(_ref) {\n var _ref$children = _ref.children,\n children = _ref$children === void 0 ? AxisRenderer : _ref$children,\n axisClassName = _ref.axisClassName,\n _ref$hideAxisLine = _ref.hideAxisLine,\n hideAxisLine = _ref$hideAxisLine === void 0 ? false : _ref$hideAxisLine,\n _ref$hideTicks = _ref.hideTicks,\n hideTicks = _ref$hideTicks === void 0 ? false : _ref$hideTicks,\n _ref$hideZero = _ref.hideZero,\n hideZero = _ref$hideZero === void 0 ? false : _ref$hideZero,\n _ref$left = _ref.left,\n left = _ref$left === void 0 ? 0 : _ref$left,\n _ref$numTicks = _ref.numTicks,\n numTicks = _ref$numTicks === void 0 ? 10 : _ref$numTicks,\n _ref$orientation = _ref.orientation,\n orientation = _ref$orientation === void 0 ? Orientation.bottom : _ref$orientation,\n _ref$rangePadding = _ref.rangePadding,\n rangePadding = _ref$rangePadding === void 0 ? 0 : _ref$rangePadding,\n scale = _ref.scale,\n tickFormat = _ref.tickFormat,\n _ref$tickLength = _ref.tickLength,\n tickLength = _ref$tickLength === void 0 ? 8 : _ref$tickLength,\n tickValues = _ref.tickValues,\n _ref$top = _ref.top,\n top = _ref$top === void 0 ? 0 : _ref$top,\n restProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var format = tickFormat != null ? tickFormat : getTickFormatter(scale);\n var isLeft = orientation === Orientation.left;\n var isTop = orientation === Orientation.top;\n var horizontal = isTop || orientation === Orientation.bottom;\n var tickPosition = getTickPosition(scale);\n var tickSign = isLeft || isTop ? -1 : 1;\n var range = scale.range();\n var axisFromPoint = createPoint({\n x: Number(range[0]) + 0.5 - rangePadding,\n y: 0\n }, horizontal);\n var axisToPoint = createPoint({\n x: Number(range[range.length - 1]) + 0.5 + rangePadding,\n y: 0\n }, horizontal);\n var filteredTickValues = (tickValues != null ? tickValues : getTicks(scale, numTicks)).filter(function (value) {\n return !hideZero || value !== 0 && value !== '0';\n }).map(function (value, index) {\n return {\n value: value,\n index: index\n };\n });\n var ticks = filteredTickValues.map(function (_ref2) {\n var value = _ref2.value,\n index = _ref2.index;\n var scaledValue = coerceNumber(tickPosition(value));\n return {\n value: value,\n index: index,\n from: createPoint({\n x: scaledValue,\n y: 0\n }, horizontal),\n to: createPoint({\n x: scaledValue,\n y: tickLength * tickSign\n }, horizontal),\n formattedValue: format(value, index, filteredTickValues)\n };\n });\n return /*#__PURE__*/React.createElement(Group, {\n className: cx('visx-axis', axisClassName),\n top: top,\n left: left\n }, children(_extends({}, restProps, {\n axisFromPoint: axisFromPoint,\n axisToPoint: axisToPoint,\n hideAxisLine: hideAxisLine,\n hideTicks: hideTicks,\n hideZero: hideZero,\n horizontal: horizontal,\n numTicks: numTicks,\n orientation: orientation,\n rangePadding: rangePadding,\n scale: scale,\n tickFormat: format,\n tickLength: tickLength,\n tickPosition: tickPosition,\n tickSign: tickSign,\n ticks: ticks\n })));\n}","import { toString } from '@visx/scale';\n\n/**\n * Returns a tick position for the given tick value\n */\nexport default function getTickFormatter(scale) {\n // Broaden type before using 'xxx' in s as typeguard.\n var s = scale; // For point or band scales,\n // have to add offset to make the tick centered.\n\n if ('tickFormat' in s) {\n return s.tickFormat();\n }\n\n return toString;\n}","/**\n * Create a function that returns a tick position for the given tick value\n */\nexport default function getTickPosition(scale, align) {\n if (align === void 0) {\n align = 'center';\n }\n\n // Broaden type before using 'xxx' in s as typeguard.\n var s = scale; // For point or band scales,\n // have to add offset to make the tick at center or end.\n\n if (align !== 'start' && 'bandwidth' in s) {\n var offset = s.bandwidth();\n if (align === 'center') offset /= 2;\n if (s.round()) offset = Math.round(offset);\n return function (d) {\n var scaledValue = s(d);\n return typeof scaledValue === 'number' ? scaledValue + offset : scaledValue;\n };\n }\n\n return scale;\n}","var _excluded = [\"axisClassName\", \"labelOffset\", \"tickLabelProps\", \"tickLength\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nimport Axis from './Axis';\nimport Orientation from '../constants/orientation';\nexport var bottomTickLabelProps = function bottomTickLabelProps() {\n return {\n dy: '0.25em',\n fill: '#222',\n fontFamily: 'Arial',\n fontSize: 10,\n textAnchor: 'middle'\n };\n};\nexport default function AxisBottom(_ref) {\n var axisClassName = _ref.axisClassName,\n _ref$labelOffset = _ref.labelOffset,\n labelOffset = _ref$labelOffset === void 0 ? 8 : _ref$labelOffset,\n _ref$tickLabelProps = _ref.tickLabelProps,\n tickLabelProps = _ref$tickLabelProps === void 0 ? bottomTickLabelProps : _ref$tickLabelProps,\n _ref$tickLength = _ref.tickLength,\n tickLength = _ref$tickLength === void 0 ? 8 : _ref$tickLength,\n restProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(Axis, _extends({\n axisClassName: cx('visx-axis-bottom', axisClassName),\n labelOffset: labelOffset,\n orientation: Orientation.bottom,\n tickLabelProps: tickLabelProps,\n tickLength: tickLength\n }, restProps));\n}","var _excluded = [\"axisClassName\", \"labelOffset\", \"tickLabelProps\", \"tickLength\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nimport Axis from './Axis';\nimport Orientation from '../constants/orientation';\nexport var leftTickLabelProps = function leftTickLabelProps() {\n return {\n dx: '-0.25em',\n dy: '0.25em',\n fill: '#222',\n fontFamily: 'Arial',\n fontSize: 10,\n textAnchor: 'end'\n };\n};\nexport default function AxisLeft(_ref) {\n var axisClassName = _ref.axisClassName,\n _ref$labelOffset = _ref.labelOffset,\n labelOffset = _ref$labelOffset === void 0 ? 36 : _ref$labelOffset,\n _ref$tickLabelProps = _ref.tickLabelProps,\n tickLabelProps = _ref$tickLabelProps === void 0 ? leftTickLabelProps : _ref$tickLabelProps,\n _ref$tickLength = _ref.tickLength,\n tickLength = _ref$tickLength === void 0 ? 8 : _ref$tickLength,\n restProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(Axis, _extends({\n axisClassName: cx('visx-axis-left', axisClassName),\n labelOffset: labelOffset,\n orientation: Orientation.left,\n tickLabelProps: tickLabelProps,\n tickLength: tickLength\n }, restProps));\n}","import _pt from \"prop-types\";\nvar _excluded = [\"className\", \"top\", \"left\", \"offsetLeft\", \"offsetTop\", \"style\", \"children\", \"unstyled\", \"applyPositionStyle\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nexport var defaultStyles = {\n position: 'absolute',\n backgroundColor: 'white',\n color: '#666666',\n padding: '.3rem .5rem',\n borderRadius: '3px',\n fontSize: '14px',\n boxShadow: '0 1px 2px rgba(33,33,33,0.2)',\n lineHeight: '1em',\n pointerEvents: 'none'\n};\nexport default function Tooltip(_ref) {\n var className = _ref.className,\n top = _ref.top,\n left = _ref.left,\n _ref$offsetLeft = _ref.offsetLeft,\n offsetLeft = _ref$offsetLeft === void 0 ? 10 : _ref$offsetLeft,\n _ref$offsetTop = _ref.offsetTop,\n offsetTop = _ref$offsetTop === void 0 ? 10 : _ref$offsetTop,\n _ref$style = _ref.style,\n style = _ref$style === void 0 ? defaultStyles : _ref$style,\n children = _ref.children,\n _ref$unstyled = _ref.unstyled,\n unstyled = _ref$unstyled === void 0 ? false : _ref$unstyled,\n _ref$applyPositionSty = _ref.applyPositionStyle,\n applyPositionStyle = _ref$applyPositionSty === void 0 ? false : _ref$applyPositionSty,\n restProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: cx('visx-tooltip', className),\n style: _extends({\n top: top == null || offsetTop == null ? top : top + offsetTop,\n left: left == null || offsetLeft == null ? left : left + offsetLeft\n }, applyPositionStyle && {\n position: 'absolute'\n }, !unstyled && style)\n }, restProps), children);\n}\nTooltip.propTypes = {\n children: _pt.node,\n className: _pt.string,\n left: _pt.number,\n offsetLeft: _pt.number,\n offsetTop: _pt.number,\n top: _pt.number,\n applyPositionStyle: _pt.bool,\n unstyled: _pt.bool\n};","var _excluded = [\"tooltipOpen\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React, { useState, useCallback } from 'react';\nexport default function useTooltip(\n/** Optional initial TooltipState. */\ninitialTooltipState) {\n var _useState = useState(_extends({\n tooltipOpen: false\n }, initialTooltipState)),\n tooltipState = _useState[0],\n setTooltipState = _useState[1];\n\n var showTooltip = useCallback(function (showArgs) {\n return setTooltipState(typeof showArgs === 'function' ? function (_ref) {\n var tooltipOpen = _ref.tooltipOpen,\n show = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, showArgs(show), {\n tooltipOpen: true\n });\n } : {\n tooltipOpen: true,\n tooltipLeft: showArgs.tooltipLeft,\n tooltipTop: showArgs.tooltipTop,\n tooltipData: showArgs.tooltipData\n });\n }, [setTooltipState]);\n var hideTooltip = useCallback(function () {\n return setTooltipState({\n tooltipOpen: false,\n tooltipLeft: undefined,\n tooltipTop: undefined,\n tooltipData: undefined\n });\n }, [setTooltipState]);\n return {\n tooltipOpen: tooltipState.tooltipOpen,\n tooltipLeft: tooltipState.tooltipLeft,\n tooltipTop: tooltipState.tooltipTop,\n tooltipData: tooltipState.tooltipData,\n updateTooltip: setTooltipState,\n showTooltip: showTooltip,\n hideTooltip: hideTooltip\n };\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\nimport useTooltip from '../hooks/useTooltip';\nexport default function withTooltip(BaseComponent, containerProps, renderContainer) {\n if (containerProps === void 0) {\n containerProps = {\n style: {\n position: 'relative',\n width: 'inherit',\n height: 'inherit'\n }\n };\n }\n\n if (renderContainer === void 0) {\n renderContainer = function renderContainer(children, props) {\n return /*#__PURE__*/React.createElement(\"div\", props, children);\n };\n }\n\n var WrappedComponent = function WrappedComponent(props) {\n var tooltipProps = useTooltip();\n return renderContainer( /*#__PURE__*/React.createElement(BaseComponent, _extends({}, tooltipProps, props)), containerProps);\n };\n\n return WrappedComponent;\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { isMouseEvent, isTouchEvent } from './typeGuards';\nvar DEFAULT_POINT = {\n x: 0,\n y: 0\n};\nexport default function getXAndYFromEvent(event) {\n if (!event) return _extends({}, DEFAULT_POINT);\n\n if (isTouchEvent(event)) {\n return event.changedTouches.length > 0 ? {\n x: event.changedTouches[0].clientX,\n y: event.changedTouches[0].clientY\n } : _extends({}, DEFAULT_POINT);\n }\n\n if (isMouseEvent(event)) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n } // for focus events try to extract the center position of the target element\n\n\n var target = event == null ? void 0 : event.target;\n var boundingClientRect = target && 'getBoundingClientRect' in target ? target.getBoundingClientRect() : null;\n if (!boundingClientRect) return _extends({}, DEFAULT_POINT);\n return {\n x: boundingClientRect.x + boundingClientRect.width / 2,\n y: boundingClientRect.y + boundingClientRect.height / 2\n };\n}","import { Point } from '@visx/point';\nimport { isSVGElement, isSVGGraphicsElement, isSVGSVGElement } from './typeGuards';\nimport getXAndYFromEvent from './getXAndYFromEvent';\nexport default function localPoint(node, event) {\n if (!node || !event) return null;\n var coords = getXAndYFromEvent(event); // find top-most SVG\n\n var svg = isSVGElement(node) ? node.ownerSVGElement : node;\n var screenCTM = isSVGGraphicsElement(svg) ? svg.getScreenCTM() : null;\n\n if (isSVGSVGElement(svg) && screenCTM) {\n var point = svg.createSVGPoint();\n point.x = coords.x;\n point.y = coords.y;\n point = point.matrixTransform(screenCTM.inverse());\n return new Point({\n x: point.x,\n y: point.y\n });\n } // fall back to bounding box\n\n\n var rect = node.getBoundingClientRect();\n return new Point({\n x: coords.x - rect.left - node.clientLeft,\n y: coords.y - rect.top - node.clientTop\n });\n}","export function isElement(elem) {\n return !!elem && elem instanceof Element;\n} // functional definition of isSVGElement. Note that SVGSVGElements are HTMLElements\n\nexport function isSVGElement(elem) {\n return !!elem && (elem instanceof SVGElement || 'ownerSVGElement' in elem);\n} // functional definition of SVGGElement\n\nexport function isSVGSVGElement(elem) {\n return !!elem && 'createSVGPoint' in elem;\n}\nexport function isSVGGraphicsElement(elem) {\n return !!elem && 'getScreenCTM' in elem;\n} // functional definition of TouchEvent\n\nexport function isTouchEvent(event) {\n return !!event && 'changedTouches' in event;\n} // functional definition of MouseEvent\n\nexport function isMouseEvent(event) {\n return !!event && 'clientX' in event;\n} // functional definition of event\n\nexport function isEvent(event) {\n return !!event && (event instanceof Event || 'nativeEvent' in event && event.nativeEvent instanceof Event);\n}","import localPointGeneric from './localPointGeneric';\nimport { isElement, isEvent } from './typeGuards';\n/** Handles two signatures for backwards compatibility. */\n\nexport default function localPoint(nodeOrEvent, maybeEvent) {\n // localPoint(node, event)\n if (isElement(nodeOrEvent) && maybeEvent) {\n return localPointGeneric(nodeOrEvent, maybeEvent);\n } // localPoint(event)\n\n\n if (isEvent(nodeOrEvent)) {\n var event = nodeOrEvent;\n var node = event.target;\n if (node) return localPointGeneric(node, event);\n }\n\n return null;\n}","import _pt from \"prop-types\";\nvar _excluded = [\"children\", \"id\", \"from\", \"to\", \"x1\", \"y1\", \"x2\", \"y2\", \"fromOffset\", \"fromOpacity\", \"toOffset\", \"toOpacity\", \"rotate\", \"transform\", \"vertical\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nexport default function LinearGradient(_ref) {\n var children = _ref.children,\n id = _ref.id,\n from = _ref.from,\n to = _ref.to,\n _x1 = _ref.x1,\n _y1 = _ref.y1,\n _x2 = _ref.x2,\n _y2 = _ref.y2,\n _ref$fromOffset = _ref.fromOffset,\n fromOffset = _ref$fromOffset === void 0 ? '0%' : _ref$fromOffset,\n _ref$fromOpacity = _ref.fromOpacity,\n fromOpacity = _ref$fromOpacity === void 0 ? 1 : _ref$fromOpacity,\n _ref$toOffset = _ref.toOffset,\n toOffset = _ref$toOffset === void 0 ? '100%' : _ref$toOffset,\n _ref$toOpacity = _ref.toOpacity,\n toOpacity = _ref$toOpacity === void 0 ? 1 : _ref$toOpacity,\n rotate = _ref.rotate,\n transform = _ref.transform,\n _ref$vertical = _ref.vertical,\n vertical = _ref$vertical === void 0 ? true : _ref$vertical,\n restProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var x1 = _x1;\n var x2 = _x2;\n var y1 = _y1;\n var y2 = _y2;\n\n if (vertical && !x1 && !x2 && !y1 && !y2) {\n x1 = '0';\n x2 = '0';\n y1 = '0';\n y2 = '1';\n }\n\n return /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", _extends({\n id: id,\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n gradientTransform: rotate ? \"rotate(\" + rotate + \")\" : transform\n }, restProps), !!children && children, !children && /*#__PURE__*/React.createElement(\"stop\", {\n offset: fromOffset,\n stopColor: from,\n stopOpacity: fromOpacity\n }), !children && /*#__PURE__*/React.createElement(\"stop\", {\n offset: toOffset,\n stopColor: to,\n stopOpacity: toOpacity\n })));\n}\nLinearGradient.propTypes = {\n id: _pt.string.isRequired,\n from: _pt.string,\n to: _pt.string,\n x1: _pt.oneOfType([_pt.string, _pt.number]),\n x2: _pt.oneOfType([_pt.string, _pt.number]),\n y1: _pt.oneOfType([_pt.string, _pt.number]),\n y2: _pt.oneOfType([_pt.string, _pt.number]),\n fromOffset: _pt.oneOfType([_pt.string, _pt.number]),\n fromOpacity: _pt.oneOfType([_pt.string, _pt.number]),\n toOffset: _pt.oneOfType([_pt.string, _pt.number]),\n toOpacity: _pt.oneOfType([_pt.string, _pt.number]),\n rotate: _pt.oneOfType([_pt.string, _pt.number]),\n transform: _pt.string,\n children: _pt.node,\n vertical: _pt.bool\n};","export default function(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","import React, { useMemo, useCallback } from 'react';\nimport { AreaClosed, Line, Bar, LinePath } from '@visx/shape';\nimport { curveMonotoneX } from '@visx/curve';\nimport { GridRows } from '@visx/grid';\nimport { scaleTime, scaleLinear } from '@visx/scale';\nimport { AxisLeft, AxisBottom } from '@visx/axis';\nimport { withTooltip, defaultStyles } from '@visx/tooltip';\nimport { localPoint } from '@visx/event';\nimport { LinearGradient } from '@visx/gradient';\nimport { max, extent } from 'd3-array';\nimport { timeFormat } from 'd3-time-format';\n\nimport { datesAreTheSameDay } from 'src/utils/dates';\n\nimport './LineChart.css';\n\nexport const background = '#ffffff';\nconst tooltipStyles = {\n ...defaultStyles,\n background,\n color: 'black',\n padding: 12,\n borderRadius: 12,\n};\n\n// util\nconst formatDate = timeFormat('%B %d, %Y');\n\nexport default withTooltip(\n ({\n width,\n height,\n margin = { top: 10, right: 30, bottom: 50, left: 40 },\n showTooltip,\n hideTooltip,\n tooltipData,\n tooltipTop = 0,\n tooltipLeft = 0,\n color,\n data,\n getYValue = (d) => d.value,\n getXValue = (d) => new Date(d.date),\n }) => {\n if (width < 10) return null;\n\n // bounds\n const innerWidth = width - margin.left - margin.right;\n const innerHeight = height - margin.top - margin.bottom;\n\n // scales\n const dateScale = useMemo(\n () =>\n scaleTime({\n range: [margin.left, innerWidth + margin.left],\n domain: extent(data, getXValue),\n nice: { interval: 'day', step: 1 },\n }),\n [data, getXValue, innerWidth, margin.left]\n );\n\n const dataValueScale = useMemo(\n () =>\n scaleLinear({\n range: [innerHeight, margin.top],\n domain: [0, (max(data, getYValue) || 0) + innerHeight / 200],\n nice: true,\n }),\n [innerHeight, margin.top, data, getYValue]\n );\n\n // tooltip handler\n const handleTooltip = useCallback(\n (event) => {\n const { x } = localPoint(event) || { x: 0 };\n const x0 = dateScale.invert(x);\n const index = data.findIndex((point) => datesAreTheSameDay(x0, new Date(getXValue(point))));\n let d = data[index];\n showTooltip({\n tooltipData: d,\n tooltipLeft: x,\n tooltipTop: dataValueScale(getYValue(d)) + margin.top,\n });\n },\n [dateScale, data, getXValue, showTooltip, dataValueScale, getYValue, margin.top]\n );\n\n return (\n
    \n \n \n \n \n dateScale(getXValue(d)) ?? 0}\n y={(d) => (dataValueScale(getYValue(d)) ?? 0) + margin.top}\n yScale={dataValueScale}\n strokeWidth={0}\n stroke={color}\n fill=\"url(#area-gradient)\"\n curve={curveMonotoneX}\n />\n dateScale(getXValue(d)) ?? 0}\n y={(d) => (dataValueScale(getYValue(d)) ?? 0) + margin.top}\n />\n hideTooltip()}\n />\n 600 ? (data.length > 15 ? 15 : data.length) : 5}\n hideTicks\n tickClassName=\"line-chart-tick\"\n />\n \n {tooltipData && (\n \n \n \n \n \n )}\n \n {tooltipData && (\n \n

    {`$${getYValue(tooltipData)}`}

    \n

    {`${formatDate(getXValue(tooltipData))}`}

    \n
    \n )}\n \n );\n }\n);\n","const CalendarIcon = ({ color = '#838383', className = '' }) => (\n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default CalendarIcon;\n","const ChartFilterButton = ({ onClick, isFilterApplied, className = '', children }) => (\n \n {children}\n \n);\n\nexport default ChartFilterButton;\n","class t extends Date{static parseDateTime(e,s=\"YYYY-MM-DD\",n=\"en-US\"){if(!e)return new Date((new Date).setHours(0,0,0,0));if(e instanceof t)return e.toJSDate();if(e instanceof Date)return e;if(/^-?\\d{10,}$/.test(String(e)))return new Date(Number(e));if(\"string\"==typeof e){const r=[];let a=null;for(;null!=(a=t.regex.exec(s));)\"\\\\\"!==a[1]&&r.push(a);if(r.length){const s={year:null,month:null,shortMonth:null,longMonth:null,day:null,hour:0,minute:0,second:0,ampm:null,value:\"\"};r[0].index>0&&(s.value+=\".*?\");for(const[e,a]of Object.entries(r)){const r=Number(e),{group:i,pattern:h}=t.formatPatterns(a[0],n);s[i]=r+1,s.value+=h,s.value+=\".*?\"}const a=new RegExp(`^${s.value}$`);if(a.test(e)){const r=a.exec(e),i=Number(r[s.year]);let h=null;s.month?h=Number(r[s.month])-1:s.shortMonth?h=t.shortMonths(n).indexOf(r[s.shortMonth]):s.longMonth&&(h=t.longMonths(n).indexOf(r[s.longMonth]));const g=Number(r[s.day])||1,o=Number(r[s.hour]);let u=Number.isNaN(o)?0:o;const c=Number(r[s.minute]),l=Number.isNaN(c)?0:c,m=Number(r[s.second]),d=Number.isNaN(m)?0:m,M=r[s.ampm];return M&&\"PM\"===M&&(u+=12,24===u&&(u=0)),new Date(i,h,g,u,l,d,0)}}}return new Date((new Date).setHours(0,0,0,0))}static regex=/(\\\\)?(Y{2,4}|M{1,4}|D{1,2}|H{1,2}|h{1,2}|m{1,2}|s{1,2}|A|a)/g;static MONTH_JS=[0,1,2,3,4,5,6,7,8,9,10,11];static shortMonths(e){return t.MONTH_JS.map((t=>new Date(2019,t).toLocaleString(e,{month:\"short\"})))}static longMonths(e){return t.MONTH_JS.map((t=>new Date(2019,t).toLocaleString(e,{month:\"long\"})))}static formatPatterns(e,s){switch(e){case\"YY\":case\"YYYY\":return{group:\"year\",pattern:`(\\\\d{${e.length}})`};case\"M\":return{group:\"month\",pattern:\"(\\\\d{1,2})\"};case\"MM\":return{group:\"month\",pattern:\"(\\\\d{2})\"};case\"MMM\":return{group:\"shortMonth\",pattern:`(${t.shortMonths(s).join(\"|\")})`};case\"MMMM\":return{group:\"longMonth\",pattern:`(${t.longMonths(s).join(\"|\")})`};case\"D\":return{group:\"day\",pattern:\"(\\\\d{1,2})\"};case\"DD\":return{group:\"day\",pattern:\"(\\\\d{2})\"};case\"h\":case\"H\":return{group:\"hour\",pattern:\"(\\\\d{1,2})\"};case\"hh\":case\"HH\":return{group:\"hour\",pattern:\"(\\\\d{2})\"};case\"m\":return{group:\"minute\",pattern:\"(\\\\d{1,2})\"};case\"mm\":return{group:\"minute\",pattern:\"(\\\\d{2})\"};case\"s\":return{group:\"second\",pattern:\"(\\\\d{1,2})\"};case\"ss\":return{group:\"second\",pattern:\"(\\\\d{2})\"};case\"a\":case\"A\":return{group:\"ampm\",pattern:\"(AM|PM|am|pm)\"}}}lang;constructor(e=null,s=\"YYYY-MM-DD\",n=\"en-US\"){super(t.parseDateTime(e,s,n)),this.lang=n}getWeek(t){const e=new Date(this.midnight_ts(this)),s=(this.getDay()+(7-t))%7;e.setDate(e.getDate()-s);const n=e.getTime();return e.setMonth(0,1),e.getDay()!==t&&e.setMonth(0,1+(4-e.getDay()+7)%7),1+Math.ceil((n-e.getTime())/6048e5)}clone(){return new t(this)}toJSDate(){return new Date(this)}inArray(t,e=\"[]\"){return t.some((t=>t instanceof Array?this.isBetween(t[0],t[1],e):this.isSame(t,\"day\")))}isBetween(t,e,s=\"()\"){switch(s){default:case\"()\":return this.midnight_ts(this)>this.midnight_ts(t)&&this.midnight_ts(this)=this.midnight_ts(t)&&this.midnight_ts(this)this.midnight_ts(t)&&this.midnight_ts(this)<=this.midnight_ts(e);case\"[]\":return this.midnight_ts()>=this.midnight_ts(t)&&this.midnight_ts()<=this.midnight_ts(e)}}isBefore(t,e=\"days\"){switch(e){case\"day\":case\"days\":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case\"month\":case\"months\":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>new Date(this.getFullYear(),this.getMonth(),1).getTime();case\"year\":case\"years\":return t.getFullYear()>this.getFullYear()}throw new Error(\"isBefore: Invalid unit!\")}isSameOrBefore(t,e=\"days\"){switch(e){case\"day\":case\"days\":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>=new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case\"month\":case\"months\":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>=new Date(this.getFullYear(),this.getMonth(),1).getTime()}throw new Error(\"isSameOrBefore: Invalid unit!\")}isAfter(t,e=\"days\"){switch(e){case\"day\":case\"days\":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case\"month\":case\"months\":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>new Date(t.getFullYear(),t.getMonth(),1).getTime();case\"year\":case\"years\":return this.getFullYear()>t.getFullYear()}throw new Error(\"isAfter: Invalid unit!\")}isSameOrAfter(t,e=\"days\"){switch(e){case\"day\":case\"days\":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case\"month\":case\"months\":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>=new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error(\"isSameOrAfter: Invalid unit!\")}isSame(t,e=\"days\"){switch(e){case\"day\":case\"days\":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()===new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case\"month\":case\"months\":return new Date(this.getFullYear(),this.getMonth(),1).getTime()===new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error(\"isSame: Invalid unit!\")}add(t,e=\"days\"){switch(e){case\"day\":case\"days\":this.setDate(this.getDate()+t);break;case\"month\":case\"months\":this.setMonth(this.getMonth()+t)}return this}subtract(t,e=\"days\"){switch(e){case\"day\":case\"days\":this.setDate(this.getDate()-t);break;case\"month\":case\"months\":this.setMonth(this.getMonth()-t)}return this}diff(t,e=\"days\"){switch(e){default:case\"day\":case\"days\":return Math.round((this.midnight_ts()-this.midnight_ts(t))/864e5);case\"month\":case\"months\":let e=12*(t.getFullYear()-this.getFullYear());return e-=t.getMonth(),e+=this.getMonth(),e}}format(e,s=\"en-US\"){let n=\"\";const r=[];let a=null;for(;null!=(a=t.regex.exec(e));)\"\\\\\"!==a[1]&&r.push(a);if(r.length){r[0].index>0&&(n+=e.substring(0,r[0].index));for(const[t,a]of Object.entries(r)){const i=Number(t);n+=this.formatTokens(a[0],s),r[i+1]&&(n+=e.substring(a.index+a[0].length,r[i+1].index)),i===r.length-1&&(n+=e.substring(a.index+a[0].length))}}return n.replace(/\\\\/g,\"\")}midnight_ts(t){return t?new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,0,0).getTime():new Date(this.getFullYear(),this.getMonth(),this.getDate(),0,0,0,0).getTime()}formatTokens(e,s){switch(e){case\"YY\":return String(this.getFullYear()).slice(-2);case\"YYYY\":return String(this.getFullYear());case\"M\":return String(this.getMonth()+1);case\"MM\":return`0${this.getMonth()+1}`.slice(-2);case\"MMM\":return t.shortMonths(s)[this.getMonth()];case\"MMMM\":return t.longMonths(s)[this.getMonth()];case\"D\":return String(this.getDate());case\"DD\":return`0${this.getDate()}`.slice(-2);case\"H\":return String(this.getHours());case\"HH\":return`0${this.getHours()}`.slice(-2);case\"h\":return String(this.getHours()%12||12);case\"hh\":return`0${this.getHours()%12||12}`.slice(-2);case\"m\":return String(this.getMinutes());case\"mm\":return`0${this.getMinutes()}`.slice(-2);case\"s\":return String(this.getSeconds());case\"ss\":return`0${this.getSeconds()}`.slice(-2);case\"a\":return this.getHours()<12||24===this.getHours()?\"am\":\"pm\";case\"A\":return this.getHours()<12||24===this.getHours()?\"AM\":\"PM\";default:return\"\"}}}export{t as DateTime};\n","import{DateTime as e}from\"@easepick/datetime\";class t{picker;constructor(e){this.picker=e}render(t,i){t||(t=new e),t.setDate(1),t.setHours(0,0,0,0),\"function\"==typeof this[`get${i}View`]&&this[`get${i}View`](t)}getContainerView(e){this.picker.ui.container.innerHTML=\"\",this.picker.options.header&&this.picker.trigger(\"render\",{date:e.clone(),view:\"Header\"}),this.picker.trigger(\"render\",{date:e.clone(),view:\"Main\"}),this.picker.options.autoApply||this.picker.trigger(\"render\",{date:e.clone(),view:\"Footer\"})}getHeaderView(e){const t=document.createElement(\"header\");this.picker.options.header instanceof HTMLElement&&t.appendChild(this.picker.options.header),\"string\"==typeof this.picker.options.header&&(t.innerHTML=this.picker.options.header),this.picker.ui.container.appendChild(t),this.picker.trigger(\"view\",{target:t,date:e.clone(),view:\"Header\"})}getMainView(e){const t=document.createElement(\"main\");this.picker.ui.container.appendChild(t);const i=document.createElement(\"div\");i.className=`calendars grid-${this.picker.options.grid}`;for(let t=0;t${e.toLocaleString(this.picker.options.lang,{month:\"long\"})} ${e.format(\"YYYY\")}`,t.appendChild(i);const n=document.createElement(\"button\");n.className=\"previous-button unit\",n.innerHTML=this.picker.options.locale.previousMonth,t.appendChild(n);const s=document.createElement(\"button\");return s.className=\"next-button unit\",s.innerHTML=this.picker.options.locale.nextMonth,t.appendChild(s),t}getCalendarDayNamesView(){const e=document.createElement(\"div\");e.className=\"daynames-row\";for(let t=1;t<=7;t++){const i=3+this.picker.options.firstDay+t,n=document.createElement(\"div\");n.className=\"dayname\",n.innerHTML=new Date(1970,0,i,12,0,0,0).toLocaleString(this.picker.options.lang,{weekday:\"short\"}),n.title=new Date(1970,0,i,12,0,0,0).toLocaleString(this.picker.options.lang,{weekday:\"long\"}),e.appendChild(n),this.picker.trigger(\"view\",{dayIdx:i,view:\"CalendarDayName\",target:n})}return e}getCalendarDaysView(e){const t=document.createElement(\"div\");t.className=\"days-grid\";const i=this.calcOffsetDays(e,this.picker.options.firstDay),n=32-new Date(e.getFullYear(),e.getMonth(),32).getDate();for(let e=0;e{\"function\"==typeof t?e.push(new t):\"string\"==typeof t&&\"undefined\"!=typeof easepick&&Object.prototype.hasOwnProperty.call(easepick,t)?e.push(new easepick[t]):console.warn(`easepick: ${t} not found.`)})),e.sort(((e,t)=>e.priority>t.priority?-1:e.priorityt.dependencies.length?1:e.dependencies.length{e.attach(this.picker),this.instances[e.getName()]=e}))}getInstance(e){return this.instances[e]}addInstance(e){if(Object.prototype.hasOwnProperty.call(this.instances,e))console.warn(`easepick: ${e} already added.`);else{if(\"undefined\"!=typeof easepick&&Object.prototype.hasOwnProperty.call(easepick,e)){const t=new easepick[e];return t.attach(this.picker),this.instances[t.getName()]=t,t}if(\"undefined\"!==this.getPluginFn(e)){const t=new(this.getPluginFn(e));return t.attach(this.picker),this.instances[t.getName()]=t,t}console.warn(`easepick: ${e} not found.`)}return null}removeInstance(e){return e in this.instances&&this.instances[e].detach(),delete this.instances[e]}reloadInstance(e){return this.removeInstance(e),this.addInstance(e)}getPluginFn(e){return[...this.picker.options.plugins].filter((t=>\"function\"==typeof t&&(new t).getName()===e)).shift()}}class n{Calendar=new t(this);PluginManager=new i(this);calendars=[];datePicked=[];cssLoaded=0;binds={hidePicker:this.hidePicker.bind(this),show:this.show.bind(this)};options={doc:document,css:[],element:null,firstDay:1,grid:1,calendars:1,lang:\"en-US\",date:null,format:\"YYYY-MM-DD\",readonly:!0,autoApply:!0,header:!1,inline:!1,scrollToDate:!0,locale:{nextMonth:'',previousMonth:'',cancel:\"Cancel\",apply:\"Apply\"},documentClick:this.binds.hidePicker,plugins:[]};ui={container:null,shadowRoot:null,wrapper:null};version=\"1.2.0\";constructor(e){const t={...this.options.locale,...e.locale};this.options={...this.options,...e},this.options.locale=t,this.handleOptions(),this.ui.wrapper=document.createElement(\"span\"),this.ui.wrapper.style.display=\"none\",this.ui.wrapper.style.position=\"absolute\",this.ui.wrapper.style.pointerEvents=\"none\",this.ui.wrapper.className=\"easepick-wrapper\",this.ui.wrapper.attachShadow({mode:\"open\"}),this.ui.shadowRoot=this.ui.wrapper.shadowRoot,this.ui.container=document.createElement(\"div\"),this.ui.container.className=\"container\",this.options.zIndex&&(this.ui.container.style.zIndex=String(this.options.zIndex)),this.options.inline&&(this.ui.wrapper.style.position=\"relative\",this.ui.container.classList.add(\"inline\")),this.ui.shadowRoot.appendChild(this.ui.container),this.options.element.after(this.ui.wrapper),this.handleCSS(),this.options.element.addEventListener(\"click\",this.binds.show),this.on(\"view\",this.onView.bind(this)),this.on(\"render\",this.onRender.bind(this)),this.PluginManager.initialize(),this.parseValues(),\"function\"==typeof this.options.setup&&this.options.setup(this),this.on(\"click\",this.onClick.bind(this));const i=this.options.scrollToDate?this.getDate():null;this.renderAll(i)}on(e,t,i={}){this.ui.container.addEventListener(e,t,i)}off(e,t,i={}){this.ui.container.removeEventListener(e,t,i)}trigger(e,t={}){return this.ui.container.dispatchEvent(new CustomEvent(e,{detail:t}))}destroy(){this.options.element.removeEventListener(\"click\",this.binds.show),\"function\"==typeof this.options.documentClick&&document.removeEventListener(\"click\",this.options.documentClick,!0),Object.keys(this.PluginManager.instances).forEach((e=>{this.PluginManager.removeInstance(e)})),this.ui.wrapper.remove()}onRender(e){const{view:t,date:i}=e.detail;this.Calendar.render(i,t)}onView(e){const{view:t,target:i}=e.detail;if(\"Footer\"===t&&this.datePicked.length){i.querySelector(\".apply-button\").disabled=!1}}onClickHeaderButton(e){this.isCalendarHeaderButton(e)&&(e.classList.contains(\"next-button\")?this.calendars[0].add(1,\"month\"):this.calendars[0].subtract(1,\"month\"),this.renderAll(this.calendars[0]))}onClickCalendarDay(t){if(this.isCalendarDay(t)){const i=new e(t.dataset.time);this.options.autoApply?(this.setDate(i),this.trigger(\"select\",{date:this.getDate()}),this.hide()):(this.datePicked[0]=i,this.trigger(\"preselect\",{date:this.getDate()}),this.renderAll())}}onClickApplyButton(e){if(this.isApplyButton(e)){if(this.datePicked[0]instanceof Date){const e=this.datePicked[0].clone();this.setDate(e)}this.hide(),this.trigger(\"select\",{date:this.getDate()})}}onClickCancelButton(e){this.isCancelButton(e)&&this.hide()}onClick(e){const t=e.target;if(t instanceof HTMLElement){const e=t.closest(\".unit\");if(!(e instanceof HTMLElement))return;this.onClickHeaderButton(e),this.onClickCalendarDay(e),this.onClickApplyButton(e),this.onClickCancelButton(e)}}isShown(){return this.ui.container.classList.contains(\"inline\")||this.ui.container.classList.contains(\"show\")}show(e){if(this.isShown())return;const t=e&&\"target\"in e?e.target:this.options.element,{top:i,left:n}=this.adjustPosition(t);this.ui.container.style.top=`${i}px`,this.ui.container.style.left=`${n}px`,this.ui.container.classList.add(\"show\"),this.trigger(\"show\",{target:t})}hide(){this.ui.container.classList.remove(\"show\"),this.datePicked.length=0,this.renderAll(),this.trigger(\"hide\")}setDate(t){const i=new e(t,this.options.format);this.options.date=i.clone(),this.updateValues(),this.calendars.length&&this.renderAll()}getDate(){return this.options.date instanceof e?this.options.date.clone():null}parseValues(){this.options.date?this.setDate(this.options.date):this.options.element instanceof HTMLInputElement&&this.options.element.value.length&&this.setDate(this.options.element.value),this.options.date instanceof Date||(this.options.date=null)}updateValues(){const e=this.getDate(),t=e instanceof Date?e.format(this.options.format,this.options.lang):\"\",i=this.options.element;i instanceof HTMLInputElement?i.value=t:i instanceof HTMLElement&&(i.innerText=t)}hidePicker(e){let t=e.target,i=null;t.shadowRoot&&(t=e.composedPath()[0],i=t.getRootNode().host),this.isShown()&&i!==this.ui.wrapper&&t!==this.options.element&&this.hide()}renderAll(e){this.trigger(\"render\",{view:\"Container\",date:(e||this.calendars[0]).clone()})}isCalendarHeaderButton(e){return[\"previous-button\",\"next-button\"].some((t=>e.classList.contains(t)))}isCalendarDay(e){return e.classList.contains(\"day\")}isApplyButton(e){return e.classList.contains(\"apply-button\")}isCancelButton(e){return e.classList.contains(\"cancel-button\")}gotoDate(t){const i=new e(t,this.options.format);i.setDate(1),this.calendars[0]=i.clone(),this.renderAll()}clear(){this.options.date=null,this.datePicked.length=0,this.updateValues(),this.renderAll(),this.trigger(\"clear\")}handleOptions(){this.options.element instanceof HTMLElement||(this.options.element=this.options.doc.querySelector(this.options.element)),\"function\"==typeof this.options.documentClick&&document.addEventListener(\"click\",this.options.documentClick,!0),this.options.element instanceof HTMLInputElement&&(this.options.element.readOnly=this.options.readonly),this.options.date?this.calendars[0]=new e(this.options.date,this.options.format):this.calendars[0]=new e}handleCSS(){if(Array.isArray(this.options.css))this.options.css.forEach((e=>{const t=document.createElement(\"link\");t.href=e,t.rel=\"stylesheet\";const i=()=>{this.cssLoaded++,this.cssLoaded===this.options.css.length&&(this.ui.wrapper.style.display=\"\")};t.addEventListener(\"load\",i),t.addEventListener(\"error\",i),this.ui.shadowRoot.append(t)}));else if(\"string\"==typeof this.options.css){const e=document.createElement(\"style\"),t=document.createTextNode(this.options.css);e.appendChild(t),this.ui.shadowRoot.append(e),this.ui.wrapper.style.display=\"\"}else\"function\"==typeof this.options.css&&(this.options.css.call(this,this),this.ui.wrapper.style.display=\"\")}adjustPosition(e){const t=e.getBoundingClientRect(),i=this.ui.wrapper.getBoundingClientRect();this.ui.container.classList.add(\"calc\");const n=this.ui.container.getBoundingClientRect();this.ui.container.classList.remove(\"calc\");let s=t.bottom-i.bottom,a=t.left-i.left;return\"undefined\"!=typeof window&&(window.innerHeight=0&&(s=t.top-i.top-n.height),window.innerWidth=0&&(a=t.right-i.right-n.width)),{left:a,top:s}}}var s=Object.freeze({__proto__:null,Core:n,create:n});export{n as Core,n as create,s as easepick};\n","class e{picker;options;priority=0;dependencies=[];attach(e){const t=this.getName(),s={...this.options};this.options={...this.options,...e.options[t]||{}};for(const i of Object.keys(s))if(null!==s[i]&&\"object\"==typeof s[i]&&Object.keys(s[i]).length&&t in e.options&&i in e.options[t]){const n={...e.options[t][i]};null!==n&&\"object\"==typeof n&&Object.keys(n).length&&Object.keys(n).every((e=>Object.keys(s[i]).includes(e)))&&(this.options[i]={...s[i],...n})}if(this.picker=e,this.dependenciesNotFound()){const e=this.dependencies.filter((e=>!this.pluginsAsStringArray().includes(e)));return void console.warn(`${this.getName()}: required dependencies (${e.join(\", \")}).`)}const i=this.camelCaseToKebab(this.getName());this.picker.ui.container.classList.add(i),this.onAttach()}detach(){const e=this.camelCaseToKebab(this.getName());this.picker.ui.container.classList.remove(e),\"function\"==typeof this.onDetach&&this.onDetach()}dependenciesNotFound(){return this.dependencies.length&&!this.dependencies.every((e=>this.pluginsAsStringArray().includes(e)))}pluginsAsStringArray(){return this.picker.options.plugins.map((e=>\"function\"==typeof e?(new e).getName():e))}camelCaseToKebab(e){return e.replace(/([a-zA-Z])(?=[A-Z])/g,\"$1-\").toLowerCase()}}export{e as BasePlugin};\n","import{DateTime as t}from\"@easepick/datetime\";import{BasePlugin as e}from\"@easepick/base-plugin\";class i extends e{tooltipElement;triggerElement;binds={setStartDate:this.setStartDate.bind(this),setEndDate:this.setEndDate.bind(this),setDateRange:this.setDateRange.bind(this),getStartDate:this.getStartDate.bind(this),getEndDate:this.getEndDate.bind(this),onView:this.onView.bind(this),onShow:this.onShow.bind(this),onMouseEnter:this.onMouseEnter.bind(this),onMouseLeave:this.onMouseLeave.bind(this),onClickCalendarDay:this.onClickCalendarDay.bind(this),onClickApplyButton:this.onClickApplyButton.bind(this),parseValues:this.parseValues.bind(this),updateValues:this.updateValues.bind(this),clear:this.clear.bind(this)};options={elementEnd:null,startDate:null,endDate:null,repick:!1,strict:!0,delimiter:\" - \",tooltip:!0,tooltipNumber:t=>t,locale:{zero:\"\",one:\"day\",two:\"\",few:\"\",many:\"\",other:\"days\"},documentClick:this.hidePicker.bind(this)};getName(){return\"RangePlugin\"}onAttach(){this.binds._setStartDate=this.picker.setStartDate,this.binds._setEndDate=this.picker.setEndDate,this.binds._setDateRange=this.picker.setDateRange,this.binds._getStartDate=this.picker.getStartDate,this.binds._getEndDate=this.picker.getEndDate,this.binds._parseValues=this.picker.parseValues,this.binds._updateValues=this.picker.updateValues,this.binds._clear=this.picker.clear,this.binds._onClickCalendarDay=this.picker.onClickCalendarDay,this.binds._onClickApplyButton=this.picker.onClickApplyButton,Object.defineProperties(this.picker,{setStartDate:{configurable:!0,value:this.binds.setStartDate},setEndDate:{configurable:!0,value:this.binds.setEndDate},setDateRange:{configurable:!0,value:this.binds.setDateRange},getStartDate:{configurable:!0,value:this.binds.getStartDate},getEndDate:{configurable:!0,value:this.binds.getEndDate},parseValues:{configurable:!0,value:this.binds.parseValues},updateValues:{configurable:!0,value:this.binds.updateValues},clear:{configurable:!0,value:this.binds.clear},onClickCalendarDay:{configurable:!0,value:this.binds.onClickCalendarDay},onClickApplyButton:{configurable:!0,value:this.binds.onClickApplyButton}}),this.options.elementEnd&&(this.options.elementEnd instanceof HTMLElement||(this.options.elementEnd=this.picker.options.doc.querySelector(this.options.elementEnd)),this.options.elementEnd instanceof HTMLInputElement&&(this.options.elementEnd.readOnly=this.picker.options.readonly),\"function\"==typeof this.picker.options.documentClick&&(document.removeEventListener(\"click\",this.picker.options.documentClick,!0),\"function\"==typeof this.options.documentClick&&document.addEventListener(\"click\",this.options.documentClick,!0)),this.options.elementEnd.addEventListener(\"click\",this.picker.show.bind(this.picker))),this.options.repick=this.options.repick&&this.options.elementEnd instanceof HTMLElement,this.picker.options.date=null,this.picker.on(\"view\",this.binds.onView),this.picker.on(\"show\",this.binds.onShow),this.picker.on(\"mouseenter\",this.binds.onMouseEnter,!0),this.picker.on(\"mouseleave\",this.binds.onMouseLeave,!0),this.checkIntlPluralLocales()}onDetach(){Object.defineProperties(this.picker,{setStartDate:{configurable:!0,value:this.binds._setStartDate},setEndDate:{configurable:!0,value:this.binds._setEndDate},setDateRange:{configurable:!0,value:this.binds._setDateRange},getStartDate:{configurable:!0,value:this.binds._getStartDate},getEndDate:{configurable:!0,value:this.binds._getEndDate},parseValues:{configurable:!0,value:this.binds._parseValues},updateValues:{configurable:!0,value:this.binds._updateValues},clear:{configurable:!0,value:this.binds._clear},onClickCalendarDay:{configurable:!0,value:this.binds._onClickCalendarDay},onClickApplyButton:{configurable:!0,value:this.binds._onClickApplyButton}}),this.picker.off(\"view\",this.binds.onView),this.picker.off(\"show\",this.binds.onShow),this.picker.off(\"mouseenter\",this.binds.onMouseEnter,!0),this.picker.off(\"mouseleave\",this.binds.onMouseLeave,!0)}parseValues(){if(this.options.startDate||this.options.endDate)this.options.strict?this.options.startDate&&this.options.endDate?this.setDateRange(this.options.startDate,this.options.endDate):(this.options.startDate=null,this.options.endDate=null):(this.options.startDate&&this.setStartDate(this.options.startDate),this.options.endDate&&this.setEndDate(this.options.endDate));else if(this.options.elementEnd)this.options.strict?this.picker.options.element instanceof HTMLInputElement&&this.picker.options.element.value.length&&this.options.elementEnd instanceof HTMLInputElement&&this.options.elementEnd.value.length&&this.setDateRange(this.picker.options.element.value,this.options.elementEnd.value):(this.picker.options.element instanceof HTMLInputElement&&this.picker.options.element.value.length&&this.setStartDate(this.picker.options.element.value),this.options.elementEnd instanceof HTMLInputElement&&this.options.elementEnd.value.length&&this.setEndDate(this.options.elementEnd.value));else if(this.picker.options.element instanceof HTMLInputElement&&this.picker.options.element.value.length){const[t,e]=this.picker.options.element.value.split(this.options.delimiter);this.options.strict?t&&e&&this.setDateRange(t,e):(t&&this.setStartDate(t),e&&this.setEndDate(e))}}updateValues(){const t=this.picker.options.element,e=this.options.elementEnd,i=this.picker.getStartDate(),s=this.picker.getEndDate(),n=i instanceof Date?i.format(this.picker.options.format,this.picker.options.lang):\"\",a=s instanceof Date?s.format(this.picker.options.format,this.picker.options.lang):\"\";if(e)t instanceof HTMLInputElement?t.value=n:t instanceof HTMLElement&&(t.innerText=n),e instanceof HTMLInputElement?e.value=a:e instanceof HTMLElement&&(e.innerText=a);else{const e=`${n}${n||a?this.options.delimiter:\"\"}${a}`;t instanceof HTMLInputElement?t.value=e:t instanceof HTMLElement&&(t.innerText=e)}}clear(){this.options.startDate=null,this.options.endDate=null,this.picker.datePicked.length=0,this.updateValues(),this.picker.renderAll(),this.picker.trigger(\"clear\")}onShow(t){const{target:e}=t.detail;this.triggerElement=e,this.picker.options.scrollToDate&&this.getStartDate()instanceof Date&&this.picker.gotoDate(this.getStartDate()),this.initializeRepick()}onView(e){const{view:i,target:s}=e.detail;if(\"Main\"===i&&(this.tooltipElement=document.createElement(\"span\"),this.tooltipElement.className=\"range-plugin-tooltip\",s.appendChild(this.tooltipElement)),\"CalendarDay\"===i){const e=new t(s.dataset.time),i=this.picker.datePicked,n=i.length?this.picker.datePicked[0]:this.getStartDate(),a=i.length?this.picker.datePicked[1]:this.getEndDate();n&&n.isSame(e,\"day\")&&s.classList.add(\"start\"),n&&a&&(a.isSame(e,\"day\")&&s.classList.add(\"end\"),e.isBetween(n,a)&&s.classList.add(\"in-range\"))}if(\"Footer\"===i){const t=1===this.picker.datePicked.length&&!this.options.strict||2===this.picker.datePicked.length;s.querySelector(\".apply-button\").disabled=!t}}hidePicker(t){let e=t.target,i=null;e.shadowRoot&&(e=t.composedPath()[0],i=e.getRootNode().host),this.picker.isShown()&&i!==this.picker.ui.wrapper&&e!==this.picker.options.element&&e!==this.options.elementEnd&&this.picker.hide()}setStartDate(e){const i=new t(e,this.picker.options.format);this.options.startDate=i?i.clone():null,this.updateValues(),this.picker.renderAll()}setEndDate(e){const i=new t(e,this.picker.options.format);this.options.endDate=i?i.clone():null,this.updateValues(),this.picker.renderAll()}setDateRange(e,i){const s=new t(e,this.picker.options.format),n=new t(i,this.picker.options.format);this.options.startDate=s?s.clone():null,this.options.endDate=n?n.clone():null,this.updateValues(),this.picker.renderAll()}getStartDate(){return this.options.startDate instanceof Date?this.options.startDate.clone():null}getEndDate(){return this.options.endDate instanceof Date?this.options.endDate.clone():null}onMouseEnter(e){const i=e.target;if(i instanceof HTMLElement){this.isContainer(i)&&this.initializeRepick();const e=i.closest(\".unit\");if(!(e instanceof HTMLElement))return;if(this.picker.isCalendarDay(e)){if(1!==this.picker.datePicked.length)return;let i=this.picker.datePicked[0].clone(),s=new t(e.dataset.time),n=!1;if(i.isAfter(s,\"day\")){const t=i.clone();i=s.clone(),s=t.clone(),n=!0}if([...this.picker.ui.container.querySelectorAll(\".day\")].forEach((a=>{const o=new t(a.dataset.time),l=this.picker.Calendar.getCalendarDayView(o);o.isBetween(i,s)&&l.classList.add(\"in-range\"),o.isSame(this.picker.datePicked[0],\"day\")&&(l.classList.add(\"start\"),l.classList.toggle(\"flipped\",n)),a===e&&(l.classList.add(\"end\"),l.classList.toggle(\"flipped\",n)),a.className=l.className})),this.options.tooltip){const t=this.options.tooltipNumber(s.diff(i,\"day\")+1);if(t>0){const i=new Intl.PluralRules(this.picker.options.lang).select(t),s=`${t} ${this.options.locale[i]}`;this.showTooltip(e,s)}else this.hideTooltip()}}}}onMouseLeave(t){if(this.isContainer(t.target)&&this.options.repick){const t=this.getStartDate(),e=this.getEndDate();t&&e&&(this.picker.datePicked.length=0,this.picker.renderAll())}}onClickCalendarDay(e){if(this.picker.isCalendarDay(e)){2===this.picker.datePicked.length&&(this.picker.datePicked.length=0);const i=new t(e.dataset.time);if(this.picker.datePicked[this.picker.datePicked.length]=i,2===this.picker.datePicked.length&&this.picker.datePicked[0].isAfter(this.picker.datePicked[1])){const t=this.picker.datePicked[1].clone();this.picker.datePicked[1]=this.picker.datePicked[0].clone(),this.picker.datePicked[0]=t.clone()}1!==this.picker.datePicked.length&&this.picker.options.autoApply||this.picker.trigger(\"preselect\",{start:this.picker.datePicked[0]instanceof Date?this.picker.datePicked[0].clone():null,end:this.picker.datePicked[1]instanceof Date?this.picker.datePicked[1].clone():null}),1===this.picker.datePicked.length&&(!this.options.strict&&this.picker.options.autoApply&&(this.picker.options.element===this.triggerElement&&this.setStartDate(this.picker.datePicked[0]),this.options.elementEnd===this.triggerElement&&this.setEndDate(this.picker.datePicked[0]),this.picker.trigger(\"select\",{start:this.picker.getStartDate(),end:this.picker.getEndDate()})),this.picker.renderAll()),2===this.picker.datePicked.length&&(this.picker.options.autoApply?(this.setDateRange(this.picker.datePicked[0],this.picker.datePicked[1]),this.picker.trigger(\"select\",{start:this.picker.getStartDate(),end:this.picker.getEndDate()}),this.picker.hide()):(this.hideTooltip(),this.picker.renderAll()))}}onClickApplyButton(t){this.picker.isApplyButton(t)&&(1!==this.picker.datePicked.length||this.options.strict||(this.picker.options.element===this.triggerElement&&(this.options.endDate=null,this.setStartDate(this.picker.datePicked[0])),this.options.elementEnd===this.triggerElement&&(this.options.startDate=null,this.setEndDate(this.picker.datePicked[0]))),2===this.picker.datePicked.length&&this.setDateRange(this.picker.datePicked[0],this.picker.datePicked[1]),this.picker.trigger(\"select\",{start:this.picker.getStartDate(),end:this.picker.getEndDate()}),this.picker.hide())}showTooltip(t,e){this.tooltipElement.style.visibility=\"visible\",this.tooltipElement.innerHTML=e;const i=this.picker.ui.container.getBoundingClientRect(),s=this.tooltipElement.getBoundingClientRect(),n=t.getBoundingClientRect();let a=n.top,o=n.left;a-=i.top,o-=i.left,a-=s.height,o-=s.width/2,o+=n.width/2,this.tooltipElement.style.top=`${a}px`,this.tooltipElement.style.left=`${o}px`}hideTooltip(){this.tooltipElement.style.visibility=\"hidden\"}checkIntlPluralLocales(){if(!this.options.tooltip)return;const t=[...new Set([new Intl.PluralRules(this.picker.options.lang).select(0),new Intl.PluralRules(this.picker.options.lang).select(1),new Intl.PluralRules(this.picker.options.lang).select(2),new Intl.PluralRules(this.picker.options.lang).select(6),new Intl.PluralRules(this.picker.options.lang).select(18)])],e=Object.keys(this.options.locale);t.every((t=>e.includes(t)))||console.warn(`${this.getName()}: provide locales (${t.join(\", \")}) for correct tooltip text.`)}initializeRepick(){if(!this.options.repick)return;const t=this.getStartDate(),e=this.getEndDate();e&&this.triggerElement===this.picker.options.element&&(this.picker.datePicked[0]=e),t&&this.triggerElement===this.options.elementEnd&&(this.picker.datePicked[0]=t)}isContainer(t){return t===this.picker.ui.container}}export{i as RangePlugin};\n","import React, { useEffect, useMemo } from 'react';\nimport { easepick } from '@easepick/core';\nimport { RangePlugin } from '@easepick/range-plugin';\nimport { getRandomSmallString } from 'src/utils/strings';\n\nconst DatePickerRange = ({ onDatesChange, initialStartDate, initialEndDate, className = '', setOpen, children }) => {\n const randomId = useMemo(() => `datepicker-${getRandomSmallString()}`, []);\n\n useEffect(() => {\n const datepickerObject = new easepick.create({\n element: `#${randomId}`,\n css: ['https://cdn.jsdelivr.net/npm/@easepick/bundle@1.2.0/dist/index.css', '/styles/DatePickerRange.css'],\n zIndex: 10,\n plugins: [RangePlugin],\n RangePlugin: {\n startDate: initialStartDate,\n endDate: initialEndDate,\n },\n });\n datepickerObject.on('select', (e) => {\n onDatesChange(e.detail.start, e.detail.end);\n });\n if (setOpen) {\n datepickerObject.on('view', (e) => {\n setOpen(datepickerObject.isShown());\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n );\n};\n\nexport default DatePickerRange;\n","import React, { useMemo, useCallback } from 'react';\nimport { AreaClosed, Line, Bar, LinePath } from '@visx/shape';\nimport { curveMonotoneX } from '@visx/curve';\nimport { scaleTime, scaleLinear } from '@visx/scale';\nimport { withTooltip, defaultStyles } from '@visx/tooltip';\nimport { localPoint } from '@visx/event';\nimport { LinearGradient } from '@visx/gradient';\nimport { max, extent } from 'd3-array';\nimport { timeFormat } from 'd3-time-format';\nimport { datesAreTheSameDay } from 'src/utils/dates';\n\nexport const background = '#ffffff';\nconst tooltipStyles = {\n ...defaultStyles,\n background,\n color: 'black',\n padding: 12,\n borderRadius: 12,\n};\n\n// util\nconst formatDate = timeFormat('%b %d %Y');\n\n// accessors\nconst getDate = (d) => new Date(d.date);\n\nexport default withTooltip(\n ({\n width,\n height,\n color,\n margin = { top: 0, right: 0, bottom: 10, left: 0 },\n showTooltip,\n hideTooltip,\n tooltipData,\n tooltipTop = 0,\n tooltipLeft = 0,\n data,\n getValue,\n }) => {\n if (width < 10) return null;\n\n // bounds\n const innerWidth = width - margin.left - margin.right;\n const innerHeight = height - margin.top - margin.bottom;\n\n // scales\n const dateScale = useMemo(\n () =>\n scaleTime({\n range: [margin.left, innerWidth + margin.left],\n domain: extent(data, getDate),\n }),\n [data, innerWidth, margin.left]\n );\n const dataValueScale = useMemo(\n () =>\n scaleLinear({\n range: [innerHeight + margin.top, margin.top],\n domain: [0, (max(data, getValue) || 0) + innerHeight / 500],\n nice: true,\n }),\n [innerHeight, margin.top, data, getValue]\n );\n\n // tooltip handler\n const handleTooltip = useCallback(\n (event) => {\n const { x } = localPoint(event) || { x: 0 };\n const x0 = dateScale.invert(x);\n const index = data.findIndex((point) => datesAreTheSameDay(x0, new Date(getDate(point))));\n let d = data[index];\n showTooltip({\n tooltipData: d,\n tooltipLeft: x,\n tooltipTop: dataValueScale(getValue(d)) + margin.top,\n });\n },\n [dateScale, data, showTooltip, dataValueScale, getValue, margin.top]\n );\n\n const areaGradientID = useMemo(() => `area-gradient-${color}`, [color]);\n\n return (\n
    \n \n \n \n dateScale(getDate(d)) ?? 0}\n y={(d) => dataValueScale(getValue(d)) ?? 0}\n yScale={dataValueScale}\n strokeWidth={1}\n stroke={`url(#${areaGradientID})`}\n fill={`url(#${areaGradientID})`}\n curve={curveMonotoneX}\n />\n dateScale(getDate(d)) ?? 0}\n y={(d) => (dataValueScale(getValue(d)) ?? 0) + margin.top}\n />\n hideTooltip()}\n />\n {tooltipData && (\n \n \n \n \n \n )}\n \n {tooltipData && (\n \n

    {`${getValue(tooltipData)}`}

    \n

    {`${formatDate(getDate(tooltipData))}`}

    \n
    \n )}\n \n );\n }\n);\n","import { useCallback, useState } from 'react';\nimport MinimalLineChart from 'src/components/minimal-line-chart/MinimalLineChart';\n\nconst SmallChartSection = ({ chartName, title, data, color, className = '' }) => {\n const [chartWidth, setChartWidth] = useState(0);\n\n const container = useCallback((node) => {\n if (node !== null) {\n setChartWidth(node.offsetWidth - 40); // minus the padding\n }\n }, []);\n\n return (\n
    \n {chartName}\n {title}\n 450\n ? chartWidth * 0.17\n : chartWidth < 450\n ? chartWidth * 0.32\n : chartWidth * 0.25\n }\n color={color}\n getValue={(val) => val.value}\n data={data}\n />\n
    \n );\n};\n\nexport default SmallChartSection;\n","import SelectDropdown from 'src/components/select-dropdown/SelectDropdown';\nimport CrossIcon from 'src/icons/cross';\n\nconst FilterDropdown = ({\n className = '',\n contentClassName = '',\n placeholder,\n text,\n showPlaceholder,\n onResetClick,\n children,\n}) => (\n : null}\n contentClassName={contentClassName + ' drop-shadow-md'}\n >\n {(open, setOpen) => children(open, setOpen)}\n \n);\n\nexport default FilterDropdown;\n","import { useState } from 'react';\nimport DatePickerRange from 'src/components/date-picker-range/DatePickerRange';\nimport CrossIcon from 'src/icons/cross';\nimport downIcon from 'src/icons/down.svg';\nimport { dateToFormattedStr } from 'src/utils/dates';\nimport { truncate } from 'src/utils/strings';\n\nconst DatepickerDropdownFilter = ({ onDatesChange, startDate, endDate, onResetClick }) => {\n const [open, setOpen] = useState();\n\n return (\n \n \n {startDate && endDate\n ? truncate(`${dateToFormattedStr(startDate)} - ${dateToFormattedStr(endDate)}`, 14)\n : 'Date'}\n {startDate && endDate ? (\n \n ) : (\n \"down\n )}\n \n \n );\n};\n\nexport default DatepickerDropdownFilter;\n","const SearchIcon = ({ className = '', color = '#101010', onClick }) => (\n \n \n \n \n);\n\nexport default SearchIcon;\n","import exclamationIcon from 'src/icons/exclamation.svg';\nimport SearchIcon from 'src/icons/search';\n\nconst SearchInput = ({\n type,\n value,\n setValue,\n label,\n fieldName,\n placeholder,\n error,\n className,\n inputClassName = '',\n displayButton = false,\n onSearchClick,\n}) => {\n return (\n \n );\n};\n\nexport default SearchInput;\n","import { useMemo } from 'react';\n\nconst Pagination = ({ page, setPage, itemsPerPage, totalItems, className = '' }) => {\n const totalPages = useMemo(() => Math.ceil(totalItems / itemsPerPage), [itemsPerPage, totalItems]);\n\n return (\n
    \n
    \n {totalPages > 1 && (\n
    \n {\n if (page - 1 > 0) setPage(page - 1);\n }}\n >\n Previous\n \n \n \n \n \n {page}/{totalPages}\n \n {page - 2 > 0 && (\n {\n if (page - 2 > 0) setPage(page - 2);\n }}\n >\n {page - 2}\n \n )}\n {page - 1 > 0 && (\n {\n if (page - 1 > 0) setPage(page - 1);\n }}\n >\n {page - 1}\n \n )}\n \n {page}\n \n {page + 1 <= totalPages && (\n {\n if (page + 1 > 0) setPage(page + 1);\n }}\n >\n {page + 1}\n \n )}\n {page + 2 <= totalPages && (\n {\n if (page + 2 > 0) setPage(page + 2);\n }}\n >\n {page + 2}\n \n )}\n {\n if (page + 1 > 0) setPage(page + 1);\n }}\n >\n Next\n \n \n \n \n
    \n )}\n {totalPages > 0 && (\n \n {page}/{totalPages}\n \n )}\n
    \n
    \n );\n};\n\nexport default Pagination;\n","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgExport(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.32031 6.49994L11.8803 3.93994L14.4403 6.49994\",\n stroke: \"#101010\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.8799 14.18V4.01001\",\n stroke: \"#101010\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 12C4 16.42 7 20 12 20C17 20 20 16.42 20 12\",\n stroke: \"#101010\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgExport);\nexport default __webpack_public_path__ + \"static/media/export.5fa244eb924785e41c2d55c3fcfa17db.svg\";\nexport { ForwardRef as ReactComponent };","const { NETWORK_NAME_LABELS, PAYMENT_STATES_LABELS } = require('src/utils/constants');\nconst { dateToFormattedStr } = require('src/utils/dates');\nconst { removeTrailingZeros } = require('src/utils/strings');\n\nconst LargePaymentsTable = ({ transactions }) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {transactions.map((transaction, i) => (\n \n \n \n \n \n \n \n \n \n ))}\n \n
    DateNetworkCustomerProductsAmountUSD AmountStatus
    {dateToFormattedStr(new Date(transaction.createdAt))}{NETWORK_NAME_LABELS[transaction.network]}\n
    \n \n {transaction.customerFirstName} {transaction.customerLastName}\n \n {transaction.customerEmail}\n
    \n
    {transaction.productNames.join(', ')}\n {removeTrailingZeros(parseFloat(transaction.tokenAmount).toFixed(8))} \n {transaction.coin}\n ${transaction.costInUSD}{PAYMENT_STATES_LABELS[transaction.status]}
    \n);\n\nexport default LargePaymentsTable;\n","import { useMemo } from 'react';\n\nconst { NETWORK_NAME_LABELS, PAYMENT_STATES_LABELS } = require('src/utils/constants');\nconst { dateToFormattedStr } = require('src/utils/dates');\nconst { removeTrailingZeros } = require('src/utils/strings');\n\nconst MobilePaymentsTable = ({ transactions }) => {\n const paymentsGroupedByDate = useMemo(() => {\n return transactions.reduce((acc, payment) => {\n const createdAt = dateToFormattedStr(new Date(payment.createdAt));\n if (createdAt in acc) {\n return { ...acc, [createdAt]: [...acc[createdAt], payment] };\n }\n return { ...acc, [createdAt]: [payment] };\n }, {});\n }, [transactions]);\n\n return Object.keys(paymentsGroupedByDate).map((date, i) => (\n
    \n

    {date}

    \n {paymentsGroupedByDate[date].map((payment, j) => (\n
    \n
    \n {payment.productNames.join(', ')}\n
    \n {payment.customerEmail}\n \n {payment.customerFirstName} {payment.customerLastName}\n \n
    \n
    \n
    \n ${payment.costInUSD}\n \n {removeTrailingZeros(parseFloat(payment.tokenAmount).toFixed(8))} \n {payment.coin}\n \n \n {NETWORK_NAME_LABELS[payment.network]} network\n \n \n {PAYMENT_STATES_LABELS[payment.status]}\n \n
    \n
    \n ))}\n
    \n ));\n};\n\nexport default MobilePaymentsTable;\n","import { useEffect, useState } from 'react';\nimport LargePaymentsTable from './LargePaymentsTable';\nimport MobilePaymentsTable from './MobilePaymentsTable';\n\nconst PaymentsTable = ({ transactions }) => {\n const [screenWidth, setScreenWidth] = useState();\n\n useEffect(() => {\n if (typeof window !== 'undefined' && !screenWidth) {\n setScreenWidth(window.innerWidth);\n }\n }, [screenWidth]);\n\n if (screenWidth < 1024) return ;\n\n return ;\n};\n\nexport default PaymentsTable;\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport toast from 'react-hot-toast';\nimport { Link, useNavigate, useParams } from 'react-router-dom';\nimport Loader from 'src/components/loader/Loader';\nimport API from 'src/utils/api';\nimport ExternalLinkIcon from 'src/icons/externalLink';\nimport CopyIcon from 'src/icons/copy';\nimport LineChart from 'src/components/line-chart/LineChart';\nimport { datesAreTheSameDay, dateToFormattedStr, isDateInPeriod } from 'src/utils/dates';\nimport CalendarIcon from 'src/icons/calendar';\nimport ChartFilterButton from 'src/components/chart-filter-button/ChartFilterButton';\nimport Select from 'src/components/select/Select';\nimport DatePickerRange from 'src/components/date-picker-range/DatePickerRange';\nimport SmallChartSection from 'src/components/small-chart-section/SmallChartSection';\nimport { ALL_SUPPORTED_TOKENS, NETWORK_NAME_LABELS, SUPPORTED_TOKENS } from 'src/utils/constants';\nimport Checkbox from 'src/components/checkbox/Checkbox';\nimport FilterDropdown from 'src/components/filter-dropdown/FilterDropdown';\nimport { copyToClipboard, truncate } from 'src/utils/strings';\nimport DatepickerDropdownFilter from 'src/components/datepicker-dropdown-filter/DatepickerDropdownFilter';\nimport Button from 'src/components/button/Button';\nimport Input from 'src/components/input/Input';\nimport SearchInput from 'src/components/search-input/SearchInput';\nimport Pagination from 'src/components/pagination/Pagination';\nimport exportIcon from 'src/icons/export.svg';\nimport { saveAs } from 'file-saver';\nimport ErrorState from 'src/components/error-state/ErrorState';\nimport PaymentsTable from 'src/components/payments-table/PaymentsTable';\n\nconst date30daysAgo = new Date();\ndate30daysAgo.setDate(date30daysAgo.getDate() - 30);\n\nconst DEFAULT_FILTERS = {\n startDate: date30daysAgo,\n endDate: new Date(),\n};\n\nconst PERIOD_FILTERS = {\n WEEK: 'week',\n MONTH: 'month',\n YEAR: 'year',\n CUSTOM: 'custom',\n};\n\nconst NETWORKS_ARRAY = Object.keys(SUPPORTED_TOKENS);\n\nconst ITEMS_PER_PAGE = 10;\n\nconst MerchantSales = () => {\n // Navigation\n const navigate = useNavigate();\n const { formId } = useParams();\n // Refs\n const fetchingFormsList = useRef(false);\n const fetchingChartData = useRef(false);\n const fetchingTransactions = useRef(false);\n const additionalDataContainer = useRef();\n\n // Chart Data\n const [formsList, setFormsList] = useState();\n const [paymentsChartData, setPaymentsChartData] = useState();\n const [totalPayments, setTotalPayments] = useState();\n const [salesNumber, setSalesNumber] = useState();\n const [numberOfSalesData, setNumberOfSalesData] = useState();\n const [customersNumber, setCustomersNumber] = useState();\n const [numberOfCustomersData, setNumberOfCustomersData] = useState();\n // Transactions Data\n const [transactions, setTransactions] = useState();\n // Filters\n const [selectedForm, setSelectedForm] = useState();\n const [selectedPeriodFilter, setSelectedPeriodFilter] = useState(PERIOD_FILTERS.MONTH);\n const [chartsFilters, setChartsFilters] = useState(DEFAULT_FILTERS);\n const [transactionsFilters, setTransactionsFilters] = useState(DEFAULT_FILTERS);\n const [minAmount, setMinAmount] = useState();\n const [maxAmount, setMaxAmount] = useState();\n const [productNames, setProductNames] = useState();\n const [totalTransactions, setTotalTransactions] = useState();\n const [transactionsPage, setTransactionsPage] = useState(1);\n const [transactionSearchTerm, setTransactionSearchTerm] = useState();\n // UI States\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(false);\n const [exportLoading, setExportLoading] = useState(false);\n const [screenWidth, setScreenWidth] = useState();\n\n useEffect(() => {\n if (typeof window !== 'undefined' && !screenWidth) {\n setScreenWidth(window.innerWidth);\n }\n }, [screenWidth]);\n\n useEffect(() => {\n if (!formsList || !formsList.length) return;\n if (!formId) return setSelectedForm(formsList[0]);\n const newSelectedForm = formsList.find((form) => form._id === formId);\n if (newSelectedForm) {\n setSelectedForm(newSelectedForm);\n }\n }, [formId, formsList]);\n\n useEffect(() => {\n if (fetchingFormsList.current) return; // make sure to fetch only at first render\n\n const fetchFormsList = async () => {\n fetchingFormsList.current = true;\n try {\n const response = await API.get('/payment-forms/list');\n setFormsList(response.data.paymentForms);\n fetchingFormsList.current = false;\n } catch (error) {\n if (error.response?.status === 404) {\n toast.error('Page not found');\n } else {\n toast.error('An unexpected error occured, please try again...');\n }\n setError(true);\n fetchingFormsList.current = false;\n }\n };\n\n fetchFormsList();\n }, []);\n\n useEffect(() => {\n if (fetchingChartData.current) return; // make sure to fetch only at first render\n if (!selectedForm) return;\n\n const fetchChartData = async () => {\n fetchingChartData.current = true;\n try {\n const response = await API.post(`/payments/chart-data/${selectedForm._id}`, {\n startDate: dateToFormattedStr(DEFAULT_FILTERS.startDate),\n endDate: dateToFormattedStr(DEFAULT_FILTERS.endDate),\n });\n // Main chart\n setPaymentsChartData(response.data.paymentsAmountData);\n setTotalPayments(response.data.totalPayments);\n // Number of sales chart\n setNumberOfSalesData(response.data.numberOfSalesData);\n setSalesNumber(response.data.salesNumber);\n // Number of customers chart\n setNumberOfCustomersData(response.data.numberOfCustomersData);\n setCustomersNumber(response.data.customersNumber);\n\n fetchingChartData.current = false;\n } catch (error) {\n console.log(error);\n toast.error('An unexpected error occured, please try again...');\n setError(true);\n fetchingChartData.current = false;\n }\n };\n\n fetchChartData();\n }, [selectedForm]);\n\n useEffect(() => {\n if (fetchingTransactions.current) return; // make sure to fetch only at first render\n if (!selectedForm) return;\n\n const fetchTransactions = async () => {\n fetchingTransactions.current = true;\n try {\n const response = await API.post(`/payments/list/${selectedForm._id}`, {\n startDate: dateToFormattedStr(DEFAULT_FILTERS.startDate),\n endDate: dateToFormattedStr(DEFAULT_FILTERS.endDate),\n });\n setTransactions(response.data.payments);\n setTotalTransactions(response.data.total);\n\n fetchingTransactions.current = false;\n } catch (error) {\n console.log(error);\n toast.error('An unexpected error occured, please try again...');\n setError(true);\n fetchingTransactions.current = false;\n }\n };\n\n fetchTransactions();\n }, [selectedForm]);\n\n useEffect(() => {\n if ((paymentsChartData && formsList && transactions) || error || formsList?.length === 0) {\n setLoading(false);\n }\n }, [error, formsList, paymentsChartData, transactions]);\n\n const refreshPaymentsData = useCallback(async () => {\n if (!selectedForm) return;\n try {\n setLoading(true);\n const response = await API.post(`/payments/chart-data/${selectedForm._id}`, {\n startDate: dateToFormattedStr(chartsFilters.startDate),\n endDate: dateToFormattedStr(chartsFilters.endDate),\n });\n // Main chart\n setPaymentsChartData(response.data.paymentsAmountData);\n setTotalPayments(response.data.totalPayments);\n // Number of sales chart\n setNumberOfSalesData(response.data.numberOfSalesData);\n setSalesNumber(response.data.salesNumber);\n // Number of customers chart\n setNumberOfCustomersData(response.data.numberOfCustomersData);\n setCustomersNumber(response.data.customersNumber);\n\n setLoading(false);\n } catch (error) {\n console.log(error);\n toast.error('An unexpected error occured, please try again...');\n setError(true);\n setLoading(false);\n }\n }, [chartsFilters, selectedForm]);\n\n const refreshChartData = useCallback(() => {\n // Main chart\n const newChartData = paymentsChartData.filter((data) =>\n isDateInPeriod(new Date(data.date), chartsFilters.startDate, chartsFilters.endDate)\n );\n setPaymentsChartData(newChartData);\n setTotalPayments(newChartData.reduce((acc, val) => acc + val.value, 0));\n // Number of sales chart\n const newSalesChartData = numberOfSalesData.filter((data) =>\n isDateInPeriod(new Date(data.date), chartsFilters.startDate, chartsFilters.endDate)\n );\n setNumberOfSalesData(newSalesChartData);\n setSalesNumber(newSalesChartData.reduce((acc, val) => acc + val.value, 0));\n // Number of customers chart\n const newCustomersChartData = numberOfSalesData.filter((data) =>\n isDateInPeriod(new Date(data.date), chartsFilters.startDate, chartsFilters.endDate)\n );\n setNumberOfCustomersData(newCustomersChartData);\n setCustomersNumber(newCustomersChartData.reduce((acc, val) => acc + val.value, 0));\n }, [chartsFilters, numberOfSalesData, paymentsChartData]);\n\n useEffect(() => {\n if (chartsFilters && paymentsChartData?.length) {\n // if the chartsFilters period is the same as the chart data period, then we don't need to do anything\n if (\n datesAreTheSameDay(chartsFilters.startDate, new Date(paymentsChartData[0].date)) &&\n datesAreTheSameDay(chartsFilters.endDate, new Date(paymentsChartData.at(-1).date))\n ) {\n return;\n }\n // if the startDate and endDate in the chartsFilters are in the paymentsChartData period\n // then we don't need to refresh the data, we just need to create new chart data based on the payments list we have\n if (\n isDateInPeriod(\n chartsFilters.startDate,\n new Date(paymentsChartData[0].date),\n new Date(paymentsChartData.at(-1).date)\n ) &&\n isDateInPeriod(\n chartsFilters.endDate,\n new Date(paymentsChartData[0].date),\n new Date(paymentsChartData.at(-1).date)\n )\n ) {\n refreshChartData();\n return;\n }\n // at this point, the chartsFilters and chart data periods are not the exact same and the chartsFilters period is not inside the\n // chart data period so we refresh our data and create new chart data\n refreshPaymentsData();\n }\n }, [chartsFilters, paymentsChartData, refreshChartData, refreshPaymentsData, selectedPeriodFilter]);\n\n const onSelectedFormChange = (e) => {\n const newSelectedForm = formsList.find((form) => form.name === e.target.value);\n navigate(`/merchant/${newSelectedForm._id}`);\n };\n\n const onCopyIDClick = () => {\n copyToClipboard(selectedForm._id);\n };\n\n const chartWidth = useMemo(() => {\n if (screenWidth < 1024) return screenWidth - 32;\n // if above max width then calculate based on max width and not screen width\n return screenWidth > 1536 ? (1536 - 96) * 0.65 : (screenWidth - 96) * 0.65;\n }, [screenWidth]);\n\n const getSalesPeriodTitle = () => {\n if (selectedPeriodFilter === PERIOD_FILTERS.MONTH) return 'for the last 30 days';\n if (selectedPeriodFilter === PERIOD_FILTERS.WEEK) return 'for the last 7 days';\n if (selectedPeriodFilter === PERIOD_FILTERS.YEAR) return 'for the last 365 days';\n return `from ${dateToFormattedStr(new Date(chartsFilters.startDate)) ?? ''} to ${\n dateToFormattedStr(new Date(chartsFilters.endDate)) ?? ''\n }`;\n };\n\n const onSelectedPeriodChange = (period) => {\n const startDate = new Date();\n switch (period) {\n case PERIOD_FILTERS.WEEK:\n startDate.setDate(startDate.getDate() - 7);\n break;\n case PERIOD_FILTERS.MONTH:\n startDate.setDate(startDate.getDate() - 30);\n break;\n case PERIOD_FILTERS.YEAR:\n startDate.setDate(startDate.getDate() - 365);\n break;\n default:\n break;\n }\n if (period !== PERIOD_FILTERS.CUSTOM) {\n setChartsFilters({\n ...chartsFilters,\n startDate: startDate,\n endDate: new Date(),\n });\n }\n setSelectedPeriodFilter(period);\n };\n\n const onCustomDatesChange = (startDate, endDate) => {\n setChartsFilters({\n ...chartsFilters,\n startDate: startDate,\n endDate: endDate,\n });\n };\n\n const onCoinsFilterChange = (coin, isSelected) => {\n const newCoinsFilter = isSelected\n ? [...(transactionsFilters?.coins ?? []), coin]\n : transactionsFilters.coins.filter((c) => c !== coin);\n setTransactionsFilters({\n ...transactionsFilters,\n coins: newCoinsFilter.length ? newCoinsFilter : undefined,\n });\n };\n\n const onNetworksFilterChange = (network, isSelected) => {\n const newNetworksFilter = isSelected\n ? [...(transactionsFilters?.networks ?? []), network]\n : transactionsFilters.networks.filter((c) => c !== network);\n setTransactionsFilters({\n ...transactionsFilters,\n networks: newNetworksFilter.length ? newNetworksFilter : undefined,\n });\n };\n\n const onTransactionsPeriodChange = (startDate, endDate) => {\n setTransactionsFilters({\n ...transactionsFilters,\n startDate,\n endDate,\n });\n };\n\n const onResetTransactionFilters = (filters) => {\n const newFilters = { ...transactionsFilters };\n filters\n .filter((f) => transactionsFilters[f])\n .forEach((filter) => {\n delete newFilters[filter];\n });\n setTransactionsFilters(newFilters);\n };\n\n const getAmountFilterText = () => {\n return transactionsFilters.minAmount && !transactionsFilters.maxAmount\n ? `Min $${transactionsFilters.minAmount}`\n : !transactionsFilters.minAmount && transactionsFilters.maxAmount\n ? `Max $${transactionsFilters.maxAmount}`\n : `$${transactionsFilters.minAmount} - $${transactionsFilters.maxAmount}`;\n };\n\n const onApplyAmountFilters = (e, setOpen) => {\n e.preventDefault();\n setOpen(false);\n setTransactionsFilters({\n ...transactionsFilters,\n minAmount: minAmount && minAmount !== '' ? minAmount : undefined,\n maxAmount: maxAmount && maxAmount !== '' ? maxAmount : undefined,\n });\n };\n\n const onApplyProductFilters = (e, setOpen) => {\n e.preventDefault();\n setOpen(false);\n setTransactionsFilters({\n ...transactionsFilters,\n productNames: productNames && productNames !== '' ? productNames : undefined,\n });\n };\n\n const onTransactionSearchClick = () => {\n if (!transactionSearchTerm && transactionSearchTerm !== '') return;\n setTransactionsFilters({ ...transactionsFilters, searchTerm: transactionSearchTerm });\n };\n\n useEffect(() => {\n if (!selectedForm) return;\n\n if (fetchingTransactions.current) return;\n\n const fetchTransactions = async () => {\n fetchingTransactions.current = true;\n try {\n const response = await API.post(`/payments/list/${selectedForm._id}`, {\n ...transactionsFilters,\n startDate: transactionsFilters.startDate\n ? dateToFormattedStr(transactionsFilters.startDate)\n : undefined,\n endDate: transactionsFilters.endDate ? dateToFormattedStr(transactionsFilters.endDate) : undefined,\n productNames: transactionsFilters.productNames\n ? transactionsFilters.productNames.split(',')\n : undefined,\n page: transactionsPage,\n itemsPerPage: ITEMS_PER_PAGE,\n });\n setTransactions(response.data.payments);\n setTotalTransactions(response.data.total);\n\n fetchingTransactions.current = false;\n } catch (error) {\n console.log(error);\n toast.error('An unexpected error occured, please try again...');\n setError(true);\n fetchingTransactions.current = false;\n }\n };\n\n fetchTransactions();\n }, [selectedForm, transactionsFilters, transactionsPage]);\n\n const onExportClick = async () => {\n setExportLoading(true);\n try {\n const response = await API.post(\n `/payments/download-list/${selectedForm._id}`,\n {\n ...transactionsFilters,\n startDate: transactionsFilters.startDate\n ? dateToFormattedStr(transactionsFilters.startDate)\n : undefined,\n endDate: transactionsFilters.endDate ? dateToFormattedStr(transactionsFilters.endDate) : undefined,\n productNames: transactionsFilters.productNames\n ? transactionsFilters.productNames.split(',')\n : undefined,\n },\n { responseType: 'blob' }\n );\n saveAs(response.data, 'payments.csv');\n setExportLoading(false);\n } catch (error) {\n console.log(error);\n toast.error('An unexpected error occured, please try again...');\n setError(true);\n setExportLoading(false);\n }\n };\n\n if (formsList?.length === 0) {\n return (\n
    \n
    \n You don't have any payment forms\n

    \n Click the button below to create a payment form and start accepting crypto payments.\n

    \n {\n navigate('/merchant/create');\n }}\n />\n
    \n
    \n );\n }\n\n if ((loading || !selectedForm) && !error) {\n return (\n
    \n \n
    \n );\n }\n\n if (error) {\n return ;\n }\n\n return (\n
    \n
    \n
    \n {selectedForm.name}\n \n
    \n
    \n form.name)}\n onChange={onSelectedFormChange}\n value={selectedForm.name}\n />\n \n Create new payment form \n \n
    \n
    \n
    \n
    \n
    \n
    \n Total payments {getSalesPeriodTitle()}\n ${totalPayments}\n
    \n
    \n onSelectedPeriodChange(PERIOD_FILTERS.WEEK)}\n className=\"ml-2\"\n >\n W\n \n onSelectedPeriodChange(PERIOD_FILTERS.MONTH)}\n className=\"ml-2\"\n >\n M\n \n onSelectedPeriodChange(PERIOD_FILTERS.YEAR)}\n className=\"ml-2\"\n >\n Y\n \n onSelectedPeriodChange(PERIOD_FILTERS.CUSTOM)}\n className=\"ml-2 relative flex items-center justify-center\"\n >\n \n \n \n \n
    \n
    \n {/* if chart width is less that 768 - 32 then screen is less than 768 then the height is computed differently */}\n \n
    \n \n \n \n
    \n
    \n
    \n
    \n Transactions\n
    \n \n \n
    \n
    \n
    \n onResetTransactionFilters(['coins'])}\n contentClassName=\"bg-white\"\n className=\"ml-2 sm:ml-0\"\n >\n {() =>\n ALL_SUPPORTED_TOKENS.map((option, i) => (\n
    \n \n onCoinsFilterChange(option, !transactionsFilters.coins.includes(option))\n }\n type=\"button\"\n >\n \n \n {option}\n \n onCoinsFilterChange(option, selected)}\n />\n \n {i !== ALL_SUPPORTED_TOKENS.length - 1 &&
    }\n
    \n ))\n }\n \n onResetTransactionFilters(['networks'])}\n contentClassName=\"bg-white\"\n >\n {() =>\n NETWORKS_ARRAY.map((option, i) => (\n
    \n \n onNetworksFilterChange(\n option,\n !transactionsFilters.networks.includes(option)\n )\n }\n type=\"button\"\n >\n {NETWORK_NAME_LABELS[option]}\n onNetworksFilterChange(option, selected)}\n />\n \n {i !== NETWORKS_ARRAY.length - 1 &&
    }\n
    \n ))\n }\n \n onResetTransactionFilters(['startDate', 'endDate'])}\n />\n onResetTransactionFilters(['minAmount', 'maxAmount'])}\n contentClassName=\"w-96\"\n >\n {(open, setOpen) => {\n return (\n
    \n Amount range\n
    \n \n to\n \n
    \n
    \n {\n e.preventDefault();\n setOpen(false);\n }}\n >\n Cancel\n \n onApplyAmountFilters(e, setOpen)}\n />\n
    \n
    \n );\n }}\n \n onResetTransactionFilters(['productNames'])}\n contentClassName=\"w-96\"\n >\n {(open, setOpen) => (\n
    \n \n onApplyProductFilters(e, setOpen)}\n />\n
    \n )}\n \n
    \n \n setTransactionsPage(newPage)}\n totalItems={totalTransactions}\n itemsPerPage={ITEMS_PER_PAGE}\n className=\"lg:bg-gray-light rounded-b-xl pt-8 mb-16\"\n />\n
    \n \n );\n};\n\nexport default MerchantSales;\n","var _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSettingsIllustration(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 529,\n height: 521,\n viewBox: \"0 0 529 521\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_103_2175)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M166.624 434.825C157.573 427.006 148.851 418.858 140.458 410.298C132.065 401.82 124.001 392.931 116.349 383.795C108.696 374.659 101.373 365.194 94.379 355.482C87.4672 345.77 80.8845 335.811 74.7955 325.605C71.6688 320.502 68.7066 315.234 65.8266 309.966C62.8644 304.534 59.9022 298.937 58.4211 292.847C58.092 291.365 57.7629 289.801 57.6806 288.237C57.5983 287.414 56.2818 287.414 56.3641 288.237C56.94 294.493 59.3263 300.336 62.1239 305.851C64.9215 311.283 67.966 316.633 71.0105 321.901C77.0995 332.271 83.5176 342.395 90.4294 352.19C97.3412 362.066 104.582 371.614 112.234 380.914C119.887 390.215 127.868 399.187 136.261 407.829C144.654 416.471 153.376 424.784 162.345 432.768C163.415 433.755 164.567 434.743 165.719 435.648C166.295 436.307 167.282 435.319 166.624 434.825Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M79.4876 294.821C76.5254 289.636 73.3986 284.286 68.7085 280.418C66.5691 278.689 64.1829 277.126 61.4675 276.385C59.1636 275.726 56.6951 275.726 54.3089 276.22C49.9479 277.043 45.4223 279.842 44.188 284.369C42.8715 289.225 45.6691 293.751 48.3845 297.538C51.0176 301.241 54.4735 305.357 53.8152 310.213C53.2392 314.493 49.7833 317.62 46.8211 320.501C43.8589 323.299 40.403 326.263 39.251 330.296C38.675 332.435 38.8396 334.658 39.7447 336.715C40.7321 338.938 42.6246 340.584 44.6817 341.736C46.9034 343.053 49.4542 343.958 51.9227 344.699C54.3912 345.44 56.942 345.934 59.4105 347.004C63.7715 348.897 68.9553 352.601 67.4742 358.033C67.0628 359.679 66.24 361.243 65.8286 362.889C65.4994 364.288 65.4171 365.687 65.4994 367.169C65.7463 370.05 66.9805 372.848 68.8731 375.07C72.9049 379.515 79.7345 380.42 84.9183 377.622C86.3171 376.881 87.716 375.893 89.2793 375.729C90.6782 375.564 91.9947 376.058 93.2289 376.799C95.7797 378.198 98.0014 380.256 100.799 381.243C105.901 382.972 111.496 381.243 115.775 378.28C120.382 375.153 123.921 370.543 125.813 365.358C127.623 360.502 128.117 354.987 126.801 349.967C126.142 347.58 125.073 345.358 123.509 343.382C121.699 341.16 119.313 339.761 116.68 338.691C113.635 337.539 110.344 336.88 107.382 335.316C104.995 333.999 102.938 332.024 101.375 329.719C99.8939 327.415 98.9065 324.781 98.5774 322.065C98.4128 320.666 98.4128 319.349 98.5774 317.95C98.8242 316.386 99.3179 314.822 99.8116 313.34C100.305 311.777 100.634 310.13 100.47 308.484C100.388 307.167 99.9762 305.933 99.4002 304.781C98.2482 302.394 96.1911 300.583 94.1341 299.019C91.9124 297.455 89.5262 296.221 87.14 295.068C86.3994 294.739 85.6589 295.891 86.4817 296.221C88.9502 297.373 91.4187 298.608 93.5581 300.171C95.6152 301.653 97.5077 303.464 98.4951 305.851C98.9888 307.003 99.2356 308.155 99.1533 309.39C99.1533 311.118 98.5774 312.764 98.0837 314.328C97.2608 317.126 96.9317 319.843 97.3431 322.723C98.0837 328.073 101.293 333.012 105.818 335.892C108.451 337.539 111.578 338.279 114.54 339.267C117.256 340.172 119.889 341.407 121.864 343.547C125.237 347.168 126.307 352.354 126.06 357.127C125.813 362.313 124.003 367.416 120.794 371.531C117.585 375.729 112.895 379.268 107.711 380.256C105.242 380.749 102.774 380.585 100.47 379.597C97.7545 378.527 95.6974 376.387 93.0644 375.153C91.8301 374.576 90.4313 374.165 89.0325 374.329C87.4691 374.494 86.1526 375.317 84.7537 376.058C82.203 377.539 79.4053 378.198 76.4431 377.704C73.6455 377.21 71.0947 375.811 69.2845 373.671C67.4742 371.531 66.5691 368.65 66.5691 365.852C66.5691 364.37 66.8983 362.889 67.4742 361.49C68.0502 359.926 68.7085 358.444 68.8731 356.798C69.1199 354.411 68.1325 352.189 66.5691 350.378C64.9235 348.485 62.7018 347.168 60.4801 346.098C58.0939 345.028 55.6254 344.37 53.1569 343.711C50.6884 343.053 48.2199 342.23 45.916 341.078C43.8589 340.008 41.9664 338.526 40.8967 336.469C39.9916 334.658 39.827 332.6 40.403 330.625C40.979 328.814 42.1309 327.25 43.3652 325.769C46.2451 322.559 49.701 319.925 52.3341 316.468C53.5683 314.822 54.5557 313.011 54.9672 311.036C55.3786 308.814 55.0494 306.591 54.2266 304.451C52.4164 300.007 48.7959 296.55 46.5743 292.27C45.5868 290.295 44.9286 288.072 45.1754 285.768C45.4223 283.71 46.5743 281.817 48.1376 280.418C51.5113 277.455 56.6128 276.549 60.8916 277.619C66.3223 279.019 70.5187 283.628 73.6455 288.072C75.2912 290.459 76.7723 292.928 78.1711 295.398C78.7471 296.221 79.899 295.562 79.4876 294.821Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M529 439.188H32.0908V440.998H529V439.188Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M522.088 298.855C520.031 306.756 520.278 309.802 511.885 312.929C507.03 314.74 490.738 320.172 475.68 324.288L466.3 319.925L462.433 320.008C462.433 320.008 466.218 323.382 469.098 326.098C467.863 326.428 466.711 326.674 465.56 327.004L457.989 321.654L452.888 320.831C452.888 320.831 455.932 324.781 458.812 328.485C455.027 329.226 451.818 329.637 449.514 329.637C437.172 329.473 427.051 311.695 427.051 311.695C427.051 311.695 423.842 292.435 442.685 283.217L442.767 286.097L445.153 290.707C445.153 290.707 446.47 285.768 447.786 281.241C448.938 280.83 450.09 280.501 451.407 280.254C479.877 273.093 524.145 290.953 522.088 298.855Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M449.761 330.378C449.679 330.378 449.596 330.378 449.514 330.378C436.843 330.214 426.722 312.765 426.31 311.942C426.228 311.859 426.228 311.777 426.228 311.695C426.228 311.53 423.101 291.694 442.356 282.311C442.602 282.229 442.931 282.229 443.178 282.311C443.425 282.476 443.59 282.723 443.59 282.97L443.672 285.604L444.989 288.155C445.482 286.262 446.305 283.464 447.128 280.665C447.21 280.418 447.375 280.171 447.622 280.089C448.774 279.678 450.008 279.348 451.242 279.019C476.339 272.928 512.461 285.604 520.936 294.246C522.582 295.974 523.24 297.538 522.911 298.937C522.664 299.843 522.5 300.666 522.253 301.489C520.772 307.579 520.031 310.707 512.132 313.588C507.113 315.481 490.738 320.913 475.845 325.028C475.68 325.111 475.433 325.028 475.269 324.946L466.053 320.666H464.407C465.806 321.901 467.863 323.711 469.509 325.358C469.756 325.522 469.838 325.851 469.756 326.181C469.674 326.51 469.427 326.675 469.18 326.757C467.946 327.086 466.794 327.333 465.642 327.662C465.395 327.745 465.148 327.662 464.983 327.498L457.578 322.23L454.78 321.736C455.932 323.218 457.743 325.522 459.388 327.745C459.553 327.991 459.635 328.238 459.47 328.568C459.388 328.814 459.141 329.061 458.894 329.061C455.027 329.967 451.9 330.378 449.761 330.378ZM427.791 311.283C428.779 312.847 438.324 328.568 449.514 328.732C451.324 328.732 453.957 328.485 457.331 327.827C454.78 324.452 452.23 321.242 452.23 321.242C451.983 320.995 451.983 320.584 452.147 320.337C452.312 320.008 452.641 319.925 452.97 319.925L458.072 320.748C458.154 320.748 458.318 320.831 458.401 320.913L465.642 326.098C466.218 325.934 466.711 325.851 467.287 325.687C464.654 323.3 461.774 320.666 461.692 320.666C461.445 320.419 461.363 320.09 461.445 319.761C461.528 319.432 461.857 319.267 462.186 319.185L466.053 319.102C466.135 319.102 466.3 319.102 466.382 319.185L475.433 323.465C490.244 319.349 506.29 313.999 511.309 312.189C518.303 309.555 518.879 307.332 520.36 301.242C520.525 300.419 520.772 299.596 521.018 298.69C521.265 297.703 520.36 296.468 519.455 295.563C511.062 287.003 475.022 275.068 451.324 280.748C450.255 280.994 449.185 281.324 448.198 281.653C446.963 286.015 445.647 290.624 445.647 290.707C445.565 291.036 445.318 291.283 444.906 291.283C444.577 291.283 444.248 291.118 444.083 290.871L441.697 286.262C441.615 286.18 441.615 286.015 441.615 285.933V284.369C425.817 293.011 427.627 309.555 427.791 311.283Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M416.262 146.262C406.224 149.719 402.274 149.719 399.065 160.913C397.173 167.415 391.742 189.061 387.875 209.062L394.457 220.749L394.786 225.852C394.786 225.852 390.014 221.243 386.229 217.786C385.982 219.35 385.653 220.914 385.488 222.478L393.223 231.778L394.869 238.281C394.869 238.281 389.52 234.659 384.336 231.367C383.76 236.388 383.514 240.585 383.76 243.466C385.241 259.433 409.268 270.874 409.268 270.874C409.268 270.874 434.529 273.179 444.65 247.746L440.947 247.911L434.776 245.277C434.776 245.277 441.03 243.054 446.789 240.915C447.201 239.433 447.448 237.787 447.777 236.141C453.784 198.444 426.301 142.805 416.262 146.262Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M410.914 271.697C409.845 271.697 409.269 271.615 409.186 271.615C409.104 271.615 409.022 271.615 408.94 271.532C407.952 271.039 384.419 259.763 382.938 243.466C382.691 240.667 382.856 236.552 383.514 231.202C383.514 230.955 383.761 230.708 384.008 230.544C384.255 230.462 384.584 230.462 384.831 230.626C388.204 232.766 391.578 235.071 393.635 236.388L392.565 232.108L384.995 222.972C384.831 222.807 384.748 222.56 384.831 222.313C385.077 220.832 385.324 219.35 385.653 217.622C385.736 217.292 385.9 217.046 386.229 216.963C386.476 216.881 386.805 216.963 387.052 217.128C389.521 219.35 392.401 222.149 394.046 223.712L393.882 220.914L387.381 209.391C387.299 209.226 387.217 209.062 387.299 208.815C391.166 189.061 396.597 167.332 398.49 160.583C401.452 150.295 405.319 148.978 412.971 146.509C413.959 146.18 415.029 145.85 416.181 145.439C417.826 144.863 419.883 145.521 422.187 147.497C428.523 152.764 436.505 167.25 442.018 183.464C445.885 194.74 451.892 216.552 448.765 236.141C448.518 237.787 448.189 239.433 447.777 240.997C447.695 241.244 447.531 241.491 447.284 241.573C443.499 242.972 439.549 244.454 437.245 245.277L441.359 247.005L444.897 246.84C445.144 246.84 445.473 246.923 445.638 247.17C445.803 247.417 445.803 247.664 445.72 247.993C440.372 261.409 430.827 267.17 423.751 269.557C417.991 271.368 413.301 271.697 410.914 271.697ZM409.433 269.969C410.421 270.051 416.181 270.298 422.928 267.911C432.308 264.619 439.22 258.116 443.334 248.487L440.948 248.651C440.866 248.651 440.701 248.651 440.619 248.569L434.447 245.935C434.118 245.77 433.954 245.524 433.954 245.112C433.954 244.783 434.201 244.454 434.53 244.371C434.612 244.371 440.536 242.231 446.132 240.174C446.461 238.774 446.708 237.375 446.955 235.894C450.081 216.634 444.157 195.152 440.29 184.041C434.777 168.073 427.042 153.916 420.953 148.731C419.719 147.661 417.908 146.509 416.592 147.003L416.345 146.262L416.592 147.003C415.44 147.414 414.37 147.743 413.383 148.073C405.813 150.542 402.686 151.612 399.971 161.077C398.078 167.744 392.648 189.226 388.862 208.815L395.363 220.255C395.445 220.338 395.445 220.502 395.445 220.585L395.774 225.688C395.774 226.017 395.61 226.346 395.281 226.511C394.951 226.675 394.622 226.593 394.375 226.346C394.293 226.264 390.426 222.56 386.97 219.35C386.805 220.338 386.641 221.243 386.476 222.149L393.964 231.12C394.046 231.202 394.129 231.367 394.129 231.449L395.774 237.951C395.857 238.281 395.692 238.61 395.445 238.857C395.198 239.021 394.787 239.021 394.54 238.857C394.458 238.857 389.85 235.729 385.16 232.684C384.666 237.293 384.501 240.832 384.748 243.301C385.818 258.034 407.541 269.063 409.433 269.969Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M345.253 374.416C344.595 373.346 345.583 371.7 355.457 356.555C369.116 335.649 391.908 300.587 406.801 266.43C424.822 225.194 425.48 198.115 408.776 185.769L409.764 184.37C427.208 197.21 426.714 225.112 408.365 267.17C393.389 301.492 370.514 336.555 356.855 357.543C351.507 365.774 346.899 372.77 346.735 373.922C346.735 373.922 346.735 373.757 346.652 373.593L345.253 374.416Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M347.64 387.173L346.405 385.938C346.652 385.691 373.641 359.435 404.909 335.567C423.258 321.574 439.468 311.122 453.127 304.537C470.324 296.224 483.489 294.002 492.294 298.035L491.553 299.599C476.578 292.767 446.956 305.689 405.978 336.966C374.793 360.67 347.886 386.926 347.64 387.173Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M317.852 170.871C312.01 179.761 308.801 182.147 313.08 192.93C315.548 199.267 324.435 219.679 333.486 237.951L345.829 243.219L349.202 247.087C349.202 247.087 342.619 246.346 337.518 245.853C338.258 247.252 338.999 248.651 339.74 250.05L351.506 252.684L356.772 256.882C356.772 256.882 350.354 257.293 344.183 257.787C346.734 262.149 349.12 265.606 351.095 267.746C361.956 279.516 388.04 273.919 388.04 273.919C388.04 273.919 409.516 260.339 402.028 234L399.23 236.387L392.73 238.116C392.73 238.116 396.351 232.601 399.642 227.334C398.984 225.934 398.325 224.453 397.503 222.971C379.4 189.39 323.694 161.982 317.852 170.871Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M374.299 275.565C366.236 275.565 356.444 274.084 350.849 267.993C348.956 265.935 346.652 262.561 343.855 257.952L343.608 257.54L344.101 257.458C348.874 257.046 353.893 256.717 355.868 256.552L351.342 252.931L339.494 250.215L339.411 250.05C338.671 248.733 337.93 247.334 337.19 245.853L336.943 245.359L337.519 245.441C341.551 245.77 346.488 246.346 348.38 246.593L345.665 243.466L333.24 238.198L333.158 238.116C324.189 220.173 315.302 199.596 312.751 193.094C308.884 183.382 311.024 180.254 315.631 173.505C316.207 172.6 316.866 171.694 317.524 170.707C318.429 169.39 320.239 168.731 323.037 168.896C331.183 169.307 346.241 175.892 360.394 185.275C370.268 191.859 388.288 205.44 397.586 222.807C398.409 224.288 399.067 225.77 399.725 227.169L399.807 227.334L399.725 227.498C397.174 231.613 394.377 235.976 393.307 237.622L398.902 236.14L402.029 233.424L402.194 233.918C406.061 247.663 402.029 257.869 397.915 264.042C393.472 270.709 388.041 274.166 388.041 274.248L387.959 274.331C387.959 274.331 381.787 275.565 374.299 275.565ZM344.677 258.116C347.311 262.478 349.532 265.606 351.342 267.581C361.71 278.857 386.56 274.001 387.876 273.672C388.452 273.343 393.389 269.886 397.586 263.713C401.535 257.787 405.485 247.91 401.864 234.659L399.396 236.799L391.99 238.692L392.484 237.951C392.484 237.869 396.022 232.437 399.314 227.334C398.738 225.934 397.997 224.535 397.257 223.136C387.959 205.852 370.103 192.353 360.229 185.851C346.076 176.468 331.183 169.884 323.201 169.554C320.651 169.472 319.005 169.966 318.182 171.036C317.524 172.024 316.866 173.011 316.29 173.834C311.682 180.583 309.789 183.382 313.492 192.765C316.043 199.267 324.929 219.679 333.816 237.622L346.159 242.889L350.108 247.416L349.285 247.334C349.203 247.334 343.196 246.593 338.177 246.182C338.835 247.416 339.411 248.569 340.07 249.721L351.754 252.355L357.678 257.128L356.855 257.211C356.691 257.211 350.602 257.622 344.677 258.116Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M354.962 392.523L353.316 391.947C368.456 348.983 374.627 316.142 377.096 296.06C380.223 270.791 379.4 251.12 374.71 242.149C368.703 230.461 359.899 218.033 359.816 217.868C355.209 211.366 350.107 205.029 344.841 199.102L346.157 197.95C351.506 203.959 356.607 210.296 361.297 216.881C361.38 217.045 370.266 229.556 376.355 241.326C385.571 259.269 381.21 318.282 354.962 392.523Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M388.452 375.403L343.937 339.682C339.905 336.472 333.981 337.46 331.265 341.822L292.757 402.811C290.453 406.515 291.193 411.453 294.649 414.169L326.164 439.437C329.537 442.153 334.474 441.906 337.601 438.861L389.028 388.243C392.813 384.703 392.484 378.613 388.452 375.403Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M331.594 442.154C329.537 442.154 327.398 441.495 325.67 440.096L294.155 414.828C290.37 411.782 289.465 406.432 292.098 402.399L330.607 341.41C332.006 339.106 334.392 337.542 337.025 337.13C339.658 336.719 342.373 337.377 344.513 339.106L389.028 374.827C391.167 376.555 392.402 379.024 392.566 381.741C392.731 384.457 391.661 387.09 389.769 388.984L338.259 439.52C336.367 441.248 333.98 442.154 331.594 442.154ZM338.588 338.612C338.177 338.612 337.765 338.612 337.272 338.694C335.05 339.023 333.158 340.34 331.923 342.233L293.497 403.305C291.358 406.679 292.098 411.124 295.225 413.593L326.74 438.861C329.866 441.33 334.31 441.083 337.107 438.367L388.534 387.749C390.098 386.185 391.003 384.045 390.838 381.741C390.756 379.518 389.686 377.461 387.958 376.061L343.443 340.34C342.044 339.27 340.316 338.612 338.588 338.612Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M386.231 391.371C368.458 379.19 343.608 362.07 326.164 349.806L327.151 348.407C344.596 360.671 369.445 377.791 387.218 389.972L386.231 391.371Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M377.345 399.931C370.35 393.922 365.578 391.371 359.571 388.079C354.223 385.116 347.558 381.494 337.19 374.251C330.525 369.56 324.436 365.115 319.088 360.917L320.158 359.601C325.506 363.716 331.513 368.243 338.178 372.852C348.463 380.013 355.046 383.634 360.394 386.597C366.483 389.972 371.338 392.605 378.414 398.696L377.345 399.931Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M363.19 414.005C354.715 407.667 342.373 398.778 331.758 392.029C322.624 386.185 315.466 382.893 308.472 379.683L307.813 379.354L308.554 377.79L309.212 378.119C316.206 381.329 323.447 384.704 332.663 390.548C343.36 397.379 355.785 406.35 364.26 412.606L363.19 414.005Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M354.88 422.071L354.386 421.577C347.392 415.239 337.765 406.597 330.195 402.482C325.998 400.177 321.967 398.202 318.099 396.309C312.504 393.593 307.238 390.959 302.301 387.749L303.206 386.268C307.978 389.395 313.244 391.947 318.757 394.663C322.625 396.556 326.657 398.531 330.935 400.918C338.67 405.198 348.379 413.923 355.456 420.26L355.95 420.754L354.88 422.071Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M346.488 430.22C345.336 429.067 344.266 427.915 343.196 426.763C331.923 414.252 330.525 413.923 327.398 413.182C325.094 412.688 321.967 411.948 314.562 407.256C308.802 403.635 303.124 399.519 297.611 395.075L298.681 393.758C304.112 398.202 309.789 402.235 315.467 405.857C322.708 410.466 325.67 411.124 327.809 411.618C331.265 412.441 332.911 412.771 344.513 425.693C345.5 426.845 346.652 427.997 347.722 429.067L346.488 430.22Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M370.514 407.009C367.304 405.446 363.684 403.635 359.817 401.577C340.316 391.206 339.41 390.301 336.613 387.256C334.885 385.445 332.334 382.729 323.447 376.062C319.827 373.346 316.7 370.877 314.149 368.737L315.219 367.42C317.77 369.56 320.814 371.947 324.435 374.663C333.404 381.412 336.119 384.21 337.847 386.021C340.562 388.902 341.385 389.725 360.64 400.013C364.507 402.071 368.045 403.882 371.254 405.446L370.514 407.009Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M341.962 434.828C337.848 431.865 337.354 432.194 337.19 432.359C335.955 433.264 334.968 433.1 329.455 428.408C319.252 419.684 317.524 418.696 308.061 413.346C306.745 412.605 305.346 411.782 303.7 410.877C298.846 408.079 295.143 405.198 292.839 402.317L294.155 401.247C296.377 403.963 299.833 406.679 304.523 409.395C306.169 410.301 307.568 411.124 308.884 411.865C318.429 417.297 320.157 418.285 330.525 427.174C334.721 430.795 335.791 431.124 336.038 431.124L336.12 431.042C337.272 430.219 338.588 430.384 342.867 433.511L341.962 434.828Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M380.635 275.236L379.647 274.825C379.647 274.743 381.622 269.31 379.565 258.94C377.755 249.31 371.995 233.26 355.456 211.614L356.361 210.955C373.147 232.766 378.907 249.063 380.717 258.857C382.692 269.557 380.717 274.99 380.635 275.236ZM380.141 275.072L379.647 274.907L380.141 275.072Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M286.101 260.994V274.657C286.101 277.537 285.361 280.171 284.209 282.229C282.645 285.027 280.177 286.838 277.462 286.838H161.607C158.891 286.838 156.423 285.027 154.859 282.229C153.707 280.171 152.967 277.537 152.967 274.657V260.994C152.967 254.245 156.834 248.812 161.607 248.812H277.462C282.234 248.812 286.101 254.327 286.101 260.994Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M277.461 287.744H161.606C158.644 287.744 155.929 285.933 154.118 282.723C152.802 280.418 152.144 277.62 152.144 274.657V260.994C152.144 253.751 156.422 247.907 161.688 247.907H277.543C282.81 247.907 287.088 253.751 287.088 260.994V274.657C287.088 277.62 286.43 280.418 285.114 282.723C283.221 285.933 280.423 287.744 277.461 287.744ZM161.606 249.718C157.327 249.718 153.872 254.821 153.872 260.994V274.657C153.872 277.291 154.53 279.76 155.599 281.817C157.081 284.451 159.302 285.933 161.606 285.933H277.461C279.765 285.933 281.987 284.451 283.468 281.817C284.62 279.842 285.196 277.291 285.196 274.657V260.994C285.196 254.739 281.74 249.718 277.461 249.718H161.606Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M286.182 299.019V312.764C286.182 316.056 285.277 319.019 283.714 321.242C282.15 323.546 279.929 324.946 277.543 324.946H161.688C159.219 324.946 157.08 323.546 155.516 321.242C154.035 319.019 153.048 316.056 153.048 312.764V299.101C153.048 296.221 153.788 293.587 154.94 291.529C156.504 288.731 158.972 286.92 161.688 286.92H277.543C280.258 286.92 282.726 288.731 284.29 291.529C285.524 293.587 286.182 296.221 286.182 299.019Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M277.543 325.769H161.688C159.055 325.769 156.587 324.287 154.777 321.654C153.131 319.184 152.144 316.057 152.144 312.682V299.019C152.144 296.056 152.802 293.34 154.118 290.953C155.929 287.743 158.644 285.933 161.606 285.933H277.461C280.423 285.933 283.139 287.743 284.949 290.953C286.265 293.258 286.924 296.056 286.924 299.019V312.765C286.924 316.139 286.019 319.349 284.291 321.736C282.645 324.37 280.177 325.769 277.543 325.769ZM161.688 287.743C159.384 287.743 157.163 289.225 155.682 291.859C154.53 293.834 153.954 296.386 153.954 299.019V312.765C153.954 315.81 154.777 318.608 156.258 320.748C157.739 322.888 159.631 324.041 161.688 324.041H277.543C279.601 324.041 281.493 322.888 282.974 320.748C284.455 318.608 285.278 315.81 285.278 312.765V299.102C285.278 296.468 284.62 293.999 283.55 291.941C282.069 289.307 279.847 287.826 277.543 287.826H161.688V287.743Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M286.183 337.127V350.79C286.183 352.6 285.936 354.246 285.443 355.81C284.62 358.362 283.221 360.502 281.411 361.736C280.259 362.559 278.942 362.971 277.626 362.971H161.688C160.29 362.971 158.973 362.477 157.821 361.654C156.093 360.419 154.694 358.362 153.871 355.81C153.378 354.246 153.131 352.6 153.131 350.79V337.127C153.131 334.657 153.625 332.353 154.53 330.46C156.093 327.168 158.726 324.945 161.771 324.945H277.626C280.67 324.945 283.303 327.085 284.867 330.46C285.689 332.353 286.183 334.657 286.183 337.127Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M277.543 363.876H161.688C160.125 363.876 158.644 363.382 157.245 362.395C155.353 360.995 153.789 358.773 152.966 356.139C152.39 354.493 152.144 352.682 152.144 350.872V337.209C152.144 334.657 152.637 332.27 153.625 330.13C155.353 326.344 158.397 324.122 161.606 324.122H277.461C280.753 324.122 283.715 326.344 285.443 330.13C286.43 332.27 286.924 334.657 286.924 337.209V350.872C286.924 352.682 286.677 354.493 286.101 356.139C285.196 358.855 283.632 361.16 281.74 362.477C280.588 363.382 279.107 363.876 277.543 363.876ZM161.688 325.768C159.138 325.768 156.751 327.661 155.27 330.707C154.365 332.6 153.954 334.74 153.954 337.044V350.707C153.954 352.353 154.201 353.999 154.694 355.481C155.435 357.785 156.751 359.761 158.315 360.913C159.384 361.654 160.536 362.065 161.688 362.065H277.543C278.695 362.065 279.847 361.736 280.835 360.995C282.48 359.843 283.797 357.95 284.538 355.563C285.031 354.082 285.278 352.436 285.278 350.789V337.127C285.278 334.904 284.784 332.682 283.962 330.789C282.48 327.661 280.094 325.851 277.543 325.851H161.688V325.768Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M161.688 286.838C158.89 286.838 156.422 285.027 154.858 282.229H284.208C282.645 285.027 280.176 286.838 277.461 286.838H277.543C280.258 286.838 282.727 288.648 284.29 291.447H154.941C156.504 288.648 158.973 286.838 161.688 286.838Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M285.852 292.352H153.376L154.117 291.035C155.186 289.142 156.585 287.743 158.149 286.92C156.585 286.097 155.186 284.698 154.034 282.722L153.294 281.405H285.77L285.03 282.722C283.96 284.615 282.561 286.014 280.998 286.838C282.561 287.661 283.96 289.06 285.112 291.035L285.852 292.352ZM156.585 290.541H282.643C281.245 288.731 279.434 287.743 277.542 287.743H277.46V285.932C279.352 285.932 281.162 284.944 282.561 283.134H156.503C157.902 284.944 159.712 285.932 161.605 285.932H161.687V287.743C159.794 287.743 157.984 288.813 156.585 290.541Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M161.688 324.946C159.22 324.946 157.08 323.547 155.517 321.242H283.797C282.233 323.547 280.012 324.946 277.626 324.946C280.67 324.946 283.303 327.086 284.866 330.461H154.447C156.011 327.086 158.644 324.946 161.688 324.946Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M286.182 331.284H153.048L153.624 330.049C154.694 327.662 156.339 325.934 158.149 324.946C156.833 324.288 155.681 323.218 154.694 321.736L153.706 320.337H285.36L284.372 321.736C283.385 323.135 282.233 324.205 280.916 324.946C282.726 325.934 284.372 327.662 285.442 330.049L286.182 331.284ZM155.928 329.473H283.22C281.739 327.168 279.682 325.769 277.543 325.769V323.958C279.106 323.958 280.587 323.3 281.821 322.065H157.409C158.643 323.3 160.124 323.958 161.688 323.958V325.769C159.466 325.769 157.409 327.168 155.928 329.473Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M286.101 372.519V386.182C286.101 389.063 285.361 391.696 284.209 393.754C282.645 396.552 280.177 398.363 277.462 398.363H161.607C158.891 398.363 156.423 396.552 154.859 393.754C153.707 391.696 152.967 389.063 152.967 386.182V372.519C152.967 369.638 153.707 367.004 154.859 364.947C155.682 363.548 156.67 362.395 157.822 361.655C158.973 360.831 160.29 360.42 161.607 360.42H277.462C278.86 360.42 280.177 360.914 281.329 361.737C282.399 362.56 283.386 363.63 284.209 365.029C285.443 367.087 286.101 369.721 286.101 372.519Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M277.461 399.269H161.606C158.644 399.269 155.929 397.458 154.118 394.248C152.802 391.944 152.144 389.145 152.144 386.182V372.519C152.144 369.556 152.802 366.84 154.118 364.453C154.941 362.972 156.093 361.655 157.327 360.832C158.644 359.926 160.125 359.433 161.688 359.433H277.543C279.107 359.433 280.588 359.926 281.987 360.914C283.221 361.737 284.291 362.972 285.114 364.453C286.43 366.758 287.088 369.556 287.088 372.519V386.182C287.088 389.145 286.43 391.861 285.114 394.248C283.221 397.458 280.423 399.269 277.461 399.269ZM161.606 361.243C160.454 361.243 159.302 361.573 158.315 362.313C157.327 363.054 156.34 364.042 155.682 365.359C154.53 367.334 153.954 369.886 153.954 372.519V386.182C153.954 388.816 154.612 391.285 155.682 393.343C157.163 395.977 159.384 397.458 161.688 397.458H277.543C279.847 397.458 282.069 395.977 283.55 393.343C284.702 391.368 285.278 388.816 285.278 386.182V372.519C285.278 369.886 284.62 367.416 283.55 365.359C282.81 364.124 281.987 363.054 280.999 362.396C279.93 361.655 278.778 361.243 277.626 361.243H161.606Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M286.182 410.627V424.29C286.182 427.582 285.277 430.545 283.714 432.767C282.15 435.072 279.929 436.471 277.543 436.471H161.688C159.219 436.471 157.08 435.072 155.516 432.767C154.035 430.545 153.048 427.582 153.048 424.29V410.627C153.048 407.746 153.788 405.112 154.94 403.054C156.504 400.256 158.972 398.445 161.688 398.445H277.543C280.258 398.445 282.726 400.256 284.29 403.054C285.524 405.112 286.182 407.746 286.182 410.627Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M277.543 437.376H161.688C159.055 437.376 156.587 435.895 154.777 433.261C153.131 430.792 152.144 427.664 152.144 424.29V410.627C152.144 407.664 152.802 404.948 154.118 402.561C155.929 399.351 158.644 397.54 161.606 397.54H277.461C280.423 397.54 283.139 399.351 284.949 402.561C286.265 404.865 286.924 407.664 286.924 410.627V424.29C286.924 427.664 286.019 430.874 284.291 433.261C282.645 435.895 280.177 437.376 277.543 437.376ZM161.688 399.268C159.384 399.268 157.163 400.75 155.682 403.384C154.53 405.359 153.954 407.911 153.954 410.544V424.207C153.954 427.253 154.777 430.051 156.258 432.191C157.739 434.331 159.631 435.483 161.688 435.483H277.543C279.601 435.483 281.493 434.331 282.974 432.191C284.455 430.051 285.278 427.253 285.278 424.207V410.544C285.278 407.911 284.62 405.441 283.55 403.384C282.069 400.75 279.847 399.268 277.543 399.268H161.688V399.268Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M286.182 448.652V462.315C286.182 469.064 282.315 474.496 277.543 474.496H161.688C156.915 474.496 153.048 469.064 153.048 462.315V448.652C153.048 446.183 153.542 443.878 154.447 441.985C156.01 438.693 158.643 436.471 161.688 436.471H277.543C280.587 436.471 283.22 438.611 284.784 441.985C285.689 443.878 286.182 446.183 286.182 448.652Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M277.543 475.402H161.688C156.422 475.402 152.144 469.558 152.144 462.315V448.652C152.144 446.101 152.637 443.714 153.625 441.574C155.353 437.788 158.397 435.565 161.606 435.565H277.461C280.753 435.565 283.715 437.788 285.443 441.574C286.43 443.714 286.924 446.101 286.924 448.652V462.315C287.088 469.558 282.81 475.402 277.543 475.402ZM161.688 437.376C159.138 437.376 156.751 439.269 155.27 442.315C154.365 444.208 153.954 446.348 153.954 448.652V462.315C153.954 468.57 157.41 473.591 161.688 473.591H277.543C281.822 473.591 285.278 468.488 285.278 462.315V448.652C285.278 446.43 284.784 444.208 283.962 442.315C282.48 439.187 280.094 437.376 277.543 437.376H161.688Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M161.688 398.445C158.89 398.445 156.422 396.634 154.858 393.836H284.208C282.645 396.634 280.176 398.445 277.461 398.445H277.543C280.258 398.445 282.727 400.256 284.29 403.054H154.941C156.504 400.174 158.973 398.445 161.688 398.445Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M285.852 403.877H153.376L154.117 402.561C155.186 400.667 156.585 399.268 158.149 398.445C156.585 397.622 155.186 396.223 154.034 394.248L153.294 392.931H285.77L285.03 394.248C283.96 396.141 282.561 397.54 280.998 398.363C282.561 399.186 283.96 400.585 285.112 402.561L285.852 403.877ZM156.585 402.149H282.643C281.245 400.338 279.434 399.351 277.542 399.351H277.46V397.54C279.352 397.54 281.162 396.552 282.561 394.741H156.503C157.902 396.552 159.712 397.54 161.605 397.54H161.687V399.351C159.794 399.268 157.984 400.338 156.585 402.149Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M284.207 364.947H154.858C155.68 363.547 156.668 362.395 157.82 361.654C156.092 360.42 154.693 358.362 153.87 355.811H285.524C284.701 358.362 283.302 360.502 281.492 361.737C282.479 362.477 283.466 363.63 284.207 364.947Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M285.771 365.852H153.294L154.035 364.535C154.693 363.383 155.434 362.395 156.339 361.654C154.858 360.255 153.706 358.362 152.965 356.058L152.554 354.905H286.593L286.182 356.058C285.441 358.362 284.207 360.337 282.726 361.654C283.549 362.395 284.289 363.383 284.948 364.453L285.771 365.852ZM156.503 364.041H282.561C282.068 363.383 281.492 362.807 280.834 362.395L279.846 361.654L280.916 360.914C282.232 360.008 283.384 358.444 284.207 356.634H155.105C155.845 358.444 156.997 359.926 158.314 360.831L159.301 361.572L158.231 362.313C157.655 362.807 156.997 363.383 156.503 364.041Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M161.688 436.471C159.22 436.471 157.08 435.072 155.517 432.768H283.797C282.233 435.072 280.012 436.471 277.626 436.471C280.67 436.471 283.303 438.611 284.866 441.986H154.447C156.011 438.611 158.644 436.471 161.688 436.471Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M286.182 442.809H153.048L153.624 441.574C154.694 439.188 156.339 437.459 158.149 436.471C156.833 435.813 155.681 434.743 154.694 433.262L153.706 431.862H285.36L284.372 433.262C283.385 434.661 282.233 435.731 280.916 436.471C282.726 437.459 284.372 439.188 285.442 441.574L286.182 442.809ZM155.928 441.081H283.22C281.739 438.776 279.682 437.377 277.543 437.377V435.566C279.106 435.566 280.587 434.908 281.821 433.673H157.409C158.643 434.908 160.124 435.566 161.688 435.566V437.377C159.466 437.377 157.409 438.694 155.928 441.081Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.29\n }, /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.29,\n d: \"M205.379 248.812H178.555V474.497H205.379V248.812Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.29,\n d: \"M206.284 475.402H177.649V247.989H206.284V475.402ZM179.46 473.591H204.556V249.718H179.46V473.591Z\",\n fill: \"#101010\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.22\n }, /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.22,\n d: \"M260.099 248.812H231.711V474.497H260.099V248.812Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.22,\n d: \"M260.099 475.156H231.711C231.3 475.156 231.053 474.826 231.053 474.497V248.813C231.053 248.401 231.382 248.154 231.711 248.154H260.099C260.51 248.154 260.757 248.484 260.757 248.813V474.497C260.839 474.909 260.51 475.156 260.099 475.156ZM232.452 473.839H259.441V249.554H232.452V473.839Z\",\n fill: \"#101010\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M395.371 343.547V356.551C395.371 358.279 395.124 359.843 394.631 361.325C393.808 363.794 392.491 365.769 390.763 366.922C389.694 367.662 388.459 368.156 387.143 368.156H276.719C275.402 368.156 274.086 367.745 273.016 366.922C271.37 365.769 269.971 363.794 269.231 361.325C268.737 359.843 268.49 358.279 268.49 356.551V343.547C268.49 341.16 268.984 339.02 269.807 337.127C271.288 333.999 273.839 331.941 276.719 331.941H387.143C390.023 331.941 392.574 333.999 394.055 337.127C394.795 339.02 395.371 341.242 395.371 343.547Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M387.143 369.144H276.718C275.237 369.144 273.756 368.651 272.44 367.745C270.629 366.428 269.148 364.288 268.326 361.737C267.832 360.173 267.585 358.445 267.585 356.716V343.712C267.585 341.325 268.079 338.938 268.984 336.963C270.629 333.341 273.509 331.201 276.636 331.201H387.06C390.187 331.201 393.067 333.341 394.713 336.963C395.618 339.02 396.194 341.325 396.194 343.712V356.716C396.194 358.445 395.947 360.173 395.453 361.737C394.631 364.371 393.149 366.511 391.257 367.828C390.023 368.651 388.542 369.144 387.143 369.144ZM276.718 332.847C274.332 332.847 272.028 334.576 270.629 337.539C269.807 339.35 269.395 341.407 269.395 343.547V356.552C269.395 358.115 269.642 359.679 270.053 361.078C270.794 363.301 272.028 365.111 273.509 366.181C274.497 366.922 275.566 367.251 276.718 367.251H387.143C388.212 367.251 389.282 366.922 390.269 366.181C391.833 365.111 393.067 363.301 393.808 360.996C394.301 359.597 394.466 358.033 394.466 356.469V343.465C394.466 341.325 394.055 339.267 393.232 337.456C391.833 334.493 389.611 332.765 387.143 332.765H276.718V332.847Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M395.29 377.375V390.379C395.29 393.096 394.632 395.647 393.48 397.622C391.999 400.256 389.613 401.985 387.062 401.985H276.638C274.004 401.985 271.701 400.256 270.219 397.622C269.067 395.647 268.409 393.096 268.409 390.379V377.375C268.409 374.659 269.067 372.107 270.219 370.132C270.96 368.815 271.947 367.745 273.017 366.922C274.087 366.181 275.321 365.688 276.638 365.688H387.062C388.378 365.688 389.695 366.099 390.765 366.922C391.834 367.663 392.739 368.733 393.48 370.05C394.632 372.107 395.29 374.659 395.29 377.375Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M387.061 402.89H276.636C273.756 402.89 271.123 401.161 269.395 398.034C268.161 395.812 267.503 393.178 267.503 390.379V377.375C267.503 374.576 268.161 371.943 269.395 369.72C270.218 368.321 271.288 367.087 272.44 366.263C273.674 365.358 275.155 364.864 276.554 364.864H386.978C388.46 364.864 389.941 365.358 391.257 366.263C392.409 367.087 393.397 368.239 394.219 369.638C395.454 371.86 396.112 374.494 396.112 377.293V390.297C396.112 393.095 395.454 395.729 394.219 397.951C392.491 401.161 389.858 402.89 387.061 402.89ZM276.636 366.675C275.567 366.675 274.497 367.004 273.51 367.745C272.522 368.403 271.699 369.391 270.959 370.626C269.889 372.519 269.313 374.988 269.313 377.457V390.462C269.313 392.931 269.889 395.318 270.959 397.293C272.358 399.762 274.415 401.244 276.636 401.244H387.061C389.282 401.244 391.339 399.845 392.738 397.293C393.808 395.4 394.384 392.931 394.384 390.462V377.457C394.384 374.988 393.808 372.601 392.738 370.626C392.08 369.473 391.257 368.486 390.27 367.827C389.282 367.087 388.213 366.757 387.061 366.757H276.636V366.675Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M395.371 413.591V426.595C395.371 429.723 394.466 432.603 393.067 434.661C391.586 436.801 389.447 438.2 387.143 438.2H276.719C274.415 438.2 272.275 436.883 270.794 434.661C269.313 432.603 268.49 429.723 268.49 426.595V413.591C268.49 410.874 269.149 408.323 270.3 406.348C271.782 403.714 274.168 401.985 276.719 401.985H387.143C389.776 401.985 392.08 403.714 393.561 406.348C394.631 408.405 395.371 410.874 395.371 413.591Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M387.143 439.105H276.718C274.168 439.105 271.781 437.706 270.053 435.237C268.49 432.932 267.585 429.887 267.585 426.677V413.673C267.585 410.874 268.243 408.24 269.477 406.018C271.205 402.973 273.838 401.162 276.718 401.162H387.143C390.023 401.162 392.573 402.891 394.384 406.018C395.618 408.24 396.276 410.874 396.276 413.673V426.677C396.276 429.887 395.371 432.932 393.808 435.237C391.997 437.788 389.694 439.105 387.143 439.105ZM276.718 402.891C274.497 402.891 272.44 404.29 271.041 406.841C269.971 408.734 269.395 411.204 269.395 413.673V426.677C269.395 429.558 270.136 432.192 271.535 434.249C272.933 436.307 274.744 437.377 276.718 437.377H387.143C389.118 437.377 390.928 436.225 392.327 434.249C393.725 432.192 394.466 429.558 394.466 426.677V413.673C394.466 411.204 393.89 408.817 392.82 406.841C391.421 404.372 389.364 402.891 387.143 402.891H276.718V402.891Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M395.371 449.887V462.892C395.371 469.312 391.668 474.497 387.143 474.497H276.719C272.193 474.497 268.49 469.312 268.49 462.892V449.887C268.49 447.5 268.984 445.36 269.807 443.55C271.288 440.422 273.839 438.364 276.636 438.364H387.061C389.941 438.364 392.491 440.422 393.89 443.55C394.878 445.278 395.371 447.5 395.371 449.887Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M387.143 475.403H276.718C271.699 475.403 267.585 469.806 267.585 462.892V449.887C267.585 447.501 268.079 445.114 268.984 443.138C270.629 439.517 273.509 437.377 276.636 437.377H387.06C390.187 437.377 393.067 439.517 394.713 443.138C395.618 445.114 396.194 447.501 396.194 449.887V462.892C396.194 469.806 392.162 475.403 387.143 475.403ZM276.718 439.105C274.332 439.105 272.028 440.834 270.629 443.797C269.807 445.608 269.395 447.665 269.395 449.805V462.81C269.395 468.736 272.687 473.509 276.718 473.509H387.143C391.175 473.509 394.466 468.736 394.466 462.81V449.805C394.466 447.665 394.055 445.608 393.232 443.797C391.833 440.834 389.611 439.105 387.143 439.105H276.718Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M276.72 401.984C274.005 401.984 271.701 400.256 270.22 397.622H393.48C391.999 400.256 389.613 401.984 387.062 401.984H387.144C389.778 401.984 392.081 403.713 393.563 406.347H270.302C271.783 403.713 274.087 401.984 276.72 401.984Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M395.044 407.252H268.739L269.479 405.935C270.466 404.207 271.783 402.807 273.264 401.984C271.783 401.161 270.466 399.844 269.397 398.034L268.656 396.717H394.961L394.221 398.034C393.233 399.762 391.917 401.161 390.436 401.984C391.917 402.807 393.233 404.124 394.303 405.935L395.044 407.252ZM271.948 405.524H391.917C390.6 403.877 388.872 402.972 387.144 402.972H387.062V401.161C388.79 401.161 390.518 400.256 391.835 398.61H271.865C273.182 400.256 274.91 401.161 276.638 401.161H276.72V402.972C274.91 402.89 273.264 403.795 271.948 405.524Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M393.48 370.132H270.22C270.96 368.815 271.948 367.745 273.017 366.922C271.372 365.77 269.973 363.794 269.232 361.325H394.632C393.809 363.794 392.493 365.77 390.765 366.922C391.835 367.745 392.74 368.815 393.48 370.132Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M394.962 371.038H268.657L269.397 369.721C269.973 368.651 270.714 367.746 271.536 367.005C270.138 365.688 268.986 363.877 268.327 361.737L267.916 360.585H395.784L395.373 361.737C394.632 363.96 393.563 365.77 392.082 367.087C392.904 367.828 393.563 368.733 394.139 369.721L394.962 371.038ZM271.866 369.227H391.835C391.341 368.651 390.847 368.157 390.271 367.746L389.284 367.005L390.354 366.264C391.588 365.359 392.658 363.96 393.398 362.231H270.467C271.207 363.96 272.277 365.276 273.511 366.182L274.499 366.923L273.429 367.663C272.935 368.075 272.359 368.651 271.866 369.227Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M276.72 438.282C274.416 438.282 272.277 436.965 270.796 434.743H392.987C391.506 436.883 389.366 438.282 387.062 438.282C389.942 438.282 392.493 440.34 393.892 443.468H269.809C271.29 440.34 273.84 438.282 276.72 438.282Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M395.373 444.373H268.41L268.986 443.139C270.056 440.916 271.537 439.27 273.265 438.282C272.031 437.624 270.961 436.636 270.056 435.237L269.068 433.838H394.633L393.645 435.237C392.74 436.554 391.588 437.624 390.436 438.282C392.164 439.27 393.645 440.916 394.715 443.139L395.373 444.373ZM271.29 442.562H392.494C391.095 440.422 389.202 439.106 387.145 439.106V437.295C388.544 437.295 389.943 436.719 391.095 435.566H272.689C273.841 436.719 275.24 437.295 276.638 437.295V439.106C274.664 439.106 272.689 440.422 271.29 442.562Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.29\n }, /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.29,\n d: \"M318.357 331.942H292.767V474.415H318.357V331.942Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.29,\n d: \"M319.261 475.402H291.943V331.119H319.261V475.402ZM293.671 473.592H317.451V332.848H293.671V473.592Z\",\n fill: \"#101010\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.22\n }, /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.22,\n d: \"M370.522 331.941H343.451V474.414H370.522V331.941Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.22,\n d: \"M370.523 475.155H343.452C343.041 475.155 342.794 474.826 342.794 474.496V331.942C342.794 331.53 343.123 331.283 343.452 331.283H370.523C370.935 331.283 371.182 331.612 371.182 331.942V474.414C371.182 474.908 370.853 475.155 370.523 475.155ZM344.11 473.838H369.783V332.682H344.11V473.838Z\",\n fill: \"#101010\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M166.46 491.699H49.042V493.51H166.46V491.699Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M445.977 475.237H327.077V477.048H445.977V475.237Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M381.549 519.189H330.615V521H381.549V519.189Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M128.895 105.583C128.813 109.863 127.825 113.814 126.097 117.435C125.275 119.246 124.205 120.892 123.053 122.456C121.901 124.02 120.584 125.419 119.186 126.654C117.293 128.3 115.236 129.699 113.014 130.851C109.476 132.662 105.527 133.732 101.412 133.897C100.754 133.897 100.096 133.897 99.5199 133.897C95.5703 133.814 91.7853 132.991 88.4116 131.427C86.5191 130.604 84.7089 129.534 82.9809 128.3C75.6577 122.95 70.9676 114.225 71.1321 104.431C71.2144 101.386 71.7081 98.4225 72.6955 95.6241C74.012 91.7557 76.1514 88.2165 78.8668 85.3358C80.5124 83.525 82.4872 81.9612 84.5443 80.562C87.7534 78.5044 91.4561 77.1051 95.3234 76.4467C97.0514 76.1998 98.7793 76.0352 100.507 76.0352C116.47 76.4467 129.224 89.6157 128.895 105.583Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100.014 134.637C99.8492 134.637 99.6847 134.637 99.4378 134.637C95.4882 134.555 91.6209 133.732 88.0827 132.168C86.1079 131.345 84.2977 130.193 82.5697 128.958C74.8351 123.279 70.3095 114.143 70.4741 104.513C70.5563 101.468 71.0501 98.4222 72.0375 95.5415C73.354 91.5908 75.4934 88.0516 78.291 85.0063C80.0189 83.1132 81.9937 81.5494 84.1331 80.1502C87.5067 78.0102 91.2095 76.611 95.1591 75.9525C96.887 75.7056 98.6973 75.541 100.508 75.541C116.8 75.8702 129.883 89.3685 129.554 105.665C129.471 109.945 128.484 113.978 126.756 117.764C125.933 119.575 124.863 121.303 123.629 122.95C122.477 124.513 121.078 125.913 119.68 127.229C117.787 128.958 115.648 130.357 113.344 131.509C109.641 133.402 105.609 134.472 101.495 134.637C101.001 134.637 100.508 134.637 100.014 134.637ZM100.014 76.7756C98.4504 76.7756 96.9693 76.9402 95.4059 77.1048C91.6209 77.681 88.0827 79.0802 84.8737 81.1379C82.8166 82.4548 80.9241 84.0186 79.2784 85.747C76.563 88.7101 74.506 92.0846 73.2717 95.8707C72.3666 98.5868 71.8729 101.55 71.7906 104.431C71.626 113.567 75.9048 122.291 83.3103 127.723C84.9559 128.958 86.7662 129.946 88.5764 130.769C92.0323 132.25 95.6528 133.073 99.4378 133.156C100.096 133.156 100.672 133.156 101.33 133.156C105.28 132.991 109.147 132.003 112.685 130.193C114.825 129.123 116.882 127.723 118.692 126.077C120.091 124.843 121.325 123.443 122.477 121.962C123.629 120.398 124.617 118.752 125.439 117.023C127.167 113.402 128.072 109.534 128.155 105.418C128.402 89.8623 115.977 76.9402 100.425 76.6933C100.343 76.7756 100.178 76.7756 100.014 76.7756Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M116.007 121.007C124.845 112.169 124.845 97.8403 116.007 89.0024C107.169 80.1645 92.8404 80.1645 84.0025 89.0024C75.1645 97.8403 75.1645 112.169 84.0025 121.007C92.8404 129.845 107.169 129.845 116.007 121.007Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100.013 128.382C99.8484 128.382 99.7662 128.382 99.6016 128.382C86.7654 128.135 76.48 117.517 76.6445 104.595C76.8914 91.8378 87.3414 81.6318 100.013 81.6318C100.178 81.6318 100.26 81.6318 100.424 81.6318C113.261 81.8788 123.546 92.4963 123.381 105.418C123.135 118.176 112.685 128.382 100.013 128.382ZM100.013 83.031C88.0819 83.031 78.2902 92.6609 78.0433 104.595C77.7965 116.694 87.5059 126.736 99.6016 126.983C99.7662 126.983 99.8484 126.983 100.013 126.983C111.944 126.983 121.736 117.353 121.983 105.418C122.23 93.3194 112.52 83.278 100.424 83.031C100.26 83.031 100.095 83.031 100.013 83.031Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M108.405 106.077C107.335 105.007 106.018 104.183 104.455 103.772V103.443C107.335 102.373 108.734 100.48 108.816 97.9282C108.816 96.7759 108.569 95.7059 108.076 94.8006C107.664 94.0598 107.006 93.4837 106.018 92.9075C105.607 92.6606 105.196 92.496 104.702 92.3314L104.784 87.1461L101.575 87.0638L101.493 91.7552C100.835 91.6729 100.012 91.6729 99.1889 91.6729H99.0244L99.1067 87.0638L95.8976 86.9814L95.8153 91.5906L90.0555 91.5083C89.8909 91.5083 89.8909 91.5906 89.8909 91.6729V92.6606C89.8909 92.8252 89.9732 92.8252 90.0555 92.8252L93.3468 93.2367C93.5114 93.2367 93.5114 93.319 93.5114 93.4013L93.1 115.871C93.1 116.036 93.0177 116.036 92.9354 116.036L89.6441 116.283C89.4795 116.283 89.4795 116.365 89.4795 116.447V117.435C89.4795 117.599 89.5618 117.599 89.6441 117.599L95.4039 117.682L95.3216 122.62L98.5307 122.702L98.613 117.764H99.6826C100.176 117.764 100.588 117.764 101.081 117.764L100.999 122.702L104.208 122.785L104.291 117.353C106.43 116.859 108.076 115.871 108.981 114.472C109.803 113.237 110.297 111.92 110.297 110.521C110.297 108.957 109.639 107.393 108.405 106.077ZM100.176 93.566C100.588 93.566 101.081 93.6483 101.411 93.7306C102.316 93.8952 103.139 94.2244 103.797 94.8006C104.126 95.0475 104.373 95.3767 104.62 95.7059C105.031 96.3644 105.278 97.2698 105.278 98.2574C105.278 99.3274 105.031 100.233 104.537 100.891C104.208 101.467 103.715 101.879 103.056 102.29C102.563 102.537 101.987 102.784 101.246 102.949C100.505 103.114 99.7649 103.196 98.8598 103.196C98.6952 103.196 98.4484 103.196 98.2015 103.196H96.9673C96.8027 103.196 96.8027 103.114 96.8027 103.031L96.9673 93.7306C96.9673 93.566 97.0496 93.566 97.1319 93.566H98.613H98.9421H100.176ZM104.208 115.13C103.385 115.624 102.316 115.953 100.999 116.118C100.423 116.2 99.8472 116.2 99.1889 116.2H98.5307H96.7204C96.5559 116.2 96.5559 116.118 96.5559 116.036L96.7204 104.924C96.7204 104.76 96.8027 104.76 96.885 104.76H98.613H98.6952C99.6004 104.76 100.341 104.842 101.081 105.007C102.398 105.253 103.468 105.747 104.291 106.406C105.607 107.476 106.265 109.04 106.183 111.18C106.265 112.908 105.607 114.307 104.208 115.13Z\",\n fill: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.538 123.443L100.424 123.361L100.506 118.423C100.177 118.423 99.93 118.423 99.6009 118.423H99.0249L98.9426 123.361L94.8284 123.279L94.9107 118.34L89.6446 118.258C89.3977 118.258 89.2332 118.176 89.1509 118.093C89.0686 118.011 88.9863 117.846 88.9863 117.6V116.612C88.9863 116.447 89.0686 116.283 89.1509 116.2C89.2332 116.118 89.3977 116.036 89.6446 116.036L92.6891 115.789L93.1005 93.813L89.9737 93.4838C89.8092 93.4838 89.6446 93.4015 89.5623 93.3192C89.48 93.2369 89.3977 93.0722 89.3977 92.8253V91.8376C89.3977 91.5907 89.48 91.4261 89.5623 91.3438C89.6446 91.2615 89.8092 91.1792 90.056 91.1792L95.3222 91.2615L95.4044 86.6523L99.5186 86.7346L99.4363 91.3438C99.93 91.3438 100.506 91.3438 101 91.4261L101.082 86.817L105.196 86.8993L105.114 92.1669C105.525 92.3315 105.937 92.4961 106.266 92.6607C107.253 93.2369 107.994 93.8953 108.487 94.6361C109.063 95.6237 109.31 96.6937 109.31 98.0106C109.228 100.562 107.912 102.455 105.361 103.69C106.677 104.184 107.829 104.924 108.817 105.912C110.133 107.311 110.791 109.04 110.791 110.933C110.791 112.414 110.298 113.896 109.393 115.13C108.405 116.53 106.842 117.517 104.702 118.093L104.538 123.443ZM101.329 122.538L103.633 122.62L103.715 117.27L104.044 117.188C106.101 116.694 107.582 115.789 108.487 114.472C109.31 113.32 109.722 112.085 109.722 110.768C109.722 109.122 109.146 107.64 107.994 106.406C107.006 105.336 105.772 104.595 104.291 104.184L103.962 104.101V103.114L104.209 103.031C106.924 101.961 108.241 100.315 108.241 97.9283C108.241 96.8583 107.994 95.8707 107.5 95.0476C107.089 94.3892 106.513 93.813 105.608 93.3192C105.278 93.1546 104.867 92.9899 104.373 92.8253L104.044 92.743L104.126 87.7223L101.823 87.64L101.74 92.3315L101.247 92.2492C100.588 92.1669 99.8477 92.1669 99.0249 92.1669H98.4489L98.5312 87.5577L96.2273 87.4754L96.145 92.0846L90.2206 92.0023V92.4961L93.3474 92.8253C93.6765 92.8253 93.9233 93.0722 93.9233 93.4838L93.5119 115.953C93.5119 116.365 93.2651 116.612 92.8537 116.612L89.8092 116.859V117.435L95.7336 117.517L95.6513 122.456L97.9552 122.538L98.0375 117.6H99.5186C100.012 117.6 100.424 117.6 100.835 117.6H101.329V122.538ZM89.7269 116.859C89.6446 116.859 89.7269 116.859 89.7269 116.859V116.859ZM99.5186 116.612C99.4363 116.612 99.2718 116.612 99.1895 116.612L96.721 116.53C96.3096 116.53 96.0627 116.283 96.0627 115.871L96.3096 104.842C96.3096 104.431 96.5564 104.184 96.9678 104.184H98.6958C98.7781 104.184 98.7781 104.184 98.8603 104.184C99.7655 104.184 100.588 104.266 101.329 104.431C102.728 104.677 103.88 105.171 104.702 105.912C106.101 107.064 106.842 108.793 106.76 111.015C106.76 113.073 105.937 114.554 104.456 115.46C103.55 116.036 102.399 116.365 101 116.53C100.588 116.612 100.095 116.612 99.5186 116.612ZM97.0501 115.707H99.2718C99.93 115.707 100.506 115.707 101 115.624C102.234 115.46 103.304 115.213 104.044 114.719C105.278 113.978 105.854 112.743 105.937 111.015C105.937 109.04 105.361 107.558 104.209 106.571C103.468 105.994 102.481 105.501 101.247 105.336C100.506 105.171 99.7655 105.089 98.9426 105.089H98.8603C98.8603 105.089 98.8603 105.089 98.7781 105.089H97.2969L97.0501 115.707ZM98.5312 103.607C98.4489 103.607 98.2844 103.607 98.2021 103.607H96.9678C96.5564 103.607 96.3096 103.361 96.3096 102.949L96.4741 93.6484C96.4741 93.3192 96.721 92.9899 97.1324 92.9899L98.9426 93.0722L100.095 93.1546C100.588 93.1546 101 93.2369 101.411 93.3192C102.399 93.4838 103.221 93.8953 103.962 94.4715C104.373 94.8007 104.62 95.1299 104.867 95.4591C105.361 96.1999 105.608 97.1876 105.608 98.2576C105.608 99.4098 105.278 100.398 104.785 101.138C104.373 101.714 103.797 102.291 103.139 102.62C102.645 102.949 101.987 103.196 101.247 103.278C100.506 103.443 99.6832 103.525 98.7781 103.525C98.6958 103.607 98.6135 103.607 98.5312 103.607ZM97.2969 102.702H98.2844C98.5312 102.702 98.6958 102.702 98.8603 102.702C99.7655 102.702 100.506 102.62 101.164 102.455C101.823 102.291 102.399 102.126 102.81 101.879C103.386 101.55 103.797 101.138 104.126 100.644C104.538 99.986 104.785 99.1629 104.785 98.2576C104.785 97.3522 104.62 96.5291 104.209 95.953C104.044 95.6237 103.797 95.3768 103.468 95.1299C102.892 94.6361 102.152 94.3068 101.329 94.1422C101 94.0599 100.588 93.9776 100.095 93.9776L98.6135 93.8953H97.3792L97.2969 102.702Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M422.032 101.896H315.228C308.069 101.896 302.31 96.1342 302.31 88.9735V13.5808C302.31 6.42015 308.069 0.658691 315.228 0.658691H421.95C429.108 0.658691 434.868 6.42015 434.868 13.5808V88.8912C434.95 96.1342 429.108 101.896 422.032 101.896Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M427.956 102.554H309.304C305.107 102.554 301.651 99.097 301.651 94.8994V7.6545C301.651 3.45687 305.107 0 309.304 0H427.956C432.153 0 435.609 3.45687 435.609 7.6545V94.8994C435.609 99.1793 432.153 102.554 427.956 102.554ZM309.304 1.39921C305.848 1.39921 302.968 4.19763 302.968 7.73681V94.9817C302.968 98.4386 305.766 101.319 309.304 101.319H427.956C431.412 101.319 434.292 98.5209 434.292 94.9817V7.6545C434.292 4.19763 431.495 1.3169 427.956 1.3169H309.304V1.39921Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M365.997 24.5273H316.462C315.063 24.5273 313.911 23.375 313.911 21.9758C313.911 20.5766 315.063 19.4243 316.462 19.4243H365.997C367.395 19.4243 368.547 20.5766 368.547 21.9758C368.547 23.375 367.395 24.5273 365.997 24.5273Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M365.996 25.0213H316.461C314.816 25.0213 313.417 23.6221 313.417 21.976C313.417 20.3299 314.816 18.9307 316.461 18.9307H365.996C367.642 18.9307 369.041 20.3299 369.041 21.976C369.041 23.6221 367.642 25.0213 365.996 25.0213ZM316.461 19.836C315.31 19.836 314.404 20.7414 314.404 21.8937C314.404 23.046 315.31 23.9514 316.461 23.9514H365.996C367.148 23.9514 368.053 23.046 368.053 21.8937C368.053 20.7414 367.148 19.836 365.996 19.836H316.461Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M365.997 35.3921H316.462C315.063 35.3921 313.911 34.2398 313.911 32.8406C313.911 31.4414 315.063 30.2891 316.462 30.2891H365.997C367.395 30.2891 368.547 31.4414 368.547 32.8406C368.547 34.2398 367.395 35.3921 365.997 35.3921Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M365.996 35.8856H316.461C314.816 35.8856 313.417 34.4864 313.417 32.8403C313.417 31.1941 314.816 29.7949 316.461 29.7949H365.996C367.642 29.7949 369.041 31.1941 369.041 32.8403C369.041 34.4864 367.642 35.8856 365.996 35.8856ZM316.461 30.7003C315.31 30.7003 314.404 31.6057 314.404 32.758C314.404 33.9102 315.31 34.8156 316.461 34.8156H365.996C367.148 34.8156 368.053 33.9102 368.053 32.758C368.053 31.6057 367.148 30.7003 365.996 30.7003H316.461Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M365.997 46.2563H316.462C315.063 46.2563 313.911 45.104 313.911 43.7048C313.911 42.3056 315.063 41.1533 316.462 41.1533H365.997C367.395 41.1533 368.547 42.3056 368.547 43.7048C368.547 45.104 367.395 46.2563 365.997 46.2563Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M365.996 46.7499H316.461C314.816 46.7499 313.417 45.3506 313.417 43.7045C313.417 42.0584 314.816 40.6592 316.461 40.6592H365.996C367.642 40.6592 369.041 42.0584 369.041 43.7045C369.041 45.3506 367.642 46.7499 365.996 46.7499ZM316.461 41.5645C315.31 41.5645 314.404 42.4699 314.404 43.6222C314.404 44.7745 315.31 45.6799 316.461 45.6799H365.996C367.148 45.6799 368.053 44.7745 368.053 43.6222C368.053 42.4699 367.148 41.5645 365.996 41.5645H316.461Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M341.395 87.245C341.231 87.245 341.148 87.245 340.984 87.245C336.294 86.8335 333.414 83.9527 330.698 81.072C327.983 78.2736 325.185 75.3929 320.248 74.3229C312.925 72.759 304.368 76.1336 294.823 84.4466L292.437 81.6481C302.887 72.5944 312.514 68.8906 320.989 70.7014C326.996 72.0183 330.369 75.4752 333.331 78.5205C335.964 81.2366 338.022 83.2943 341.313 83.6235C343.699 83.7881 347.402 78.0267 350.693 72.8414C357.029 62.9646 364.846 50.7009 376.283 54.0755C387.062 57.2854 390.93 65.3515 394.139 71.8537C396.196 76.1336 398.006 79.7551 401.133 81.1543C404.671 82.7181 408.292 75.4752 412.159 67.8207C417.178 57.9439 422.773 46.6679 432.154 45.6802C437.42 45.1041 442.851 47.491 448.446 52.8409L445.895 55.4747C441.123 50.9478 436.597 48.8902 432.483 49.3017C425.077 50.1248 419.893 60.4131 415.368 69.4668C411.336 77.4505 407.469 85.105 402.203 85.105C401.38 85.105 400.475 84.9404 399.57 84.5289C395.208 82.5535 393.069 78.1913 390.765 73.4998C387.638 67.0799 384.347 60.4131 375.214 57.697C366.409 55.0631 359.662 65.5984 353.738 74.899C349.294 81.7305 345.756 87.245 341.395 87.245Z\",\n fill: \"url(#paint0_linear_103_2175)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M341.395 87.9034C341.231 87.9034 341.066 87.9034 340.902 87.9034C335.965 87.4919 333.002 84.4466 330.205 81.5658C327.572 78.8497 324.774 75.969 320.084 74.9813C313.007 73.4998 304.615 76.7921 295.234 84.9404L294.741 85.3519L291.449 81.5658L291.943 81.1543C302.557 71.936 312.349 68.2322 321.071 70.1252C327.242 71.4421 330.698 74.9813 333.743 78.109C336.376 80.8251 338.268 82.7181 341.313 82.965H341.395C343.37 82.965 347.237 76.9567 350.035 72.5121C356.453 62.4707 364.435 49.9601 376.366 53.4993C387.392 56.7916 391.424 65.0222 394.633 71.6068C396.607 75.7221 398.418 79.3436 401.298 80.5782C404.26 81.8951 407.88 74.6521 411.418 67.5737C416.52 57.5323 422.198 46.0917 431.907 45.0218C437.338 44.4456 443.015 46.9148 448.693 52.347L449.186 52.7586L445.731 56.3801L445.237 55.9685C440.629 51.524 436.268 49.5486 432.401 49.9602C425.407 50.7009 420.305 60.8246 415.779 69.796C411.665 78.0267 407.716 85.7635 402.038 85.7635C401.133 85.7635 400.146 85.5165 399.158 85.105C394.633 83.0474 392.411 78.5205 390.025 73.7467C386.98 67.4091 383.771 60.9069 374.802 58.2731C366.492 55.8039 359.827 66.0922 354.067 75.2282C349.706 82.3066 346.085 87.9034 341.395 87.9034ZM316.628 73.2529C317.862 73.2529 319.096 73.4175 320.331 73.6644C325.432 74.7344 328.312 77.6974 331.11 80.5782C333.825 83.3766 336.541 86.175 340.984 86.5865C341.148 86.5865 341.231 86.5865 341.395 86.5865C345.427 86.5865 348.801 81.2366 353.162 74.4052C359.251 64.9399 366.08 54.1578 375.378 56.8739C384.841 59.6723 388.132 66.5038 391.341 73.0883C393.563 77.6974 395.702 81.9774 399.816 83.8704C400.639 84.1996 401.38 84.4466 402.203 84.4466C407.057 84.4466 410.842 77.039 414.792 69.2199C419.482 60.0015 424.748 49.5486 432.401 48.7256C436.597 48.314 441.04 50.2894 445.813 54.6516L447.459 52.9232C442.192 48.0671 437.009 45.8448 432.154 46.3387C423.185 47.3263 417.59 58.3554 412.653 68.1499C408.95 75.5575 405.659 82.0597 402.12 82.0597C401.709 82.0597 401.298 81.9774 400.804 81.8128C397.43 80.3312 395.62 76.5451 393.481 72.1829C390.354 65.763 386.487 57.8616 376.037 54.7339C365.011 51.4417 357.358 63.5407 351.187 73.2529C346.826 80.0843 343.781 84.5289 341.231 84.3643C337.692 84.035 335.389 81.7304 332.838 79.0966C329.958 76.1336 326.666 72.759 320.824 71.5244C312.678 69.796 303.38 73.2529 293.342 81.8951L294.905 83.7058C302.887 76.7098 310.128 73.2529 316.628 73.2529Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M216.652 146.34C214.512 163.378 213.442 171.938 211.468 176.711C201.676 200.745 177.978 211.939 169.585 215.395C165.471 207.247 161.439 199.181 157.325 191.033C166.623 183.625 176.004 176.135 185.302 168.728C185.302 168.481 185.302 168.316 185.302 168.069C185.384 158.192 185.878 149.715 186.536 142.966C186.947 138.357 187.441 134.488 188.017 131.031C189.745 120.578 192.296 115.229 196.821 111.113C197.973 110.043 198.961 109.302 199.701 108.809C202.828 109.302 207.436 110.455 211.468 113.5C211.468 113.5 211.879 113.829 212.291 114.159C219.861 120.99 216.652 146.34 216.652 146.34Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M169.586 216.383C169.257 216.383 168.928 216.218 168.681 215.889C166.212 210.951 163.662 206.012 161.193 201.074L156.421 191.609C156.174 191.197 156.338 190.703 156.667 190.374L184.315 168.398C184.315 168.316 184.315 168.234 184.315 168.151C184.397 159.756 184.808 151.279 185.549 142.966C185.96 138.192 186.454 134.323 187.03 131.031C188.758 120.743 191.309 114.981 196.081 110.537C196.986 109.714 198.056 108.891 199.043 108.15C199.208 107.985 199.537 107.985 199.702 107.985C204.556 108.726 208.588 110.372 211.88 112.924C211.88 112.924 212.373 113.335 212.702 113.665C220.519 120.578 217.475 145.517 217.393 146.505C215.253 163.625 214.101 172.184 212.126 177.123C202.911 199.757 181.599 211.445 169.751 216.383C169.833 216.383 169.751 216.383 169.586 216.383ZM158.56 191.362L163.003 200.169C165.39 204.86 167.693 209.552 170.08 214.161C181.846 209.14 201.841 197.782 210.563 176.382C212.456 171.691 213.525 163.213 215.665 146.258C215.665 146.011 218.709 121.319 211.633 115.064C211.304 114.734 210.892 114.405 210.892 114.405C208.012 112.183 204.31 110.619 199.949 109.961C199.126 110.537 198.221 111.278 197.48 111.936C193.037 116.051 190.65 121.484 189.005 131.278C188.429 134.57 188.017 138.439 187.524 143.13C186.783 151.361 186.372 159.756 186.289 168.151C186.289 168.398 186.289 168.645 186.289 168.81C186.289 169.139 186.125 169.386 185.96 169.551L158.56 191.362Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M189.992 170.703C189.169 170.703 188.099 170.457 186.947 169.88C186.372 169.633 185.713 169.222 184.973 168.81L184.644 168.563V168.152C184.726 159.757 185.137 151.279 185.878 143.048C186.289 138.275 186.783 134.406 187.359 131.114L187.606 129.715L188.675 130.703C188.922 130.949 189.169 131.196 189.416 131.526C193.119 135.641 192.296 141.485 191.555 147.082C191.226 149.304 190.979 151.444 190.979 153.419C190.979 155.394 191.473 157.864 191.967 160.333C192.872 164.86 193.612 168.728 191.72 170.292C191.226 170.457 190.65 170.703 189.992 170.703ZM186.125 167.74C186.618 168.07 187.03 168.317 187.523 168.481C189.169 169.222 190.239 169.387 190.815 168.893C191.967 167.987 191.226 163.954 190.486 160.415C189.992 157.864 189.498 155.312 189.498 153.172C189.498 151.115 189.827 148.81 190.074 146.67C190.733 141.567 191.473 136.382 188.675 132.76C188.264 135.723 187.853 139.098 187.441 143.048C186.618 151.197 186.207 159.51 186.125 167.74Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M150.004 388.157C137.497 393.507 124.989 398.857 112.482 404.124L113.223 412.19L179.461 406.346C177.157 391.696 174.853 376.963 172.549 362.312C163.416 363.876 154.365 365.522 145.231 367.086C146.795 374.165 148.44 381.161 150.004 388.157Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M113.222 412.931C112.893 412.931 112.564 412.684 112.564 412.273L111.823 404.207C111.823 403.878 111.988 403.631 112.235 403.548L149.262 387.745L144.572 367.251C144.49 367.087 144.572 366.84 144.654 366.757C144.737 366.593 144.901 366.51 145.148 366.428L172.466 361.654C172.631 361.654 172.795 361.654 172.96 361.737C173.124 361.819 173.207 361.984 173.207 362.148L180.118 406.182C180.118 406.347 180.118 406.594 179.954 406.676C179.872 406.841 179.625 406.923 179.46 406.923L113.222 412.931ZM113.222 404.618L113.798 411.532L178.637 405.853L171.972 363.218L146.053 367.745L150.661 388.075C150.743 388.404 150.579 388.733 150.25 388.898L113.222 404.618Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M180.821 403.427L110.989 409.577L111.43 414.578L181.262 408.428L180.821 403.427Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M111.165 414.989L110.671 409.392L181.105 403.219L181.599 408.816L111.165 414.989ZM111.329 409.886L111.741 414.33L180.941 408.239L180.529 403.795L111.329 409.886Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M233.438 394.989C222.083 402.479 210.727 409.886 199.29 417.376L201.429 425.195L265.61 407.746C260.756 393.672 255.901 379.598 251.046 365.605C242.324 368.815 233.684 371.943 224.962 375.153C227.842 381.738 230.64 388.404 233.438 394.989Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M201.43 425.854C201.348 425.854 201.183 425.854 201.101 425.771C200.936 425.689 200.854 425.524 200.772 425.36L198.632 417.541C198.55 417.294 198.632 416.964 198.879 416.8L232.533 394.742L224.305 375.4C224.223 375.235 224.223 375.07 224.305 374.824C224.387 374.659 224.552 374.494 224.716 374.412L250.8 364.864C250.965 364.782 251.129 364.782 251.294 364.864C251.458 364.947 251.623 365.111 251.623 365.276L266.187 407.417C266.269 407.582 266.269 407.828 266.105 407.993C266.023 408.158 265.858 408.322 265.693 408.322L201.512 425.771C201.595 425.854 201.512 425.854 201.43 425.854ZM200.114 417.623L201.924 424.29L264.706 407.252L250.636 366.428L225.951 375.482L234.097 394.659C234.261 394.989 234.097 395.318 233.85 395.482L200.114 417.623Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M266.455 404.651L198.795 423.005L200.109 427.85L267.769 409.496L266.455 404.651Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M199.949 428.24L198.468 422.808L198.715 422.726L266.598 404.289L268.08 409.721L267.833 409.804L199.949 428.24ZM199.126 423.22L200.278 427.499L267.339 409.31L266.187 405.03L199.126 423.22Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M163.332 188.069C163.332 188.069 150.002 198.687 148.603 200.992C147.204 203.296 148.11 219.181 150.249 219.017C152.471 218.852 154.198 208.152 154.198 208.152C154.198 208.152 153.869 221.98 155.104 223.461C156.338 225.025 158.395 223.708 159.3 221.404C160.205 219.099 159.794 208.728 159.794 208.728C159.794 208.728 158.724 220.91 161.193 223.461C163.661 226.013 165.636 223.626 165.471 222.473C165.389 221.404 165.224 208.152 165.224 208.152C165.224 208.152 166.459 221.815 168.187 222.227C169.915 222.638 171.478 221.897 171.231 219.181C170.984 216.465 171.478 203.708 171.478 203.708L173.7 198.028C173.7 198.028 175.181 208.317 177.567 209.798C179.871 211.198 180.941 209.963 181.846 205.189C182.751 200.498 182.669 193.913 180.776 190.786C178.719 187.74 170.244 185.271 163.332 188.069Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M163.248 225.602C162.508 225.602 161.438 225.272 160.369 224.202C160.039 223.873 159.793 223.462 159.546 222.968C158.805 224.202 157.736 225.026 156.666 225.19C155.678 225.355 154.856 225.026 154.197 224.202C153.457 223.297 153.21 220.005 153.045 216.466C152.305 218.523 151.317 220.005 150.165 220.087C149.754 220.169 149.096 220.005 148.602 219.099C146.792 216.219 146.051 203.05 147.615 200.581C149.096 198.194 161.191 188.481 162.59 187.411C162.673 187.329 162.755 187.329 162.837 187.247C169.831 184.366 178.965 186.588 181.351 190.457C183.408 193.831 183.572 200.581 182.585 205.601C182.009 208.564 181.351 210.704 179.87 211.363C178.965 211.774 177.977 211.61 176.825 210.869C175.097 209.799 173.863 205.19 173.123 201.897L172.217 204.202C172.135 205.684 171.806 216.877 171.971 219.346C172.135 221.322 171.477 222.309 170.901 222.803C170.16 223.462 169.008 223.709 167.774 223.379C167.445 223.297 166.869 223.132 166.211 221.239C166.211 221.98 166.211 222.392 166.293 222.556C166.375 223.626 165.552 224.861 164.4 225.437C164.236 225.437 163.824 225.602 163.248 225.602ZM160.698 218.853C160.862 220.746 161.274 222.227 161.85 222.886C162.343 223.379 163.002 223.873 163.742 223.626C164.236 223.379 164.565 222.886 164.565 222.721C164.483 221.651 164.318 209.717 164.318 208.317C164.318 207.823 164.73 207.33 165.223 207.33C165.717 207.33 166.211 207.659 166.211 208.235C166.704 213.832 167.774 220.334 168.597 221.486C169.173 221.569 169.584 221.486 169.913 221.239C170.243 220.91 170.407 220.252 170.325 219.429C170.078 216.63 170.489 204.367 170.572 203.873C170.572 203.79 170.572 203.626 170.654 203.544L172.876 197.864C173.04 197.453 173.452 197.206 173.863 197.288C174.274 197.371 174.686 197.7 174.686 198.111C175.344 202.885 176.908 208.482 178.06 209.223C178.389 209.387 178.965 209.717 179.294 209.634C179.705 209.47 180.281 208.564 180.939 205.354C181.762 200.827 181.762 194.49 179.952 191.609C178.389 189.14 170.654 186.424 163.907 189.14C158.641 193.338 150.495 200.169 149.507 201.733C148.355 203.626 149.096 215.972 150.412 218.112C151.317 217.124 152.634 212.762 153.374 208.235C153.457 207.741 153.95 207.412 154.444 207.412C154.938 207.494 155.349 207.906 155.349 208.4C155.185 214.737 155.432 222.145 156.008 223.132C156.254 223.462 156.501 223.462 156.666 223.379C157.242 223.297 158.065 222.556 158.558 221.322C158.723 220.91 158.805 220.087 158.887 219.099C158.476 215.066 158.805 210.293 158.97 208.893C159.052 208.4 159.463 207.988 159.957 207.988C160.451 207.988 160.862 208.4 160.862 208.893C160.78 209.552 160.945 215.066 160.698 218.853Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M282.808 194.572C282.562 193.831 282.068 192.102 281.327 189.962C280.834 188.646 280.422 187.493 280.093 186.588L263.636 188.152L247.18 189.716L230.723 191.279L214.266 192.843L211.716 198.522L209.165 204.201L206.614 209.881L204.063 215.56C198.715 217.782 191.145 220.91 182.752 224.449C174.359 228.07 165.143 232.103 156.421 236.136C147.699 240.169 139.553 244.202 133.217 247.742C126.881 251.281 122.438 254.408 121.204 256.466C119.723 259.1 120.216 268.154 121.862 280.17C123.755 294.245 126.717 308.155 129.268 322.147C131.736 335.727 132.065 338.69 135.357 356.962C136.673 364.288 137.825 370.296 138.648 374.247C142.268 375.646 148.604 377.457 156.503 376.963C167.2 376.304 174.77 371.777 178.144 369.473C177.733 361.325 177.321 353.094 176.91 344.946C176.498 336.797 176.087 328.567 175.675 320.418C175.264 312.27 174.853 304.039 174.441 295.891C174.03 287.743 173.618 279.512 173.207 271.364C180.942 266.672 188.676 261.981 196.329 257.289C203.405 253.009 210.564 248.647 217.64 244.367C215.172 247.824 212.456 252.104 210.07 257.289C206.696 264.532 204.886 271.117 203.816 276.384C209.576 312.105 215.254 347.826 221.014 383.547C224.223 385.111 230.147 387.498 237.882 387.498C249.319 387.416 257.465 382.066 260.263 379.926C259.111 357.127 257.547 333.752 255.408 309.801C254.585 300.665 253.68 291.611 252.775 282.64C255.82 279.512 260.592 274.82 266.599 269.306C277.049 259.594 277.049 260.581 279.517 257.701C290.79 244.614 290.79 224.202 288.486 214.819C287.745 211.527 283.467 196.547 282.808 194.572Z\",\n fill: \"#008EC8\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M237.882 388.651C232.04 388.651 226.115 387.251 220.767 384.618C220.52 384.453 220.273 384.206 220.273 383.877L203.076 276.714C203.076 276.632 203.076 276.467 203.076 276.385C204.393 269.718 206.532 263.216 209.412 257.043C210.893 253.833 212.621 250.705 214.514 247.742C208.671 251.281 202.829 254.82 196.987 258.36C189.417 262.969 181.847 267.496 174.359 272.105L179.379 369.638C179.379 369.967 179.214 370.296 178.967 370.461C174.359 373.589 166.789 377.539 156.833 378.115C150.662 378.527 144.326 377.539 138.566 375.317C138.237 375.235 137.99 374.905 137.99 374.576C136.92 368.815 135.768 363.053 134.699 357.21C132.806 346.921 131.901 341.489 130.996 336.304C130.338 332.188 129.679 328.32 128.61 322.394C127.869 318.443 127.129 314.493 126.388 310.624C124.496 300.747 122.603 290.541 121.204 280.335C118.653 261.981 119.641 257.619 120.628 255.973C121.862 253.833 125.894 250.87 132.971 246.837C138.731 243.544 146.547 239.676 156.257 235.149C163.992 231.61 172.796 227.659 182.588 223.462C190.98 219.84 198.551 216.712 203.488 214.737L213.444 192.35C213.608 192.02 213.938 191.774 214.267 191.774L280.093 185.601C280.505 185.518 280.916 185.848 281.081 186.259C281.492 187.411 281.904 188.481 282.315 189.634C283.056 191.691 283.549 193.255 283.796 194.325C284.372 196.3 288.733 211.28 289.556 214.737C292.025 224.696 291.613 245.437 280.34 258.442C279.188 259.841 278.53 260.335 277.131 261.487C275.568 262.804 272.935 264.944 267.339 270.129C262.732 274.409 258.206 278.772 253.927 283.134C254.832 291.941 255.738 300.912 256.56 309.801C258.7 333.094 260.345 356.633 261.415 380.009C261.415 380.338 261.251 380.667 261.004 380.832C257.136 383.712 248.99 388.568 238.047 388.651C237.964 388.651 237.964 388.651 237.882 388.651ZM222.084 383.054C227.103 385.441 232.616 386.675 238.047 386.675C248.085 386.593 255.655 382.313 259.44 379.597C258.288 356.469 256.643 333.011 254.586 309.966C253.763 300.912 252.858 291.858 251.953 282.805C251.953 282.475 252.035 282.228 252.199 281.981C256.643 277.455 261.333 273.01 266.023 268.566C271.701 263.298 274.334 261.158 275.897 259.841C277.213 258.771 277.789 258.277 278.859 257.043C289.638 244.532 289.967 224.696 287.663 215.066C286.841 211.609 282.48 196.712 281.904 194.737C281.575 193.749 281.081 192.185 280.423 190.127C280.093 189.222 279.764 188.399 279.435 187.494L214.925 193.502L205.051 215.725C204.969 215.972 204.722 216.136 204.557 216.219C199.62 218.276 191.886 221.404 183.328 225.108C173.536 229.305 164.732 233.256 157.08 236.795C147.453 241.24 139.636 245.19 133.958 248.4C125.647 253.092 123.014 255.561 122.356 256.796C121.451 258.277 120.957 263.545 123.179 279.924C124.578 290.048 126.47 300.254 128.363 310.048C129.103 313.916 129.844 317.949 130.584 321.818C131.654 327.744 132.312 331.612 133.053 335.728C133.958 340.913 134.863 346.345 136.756 356.633C137.743 362.23 138.813 367.827 139.883 373.424C145.313 375.399 151.155 376.305 156.833 375.893C166.049 375.317 173.125 371.778 177.486 368.815L172.467 271.282C172.467 270.952 172.631 270.541 172.96 270.376C180.695 265.685 188.43 260.993 196.082 256.302C203.158 252.022 210.317 247.66 217.393 243.38C217.805 243.133 218.299 243.215 218.628 243.544C218.957 243.874 218.957 244.367 218.71 244.779C215.83 248.812 213.362 253.092 211.222 257.536C208.425 263.463 206.367 269.8 205.133 276.302L222.084 383.054Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M287.745 211.774C281.244 213.256 274.168 214.49 266.598 215.396C239.362 218.441 215.747 215.313 197.891 211.034C196.575 198.523 195.587 187.494 194.847 178.522C194.847 178.44 194.847 178.276 194.847 178.193C193.53 162.72 192.79 151.608 193.366 140.168C193.53 136.793 193.777 133.336 194.188 129.715C195.258 120.25 195.834 115.476 198.549 111.525C199.208 110.537 199.948 109.632 200.771 108.809C204.638 104.776 209.904 102.389 215.582 100.99C222 99.3437 228.912 98.8498 234.754 98.4383C242.324 97.8622 254.255 97.8622 268.655 101.731C271.041 107.904 273.345 114.323 275.402 121.073C278.447 131.032 280.833 140.826 282.725 150.291C283.713 155.312 284.536 160.333 285.194 165.189C287.498 181.979 288.074 197.618 287.745 211.774Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M244.794 217.536C229.16 217.536 213.361 215.643 197.727 211.939C197.316 211.857 197.069 211.528 196.987 211.116C195.917 200.416 194.848 189.47 193.942 178.605C193.942 178.523 193.942 178.358 193.942 178.276C192.544 161.65 191.885 151.197 192.461 140.168C192.626 136.629 192.873 133.172 193.284 129.715C194.354 120.415 194.93 115.312 197.81 111.114C198.468 110.126 199.291 109.139 200.114 108.233C203.652 104.447 208.671 101.813 215.336 100.167C221.59 98.6033 228.255 98.0272 234.097 97.6156L234.673 97.5333C246.028 96.7103 257.465 97.7802 268.903 100.908C269.149 100.99 269.396 101.155 269.561 101.484C272.029 107.822 274.333 114.406 276.308 120.908C279.27 130.538 281.739 140.415 283.631 150.209C284.619 155.148 285.442 160.251 286.1 165.189C288.157 180.416 289.062 196.136 288.651 211.939C288.651 212.351 288.321 212.762 287.91 212.845C280.916 214.409 273.757 215.643 266.681 216.466C259.44 217.125 252.117 217.536 244.794 217.536ZM198.797 210.293C221.343 215.561 244.135 217.042 266.516 214.491C273.264 213.75 280.093 212.598 286.84 211.116C287.169 195.725 286.347 180.334 284.29 165.436C283.631 160.498 282.808 155.477 281.821 150.539C279.929 140.744 277.542 130.95 274.58 121.402C272.605 115.065 270.466 108.727 267.997 102.554C256.971 99.591 245.863 98.521 234.837 99.4264L234.261 99.5087C228.501 99.9202 221.919 100.414 215.83 101.978C209.494 103.624 204.804 106.093 201.43 109.55C200.69 110.373 199.949 111.196 199.291 112.184C196.74 115.888 196.164 120.332 195.094 129.962C194.683 133.419 194.436 136.876 194.272 140.333C193.778 151.279 194.354 161.65 195.753 178.194C195.753 178.358 195.753 178.441 195.753 178.523C196.74 189.058 197.727 199.758 198.797 210.293Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M234.672 69.3022C236.894 79.179 239.198 89.0558 241.42 98.9326C240.432 100.414 237.799 103.871 233.191 105.435C227.185 107.492 221.919 105.023 220.52 104.283C218.134 95.0642 215.83 85.8458 213.443 76.6275C220.52 74.1583 227.596 71.6891 234.672 69.3022Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M228.418 107.081C224.633 107.081 221.589 105.764 220.108 105.023L219.779 104.858L212.373 75.9688L235.33 68.0674L242.406 99.0146L242.16 99.3438C240.596 101.648 237.881 104.694 233.438 106.175C231.71 106.834 229.982 107.081 228.418 107.081ZM221.342 103.624C223.399 104.611 227.925 106.258 232.944 104.529C236.647 103.295 239.033 100.743 240.514 98.6854L234.096 70.4543L214.677 77.1211L221.342 103.624Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M227.184 58.2729C227.184 58.2729 235.742 92.5947 217.722 93.5001C199.702 94.4055 202.417 52.0999 202.417 52.0999C202.417 52.0999 228.007 38.684 227.184 58.2729Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M217.145 94.323C214.183 94.323 211.55 93.1707 209.411 90.9484C199.783 81.154 201.511 53.1697 201.594 51.9351V51.4413L202.005 51.1944C202.581 50.8652 216.816 43.6222 224.057 48.1491C226.855 49.9598 228.254 53.2521 228.089 58.0258C228.583 60.0012 233.355 80.4132 226.443 89.7138C224.386 92.5122 221.506 93.9938 217.804 94.1584C217.557 94.323 217.31 94.323 217.145 94.323ZM203.157 52.5936C202.993 56.3797 202.087 81.2363 210.563 89.7961C212.537 91.8538 214.924 92.7592 217.639 92.5946C220.848 92.4299 223.234 91.1953 225.044 88.8085C231.627 79.9194 226.443 58.602 226.361 58.4374V58.3551V58.2728C226.526 54.0751 225.456 51.1944 223.152 49.7129C217.31 46.0091 205.543 51.4413 203.157 52.5936Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M237.963 85.8453C238.209 84.693 243.311 59.178 241.172 49.7127C240.513 46.6674 238.95 44.4451 238.95 44.4451C236.482 40.7413 232.779 39.3421 230.804 38.519C229.076 37.8606 222.905 35.6383 216.075 37.696C212.208 38.8483 212.537 40.0829 209.163 40.659C203.486 41.729 201.676 38.6013 197.315 39.6713C193.365 40.659 189.745 44.6097 189.004 49.3012C188.346 53.2519 189.827 57.2849 192.542 59.7541C195.011 61.9764 197.973 61.7295 202.416 62.7994C214.265 65.7625 216.487 61.8118 222.987 64.1163C223.645 64.3633 229.981 66.0917 232.861 71.4416C234.424 74.3224 234.095 76.38 236.975 83.2938C237.304 84.446 237.716 85.2691 237.963 85.8453Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M228.994 66.9149C228.994 66.9149 231.545 57.1204 235.001 60.9888C238.457 64.8572 233.026 72.1825 231.216 73.1702C229.406 74.0755 228.994 66.9149 228.994 66.9149Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M220.519 54.1577C220.519 54.1577 224.963 75.3105 218.956 77.7797C217.557 78.3558 216.57 78.4381 215.747 78.2735C213.525 77.7797 212.702 76.2158 210.892 75.3105C209.493 74.5697 207.107 74.1582 203.075 76.0512C203.157 78.685 203.487 82.6358 204.639 87.2449C205.791 92.1833 206.449 94.6525 208.012 96.2163C213.114 101.072 226.937 98.1917 231.298 90.2079C232.697 87.5741 232.45 83.5411 231.874 75.3928C231.134 65.1045 229.159 54.8162 229.159 54.8162L220.519 54.1577Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M138.4 354.164C137.248 351.201 131.653 313.587 131.406 311.941L132.887 311.694C134.533 322.559 138.894 351.201 139.799 353.588L138.4 354.164Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M131.733 299.215L130.258 299.353L130.747 304.598L132.222 304.46L131.733 299.215Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M223.729 356.881C221.837 348.321 219.121 308.238 219.039 306.509L220.52 306.427C220.52 306.838 223.318 348.074 225.21 356.551L223.729 356.881Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M218.09 296.605L218.05 301.461L219.531 301.473L219.572 296.617L218.09 296.605Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M234.507 350.707C234.425 350.707 234.26 350.707 234.178 350.625C233.767 350.46 233.191 350.213 233.684 346.263C232.944 346.427 232.203 346.592 231.298 346.757L230.229 347.004L229.899 345.522L230.969 345.275C232.121 345.028 233.108 344.781 233.931 344.617C234.178 342.97 234.672 340.995 235.248 338.361L236.729 338.691C236.318 340.501 235.906 342.559 235.577 344.287C238.868 343.629 239.197 343.711 239.527 344.37C239.856 345.028 239.362 345.604 238.539 346.427C237.799 347.168 236.811 348.156 235.988 349.473C235.659 349.884 235.166 350.707 234.507 350.707ZM235.248 345.934C235.083 346.839 235.001 347.58 234.919 348.238C235.659 347.086 236.564 346.18 237.223 345.522C236.729 345.604 236.071 345.769 235.248 345.934Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M136.672 268.072C135.767 268.072 135.191 267.578 135.027 267.331C134.286 266.343 134.533 264.45 136.014 262.228C134.78 261.899 133.381 261.57 132.064 261.405L132.311 259.923C132.97 260.006 135.027 260.335 137.001 260.911C137.989 259.677 139.305 258.442 140.951 257.125L141.856 258.277C140.457 259.43 139.305 260.417 138.483 261.405C139.881 261.981 141.116 262.804 141.362 263.874C141.609 264.862 141.116 265.767 139.881 266.673C138.4 267.743 137.413 268.072 136.672 268.072ZM137.413 262.722C136.096 264.615 135.849 266.014 136.179 266.426C136.425 266.673 137.331 266.673 138.894 265.52C139.552 265.026 139.881 264.615 139.799 264.286C139.717 263.792 138.729 263.216 137.413 262.722Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M208.424 123.542C208.177 123.542 207.93 123.542 207.683 123.46C205.297 122.884 204.227 119.838 202.664 115.641C202.006 113.83 201.265 111.772 200.36 109.632C200.278 109.468 200.195 109.303 200.113 109.221L199.866 108.727L200.278 108.315C203.816 104.612 208.753 101.978 215.418 100.249L216.981 99.8379L216.323 101.237C214.842 104.529 215.747 106.752 216.734 109.139C217.969 112.184 219.285 115.312 214.595 119.838C212.044 122.39 210.069 123.542 208.424 123.542ZM201.676 108.974C201.759 108.974 201.759 108.974 201.676 108.974C202.664 111.196 203.404 113.254 204.063 115.065C205.379 118.686 206.367 121.567 207.93 121.978C209.164 122.308 210.974 121.238 213.525 118.768C217.475 114.982 216.487 112.678 215.253 109.797C214.348 107.657 213.361 105.27 214.266 102.06C208.917 103.624 204.803 105.929 201.676 108.974Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M238.621 172.103C237.304 172.103 235.906 171.938 234.507 171.691C230.886 170.95 228.253 169.222 227.266 167C226.608 165.518 226.69 164.201 226.854 162.473C227.019 160.662 227.266 158.193 226.69 154.407C226.525 153.008 226.114 152.349 225.62 151.691C224.797 150.456 223.892 149.88 222.905 149.386C222 148.892 221.012 148.398 220.354 147.328C218.873 145.024 219.531 141.732 220.848 139.592C223.152 135.97 227.842 135.559 232.367 135.229C237.387 134.818 246.767 134.159 249.482 139.427C251.046 142.472 250.141 146.835 248.413 149.304C247.672 150.456 246.685 151.361 245.697 152.267C244.134 153.748 242.735 154.983 242.653 157.041C242.653 157.123 242.653 157.205 242.653 157.288C242.735 160.086 244.545 162.308 245.944 164.119C247.178 165.683 248.248 167.082 247.919 168.399C247.754 168.975 247.343 169.304 246.932 169.716L246.849 169.798C245.039 171.28 241.995 172.103 238.621 172.103ZM232.45 136.629C228.089 136.958 223.974 137.287 222.082 140.25C221.012 141.978 220.519 144.695 221.588 146.423C222.082 147.164 222.74 147.575 223.563 147.987C224.633 148.563 225.785 149.221 226.854 150.785C227.348 151.608 227.924 152.514 228.171 154.16C228.747 158.111 228.5 160.744 228.336 162.555C228.171 164.201 228.089 165.271 228.582 166.341C229.405 168.152 231.709 169.551 234.836 170.21C239.032 171.115 243.723 170.374 245.78 168.563L245.862 168.481C246.191 168.152 246.273 168.07 246.356 167.905C246.52 167.247 245.615 166.177 244.71 164.942C243.147 162.967 241.172 160.497 241.089 157.205C241.089 157.123 241.089 157.041 241.089 156.876C241.172 154.16 242.982 152.596 244.628 151.032C245.533 150.209 246.438 149.386 247.096 148.398C248.577 146.176 249.318 142.472 248.084 140.003C245.862 135.641 237.14 136.299 232.45 136.629Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M257.135 129.961C255.243 129.961 253.103 129.138 251.046 128.398C248.002 127.245 244.793 126.093 242.077 127.081C236.893 129.056 230.804 128.068 228.171 125.928C226.773 124.776 226.608 123.624 226.69 122.801C227.184 119.344 228.665 115.475 235.577 112.759C241.666 110.455 245.533 101.319 245.615 101.236L245.78 100.825L246.191 100.743C251.704 99.8372 252.939 103.376 254.008 106.504C254.913 109.056 255.654 111.278 258.369 111.607C261.002 112.019 262.813 113.335 263.718 115.558C265.117 118.85 264.129 123.871 261.332 127.739C260.18 129.468 258.781 129.961 257.135 129.961ZM244.381 125.27C246.767 125.27 249.318 126.175 251.54 127.081C255.736 128.644 258.369 129.385 260.097 127.081C262.648 123.624 263.553 119.262 262.319 116.381C261.578 114.652 260.18 113.665 258.123 113.335C254.502 112.842 253.432 109.796 252.527 107.162C251.54 104.199 250.717 101.813 246.767 102.306C245.945 104.199 242.077 111.936 236.071 114.241C229.817 116.628 228.583 119.92 228.089 123.048C228.007 123.624 228.336 124.2 228.994 124.776C231.298 126.669 236.893 127.492 241.419 125.681C242.489 125.352 243.394 125.27 244.381 125.27Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M201.759 182.474C200.771 182.474 199.784 182.227 198.796 181.815C197.562 181.239 195.999 180.169 194.435 178.852L194.188 178.605V178.276C192.79 161.65 192.131 151.197 192.707 140.168L192.79 139.263L193.612 139.427C198.879 140.497 202.17 142.308 203.322 144.942C204.556 147.658 203.98 148.728 202.664 149.469C202.252 149.716 202.17 149.798 202.088 149.963C201.923 150.539 202.499 152.185 205.708 156.712C211.468 164.86 210.81 175.066 206.86 179.757C205.379 181.568 203.569 182.474 201.759 182.474ZM195.587 177.864C196.986 179.017 198.303 179.922 199.372 180.416C201.676 181.486 203.898 180.992 205.626 178.934C209.246 174.654 209.822 165.272 204.392 157.699C200.689 152.432 200.36 150.786 200.524 149.798C200.689 148.975 201.347 148.563 201.759 148.316C202.335 147.987 202.746 147.74 201.759 145.683C200.853 143.625 198.138 142.143 193.942 141.156C193.695 151.691 194.271 161.897 195.587 177.864Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M262.648 192.679C261.743 192.679 261.003 192.597 260.509 192.514C257.382 192.021 254.091 190.292 254.091 188.564C254.091 188.235 254.009 187.576 253.844 186.835C253.103 182.802 251.705 174.407 260.509 170.456C266.598 167.74 265.775 165.765 264.459 162.555C263.8 160.991 263.06 159.263 263.06 157.205C263.06 150.703 275.073 148.563 275.649 148.48H275.814C278.035 148.48 280.668 148.81 283.137 149.468L283.631 149.55L283.713 150.044C284.7 154.983 285.523 160.003 286.181 165.024L286.264 165.518L285.852 165.765C285.276 166.176 284.7 166.588 284.207 166.917C280.751 169.304 280.504 169.386 276.554 181.321C273.098 191.115 266.516 192.679 262.648 192.679ZM275.731 150.044C272.522 150.62 264.541 152.925 264.541 157.205C264.541 158.933 265.199 160.497 265.775 161.896C267.174 165.106 268.573 168.399 261.085 171.773C253.35 175.23 254.585 182.555 255.325 186.506C255.49 187.329 255.572 187.988 255.572 188.481C255.654 188.975 258.205 190.786 261.99 191.033C265.446 191.28 271.782 190.21 274.909 180.745C278.858 168.81 279.187 168.234 283.137 165.6C283.466 165.353 283.877 165.106 284.371 164.777C283.713 160.168 282.972 155.477 282.067 150.785C279.928 150.374 277.624 150.044 275.731 150.044Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M272.781 236.646L142.7 241.381L143.062 251.333L273.144 246.598L272.781 236.646Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M142.596 251.858L142.185 240.993L273.18 236.22L273.591 247.084L142.596 251.858ZM143.172 241.817L143.501 250.87L272.686 246.179L272.357 237.125L143.172 241.817Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M244.875 247.495C232.286 247.906 219.779 248.4 207.19 248.812C199.126 249.059 191.062 249.388 182.998 249.635C169.421 250.129 155.845 250.54 142.268 251.034L125.894 178.851L227.678 175.147C233.356 199.263 239.116 223.379 244.875 247.495Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M141.774 251.528L141.692 251.199L125.235 178.44L227.925 174.736L228.007 175.066L245.369 247.989H244.793C232.204 248.401 219.697 248.894 207.107 249.306H206.367C198.55 249.553 190.733 249.882 182.916 250.129L141.774 251.528ZM126.387 179.263L142.515 250.541L182.834 249.141C190.651 248.894 198.468 248.565 206.284 248.318H207.025C219.368 247.907 231.792 247.495 244.135 247.001L227.102 175.559L126.387 179.263Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M244.135 197.865C244.135 197.865 218.545 201.651 218.298 204.943C218.051 208.236 222.412 207.33 230.476 206.013C238.622 204.697 238.622 204.697 238.622 204.697C238.622 204.697 216.406 208.4 216.652 211.116C216.899 213.833 217.969 213.75 219.697 214.162C219.697 214.162 218.792 216.466 222.165 217.207L240.185 215.561C240.185 215.561 225.539 218.03 225.786 220.17C225.95 222.392 229.242 221.487 233.027 221.158C236.812 220.829 247.756 219.759 248.825 219.1C249.895 218.442 257.218 214.985 262.237 209.553C267.257 204.12 270.384 196.713 270.384 196.713L254.585 188.564L244.135 197.865Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M228.172 222.392C227.184 222.392 226.444 222.227 225.868 221.816C225.456 221.487 225.209 220.993 225.127 220.334C225.045 219.511 225.621 218.524 229.735 217.289L222.33 217.947C222.247 217.947 222.165 217.947 222.083 217.947C220.684 217.618 219.696 217.042 219.285 216.137C219.038 215.643 218.956 215.149 218.956 214.737C217.557 214.408 216.323 214.079 215.994 211.281C215.911 210.375 216.57 209.388 221.095 207.988C219.861 207.988 218.956 207.741 218.298 207.165C217.722 206.671 217.475 205.931 217.557 204.943C217.639 203.626 219.367 201.98 231.052 199.511C236.811 198.276 242.571 197.371 243.723 197.206L254.091 188.153C254.338 187.988 254.585 187.906 254.831 188.07L270.63 196.219C270.959 196.383 271.124 196.795 270.959 197.124C270.794 197.453 267.668 204.778 262.648 210.211C258.37 214.902 252.198 218.112 249.977 219.347C249.565 219.594 249.236 219.758 249.072 219.841C248.249 220.334 243.559 220.993 233.026 221.98C232.368 222.063 231.71 222.145 231.134 222.227C230.064 222.31 228.994 222.392 228.172 222.392ZM226.444 220.252C226.444 220.499 226.608 220.664 226.691 220.746C227.267 221.24 229.077 220.993 230.969 220.828C231.628 220.746 232.286 220.664 232.944 220.581C244.875 219.511 247.92 218.935 248.413 218.688C248.578 218.606 248.907 218.441 249.318 218.194C251.54 216.96 257.547 213.832 261.661 209.305C265.693 204.861 268.573 199.017 269.396 197.206L254.585 189.552L244.381 198.441C244.299 198.523 244.135 198.605 244.052 198.605C243.97 198.605 237.634 199.593 231.381 200.91C219.203 203.462 218.874 205.025 218.874 205.108C218.791 205.766 219.038 206.013 219.203 206.178C220.19 207.083 223.975 206.507 228.665 205.684L238.457 204.12C238.868 204.038 239.198 204.285 239.28 204.696C239.362 205.108 239.115 205.437 238.704 205.519C228.912 207.165 217.969 209.799 217.31 211.281C217.475 213.174 217.969 213.256 219.285 213.503C219.45 213.503 219.614 213.585 219.861 213.585C220.026 213.668 220.19 213.75 220.272 213.914C220.355 214.079 220.355 214.326 220.272 214.491C220.272 214.491 220.108 214.984 220.355 215.561C220.602 216.054 221.26 216.384 222.165 216.631L240.103 214.984C240.432 214.984 240.761 215.231 240.843 215.561C240.926 215.89 240.679 216.301 240.267 216.301C234.014 217.371 227.02 219.182 226.444 220.252Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M302.803 162.473C300.828 184.86 283.137 201.074 272.77 208.894C270.054 210.951 267.915 212.35 266.598 213.173C265.364 211.774 264.13 210.375 262.896 208.976C258.37 203.79 253.762 198.605 249.237 193.42C248.99 193.173 248.743 192.844 248.496 192.597C250.965 189.798 253.433 187 255.902 184.284C261.908 177.535 267.915 170.703 273.922 163.954C274.251 163.625 274.58 163.213 274.909 162.884C272.605 154.077 270.795 147.246 269.807 143.542C264.212 122.554 261.332 113.006 266.352 104.694C267.174 103.294 267.997 102.307 268.573 101.73C271.618 101.401 276.308 101.319 280.833 103.212C280.916 103.212 280.998 103.294 281.08 103.294C283.713 104.447 291.695 108.48 298.195 133.418C299.183 137.205 300.005 140.497 300.746 143.46C301.98 148.81 302.803 152.925 302.968 157.123C303.05 158.769 302.968 160.58 302.803 162.473Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M266.599 214.161C266.352 214.161 266.023 214.079 265.858 213.832C264.624 212.433 263.389 211.033 262.155 209.634C259.111 206.177 256.066 202.721 253.022 199.264L247.756 193.255C247.427 192.926 247.427 192.35 247.756 191.938C249.401 190.045 251.047 188.235 252.693 186.342L255.161 183.543C261.168 176.794 267.175 169.963 273.181 163.213C273.428 162.966 273.593 162.72 273.757 162.555C271.618 154.242 269.89 147.74 268.82 143.707L268.162 141.32C262.896 121.484 260.427 112.513 265.447 104.117C266.269 102.718 267.175 101.648 267.75 100.99C267.915 100.825 268.162 100.66 268.409 100.66C273.099 100.167 277.378 100.66 281.08 102.224C281.08 102.224 281.08 102.224 281.163 102.224C281.245 102.224 281.327 102.307 281.492 102.389C288.65 105.434 294.575 115.805 299.1 133.172L299.265 133.665C300.17 137.287 300.993 140.415 301.651 143.213C303.05 149.221 303.708 153.172 303.873 157.04C303.955 158.933 303.873 160.744 303.708 162.637C301.651 185.272 283.796 201.815 273.263 209.717C270.63 211.692 268.409 213.173 267.01 214.079C266.928 214.079 266.763 214.161 266.599 214.161ZM249.813 192.597L254.503 197.947C257.547 201.404 260.592 204.86 263.636 208.317C264.706 209.47 265.693 210.704 266.763 211.857C268.08 210.951 269.972 209.717 272.194 208.07C282.397 200.334 299.923 184.202 301.898 162.308C302.063 160.497 302.145 158.769 302.063 156.958C301.898 153.254 301.322 149.386 299.923 143.542C299.265 140.744 298.442 137.616 297.537 134.077L297.373 133.583C294.41 122.06 289.062 107.574 280.834 104.035C280.751 104.035 280.669 103.953 280.669 103.953H280.587C277.213 102.554 273.428 102.06 269.149 102.471C268.656 103.047 267.997 103.953 267.339 105.023C262.731 112.677 265.117 121.484 270.219 140.744L270.877 143.131C271.947 147.246 273.757 153.913 275.979 162.555C276.061 162.884 275.979 163.213 275.732 163.46L275.403 163.79C275.156 164.036 274.991 164.283 274.745 164.53C268.738 171.279 262.731 178.111 256.725 184.86L254.256 187.658C252.775 189.305 251.294 190.951 249.813 192.597Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M292.024 145.6C290.378 145.6 288.733 144.612 287.334 142.801C284.043 138.439 282.397 130.208 283.878 124.776C284.948 120.908 283.96 119.591 282.397 117.451C281.08 115.722 279.517 113.5 278.365 109.22C277.707 106.586 278.365 104.364 280.34 102.553L280.587 102.389H280.998L281.163 102.471C281.245 102.471 281.327 102.553 281.492 102.553C288.65 105.599 294.493 115.887 299.018 133.254L299.183 133.747C300.088 137.369 300.911 140.497 301.569 143.295L301.734 143.953L301.075 144.2C297.29 145.435 293.505 145.6 292.024 145.6ZM281.08 103.952C279.764 105.352 279.352 106.916 279.846 108.809C280.916 112.759 282.397 114.817 283.631 116.545C285.277 118.768 286.593 120.578 285.359 125.105C284.043 130.044 285.524 137.863 288.568 141.813C289.309 142.801 290.625 144.036 292.106 144.036C293.094 144.036 296.55 143.953 299.923 142.883C299.265 140.25 298.524 137.369 297.702 134.077L297.537 133.583C294.493 122.06 289.226 107.656 281.08 103.952Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M271.699 210.622L272.028 208.729C272.851 203.791 275.073 199.182 278.529 195.066C285.605 186.506 286.017 184.037 286.839 178.523C287.168 176.465 287.498 173.914 288.32 170.457C290.131 162.967 293.504 157.535 297.289 155.888C299.264 155.065 301.321 155.148 303.296 156.3L303.625 156.547V156.958C303.707 158.851 303.625 160.662 303.461 162.473C301.404 185.025 283.548 201.568 273.098 209.388L271.699 210.622ZM299.84 156.876C299.182 156.876 298.524 157.041 297.865 157.288C294.492 158.769 291.447 163.954 289.719 170.786C288.896 174.16 288.567 176.63 288.238 178.687C287.415 184.284 287.004 187.083 279.598 195.972C276.801 199.346 274.826 203.05 273.839 207.001C284.206 198.852 300.087 183.214 301.979 162.391C302.144 160.744 302.144 159.098 302.144 157.452C301.404 157.041 300.663 156.876 299.84 156.876Z\",\n fill: \"#E41689\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M251.458 384.865C250.964 380.997 239.938 289.143 239.938 278.525C239.938 270.377 255.984 257.619 271.042 246.261C273.839 244.121 276.143 242.475 277.131 241.487C280.916 238.031 279.188 220.252 278.2 213.668L279.681 213.421C280.093 215.89 283.22 237.948 278.2 242.557C277.131 243.545 274.909 245.191 272.029 247.413C262.155 254.903 241.502 270.459 241.502 278.525C241.502 289.061 252.857 383.713 253.022 384.701L251.458 384.865Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M166.13 373.425C165.636 369.145 154.528 268.566 156.832 262.229C157.161 261.159 158.313 258.031 187.606 244.451C201.923 237.784 216.24 231.858 216.405 231.775L216.981 233.175C194.188 242.64 159.794 258.36 158.231 262.723C156.42 267.661 164.402 344.206 167.611 373.178L166.13 373.425Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M103.06 160.625C106.706 165.374 109.163 170.677 110.511 176.138C111.145 178.829 111.542 181.678 111.621 184.448C111.7 187.139 111.462 189.83 111.066 192.521C110.432 196.004 109.401 199.407 107.974 202.573C105.676 207.638 102.267 212.308 97.8276 216.186C97.1141 216.819 96.48 217.373 95.6873 217.927C91.248 221.331 86.3331 223.705 81.2597 225.051C78.4059 225.842 75.4729 226.238 72.4605 226.396C59.6184 226.95 46.7764 221.41 38.2943 210.487C35.6783 207.084 33.6172 203.285 32.1903 199.407C30.2085 193.946 29.4951 188.247 29.8914 182.628V182.549C30.1292 179.066 30.8427 175.584 31.9525 172.26C33.6965 167.115 36.471 162.366 40.2761 158.171C41.9408 156.351 43.6848 154.689 45.7458 153.185C63.5821 139.414 89.2662 142.738 103.06 160.625Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M70.7169 227.188C57.7956 227.188 45.5877 221.173 37.6605 210.963C35.0445 207.559 32.9042 203.76 31.4773 199.724C29.4955 194.184 28.7027 188.485 29.0991 182.628V182.549C29.3369 178.987 30.0504 175.426 31.2394 172.102C33.0627 166.72 35.9165 161.892 39.7216 157.776C41.3863 155.956 43.2888 154.214 45.2706 152.631C63.5032 138.622 89.7422 142.026 103.773 160.229C107.42 164.978 109.957 170.281 111.304 176.059C111.938 178.829 112.335 181.678 112.414 184.528C112.493 187.298 112.256 190.068 111.859 192.759C111.225 196.32 110.194 199.724 108.688 203.048C106.231 208.351 102.743 213.02 98.3829 216.899C97.6695 217.532 96.956 218.086 96.2425 218.64C91.8033 222.043 86.8884 224.497 81.4979 225.921C78.5649 226.713 75.5525 227.188 72.5402 227.267C71.906 227.188 71.2719 227.188 70.7169 227.188ZM70.6377 145.508C62.0763 145.508 53.5149 148.199 46.2219 153.819C44.3193 155.322 42.4961 156.984 40.9106 158.726C37.2641 162.762 34.5689 167.432 32.7456 172.576C31.6358 175.821 30.9223 179.225 30.6845 182.628H29.8918L30.6845 182.707C30.2882 188.327 31.0809 193.867 32.9834 199.17C34.4103 203.048 36.3921 206.689 38.9288 210.013C46.856 220.302 59.381 226.159 72.4609 225.605C75.394 225.447 78.2478 225.051 81.0223 224.338C86.175 222.993 90.9313 220.619 95.212 217.374C95.9255 216.82 96.6389 216.266 97.2731 215.711C101.554 211.992 104.883 207.48 107.182 202.336C108.609 199.17 109.64 195.846 110.194 192.442C110.67 189.83 110.829 187.139 110.749 184.528C110.67 181.757 110.353 179.066 109.719 176.375C108.371 170.835 105.993 165.691 102.426 161.179C94.5778 150.89 82.687 145.508 70.6377 145.508Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M102.551 189.639C104.829 172.083 92.4218 156.006 74.8378 153.732C57.2538 151.457 41.152 163.845 38.8736 181.401C36.5951 198.957 49.0027 215.034 66.5868 217.308C84.1708 219.583 100.273 207.195 102.551 189.639Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M70.7179 218.323C60.8882 218.323 51.1377 213.891 44.6374 205.581C33.5393 191.255 36.2346 170.598 50.5828 159.517C64.931 148.437 85.6211 151.128 96.7192 165.453C107.817 179.779 105.122 200.436 90.7737 211.517C84.8283 216.107 77.7731 218.323 70.7179 218.323ZM70.6386 154.294C63.9798 154.294 57.2417 156.43 51.6133 160.784C37.9785 171.31 35.3625 190.939 45.9057 204.552C56.4489 218.165 76.1084 220.777 89.7432 210.25C103.378 199.724 105.994 180.095 95.4508 166.482C89.3468 158.488 80.072 154.294 70.6386 154.294Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M85.5354 175.979L79.59 189.197V189.276L77.4496 193.945L57.6316 196.162L55.0156 163.078L85.5354 175.979Z\",\n fill: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M57.6309 197.191C57.076 197.191 56.6796 196.795 56.6003 196.241L53.9844 163.158C53.9844 162.841 54.1429 162.445 54.3807 162.287C54.6978 162.05 55.0149 162.05 55.332 162.208L85.8517 175.109C86.0896 175.188 86.3274 175.426 86.4067 175.663C86.4859 175.9 86.4859 176.217 86.4067 176.454L78.3209 194.421C78.1623 194.737 77.8453 194.975 77.5282 194.975L57.7894 197.191C57.7102 197.191 57.7102 197.191 57.6309 197.191ZM56.1247 164.662L58.5029 195.054L76.6562 192.996L84.1078 176.454L56.1247 164.662Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M86.8831 177.88L87.2002 207.402C77.8461 204.157 68.4127 200.912 59.0586 197.667L78.8766 195.767C78.9559 195.767 78.9559 195.767 79.0352 195.767C81.5719 189.831 84.2671 183.895 86.8831 177.88Z\",\n fill: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M87.1995 208.43C87.1202 208.43 86.9617 208.43 86.8824 208.351L58.7408 198.616C58.2652 198.458 58.0273 197.983 58.0273 197.508C58.1066 197.033 58.4237 196.637 58.8993 196.637L78.2417 194.817L85.9311 177.405C86.0897 176.93 86.5653 176.692 87.0409 176.851C87.5166 176.93 87.8336 177.325 87.8336 177.8L88.1508 207.322C88.1508 207.639 87.9922 207.955 87.7544 208.114C87.5958 208.351 87.358 208.43 87.1995 208.43ZM63.7349 198.299L86.1689 205.977L85.9311 182.549L79.9064 196.242C79.7479 196.558 79.4308 196.796 79.1137 196.875L63.7349 198.299Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.9564 195.846C81.5724 189.831 84.2676 183.895 86.8836 177.88L87.2007 207.402L78.7979 195.846C78.8771 195.846 78.8771 195.846 78.9564 195.846Z\",\n fill: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M87.1998 208.43C86.8827 208.43 86.5656 208.272 86.4071 208.034L78.0042 196.479C77.7664 196.162 77.7664 195.767 77.9249 195.45C78.0042 195.292 78.0835 195.133 78.2421 195.054L86.0107 177.484C86.1693 177.009 86.6449 176.771 87.1205 176.93C87.5961 177.009 87.9132 177.405 87.9132 177.879L88.2303 207.401C88.2303 207.876 87.9925 208.272 87.5169 208.351C87.3583 208.43 87.2791 208.43 87.1998 208.43ZM80.0653 195.846L86.1693 204.235L85.9314 182.549L80.0653 195.846Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M85.5393 175.979L77.4535 193.945L55.0195 163.078L85.5393 175.979Z\",\n fill: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M77.4539 194.974C77.1368 194.974 76.8197 194.816 76.6612 194.579L54.2272 163.711C53.9894 163.316 53.9894 162.841 54.2272 162.524C54.5443 162.208 55.0199 162.049 55.4163 162.208L85.936 175.109C86.1738 175.188 86.4117 175.425 86.4909 175.663C86.5702 175.9 86.5702 176.217 86.4909 176.454L78.4052 194.42C78.2466 194.737 77.9295 194.974 77.6125 194.974C77.5332 194.974 77.4539 194.974 77.4539 194.974ZM57.953 165.453L77.2161 191.967L84.1921 176.533L57.953 165.453Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M85.5385 175.979L79.5931 189.197V189.276L77.4528 193.946L57.6348 196.162L67.0682 179.699L85.5385 175.979Z\",\n fill: \"#0CE5D2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M57.6344 197.191C57.2381 197.191 56.921 197.033 56.7625 196.716C56.6039 196.4 56.6039 196.004 56.7625 195.687L66.1958 179.146C66.3544 178.908 66.5922 178.75 66.9093 178.671L85.3797 175.03C85.7761 174.951 86.1724 175.109 86.3309 175.426C86.5688 175.742 86.648 176.138 86.4895 176.455L78.4037 194.421C78.2452 194.738 77.9281 194.975 77.611 194.975L57.8723 197.191C57.7137 197.191 57.7137 197.191 57.6344 197.191ZM67.702 180.57L59.537 194.975L76.8183 193.075L83.8735 177.404L67.702 180.57Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55.0345 65.4157C63.2997 64.5696 69.313 57.194 68.4655 48.9418C67.6181 40.6896 60.2308 34.6858 51.9655 35.5319C43.7003 36.378 37.687 43.7537 38.5345 52.0059C39.3819 60.2581 46.7692 66.2619 55.0345 65.4157Z\",\n fill: \"#008EC8\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M53.4963 66.0176C51.0544 66.0176 48.6125 65.4517 46.3887 64.2762C42.6822 62.3606 39.9351 59.1389 38.6706 55.1771C37.406 51.2153 37.7548 46.9923 39.6299 43.2917C43.5543 35.6729 52.973 32.6253 60.6039 36.5436C68.2348 40.4618 71.2872 49.8657 67.3627 57.4845C65.4441 61.1851 62.2173 63.9279 58.2493 65.1904C56.7231 65.7999 55.1097 66.0176 53.4963 66.0176ZM53.5399 36.0211C48.2637 36.0211 43.2055 38.8945 40.6328 43.8577C38.8886 47.297 38.5397 51.2153 39.7171 54.8723C40.8944 58.5294 43.4671 61.5334 46.8683 63.3184C50.3131 65.0598 54.2376 65.4081 57.9004 64.2326C61.5632 63.0572 64.572 60.4885 66.3598 57.0927C70.0226 49.9963 67.1883 41.289 60.0807 37.632C58.0312 36.5436 55.7638 36.0211 53.5399 36.0211Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62.0943 57.4714C65.9559 52.7352 65.2409 45.7703 60.4972 41.9147C55.7535 38.0592 48.7775 38.7731 44.9159 43.5093C41.0543 48.2455 41.7693 55.2105 46.513 59.066C51.2567 62.9215 58.2327 62.2076 62.0943 57.4714Z\",\n fill: \"#008EC8\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M53.4962 62.0992C51.6648 62.0992 49.877 61.6638 48.1764 60.7931C45.4293 59.3564 43.3798 56.9619 42.4205 54.0014C41.4612 51.041 41.7228 47.9063 43.1618 45.12C44.6008 42.3772 46.9991 40.331 49.9642 39.3732C52.9294 38.4154 56.0689 38.6767 58.8596 40.1134C61.6068 41.55 63.6562 43.9445 64.6155 46.905C65.5748 49.8655 65.3132 53.0001 63.8742 55.7864C62.4353 58.5292 60.037 60.5754 57.0718 61.5332C55.8945 61.925 54.7172 62.0992 53.4962 62.0992ZM53.5398 39.9392C52.4497 39.9392 51.3596 40.1134 50.313 40.4616C47.6531 41.3324 45.4729 43.1609 44.1647 45.686C42.9002 48.1676 42.6385 51.041 43.5107 53.6967C44.3828 56.3524 46.2142 58.5292 48.7433 59.8353C51.2288 61.0978 54.1067 61.359 56.7666 60.4883C59.4265 59.6176 61.6068 57.7891 62.9149 55.264C64.1795 52.7824 64.4411 49.909 63.569 47.2533C62.6969 44.5976 60.8655 42.4208 58.3364 41.1147C56.8102 40.331 55.1532 39.9392 53.5398 39.9392Z\",\n fill: \"#101010\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.7934 53.2616L53.5406 49.8658L58.8604 49.2127L60.343 47.1665L55.154 47.8631L59.122 42.9L55.8516 41.2456L50.0086 48.5162L47.9155 48.7774L46.3457 50.7365L48.4388 50.4753L45.4736 54.1759L55.6336 59.3567L57.7267 56.788L50.7934 53.2616Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55.6337 59.7919C55.5464 59.7919 55.5028 59.7919 55.4156 59.7484L45.2556 54.5241C45.1248 54.4805 45.0376 54.3499 45.0376 54.2193C44.994 54.0887 45.0376 53.9581 45.1248 53.871L47.3923 51.0412L46.3894 51.1718C46.2149 51.2153 46.0405 51.0847 45.9533 50.9541C45.8661 50.7799 45.8661 50.6058 45.9969 50.4752L47.5667 48.5161C47.6539 48.429 47.7411 48.3854 47.8719 48.3419L49.8342 48.0807L55.59 40.9407C55.7209 40.7666 55.9389 40.7231 56.1133 40.8101L59.3401 42.4645C59.4709 42.5081 59.5581 42.6387 59.5581 42.7693C59.6017 42.8999 59.5581 43.0305 59.4709 43.1176L56.1569 47.21L60.2994 46.6875C60.4738 46.6875 60.6482 46.7311 60.7355 46.9052C60.8227 47.0358 60.8227 47.2535 60.6918 47.3841L59.2093 49.3868C59.1221 49.4739 59.0349 49.5609 58.904 49.5609L53.7586 50.214L51.4912 53.0438L57.9447 56.3526C58.0755 56.3961 58.1627 56.5267 58.1627 56.6573C58.2063 56.7879 58.1628 56.9186 58.0755 57.0056L55.9825 59.5743C55.8953 59.7484 55.7645 59.7919 55.6337 59.7919ZM46.1277 54.0016L55.5028 58.7906L57.029 56.9186L50.6191 53.6533C50.4882 53.6098 50.401 53.4792 50.401 53.3486C50.3574 53.218 50.401 53.0874 50.4883 53.0003L53.2354 49.6045C53.3226 49.5174 53.4098 49.4739 53.5406 49.4303L58.686 48.7773L59.4273 47.7324L55.2412 48.2548C55.0668 48.2548 54.8924 48.2113 54.8052 48.0372C54.7179 47.863 54.718 47.6889 54.8488 47.5583L58.468 43.0305L56.0261 41.7679L50.401 48.7337C50.3138 48.8208 50.2266 48.8643 50.0958 48.9079L48.1336 49.1691L47.3487 50.1704L48.3952 50.0398C48.5696 49.9963 48.744 50.1269 48.8313 50.2575C48.9185 50.4317 48.9185 50.6058 48.7876 50.7364L46.1277 54.0016Z\",\n fill: \"#101010\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_103_2175\",\n x1: 292.437,\n y1: 66.4206,\n x2: 448.446,\n y2: 66.4206,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FC9D29\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#E41689\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_103_2175\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 529,\n height: 521,\n fill: \"white\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSettingsIllustration);\nexport default __webpack_public_path__ + \"static/media/settings-illustration.7cbfa541e1896114b2792f3eddf61a3b.svg\";\nexport { ForwardRef as ReactComponent };","import { useCallback, useEffect, useRef, useState } from 'react';\nimport toast from 'react-hot-toast';\nimport Button from 'src/components/button/Button';\nimport ErrorState from 'src/components/error-state/ErrorState';\nimport Input from 'src/components/input/Input';\nimport Loader from 'src/components/loader/Loader';\nimport SecurityLevelCheckbox from 'src/components/security-level-checkbox/SecurityLevelCheckbox';\nimport settingsIllustration from 'src/icons/settings-illustration.svg';\nimport CopyIcon from 'src/icons/copy';\nimport API from 'src/utils/api';\nimport { isValidEmail, isValidName, isValidPassword } from 'src/utils/forms';\nimport { copyToClipboard, truncate } from 'src/utils/strings';\n\nconst Settings = () => {\n // Refs\n const fetchingProfile = useRef(false);\n // Form\n const [firstName, setFirstName] = useState();\n const [lastName, setLastName] = useState();\n const [email, setEmail] = useState();\n const [newPassword, setNewPassword] = useState();\n const [confirmPassword, setConfirmPassword] = useState();\n const [maxSecurityLevel, setMaxSecurityLevel] = useState(false);\n const [apiKey, setApiKey] = useState();\n const [formErrors, setErrors] = useState();\n // UI State\n const [loading, setLoading] = useState();\n const [error, setError] = useState();\n const [isMaxSecurityLevelModalOpen, setIsMaxSecurityLevelModalOpen] = useState(false);\n\n useEffect(() => {\n if (fetchingProfile.current) return; // make sure to fetch data only at first render\n const fetchBalances = async () => {\n fetchingProfile.current = true;\n try {\n const response = await API.get('/user/profile');\n\n setFirstName(response.data.user.firstName);\n setLastName(response.data.user.lastName);\n setEmail(response.data.user.email);\n setMaxSecurityLevel(response.data.user.securityLevel === 1);\n setApiKey(response.data.user.apiKey);\n\n fetchingProfile.current = false;\n } catch (error) {\n setError(true);\n toast.error('Failed to fetch profile');\n fetchingProfile.current = false;\n }\n };\n\n fetchBalances();\n }, []);\n\n const checkErrors = useCallback(() => {\n let newErrors = {};\n if (email && !isValidEmail(email)) newErrors.email = 'Please enter a valid email';\n if (newPassword && !isValidPassword(newPassword)) {\n newErrors.newPassword = 'Please enter a valid password (6 characters long)';\n }\n if (confirmPassword && newPassword && confirmPassword !== newPassword) {\n newErrors.confirmPassword = 'This field must match the new password field';\n }\n if (firstName && !isValidName(firstName)) newErrors.firstName = 'Please enter your first name';\n if (lastName && !isValidName(lastName)) newErrors.lastName = 'Please enter your last name';\n return newErrors;\n }, [email, newPassword, confirmPassword, firstName, lastName]);\n\n useEffect(() => {\n if (\n email === undefined ||\n newPassword === undefined ||\n confirmPassword === undefined ||\n firstName === undefined ||\n lastName === undefined\n ) {\n return;\n }\n setErrors(checkErrors());\n }, [email, firstName, lastName, checkErrors, newPassword, confirmPassword]);\n\n const onSubmit = async (e) => {\n e.preventDefault();\n try {\n const newErrors = checkErrors();\n if (Object.keys(newErrors).length > 0) return setErrors(newErrors);\n setLoading(true);\n await API.put('/user/profile/edit', {\n email,\n firstName,\n lastName,\n password: newPassword && confirmPassword && newPassword === confirmPassword ? newPassword : undefined,\n securityLevel: maxSecurityLevel ? 1 : 2,\n });\n window.location.href = '/';\n toast.success('Profile updated successfully');\n } catch (error) {\n setError(true);\n setLoading(false);\n toast.error('Failed to save profile');\n }\n };\n\n const onCopyApiKeyClick = () => {\n copyToClipboard(apiKey);\n };\n\n if (loading) {\n return (\n
    \n \n
    \n );\n }\n\n if (error) {\n return ;\n }\n\n return (\n
    \n
    \n Settings\n {apiKey && (\n \n )}\n
    \n Profile\n \n Fill in the fields that you want to update and leave the rest empty\n \n
    \n \n \n
    \n \n \n \n \n
    \n
    \n );\n};\n\nexport default Settings;\n","import { useState } from 'react';\nimport toast from 'react-hot-toast';\nimport { useParams } from 'react-router-dom';\nimport Button from 'src/components/button/Button';\nimport Input from 'src/components/input/Input';\nimport Loader from 'src/components/loader/Loader';\nimport logoIcon from 'src/icons/logo.svg';\nimport API from 'src/utils/api';\nimport { isValidPassword } from 'src/utils/forms';\n\nconst ResetPassword = () => {\n const { token } = useParams();\n\n const [password, setPassword] = useState();\n const [confirmPassword, setConfirmPassword] = useState();\n const [loading, setLoading] = useState();\n\n const onSubmit = async (e) => {\n e.preventDefault();\n setLoading(true);\n\n if (!password || !confirmPassword) {\n setLoading(false);\n return toast.error('Please enter a value for both fields');\n }\n\n if (password !== confirmPassword) {\n setLoading(false);\n return toast.error(\"Passwords don't match\");\n }\n\n if (!isValidPassword(password)) {\n return toast.error('Please enter a valid password (between 6 and 255 characters long)', { duration: 4000 });\n }\n\n try {\n const response = await API.post(\n '/user/reset-password',\n { password },\n { headers: { Authorization: `Bearer ${token}` } }\n );\n if (response.status === 200) {\n toast.success('Password reset successfully!');\n setTimeout(() => {\n window.location.href = '/login';\n }, 2000);\n }\n if (response.status !== 200) {\n toast.error('Could not reset your password. Either your link expired or an unexpected error occured', {\n duration: 4000,\n });\n }\n setLoading(false);\n } catch (error) {\n setLoading(false);\n toast.error('Could not reset your password. Either your link expired or an unexpected error occured', {\n duration: 4000,\n });\n }\n };\n\n if (loading) return ;\n\n return (\n
    \n
    \n \"Payonix\n
    \n
    \n
    \n Reset your password\n \n \n
    \n
    \n © 2022 Payonix.com. All rights reserved\n
    \n
    \n );\n};\n\nexport default ResetPassword;\n","import { Routes, Route } from 'react-router-dom';\nimport { useMemo } from 'react';\n\nimport { clusterApiUrl } from '@solana/web3.js';\nimport { WalletAdapterNetwork } from '@solana/wallet-adapter-base';\nimport {\n GlowWalletAdapter,\n LedgerWalletAdapter,\n PhantomWalletAdapter,\n SlopeWalletAdapter,\n SolflareWalletAdapter,\n SolletExtensionWalletAdapter,\n SolletWalletAdapter,\n TorusWalletAdapter,\n} from '@solana/wallet-adapter-wallets';\nimport { ConnectionProvider, WalletProvider } from '@solana/wallet-adapter-react';\nimport { WalletModalProvider } from '@solana/wallet-adapter-react-ui';\n\nimport Header from 'src/components/header/Header';\nimport Home from 'src/screens/home/Home';\nimport Login from 'src/screens/login/Login';\nimport Signup from 'src/screens/signup/Signup';\nimport PageNotFound from 'src/screens/page-not-found/PageNotFound';\nimport { LOCAL_STORAGE_TOKEN_KEY } from 'src/utils/constants';\nimport AllTransactions from 'src/screens/all-transactions/AllTransactions';\nimport Withdraw from 'src/screens/withdraw/Withdraw';\nimport CreateMerchantForm from 'src/screens/create-merchant-form/CreateMerchantForm';\nimport MerchantSales from 'src/screens/merchant-sales/MerchantSales';\nimport Settings from './screens/settings/Settings';\n\nimport './App.css';\nimport { UserProfileProvider } from './context/user-context/UserProvider';\nimport ResetPassword from './screens/reset-password/ResetPassword';\nrequire('@solana/wallet-adapter-react-ui/styles.css');\n\nfunction App() {\n const solNetwork = WalletAdapterNetwork.Mainnet;\n const endpoint = useMemo(() => clusterApiUrl(solNetwork), [solNetwork]);\n const wallets = useMemo(\n () => [\n new PhantomWalletAdapter(),\n new GlowWalletAdapter(),\n new SlopeWalletAdapter(),\n new SolflareWalletAdapter({ solNetwork }),\n new TorusWalletAdapter(),\n new LedgerWalletAdapter(),\n new SolletExtensionWalletAdapter(),\n new SolletWalletAdapter(),\n ],\n [solNetwork]\n );\n\n if (!localStorage.getItem(LOCAL_STORAGE_TOKEN_KEY)) {\n return (\n
    \n \n } />\n } />\n }>\n } />\n \n
    \n );\n }\n\n return (\n \n \n \n \n
    \n
    \n \n } />\n } />\n } />\n }>\n }>\n }>\n }>\n \n
    \n
    \n
    \n
    \n
    \n );\n}\n\nexport default App;\n","const reportWebVitals = (onPerfEntry) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { BrowserRouter } from 'react-router-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\nimport { Toaster } from 'react-hot-toast';\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(\n \n \n \n \n \n \n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"names":["module","exports","arr","len","length","i","arr2","Array","__esModule","isArray","arrayLikeToArray","self","ReferenceError","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","fn","this","args","arguments","apply","err","undefined","instance","Constructor","TypeError","setPrototypeOf","isNativeReflectConstruct","_construct","Parent","Class","Reflect","construct","bind","a","push","Function","prototype","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","protoProps","staticProps","unsupportedIterableToArray","o","allowArrayLike","it","Symbol","iterator","F","s","n","e","_e","f","normalCompletion","didErr","call","step","next","_e2","getPrototypeOf","possibleConstructorReturn","Derived","hasNativeReflectConstruct","result","Super","NewTarget","constructor","obj","superPropBase","_get","get","property","receiver","base","desc","getOwnPropertyDescriptor","_getPrototypeOf","__proto__","subClass","superClass","create","toString","indexOf","sham","Proxy","Boolean","valueOf","iter","from","_i","_s","_arr","_n","_d","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","source","forEach","getOwnPropertyDescriptors","defineProperties","_typeof","assertThisInitialized","_regeneratorRuntime","Op","hasOwn","hasOwnProperty","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","state","method","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","type","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","name","mark","awrap","async","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","_setPrototypeOf","p","arrayWithHoles","iterableToArrayLimit","nonIterableRest","arrayWithoutHoles","iterableToArray","nonIterableSpread","minLen","test","isNativeFunction","_wrapNativeSuper","_cache","Map","has","set","Wrapper","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","LOCAL_STORAGE_TOKEN_KEY","SUPPORTED_TOKENS","BTC","SOL","ETH","BSC","MATIC","FTM","AVAX","ALL_SUPPORTED_TOKENS","Set","reduce","acc","val","TRANSACTION_EXPLORER_LINK","NETWORK_NAME_LABELS","TRANSACTION_STATES","COMPLETED","FAILED","PENDING","EVM_CHAIN_IDS","COLLECTED_CUSTOMER_DATE_VALUES","EMAIL","FIRST_NAME","LAST_NAME","ADDRESS","NOTES","PAYMENT_STATES_LABELS","initialized","canceled","pending","completed","failed","LOGO_URL","timestampToFormattedDate","timestampStr","showHour","timestamp","parseInt","date","Date","toLocaleString","toLocaleDateString","dateToFormattedStr","getFullYear","getMonth","getDate","datesAreTheSameDay","date1","date2","getDaysBetweenTwoDates","Math","floor","getTime","isDateInPeriod","startDate","endDate","setHours","truncate","input","substring","getRandomSmallString","random","copyToClipboard","string","navigator","clipboard","writeText","toast","removeTrailingZeros","str","newStr","at","CoinbaseWalletSDK","wallet_logo_1","require","ScopedLocalStorage_1","CoinbaseWalletProvider_1","WalletSDKUI_1","WalletSDKRelay_1","WalletSDKRelayEventManager_1","util_1","LINK_API_URL","process","SDK_VERSION","options","_a","_b","_c","_appName","_appLogoUrl","_relay","_relayEventManager","uiConstructor","linkAPIUrl","opts","WalletSDKUI","overrideIsMetaMask","_overrideIsMetaMask","_overrideIsCoinbaseWallet","overrideIsCoinbaseWallet","_overrideIsCoinbaseBrowser","overrideIsCoinbaseBrowser","diagnosticLogger","eventListener","_diagnosticLogger","log","onEvent","_reloadOnDisconnect","reloadOnDisconnect","u","URL","origin","protocol","host","_storage","ScopedLocalStorage","setItem","VERSION","walletExtension","WalletSDKRelayEventManager","WalletSDKRelay","version","darkMode","storage","relayEventManager","setAppInfo","appName","appLogoUrl","headlessMode","attachUI","jsonRpcUrl","chainId","extension","isCipherProvider","setProviderInfo","disableReloadOnDisconnect","relay","setConnectDisabled","CoinbaseWalletProvider","relayProvider","qrUrl","getQrUrl","getFavicon","close","resetAndReload","getQRCodeUrl","width","walletLogo","window","coinbaseWalletExtension","walletLinkExtension","provider","isCipher","height","toFixed","LinkFlow","preact_1","rxjs_1","TryExtensionLinkDialog_1","extensionUI$","BehaviorSubject","subscriptions","Subscription","isConnected","isOpen","onCancel","root","connectDisabled","sessionId","sessionSecret","isParentConnection","connected$","el","document","createElement","className","appendChild","render","add","subscribe","v","unsubscribe","parentElement","removeChild","subscription","h","TryExtensionLinkDialog","__importDefault","mod","QRCode","hooks_1","qrcode_svg_1","useState","svg","setSvg","useEffect","qrcode","default","content","background","bgColor","color","fgColor","container","ecl","padding","image","base64","Buffer","src","alt","SnackbarInstance","SnackbarContainer","Snackbar","clsx_1","Snackbar_css_1","items","nextItemKey","itemProps","delete","clear","entries","map","assign","class","children","autoExpand","message","menuItems","hidden","setHidden","expanded","setExpanded","timers","setTimeout","clearTimeout","onClick","viewBox","fill","xmlns","cx","cy","r","title","action","isRed","svgWidth","svgHeight","defaultFillRule","defaultClipRule","d","path","Spinner","Spinner_css_1","size","style","stroke","version_1","globe_icon_svg_1","link_icon_svg_1","lock_icon_svg_1","QRLogo_1","QRCode_1","Spinner_1","TryExtensionLinkDialog_css_1","isContainerHidden","setContainerHidden","isDialogHidden","setDialogHidden","theme","TryExtensionBox","onInstallClick","open","ScanQRBox","CancelButton","isClicked","setIsClicked","clickHandler","useCallback","location","reload","DescriptionItem","icon","text","createQrUrl","href","rel","LIB_VERSION","ClientMessagePublishEvent","ClientMessageSetSessionConfig","ClientMessageGetSessionConfig","ClientMessageIsLinked","ClientMessageHostSession","params","EVENTS","STARTED_CONNECTING","CONNECTED_STATE_CHANGE","DISCONNECTED","METADATA_DESTROYED","LINKED","FAILURE","SESSION_CONFIG_RECEIVED","ETH_ACCOUNTS_STATE","SESSION_STATE_CHANGE","UNLINKED_ERROR_STATE","SKIPPED_CLEARING_SESSION","GENERAL_ERROR","WEB3_REQUEST","WEB3_REQUEST_PUBLISHED","WEB3_RESPONSE","UNKNOWN_ADDRESS_ENCOUNTERED","RxWebSocket","ConnectionState","operators_1","url","WebSocketClass","WebSocket","webSocket","connectionStateSubject","incomingDataSubject","Subject","replace","throwError","Observable","obs","CONNECTING","onclose","evt","clearWebSocket","code","reason","onopen","_","CONNECTED","onmessage","data","pipe","take","asObservable","incomingData$","flatMap","m","j","JSON","parse","empty","of","send","onerror","isServerMessageFail","msg","id","WalletSDKConnection","Session_1","types_1","ClientMessage_1","DiagnosticLogger_1","RxWebSocket_1","ServerMessage_1","HEARTBEAT_INTERVAL","sessionKey","diagnostic","destroyed","lastHeartbeatResponse","nextReqId","IntNumber","connectedSubject","linkedSubject","sessionConfigSubject","ReplaySubject","ws","connectionState$","tap","sessionIdHash","Session","hash","skip","cs","delay","connect","retry","switchMap","iif","authenticate","sendIsLinked","sendGetSessionConfig","distinctUntilChanged","catchError","connected","timer","updateLastHeartbeat","heartbeat","incomingJSONData$","includes","linked","onlineGuests","metadata_keys","metadata","webhookId","webhookUrl","disconnect","linked$","sme","eventId","event","onceConnected$","makeRequest","res","callWebhook","onceLinked$","sendData","stringify","now","timeout","reqId","timeoutWith","CoinbaseWalletSDK_1","CoinbaseWalletSDK_2","CoinbaseWalletProvider_2","WalletLink","WalletLinkProvider","scope","localStorage","scopedKey","getItem","removeItem","prefix","keysToRemove","startsWith","injectCssReset","cssReset_css_1","styleEl","createTextNode","documentElement","safe_event_emitter_1","bn_js_1","eth_rpc_errors_1","WalletSDKRelayAbstract_1","eth_eip712_util_1","FilterPolyfill_1","JSONRPC_1","SubscriptionManager_1","DEFAULT_CHAIN_ID_KEY","DEFAULT_JSON_RPC_URL","HAS_CHAIN_BEEN_SWITCHED_KEY","HAS_CHAIN_OVERRIDDEN_FROM_RELAY","_filterPolyfill","FilterPolyfill","_subscriptionManager","SubscriptionManager","_addresses","hasMadeFirstChainChangedEmission","_send","_sendAsync","sendAsync","updateProviderInfo","getChainId","enable","request","_setAddresses","scanQRCode","genericRequest","_jsonRpcUrlFromOpts","_relayProvider","isCoinbaseWallet","isCoinbaseBrowser","supportsAddressSwitching","chainIdStr","prepend0x","emit","cachedAddresses","LOCAL_STORAGE_ADDRESSES_KEY","addresses","split","address","ensureAddressString","events","on","notification","initializeRelay","addEventListener","_chainId","Number","isChainOverridden","fromRelay","originalChainId","ensureIntNumber","symbol","decimals","watchAsset","promise","rpcUrls","blockExplorerUrls","chainName","iconUrls","nativeCurrency","isWhitelistedNetworkOrStandalone","inlineAddEthereumChain","_isAuthorized","requestEthereumAccounts","addEthereumChain","isApproved","switchEthereumChain","errorCode","ethErrors","custom","switchResponse","rpcUrl","addresses_length","session","JSONRPCMethod","eth_requestAccounts","requestOrMethod","callbackOrParams","jsonrpc","_sendRequestAsync","callback","_sendRequest","req","arrayCb","_sendMultipleRequestsAsync","responses","catch","cb","response","rpc","invalidRequest","newParams","makeRequestId","match","ensureRegExpString","providerOptions","selectProvider","_handleSynchronousMethods","isDisconnect","newAddresses","join","syncResult","filterPromise","_handleAsynchronousFilterMethods","subscriptionPromise","_handleSubscriptionMethods","_handleAsynchronousMethods","requests","all","eth_accounts","_eth_accounts","eth_coinbase","_eth_coinbase","eth_uninstallFilter","_eth_uninstallFilter","net_version","_net_version","eth_chainId","_eth_chainId","eth_sign","eth_ecRecover","personal_sign","personal_ecRecover","eth_signTransaction","eth_sendRawTransaction","eth_sendTransaction","eth_signTypedData_v1","eth_signTypedData_v2","eth_signTypedData_v3","eth_signTypedData_v4","eth_signTypedData","cbWallet_arbitrary","wallet_addEthereumChain","wallet_switchEthereumChain","wallet_watchAsset","_eth_requestAccounts","_eth_sign","_eth_ecRecover","_personal_sign","_personal_ecRecover","_eth_signTransaction","_eth_sendRawTransaction","_eth_sendTransaction","_eth_signTypedData_v1","_throwUnsupportedMethodError","_eth_signTypedData_v3","_eth_signTypedData_v4","_cbwallet_arbitrary","_wallet_addEthereumChain","_wallet_switchEthereumChain","_wallet_watchAsset","makeEthereumJSONRPCRequest","eth_newFilter","_eth_newFilter","eth_newBlockFilter","_eth_newBlockFilter","eth_newPendingTransactionFilter","_eth_newPendingTransactionFilter","eth_getFilterChanges","_eth_getFilterChanges","eth_getFilterLogs","_eth_getFilterLogs","eth_subscribe","eth_unsubscribe","handleRequest","addressString","addressStr","_isKnownAddress","tx","fromAddress","selectedAddress","_ensureKnownAddress","toAddress","to","weiValue","ensureBN","ensureBuffer","alloc","nonce","gasPriceInWei","gasPrice","maxFeePerGas","maxPriorityFeePerGas","gasLimit","gas","unauthorized","unsupportedMethod","addPrefix","typedDataJson","signEthereumMessage","userRejectedRequest","signature","ethereumAddressFromSignedMessage","hexStringFromIntNumber","_requireAuthorization","_signEthereumMessage","_ethereumAddressFromSignedMessage","_prepareTransactionParams","signEthereumTransaction","signedTransaction","submitEthereumTransaction","signAndSubmitEthereumTransaction","typedData","ensureParsedJSONObject","hashForSignTypedDataLegacy","typedDataJSON","hashForSignTypedData_v3","hashForSignTypedData_v4","trim","chainIdNumber","invalidParams","filterId","ensureHexString","uninstallFilter","param","newFilter","newBlockFilter","newPendingTransactionFilter","getFilterChanges","getFilterLogs","setAccountsCallback","accounts","setChainCallback","filterFromParam","JSONRPC_TEMPLATE","logFilters","blockFilters","pendingTransactionFilters","cursors","timeouts","nextFilterId","makeFilterId","setInitialCursorPosition","fromBlock","cursor","console","setFilterTimeout","intNumberFromHexString","deleteFilter","getLogFilterChanges","getBlockFilterChanges","getPendingTransactionFilterChanges","filterNotFoundError","sendAsyncPromise","paramFromFilter","cursorPosition","getCurrentBlockHeight","currentBlockHeight","toBlock","emptyResult","blocks","blockNumber","highestBlock","max","newCursorPosition","range","getBlockHashByNumber","_id","startBlock","initialCursorPosition","existing","intBlockHeightFromHexBlockHeight","topics","hexBlockHeightFromIntBlockHeight","isHexString","String","PollingBlockTracker","createSubscriptionManager","noop","blockTracker","pollingInterval","setSkipCacheFlag","middleware","subscriptionMiddleware","destroy","LinkFlow_1","Snackbar_1","cssReset_1","standalone","attached","snackbar","linkFlow","secret","attach","_options","snackbarProps","isUnlinkedErrorState","onResetConnection","presentItem","status","WalletUIError","UserRejectedRequest","SwitchEthereumChainUnsupportedChainId","RelayMessageType","js_sha256_1","STORAGE_KEY_SESSION_ID","STORAGE_KEY_SESSION_SECRET","STORAGE_KEY_SESSION_LINKED","randomBytesHex","_secret","sha256","update","_key","hex","_linked","persistLinked","fromEvent","oldValue","newValue","__createBinding","k","k2","__setModuleDefault","__decorate","decorators","c","decorate","__importStar","bind_decorator_1","WalletSDKConnection_1","WalletUIError_1","aes256gcm","Web3Method_1","Web3RequestCanceledMessage_1","Web3RequestMessage_1","Web3Response_1","Web3ResponseMessage_1","accountsCallback","chainCallback","ui","connection","_session","load","save","sessionConfig$","sessionConfig","onSessionConfigChanged","incomingEvent$","handleIncomingEvent","isLinked","wasConnectedViaStandalone","getSessionIdHash","__destroyed","alreadyDestroyed","isDestroyed","WalletUsername","mergeMap","decrypt","walletUsername","WALLET_USER_NAME_KEY","AppVersion","appVersion","APP_VERSION_KEY","ChainId","JsonRpcUrl","zip","EthereumAddress","accountRequestCallbackIds","Web3ResponseMessage","RequestEthereumAccountsResponse","invokeCallback","setSessionMetadata","isStandalone","sessionMetadataChange","storedSession","storedSessionIdHash","reloadUI","setStandalone","sendRequest","Web3Method","hexStringFromBuffer","bigIntStringFromBN","shouldSubmit","regExp","generic","hideSnackbarItem","cancel","publishWeb3RequestCanceledEvent","handleErrorResponse","showConnecting","callbacks","errorMessage","sendRequestStandalone","publishWeb3RequestEvent","disabled","Web3RequestMessage","isSessionMismatched","publishEvent","handleWeb3ResponseMessage","Web3RequestCanceledMessage","subscriber","encrypt","encrypted","json","isWeb3ResponseMessage","isRequestEthereumAccountsResponse","ErrorResponse","hideRequestEthereumAccounts","userAgent","encodeURIComponent","inlineAccountsResponse","onAccounts","onApprove","selectedProviderKey","SelectProviderResponse","_error","ProviderType","Unselected","inlineWatchAsset","WatchAssetReponse","AddEthereumChainResponse","inlineSwitchEthereumChain","SwitchEthereumChainResponse","_cancel","onSuccess","_nextSessionConfig","WalletSDKRelayAbstract","fetch","body","mode","headers","serializeError","_nextRequestId","idStr","RelayMessage_1","WEB3_REQUEST_CANCELED","EthereumAddressFromSignedMessageResponse","SubmitEthereumTransactionResponse","SignEthereumTransactionResponse","SignEthereumMessageResponse","addResponse","success","signedData","txHash","plainText","ivBytes","crypto","getRandomValues","Uint8Array","subtle","importKey","hexStringToUint8Array","secretKey","enc","TextEncoder","iv","encode","encryptedResult","authTag","byteLength","encryptedPlaintext","authTagBytes","encryptedPlaintextBytes","concatted","uint8ArrayToHex","cipherText","concattedBytes","algo","decrypted","decoder","TextDecoder","decode","OpaqueType","RegExpString","BigIntString","AddressString","HexString","num","isBigNumber","ensureEvenLengthHexString","strip0x","has0xPrefix","qs_1","INT_STRING_REGEX","HEXADECIMAL_STRING_REGEX","b","padStart","toLowerCase","includePrefix","isInteger","toNumber","config","EUCLID","hexString","byte","buf","bn","isBuffer","RegExp","isBN","start","querySelector","getAttribute","serverUrl","sessionIdKey","query","util","BN","elementaryName","parseTypeN","exec","parseTypeNxM","tmp","parseTypeArray","parseNumber","stripHexPrefix","toArray","encodeSingle","ret","lastIndexOf","unshift","concat","zeros","setLengthRight","bitLength","toArrayLike","toTwos","mul","pow","isDynamic","solidityPack","types","setLength","rawEncode","output","headLength","cur","soliditySHA3","keccak","abi","TYPED_MESSAGE_SCHEMA","properties","additionalProperties","required","primaryType","domain","TypedDataUtils","encodeData","useV4","encodedTypes","encodedValues","hashType","encodeField","parsedType","typeValuePairs","item","field","encodeType","deps","findTypeDependencies","dep","sort","results","hashStruct","sanitizeData","sanitizedData","EIP712Domain","parts","msgParams","toBuffer","schema","typedSignatureHashLegacy","createKeccakHash","bytes","allocUnsafe","right","copy","intToBuffer","bufferToHex","bits","digest","QR8bitByte","QRMode","MODE_8BIT_BYTE","parsedData","l","byteArray","charCodeAt","QRCodeModel","typeNumber","errorCorrectLevel","modules","moduleCount","dataCache","dataList","getLength","buffer","write","put","addData","newData","isDark","row","col","getModuleCount","make","makeImpl","getBestMaskPattern","maskPattern","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","minLostPoint","pattern","lostPoint","QRUtil","getLostPoint","createMovieClip","target_mc","instance_name","depth","qr_mc","createEmptyMovieClip","y","x","beginFill","moveTo","lineTo","endFill","pos","getPatternPosition","getBCHTypeNumber","getBCHTypeInfo","inc","bitIndex","byteIndex","dark","getMask","PAD0","PAD1","rsBlocks","QRRSBlock","getRSBlocks","QRBitBuffer","getLengthInBits","totalDataCount","dataCount","putBit","createBytes","offset","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","rsPoly","getErrorCorrectPolynomial","modPoly","QRPolynomial","modIndex","totalCodeCount","index","MODE_NUMBER","MODE_ALPHA_NUM","MODE_KANJI","QRErrorCorrectLevel","QRMaskPattern","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","getBCHDigit","digit","errorCorrectLength","multiply","QRMath","gexp","qrCode","sameCount","count","darkCount","abs","glog","LOG_TABLE","EXP_TABLE","shift","ratio","RS_BLOCK_TABLE","rsBlock","getRsBlockTable","list","bufIndex","bit","QRCodeLimitLength","encodeURI","_getUTF8Length","limit","table","_getTypeNumber","_getErrorCorrectLevel","opt","pretty","indent","EOL","xsize","ysize","swap","xmlDeclaration","predefined","defs","bgrect","modrect","pathdata","px","py","t","w","imgSvg","imgWidth","imgHeight","imgY","assert","inherits","superCtor","super_","TempCtor","number","endian","negative","words","red","_init","wordSize","parseHex4Bits","parseHexByte","lowerBound","parseBase","end","min","move","dest","left","cmp","_initNumber","_initArray","_parseHex","_parseBase","ceil","off","_strip","limbLen","limbPow","total","word","imuln","_iaddn","_move","clone","_expand","_normSign","for","inspect","groupSizes","groupBases","out","carry","groupSize","groupBase","isZero","modrn","idivn","toJSON","smallMulTo","lo","ncarry","rword","maxJ","ArrayType","reqLength","allocate","_toArrayLikeLE","position","_toArrayLikeBE","clz32","_countBits","_zeroBits","hi","zeroBits","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","wbit","iadd","isub","sub","comb10MulTo","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","FFTM","mulTo","makeRBT","N","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","odd","conjugate","normalize13b","round","convert13b","stub","ph","mulp","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","isNegNum","muln","sqr","isqr","toBitArray","q","iushln","carryMask","newCarry","ishln","iushrn","hint","extended","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","andln","modn","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","strip","outLen","mod3","one","nOne","lpow","z","inv","wnd","current","currentLen","mont","EthereumRpcError","serialized","stack","fast_safe_stringify_1","serialize","stringifyReplacer","EthereumProviderError","isValidEthProviderCode","invalidInput","resourceNotFound","resourceUnavailable","transactionRejected","methodNotSupported","limitExceeded","methodNotFound","internal","disconnected","chainDisconnected","standard","getEthJsonRpcError","parseOpts","classes_1","utils_1","getEthProviderError","error_constants_1","server","errors_1","FALLBACK_ERROR_CODE","FALLBACK_MESSAGE","FALLBACK_ERROR","getMessageFromCode","fallbackMessage","codeString","hasKey","isJsonRpcServerError","isValidCode","assignOriginalError","fallbackError","shouldIncludeStack","originalError","percentTwenties","Format","formatters","RFC1738","RFC3986","formats","utils","defaults","allowDots","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","delimiter","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictNullHandling","$0","numberStr","fromCharCode","parseArrayValue","parseKeys","givenKey","valuesParsed","child","segment","parent","chain","leaf","cleanRoot","parseObject","isRegExp","normalizeParseOptions","tempObj","cleanStr","Infinity","skipIndex","part","bracketEqualsPos","maybeMap","encodedVal","combine","parseValues","newObj","merge","compact","getSideChannel","arrayPrefixGenerators","brackets","indices","repeat","pushToArray","valueOrArray","toISO","toISOString","defaultFormat","addQueryPrefix","encoder","encodeValuesOnly","format","formatter","serializeDate","skipNulls","sentinel","generateArrayPrefix","sideChannel","tmpSc","findFlag","RangeError","keyValue","valuesArray","valuesJoined","objKeys","adjustedPrefix","keyPrefix","valueSideChannel","normalizeStringifyOptions","arrayFormat","joined","hexTable","array","toUpperCase","arrayToObject","queue","prop","refs","compacted","compactQueue","strWithoutPlus","unescape","decodeURIComponent","defaultEncoder","kind","escape","mapped","mergeTarget","targetItem","_getInitializedChains","customChains","names","chains","mainnet","ropsten","rinkeby","kovan","goerli","sepolia","customChains_1_1","name_1","CustomChain","Hardfork","Chain","ConsensusType","ConsensusAlgorithm","_super","_this","_customChains","_chainParams","setChain","DEFAULT_HARDFORK","defaultHardfork","Istanbul","hardforks","hf","forkHash","_calcForkHash","_hardfork","supportedHardforks","_supportedHardforks","hardfork","setHardfork","eips","setEIPs","__extends","Common","chainParamsOrName","baseChain","standardChainParams","_getChainParams","__assign","PolygonMainnet","networkId","PolygonMumbai","ArbitrumRinkebyTestnet","xDaiChain","OptimisticKovan","Berlin","OptimisticEthereum","customChainParams","initializedChains","ethereumjs_util_1","plainCustomChains","required_1_1","_isSupportedHardfork","HARDFORK_CHANGES_1_1","td","toType","minTdHF","maxTdHF","previousHF","Chainstart","block","msgAdd","hardforkGteHardfork","getHardforkByBlockNumber","onlySupported","hfs","hfs_1_1","eip","eips_1","minHF","this_1","gteHardfork","requiredEIPs","elem","isActivatedEIP","eips_2_1","_eips","topic","paramByEIP","paramByHardfork","_chooseHardfork","HARDFORK_CHANGES_2_1","hfChanges","hfEIPs","hfEIPs_1_1","valueEIP","eipParams","activeHfs","activeHardforks","HARDFORK_CHANGES_3_1","hfBlock","hardforkBlockBN","hardforkIsActiveOnBlock","hardfork1","hardfork2","onlyActive","posHf1","posHf2","hardforks_2_1","hfs_2_1","_getHardfork","nextHardforkBlockBN","nextHardforkBlock","genesis","substr","hfBuffer","prevBlock","hfBlockBuffer","inputBuffer","forkhash","resArray","chainArrayWithGenesis","chainIdBN","networkIdBN","HARDFORK_CHANGES_4_1","HARDFORK_CHANGES_5_1","HARDFORK_CHANGES_6_1","consensusAlgorithm","removeAllListeners","events_1","balance","stateRoot","codeHash","externals_1","constants_1","_validate","Account","accountData","fromValuesArray","bnToUnpaddedBuffer","raw","equals","hexAddress","assertIsString","eip1191ChainId","assertIsHexString","keccakFromString","isValidAddress","toChecksumAddress","assertIsBuffer","nonceBN","rlphash","salt","initCode","keccak256","privateKey","privateKeyVerify","publicKey","sanitize","publicKeyVerify","pubKey","publicKeyConvert","publicKeyCreate","publicToAddress","privateToPublic","addr","zeroAddress","Address","pubToAddress","privateToAddress","generateAddress","generateAddress2","zero","addressBN","rangeMin","rangeMax","isSafeInteger","intToHex","padToEven","stripZeros","first","assertIsArray","isHexPrefixed","ba","baToJSON","arrToBufArr","bufArrToArr","buffer_1","createHash","keccak224","keccak384","keccak512","_sha256","_ripemd160","padded","setLengthLeft","__exportStar","getBinarySize","arrayContainsArray","toAscii","fromUtf8","fromAscii","getKeys","superset","subset","some","stringValue","allowEmpty","fields","_fields","label","obj_1","getter","setter","allowZero","allowLess","unpadBuffer","alias","keys_1","calculateSigRecovery","vBN","isValidSigRecovery","recovery","rec","msgHash","ecdsaSign","senderPubKey","ecdsaRecover","vn","ss","sig","bufferToInt","homesteadOrLater","SECP256K1_N_DIV_2","SECP256K1_N","rBN","sBN","TypeOutput","outputType","MAX_SAFE_INTEGER","txData","cache","dataFee","activeCapabilities","DEFAULT_CHAIN","common_1","Mainnet","_type","txOptions","toB","vB","rB","sB","_validateCannotExceedMaxInteger","BaseTransaction","capability","stringError","errors","getBaseFee","isSigned","verifySignature","fee","getDataFee","common","toCreationAddress","txDataZero","txDataNonZero","cost","dataLength","initCodeCost","getSenderPublicKey","_errorMsg","hackApplied","supports","EIP155ReplayProtection","getMessageToSign","ecsign","_processSignature","splice","isSupportedChainId","forCustomChain","cannotEqual","postfix","TRANSACTION_TYPE_BUFFER","accessList","_getCommon","accessListData","getAccessListData","AccessListJSON","verifyAccessList","checkMaxInitCodeSize","freeze","FeeMarketEIP1559Transaction","fromSerializedTx","validateNoLeadingZeroes","getDataFeeEIP2930","isFrozen","baseFee","hashMessage","getMessageToVerifySignature","ecrecover","fromTxData","accessListJSON","getAccessListJSON","bnToHex","errorStr","_getSharedErrorPostfix","baseTransaction_1","AccessListEIP2930Transaction","yParity","_validateTxV","chainIdDoubled","Transaction","_getMessageToSign","numSub","onEIP155BlockOrLater","TransactionFactory","txType","_1","EIP","fromSerializedData","transactionID","_common","isAccessListBuffer","firstItem","Capability","AccessLists","bufferAccessList","isAccessList","newAccessList","addressBuffer","storageItems","storageKeys","jsonItem","accessListItem","storageSlots","storageSlot","JSONItem","slot","accessListStorageKeyCost","accessListAddressCost","slots","logger","Logger","_constructorGuard","ModifiersBytes","calldata","memory","ModifiersNest","checkModifier","throwArgumentError","populate","defineReadOnly","FormatTypes","sighash","minimal","full","paramTypeArray","ParamType","constructorGuard","operation","arrayLength","arrayChildren","fromObject","components","baseType","_isParamType","indexed","comp","allowIndexed","fromString","isParamType","verifyType","node","originalParam","newNode","allowType","allowParams","allowName","allowArray","sibling","readArray","parseParamType","Coder","localName","dynamic","Writer","_data","_dataLength","_padding","hexConcat","writer","_writeData","arrayify","paddingOffset","BigNumber","_getValue","Reader","coerceFunc","allowLoose","_offset","hexlify","_coerceFunc","coerce","loose","alignedLength","_peekBytes","readBytes","AddressCoder","getAddress","_throwError","writeValue","reader","hexZeroPad","readValue","toHexString","AnonymousCoder","coder","defaultValue","pack","coders","arrayValues","unique","argument","staticWriter","dynamicWriter","updateFuncs","dynamicOffset","updateFunc","writeUpdatableValue","baseOffset","func","appendWriter","unpack","baseReader","subReader","offsetReader","uniqueNames","accum","UnicodeNormalizationForm","Utf8ErrorReason","ArrayCoder","defaultChild","checkArgumentCount","BooleanCoder","DynamicBytesCoder","writeBytes","BytesCoder","FixedBytesCoder","NullCoder","NumberCoder","signed","maxUintValue","MaxUint256","bounds","One","NegativeOne","Zero","ignoreFunc","badCodepoint","BAD_PREFIX","UNEXPECTED_CONTINUE","OVERRUN","Utf8ErrorFuncs","ignore","OVERLONG","getUtf8CodePoints","onError","extraLength","overlongMask","nextChar","MISSING_CONTINUE","OUT_OF_RANGE","UTF16_SURROGATE","toUtf8Bytes","form","checkNormalize","normalize","c2","pair","toUtf8String","codePoint","StringCoder","TupleCoder","paramTypeBytes","paramTypeNumber","AbiCoder","_getCoder","component","_getWordSize","_getWriter","_getReader","getChecksumAddress","chars","hashed","ibanLookup","safeDigits","log10","LN10","ibanChecksum","checksum","_base36To16","_BN","MAX_SAFE","_warnedToStringRadix","_hex","_isBigNumber","toBigNumber","toBN","other","throwFault","isNegative","BigInt","warn","toHex","anyValue","isBytes","fault","isHexable","addSlice","isBytesLike","checkSafeUint53","allowMissingPrefix","hexPad","objects","HexCharacters","hexDataLength","hexDataSlice","endOffset","splitSignature","_vs","recoveryParam","yParityAndS","vs","zeroPad","recId","sha3","_permanentCensorErrors","_censorErrors","LogLevels","debug","warning","_logLevel","_globalLogger","LogLevel","ErrorCode","_normalizeError","missing","_checkNormalize","HEX","logLevel","level","_log","levels","DEBUG","INFO","WARNING","makeError","UNKNOWN_ERROR","messageDetails","NUMERIC_FAULT","CALL_EXCEPTION","INSUFFICIENT_FUNDS","MISSING_NEW","NONCE_EXPIRED","REPLACEMENT_UNDERPRICED","TRANSACTION_REPLACED","UNPREDICTABLE_GAS_LIMIT","INVALID_ARGUMENT","condition","UNSUPPORTED_OPERATION","expectedCount","MISSING_ARGUMENT","UNEXPECTED_ARGUMENT","censorship","permanent","globalLogger","checkProperties","arrayifyInteger","unarrayifyInteger","_encode","payload","_decodeChildren","childOffset","decoded","_decode","consumed","lengthLength","equal","zero2","minAssert","minUtils","getNAF","naf","getJSF","k1","jsf","m8","d1","d2","u1","u2","m14","m24","cachedProperty","computer","parseBytes","intFromLE","BaseCurve","conf","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","curve","precomputed","point","validate","_fixedNafMul","doubles","_getDoubles","I","nafW","repr","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","ja","jb","decodePoint","pointFromX","encodeCompressed","getX","getY","precompute","power","beta","_getBeta","_hasDoubles","dbl","ShortCurve","Base","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","Point","inf","JPoint","zOne","lambda","betas","_getEndoRoots","lambdas","basis","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","y1","y2","len1","_endoSplit","v1","v2","c1","p1","p2","q1","q2","ax","rhs","_endoWnafMulAdd","npoints","ncoeffs","fromJSON","pre","endoMul","obj2point","isInfinity","nx","ny","ys1","dyinv","mulAdd","jmulAdd","_precompute","negate","zinv","zinv2","ay","pz2","z2","s1","s2","h2","h3","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","t1","t2","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","z3","pz3","eqXToP","zs","xc","require$$0","short","require$$1","edwards","curves","PresetCurve","defineCurve","HmacDRBG","predResist","outSize","minEntropy","hmacStrength","_reseed","reseedInterval","K","V","entropy","entropyEnc","nonceEnc","pers","persEnc","seed","_update","_hmac","kmac","reseed","addEnc","generate","temp","KeyPair","ec","priv","pub","_importPrivate","privEnc","_importPublic","pubEnc","fromPublic","fromPrivate","getPublic","getPrivate","derive","sign","verify","Signature","_importDER","Position","place","initial","octetLen","rmPadding","constructLength","octets","LN2","slen","toDER","backHalf","rand","EC","nh","keyPair","keyFromPrivate","keyFromPublic","genKeyPair","drbg","ns2","_truncateToN","truncOnly","bkey","ns1","kp","kpX","canonical","sinv","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Q","Qprime","elliptic","require$$2","require$$3","eddsa","_curve","getCurve","SigningKey","p0","digestBytes","otherKey","otherKeyPair","computePublicKey","_isSigningKey","compressed","signingKey","TransactionTypes","handleAddress","handleNumber","transactionFields","maxLength","numeric","allowedTransactionKeys","computeAddress","recoverAddress","rs","recoverPublicKey","formatNumber","accessSetify","storageKey","accessListify","localeCompare","formatAccessList","_serializeEip1559","transaction","RLP","_serializeEip2930","fieldInfo","_serialize","transactionType","_parseEipSignature","recid","rawTransaction","_parse","_parseEip2930","_parseEip1559","errorClasses","deserializers","addCustomErrorDeserializer","deserializer","createCustomErrorClass","deserializeError","des","captureStackTrace","destroyCircular","seen","AccountNameRequiredError","AccountNotSupported","AmountRequired","BluetoothRequired","BtcUnmatchedApp","CantOpenDevice","CashAddrNotSupported","CurrencyNotSupported","DeviceAppVerifyNotSupported","DeviceGenuineSocketEarlyClose","DeviceNotGenuineError","DeviceOnDashboardExpected","DeviceOnDashboardUnexpected","DeviceInOSUExpected","DeviceHalted","DeviceNameInvalid","DeviceSocketFail","DeviceSocketNoBulkStatus","DisconnectedDevice","DisconnectedDeviceDuringOperation","EnpointConfigError","EthAppPleaseEnableContractData","FeeEstimationFailed","FirmwareNotRecognized","HardResetFail","InvalidXRPTag","InvalidAddress","InvalidAddressBecauseDestinationIsAlsoSource","LatestMCUInstalledError","UnknownMCU","LedgerAPIError","LedgerAPIErrorWithMessage","LedgerAPINotAvailable","ManagerAppAlreadyInstalledError","ManagerAppRelyOnBTCError","ManagerAppDepInstallRequired","ManagerAppDepUninstallRequired","ManagerDeviceLockedError","ManagerFirmwareNotEnoughSpaceError","ManagerNotEnoughSpaceError","ManagerUninstallBTCDep","NetworkDown","NoAddressesFound","NotEnoughBalance","NotEnoughBalanceToDelegate","NotEnoughBalanceInParentAccount","NotEnoughSpendableBalance","NotEnoughBalanceBecauseDestinationNotCreated","NoAccessToCamera","NotEnoughGas","NotSupportedLegacyAddress","GasLessThanEstimate","PasswordsDontMatchError","PasswordIncorrectError","RecommendSubAccountsToEmpty","RecommendUndelegation","TimeoutTagged","UnexpectedBootloader","MCUNotGenuineToDashboard","RecipientRequired","UnavailableTezosOriginatedAccountReceive","UnavailableTezosOriginatedAccountSend","UpdateFetchFileFail","UpdateIncorrectHash","UpdateIncorrectSig","UpdateYourApp","UserRefusedDeviceNameChange","UserRefusedAddress","UserRefusedFirmwareUpdate","UserRefusedAllowManager","UserRefusedOnDevice","TransportOpenUserCancelled","TransportInterfaceNotAvailable","TransportRaceCondition","TransportWebUSBGestureRequired","DeviceShouldStayInApp","WebsocketConnectionError","WebsocketConnectionFailed","WrongDeviceForAccount","WrongAppForCurrency","ETHAddressNonEIP","CantScanQRCode","FeeNotLoaded","FeeRequired","FeeTooHigh","SyncError","PairingFailed","GenuineCheckFailed","LedgerAPI4xx","LedgerAPI5xx","FirmwareOrAppUpdateRequired","NoDBPathGiven","DBWrongPassword","DBNotReset","TransportError","StatusCodes","PIN_REMAINING_ATTEMPTS","INCORRECT_LENGTH","MISSING_CRITICAL_PARAMETER","COMMAND_INCOMPATIBLE_FILE_STRUCTURE","SECURITY_STATUS_NOT_SATISFIED","CONDITIONS_OF_USE_NOT_SATISFIED","INCORRECT_DATA","NOT_ENOUGH_MEMORY_SPACE","REFERENCED_DATA_NOT_FOUND","FILE_ALREADY_EXISTS","INCORRECT_P1_P2","INS_NOT_SUPPORTED","CLA_NOT_SUPPORTED","TECHNICAL_PROBLEM","OK","MEMORY_PROBLEM","NO_EF_SELECTED","INVALID_OFFSET","FILE_NOT_FOUND","INCONSISTENT_FILE","ALGORITHM_NOT_SUPPORTED","INVALID_KCV","CODE_NOT_INITIALIZED","ACCESS_CONDITION_NOT_FULFILLED","CONTRADICTION_SECRET_CODE_STATUS","CONTRADICTION_INVALIDATION","CODE_BLOCKED","MAX_VALUE_REACHED","GP_AUTH_FAILED","LICENSING","HALTED","getAltStatusMessage","TransportStatusError","statusCode","statusText","find","smsg","statusCodeStr","exchangeTimeout","unresponsiveTimeout","deviceModel","_events","EventEmitter","cla","ins","statusList","exchange","sw","readUInt16BE","exchangeAtomicImpl","exchangeBusyPromise","busyPromise","resolveBusy","unresponsiveReached","_appAPIlock","Transport","_apdu","eventName","removeListener","__spreadArray","__read","openTimeout","listenTimeout","found","listen","listenTimeoutId","ErrorMessage_NoDeviceFound","ErrorMessage_ListenTimeout","methods","scrambleKey","methods_1_1","methodName","decorateAppAPIMethod","setScrambleKey","ComposedStore","_children","childKey","_addChild","updateFromChild","childValue","getState","putState","ObservableStore_1","MergedStore","_updateWholeState","childStates","ObservableStore","initState","_state","_getState","newState","_putState","partialState","handler","ObservableStoreStream","obsStore","objectMode","resume","chunk","_encoding","_size","stream_1","syncTransformFn","through2_1","safeApply","arrayClone","SafeEventEmitter","doError","er","listeners","checkUint8Array","uint8ArrayToBuffer","byteOffset","Layout","span","rv","nameWithProperty","ExternalLayout","GreedyCount","elementSpan","rem","OffsetLayout","layout","UInt","UIntBE","readUIntLE","writeUIntLE","readUIntBE","writeUIntBE","Int","readIntLE","writeIntLE","IntBE","readIntBE","writeIntBE","V2E32","divmodInt64","hi32","lo32","roundedInt64","NearUInt64","readUInt32LE","writeUInt32LE","NearUInt64BE","readUInt32BE","writeUInt32BE","NearInt64","readInt32LE","writeInt32LE","NearInt64BE","readInt32BE","writeInt32BE","Float","readFloatLE","writeFloatLE","FloatBE","readFloatBE","writeFloatBE","Double","readDoubleLE","writeDoubleLE","DoubleBE","readDoubleBE","writeDoubleBE","Sequence","elementLayout","isCount","idx","getSpan","elo","Structure","decodePrefixes","fd","fsp","makeDestinationObject","firstOffset","lastOffset","lastWrote","fv","UnionDiscriminator","UnionLayoutDiscriminator","Union","discr","defaultLayout","discriminator","replicate","usesPrefixDiscriminator","registry","boundGetSourceVariant","defaultGetSourceVariant","getSourceVariant","configGetSourceVariant","gsv","vlo","getVariant","tag","dlo","clo","contentOffset","variant","VariantLayout","vb","union","fromArray","fixBitwiseResult","BitStructure","msb","_packedSetValue","_packedGetValue","bf","BitField","totalBits","usedBits","sum","valueMask","wordMask","wordValue","Blob","srcBuffer","CString","srcb","UTF8","maxSpan","Constant","toFailures","run","StructError","failure","failures","cached","rest","isObject","print","shiftIterator","toFailure","struct","branch","refinement","coercer","valid","validator","ts","refiner","Struct","is","tuples","tuple","Element","boolean","literal","constant","description","never","nullable","optional","Key","Value","Elements","Never","Structs","unknown","minimalisticAssert","inherits_browserModule","isSurrogatePair","htonl","zero8","ah","al","bh","bl","ch","cl","dh","dl","eh","BlockHash","pendingTotal","blockSize","padLength","_delta8","_delta32","join32","_pad","_digest","rotr32","ch32","maj32","p32","shaCommon","rotl32","sum32","sum32_5","ft_1","sha1_K","SHA1","W","toHex32","split32","sum32_4","s0_256","s1_256","g0_256","g1_256","sha256_K","SHA256","_256","T1","T2","SHA224","_224","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","SHA512","_512","ch64_hi","xh","xl","yh","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","fh","fl","gh","gl","hh","hl","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","SHA384","_384","sha","require$$4","sum32_3","RIPEMD160","Kh","ripemd","E","Ah","Bh","Ch","Dh","Eh","T","rh","sh","Hmac","Hash","inner","outer","hmac","sha1","sha224","sha384","sha512","ripemd160","SOLANA_SCHEMA","deserialize","deserializeUnchecked","PublicKey","_bn","isPublicKeyData","bs58","toBase58","toBytes","fromPublicKey","programId","seeds","publicKeyBytes","is_on_curve","createProgramAddressSync","seedsWithNonce","findProgramAddressSync","pubkeyData","naclLowLevel","nacl","gf","chk","den","den2","den4","den6","set25519","gf1","unpack25519","S","M","Z","pow2523","neq25519","pack25519","crypto_verify_32","PACKET_DATA_SIZE","BufferLayout","rustString","rsl","rslShim","decodeLength","encodeLength","rem_len","TransactionStatus","Message","header","accountKeys","recentBlockhash","instructions","indexToProgramIds","account","ix","programIdIndex","isAccountSigner","numRequiredSignatures","isAccountWritable","numReadonlySignedAccounts","numReadonlyUnsignedAccounts","isProgramId","programIds","nonProgramIds","numKeys","keyCount","shortvec","instruction","keyIndicesCount","keyIndices","instructionCount","instructionBuffer","instructionBufferLength","signDataLayout","signData","accountCount","dataSlice","DEFAULT_SIGNATURE","TransactionInstruction","pubkey","isSigner","isWritable","signatures","feePayer","lastValidBlockHeight","nonceInfo","_message","_json","newOpts","blockhash","oldOpts","nonceInstruction","signers","compileMessage","accountMetas","accountMeta","uniqueMetas","pubkeyString","uniqueIndex","findIndex","feePayerIndex","payerMeta","signedKeys","unsignedKeys","meta","invariant","keyIndex","_compile","every","serializeMessage","getFeeForMessage","setSigners","uniqueSigners","signer","_partialSign","partialSign","_addSignature","addSignature","sigpair","verifySignatures","_verifySignatures","requireAllSignatures","signatureCount","transactionLength","wireTransaction","keyObj","sigPubkeyPair","SYSVAR_CLOCK_PUBKEY","SYSVAR_RECENT_BLOCKHASHES_PUBKEY","SYSVAR_RENT_PUBKEY","SYSVAR_STAKE_HISTORY_PUBKEY","sendAndConfirmTransaction","sendOptions","skipPreflight","preflightCommitment","commitment","maxRetries","sendTransaction","confirmTransaction","sleep","ms","allocLength","layoutFields","FeeCalculatorLayout","NonceAccountLayout","NONCE_ACCOUNT_LENGTH","NonceAccount","authorizedPubkey","feeCalculator","nonceAccount","u64","blob","encodeDecode","bigIntLayout","toBigIntLE","bigInt","toBufferLE","SYSTEM_INSTRUCTION_LAYOUTS","Create","Assign","Transfer","CreateWithSeed","AdvanceNonceAccount","WithdrawNonceAccount","InitializeNonceAccount","AuthorizeNonceAccount","Allocate","AllocateWithSeed","AssignWithSeed","TransferWithSeed","UpgradeNonceAccount","SystemProgram","lamports","space","fromPubkey","newAccountPubkey","basePubkey","toPubkey","accountPubkey","createAccountWithSeed","noncePubkey","createAccount","initParams","nonceInitialize","authorized","instructionData","newAuthorizedPubkey","Loader","chunkSize","payer","program","getMinimumBalanceForRentExemption","balanceNeeded","getAccountInfo","programInfo","executable","owner","transfer","dataLayout","transactions","bytesLength","bytesLengthPadding","_rpcEndpoint","COMPUTE_BUDGET_INSTRUCTION_LAYOUTS","RequestUnits","RequestHeapFrame","SetComputeUnitLimit","SetComputeUnitPrice","ComputeBudgetProgram","microLamports","objToString","isArrayProp","propVal","toStr","isFinite","returnVal","trailingZeros","EpochSchedule","slotsPerEpoch","leaderScheduleSlotOffset","warmup","firstNormalEpoch","firstNormalSlot","getEpoch","getEpochAndSlotIndex","epoch","getSlotsInEpoch","normalSlotIndex","normalEpochIndex","getFirstSlotInEpoch","getLastSlotInEpoch","SendTransactionError","logs","TransactionExpiredBlockheightExceededError","TransactionExpiredTimeoutError","timeoutSeconds","PublicKeyFromString","RawAccountDataResult","BufferFromRawAccountData","createRpcResult","pick","UnknownRpcResult","jsonRpcResult","jsonRpcResultAndContext","notificationResultAndContext","GetInflationGovernorResult","foundation","foundationTerm","taper","terminal","GetInflationRewardResult","effectiveSlot","amount","postBalance","GetEpochInfoResult","slotIndex","slotsInEpoch","absoluteSlot","blockHeight","transactionCount","GetEpochScheduleResult","GetLeaderScheduleResult","TransactionErrorResult","SignatureStatusResult","SignatureReceivedResult","VersionResult","SimulatedTransactionResponseStruct","rentEpoch","unitsConsumed","BlockProductionResponseStruct","byIdentity","firstSlot","lastSlot","GetInflationGovernorRpcResult","GetEpochInfoRpcResult","GetEpochScheduleRpcResult","GetLeaderScheduleRpcResult","SlotRpcResult","GetSupplyRpcResult","circulating","nonCirculating","nonCirculatingAccounts","TokenAmountResult","uiAmount","uiAmountString","GetTokenLargestAccountsResult","GetTokenAccountsByOwner","ParsedAccountDataResult","parsed","GetParsedTokenAccountsByOwner","GetLargestAccountsRpcResult","AccountInfoResult","KeyedAccountInfoResult","ParsedOrRawAccountData","ParsedAccountInfoResult","KeyedParsedAccountInfoResult","StakeActivationResult","active","inactive","GetConfirmedSignaturesForAddress2RpcResult","memo","blockTime","GetSignaturesForAddressRpcResult","AccountNotificationResult","ProgramAccountInfoResult","ProgramAccountNotificationResult","SlotInfoResult","SlotNotificationResult","SlotUpdateResult","stats","numTransactionEntries","numSuccessfulTransactions","numFailedTransactions","maxTransactionsPerEntry","SlotUpdateNotificationResult","SignatureNotificationResult","RootNotificationResult","ContactInfoResult","gossip","tpu","VoteAccountInfoResult","votePubkey","nodePubkey","activatedStake","epochVoteAccount","epochCredits","commission","lastVote","rootSlot","GetVoteAccounts","delinquent","ConfirmationStatus","SignatureStatusResponse","confirmations","confirmationStatus","GetSignatureStatusesRpcResult","GetMinimumBalanceForRentExemptionRpcResult","ConfirmedTransactionResult","ParsedInstructionResult","RawInstructionResult","ParsedOrRawInstruction","ParsedConfirmedTransactionResult","TokenBalanceResult","accountIndex","mint","uiTokenAmount","ConfirmedTransactionMetaResult","innerInstructions","preBalances","postBalances","logMessages","preTokenBalances","postTokenBalances","ParsedConfirmedTransactionMetaResult","GetBlockRpcResult","previousBlockhash","parentSlot","rewards","rewardType","GetConfirmedBlockRpcResult","GetBlockSignaturesRpcResult","GetTransactionRpcResult","GetParsedTransactionRpcResult","GetRecentBlockhashAndContextRpcResult","lamportsPerSignature","GetLatestBlockhashRpcResult","GetRecentPerformanceSamplesRpcResult","numTransactions","numSlots","samplePeriodSecs","GetFeeCalculatorRpcResult","RequestAirdropRpcResult","SendTransactionRpcResult","LogsResult","LogsNotificationResult","Connection","endpoint","commitmentOrConfig","_commitment","_confirmTransactionInitialTimeout","_rpcWsEndpoint","_rpcClient","_rpcRequest","_rpcBatchRequest","_rpcWebSocket","_rpcWebSocketConnected","_rpcWebSocketHeartbeat","_rpcWebSocketIdleTimeout","_rpcWebSocketGeneration","_disableBlockhashCaching","_pollingBlockhash","_blockhashInfo","latestBlockhash","lastFetch","transactionSignatures","simulatedSignatures","_nextClientSubscriptionId","_subscriptionDisposeFunctionsByClientSubscriptionId","_subscriptionCallbacksByServerSubscriptionId","_subscriptionsByHash","_subscriptionsAutoDisposedByRpc","wsEndpoint","httpHeaders","fetchMiddleware","disableRetryOnRateLimit","client","confirmTransactionInitialTimeout","useHttps","port","makeWebsocketUrl","customFetch","fetchWithMiddleware","fetchImpl","init","modifiedInfo","modifiedInit","modifiedFetchArgs","clientBrowser","RpcClient","agent","too_many_requests_retries","waitTime","ok","createRpcClient","batch","createRpcBatchRequest","RpcWebSocketClient","autoconnect","max_reconnects","_wsOnOpen","_wsOnError","_wsOnClose","_wsOnAccountNotification","_wsOnProgramAccountNotification","_wsOnSlotNotification","_wsOnSlotUpdatesNotification","_wsOnSignatureNotification","_wsOnRootNotification","_wsOnLogsNotification","_buildArgs","unsafeRes","getBalanceAndContext","configArg","tokenMintAddress","tokenAddress","ownerAddress","_args","mintAddress","getAccountInfoAndContext","publicKeys","getMultipleAccountsInfoAndContext","configOrCommitment","extra","encoding","filters","strategy","rawSignature","decodedSignature","subscriptionCommitment","confirmationPromise","subscriptionId","onSignature","__type","PROCESSED","checkBlockHeight","getBlockHeight","expiryPromise","timeoutMs","timeoutId","TIMED_OUT","BLOCKHEIGHT_EXCEEDED","race","outcome","removeSignatureListener","startSlot","getSignatureStatuses","getSupply","excludeNonCirculatingAccountsList","epochSchedule","wireMessage","getRecentBlockhashAndContext","getLatestBlockhashAndContext","_buildArgsAtLeastConfirmed","endSlot","transactionDetails","getFirstAvailableBlock","firstAvailableBlock","getConfirmedBlockSignatures","until","getSlot","highestConfirmedRoot","before","getConfirmedSignaturesForAddress2","confirmedSignatureInfo","accountInfo","fromAccountData","getNonceAndContext","disableCache","timeSinceFetch","expired","_pollNewBlockhash","startTime","cachedLatestBlockhash","cachedBlockhash","getLatestBlockhash","MS_PER_SLOT","transactionOrMessage","includeAccounts","originalTx","_blockhashWithExpiryBlockHeight","encodedTransaction","sigVerify","logTrace","traceIndent","sendRawTransaction","sendEncodedTransaction","setInterval","notify","_updateSubscriptions","clearInterval","activeWebSocketGeneration","isCurrentConnectionStillActive","serverSubscriptionId","unsubscribeMethod","_handleServerNotification","callbackArgs","_makeSubscription","subscriptionConfig","clientSubscriptionId","fastStableStringify","existingSubscription","onAccountChange","_unsubscribeClientSubscription","accountId","onProgramAccountChange","onLogs","mentions","onSlotChange","onSlotUpdate","subscriptionName","dispose","override","_err","onSignatureWithOptions","onRootChange","Keypair","keypair","_keypair","skipValidation","ED25519_INSTRUCTION_LAYOUT","Ed25519Program","instructionIndex","publicKeyOffset","signatureOffset","messageDataOffset","numSignatures","signatureInstructionIndex","publicKeyInstructionIndex","messageDataSize","messageInstructionIndex","fromSecretKey","createInstructionWithPublicKey","STAKE_CONFIG_ID","Lockup","unixTimestamp","custodian","STAKE_INSTRUCTION_LAYOUTS","Initialize","Authorize","Delegate","Split","Withdraw","Deactivate","Merge","AuthorizeWithSeed","StakeProgram","Staker","Withdrawer","stakePubkey","lockup","staker","withdrawer","initialize","stakeAuthorizationType","custodianPubkey","newAuthorized","authorityBase","authoritySeed","authorityOwner","splitStakePubkey","splitInstruction","sourceStakePubKey","secp256k1","SECP256K1_INSTRUCTION_LAYOUT","Secp256k1Program","recoveryId","createInstructionWithEthAddress","ethAddress","publicKeyToEthAddress","rawAddress","ethAddressOffset","ethAddressInstructionIndex","pkey","messageHash","website","details","keybaseUsername","VOTE_INSTRUCTION_LAYOUTS","InitializeAccount","VoteProgram","Voter","voteInit","authorizedVoter","authorizedWithdrawer","initializeAccount","voteAuthorizationType","authorizedWithdrawerPubkey","http","devnet","testnet","https","clusterApiUrl","cluster","tls","LAMPORTS_PER_SOL","ieee754","customInspectSymbol","K_MAX_LENGTH","createBuffer","encodingOrOffset","isEncoding","actual","ArrayBuffer","isView","arrayView","isInstance","fromArrayBuffer","fromArrayLike","fromArrayView","SharedArrayBuffer","checked","numberIsNaN","toPrimitive","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","dir","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","units","utf16leToBytes","fromByteArray","firstByte","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","poolSize","allocUnsafeSlow","_isBuffer","compare","swap16","swap32","swap64","thisStart","thisEnd","thisCopy","targetCopy","hexSliceLookupTable","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUintBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUint32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","last","boundsError","readBigUInt64BE","readInt8","readInt16LE","readInt16BE","readBigInt64LE","readBigInt64BE","writeUintLE","writeUintBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUint32BE","writeBigUInt64LE","writeBigUInt64BE","writeInt8","writeInt16LE","writeInt16BE","writeBigInt64LE","writeBigInt64BE","targetStart","copyWithin","getMessage","addNumericalSeparator","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","received","INVALID_BASE64_RE","leadSurrogate","toByteArray","base64clean","dst","alphabet","i16","BufferBigIntNotDefined","Float64Array","randombytes","_0","_9","gf0","_121665","D2","X","Y","ts64","xi","yi","crypto_verify_16","crypto_core_salsa20","inp","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x3","x4","x5","x6","x7","x8","x9","x10","x11","x12","x13","x14","x15","core_salsa20","crypto_core_hsalsa20","core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","mpos","crypto_stream_salsa20","crypto_stream","sn","crypto_stream_xor","poly1305","t0","t3","t4","t5","t6","t7","Uint16Array","pad","leftover","fin","crypto_onetimeauth","outpos","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","car25519","sel25519","par25519","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b10","b11","b12","b13","b14","b15","inv25519","crypto_scalarmult","x32","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","d0","d3","d4","d5","d6","d7","d8","d9","hibit","h0","h1","h4","h5","h6","h7","h8","h9","r0","r1","r3","r4","r5","r6","r7","r8","r9","mac","macpos","want","crypto_box_afternm","crypto_box_open_afternm","crypto_hashblocks_hl","th","tl","wh","Int32Array","wl","crypto_hash","cswap","ty","zi","scalarmult","scalarbase","crypto_sign_keypair","pk","sk","seeded","L","modL","crypto_sign","sm","smlen","crypto_sign_open","unpackneg","crypto_secretbox_BOXZEROBYTES","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","checkLengths","checkArrayTypes","cleanup","lowlevel","crypto_box","crypto_box_open","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","randomBytes","secretbox","box","keyLength","nonceLength","overheadLength","scalarMult","scalarLength","groupElementLength","checkBoxLengths","after","publicKeyLength","secretKeyLength","sharedKeyLength","signedMsg","mlen","detached","fromSeed","seedLength","signatureLength","hashLength","setPRNG","msCrypto","browserCrypto","global","webkitSubtle","nodeCrypto","EC_GROUP_ORDER","ZERO32","isValidPrivateKey","getAes","op","cryptoKey","encAlgorithm","cipher","createCipheriv","firstChunk","secondChunk","final","decipher","createDecipheriv","aesCbcEncrypt","aesCbcDecrypt","privateKeyA","publicKeyB","keyA","keyB","Px","encryptionKey","ephemPublicKey","macKey","dataToMac","ciphertext","createHmac","equalConstTime","macGood","setLevel","apiKey","embedHost","setEmbedHost","embedHost_","setAPIKey","apiKey_","getApiKeyHeaders","debugLogResponse","promiseTimeout","options_","customOptions","defaultOptions","useAPIKey","post","isUrlEncodedData","generateJsonRPCObject","parameters","base64urlLib","keccakLib","ACK","BasePostMessageStream","_ref","targetWindow","targetOrigin","_defineProperty","_haveSyn","_name","_target","_targetWindow","_targetOrigin","_onMessage","onMessage","_synIntervalId","_handShake","_break","cork","_write","_onData","uncork","_postMessage","originConstraint","postMessage","_read","_destroy","removeEventListener","Duplex","SerializableError","getRpcPromiseCallback","unwrapResult","createStreamMiddleware","idMap","stream","processNotification","processResponse","createIdRemapMiddleware","_end","originalId","newId","JRPCEngine","_middleware","_handleBatch","_handle","_promiseHandle","asMiddleware","_runAllMiddleware","middlewareError","isComplete","returnHandlers","_runReturnHandlers","handlerCallback","reqs","callerReq","_processRequest","_checkForCompletion","middlewareStack","_runMiddleware","returnHandler","handlers","Substream","_parent","IGNORE_SUBSTREAM","ObjectMultiplex","_substreams","createStream","substream","_cb","once","eos","readable","anyStreamEnd","ignoreStream","setupMultiplex","mux","getStream","pump","_ref$from","_ref$to","_ref$fill","innerRef","restProps","excluded","sourceKeys","_objectWithoutPropertiesLoose","_excluded","isRectilinear","_react","_extends","ref","_classnames","shapeRendering","_interopRequireDefault","__spreadArrays","il","jl","BrowserInfo","os","NodeInfo","platform","SearchBotDeviceInfo","bot","BotInfo","ReactNativeInfo","SEARCHBOT_OS_REGEX","userAgentRules","operatingSystemRules","detect","parseUserAgent","product","matchUserAgent","ua","matched","browser","regex","uaMatch","matchedRule","versionParts","ii","createVersionParts","detectOS","searchBotMatch","detectEnv","env","isAndroid","isIOS","maxTouchPoints","isMobile","isNode","isBrowser","getNavigator","getFromWindow","windowGetters","getFromWindowOrThrow","getDocumentOrThrow","getDocument","getNavigatorOrThrow","getLocationOrThrow","getLocation","getCryptoOrThrow","getCrypto","getLocalStorageOrThrow","getLocalStorage","getClientMeta","windowMetadata","safeJsonParse","safeJsonStringify","setLocal","local","getLocal","removeLocal","mobileLinkChoiceKey","formatIOSMobile","uri","encodedUri","universalLink","deepLink","endsWith","saveMobileLinkInfo","focusUri","getMobileRegistryEntry","getMobileLinkRegistry","whitelist","links","API_URL","getWalletRegistryUrl","getDappRegistryUrl","formatMobileRegistryEntry","shortName","colors","primary","logo","image_url","universal","native","formatMobileRegistry","getBrowerCrypto","getSubtleCrypto","isReactNative","versions","const","WALLETCONNECT_WRAPPER_ID","WALLETCONNECT_STYLE_ID","WALLETCONNECT_MODAL_ID","WALLETCONNECT_CTA_TEXT_ID","Header","React","onClose","ConnectButton","WALLETCONNECT_CONNECT_BUTTON_ID","backgroundColor","WalletButton","backgroundSize","WalletIcon","fontSize","innerWidth","LinkDisplay","android","setInput","setFilter","page","setPage","link","grid","pages","pageLinks","hasPaging","filterTimeout","connect_mobile_wallet","choose_preferred_wallet","placeholder","onChange","handleClickIOS","no_wallets_found","loading","pageNumber","selected","margin","fontWeight","Notification","show","QRCodeDisplay","setNotification","formatQRCodeImage","dataString","scan_qrcode_with_wallet","dangerouslySetInnerHTML","__html","copied_to_clipboard","copy_to_clipboard","Modal","mobile","qrcodeModalOptions","mobileLinks","desktopLinks","setLoading","fetched","setFetched","displayQRCode","setDisplayQRCode","displayProps","singleLinkHref","setSingleLinkHref","hasSingleLink","setHasSingleLink","setLinks","setErrorMessage","getLinksIfNeeded","recover","registryUrl","registryResponse","_registryResponse$jso","listings","_links","no_supported_wallets","something_went_wrong","initLinks","rightSelected","connect_with","desktop","languages","triggerCloseAnimation","doc","modal","getElementById","wrapper","getWrappedCallback","getText","lang","language","Languages","head","setAttribute","innerText","injectStyleSheet","renderWrapper","ReactDOM","nodeLib","browserLib","rerenderQueue","rerenderCount","defer","prevDebounce","IS_HYDRATE","EMPTY_OBJ","EMPTY_ARR","IS_NON_DIMENSIONAL","removeNode","parentNode","normalizedProps","defaultProps","createVNode","original","vnode","_depth","_dom","_nextDom","_component","_original","createRef","Fragment","Component","getDomSibling","childIndex","updateParentDomPointers","enqueueRender","_dirty","debounceRendering","_vnode","commitQueue","oldVNode","newDom","oldDom","parentDom","_parentDom","_globalContext","ownerSVGElement","commitRoot","diffChildren","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","sibDom","firstChildDom","oldChildren","oldChildrenLength","toChildArray","childVNode","nextDom","nextSibling","insertBefore","unmount","applyRef","flattened","setStyle","setProperty","dom","useCapture","nameLower","cssText","eventProxy","_listeners","removeAttributeNS","setAttributeNS","removeAttribute","newVNode","isNew","oldProps","oldState","snapshot","clearProcessingException","newProps","componentContext","newType","_diff","contextType","_defaultValue","_processingException","_pendingError","doRender","_renderCallbacks","_nextState","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","_force","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","_render","getChildContext","getSnapshotBeforeUpdate","diffElementNodes","diffed","_catchError","_commit","oldHtml","newHtml","nodeType","createElementNS","childNodes","attributes","innerHTML","hydrate","diffProps","parentVNode","skipRemove","componentWillUnmount","replaceNode","_root","cloneElement","createContext","Consumer","Provider","subs","_props","old","_contextRef","hasCaught","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","currentIndex","currentComponent","prevRaf","currentHook","afterPaintEffects","oldBeforeRender","oldAfterDiff","oldCommit","oldBeforeUnmount","getHookState","hooks","__hooks","_list","_pendingEffects","initialState","useReducer","invokeOrReturn","reducer","hookState","_value","nextValue","argsChanged","useLayoutEffect","useRef","initialValue","useMemo","useImperativeHandle","createHandle","factory","_factory","useContext","_context","useDebugValue","useErrorBoundary","errState","flushAfterPaintEffects","invokeCleanup","invokeEffect","hook","_cleanup","oldArgs","newArgs","shallowDiffers","raf","cancelAnimationFrame","requestAnimationFrame","PureComponent","isPureReactComponent","comparer","shouldUpdate","nextProps","updateRef","Memoed","isReactComponent","_forwarded","oldDiffHook","forwardRef","Forwarded","mapFn","Children","only","oldCatchError","detachedClone","Suspense","_pendingSuspensionCount","_suspenders","_detachOnNextRender","suspended","_suspended","lazy","loader","prom","Lazy","SuspenseList","_map","_childDidSuspend","suspendingComponent","resolved","onResolved","onSuspensionComplete","_suspendedComponentWillUnmount","fallback","revealOrder","delegated","unsuspend","wrappedUnsuspend","ContextProvider","Portal","_container","_temp","_unmount","_wrap","_hasMounted","createPortal","CAMEL_PROPS","REACT_ELEMENT_TYPE","firstChild","preactRender","preactHydrate","oldEventHook","setSafeDescriptor","persist","stoppedPropagating","defaultPrevented","origStopPropagation","stopPropagation","origPreventDefault","preventDefault","isPropagationStopped","isDefaultPrevented","nativeEvent","classNameDescriptor","oldVNodeHook","$$typeof","shouldSanitize","attrs","multiple","ondoubleclick","ondblclick","onbeforeinput","onchange","normalized","oninput","_patchedLifecycles","createFactory","isValidElement","element","preactCloneElement","unmountComponentAtNode","findDOMNode","unstable_batchedUpdates","canPromise","CanvasRenderer","SvgRenderer","renderCanvas","renderFunc","canvas","argsNum","isLastArgCb","getContext","toCanvas","toDataURL","renderToDataURL","getSymbolSize","getRowColCoords","posCount","intervals","positions","getPositions","coords","posLength","Mode","ALPHA_NUM_CHARS","AlphanumericData","ALPHANUMERIC","getBitsLength","bitBuffer","BitBuffer","BufferUtil","BitMatrix","reservedBit","reserved","isReserved","ByteData","BYTE","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","getBlocksCount","errorCorrectionLevel","H","getTotalCodewordsCount","isValid","Utils","G15_BCH","getEncodedBits","exp","KanjiData","KANJI","toSJIS","Patterns","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PenaltyScores","getMaskAt","getPenaltyN1","sameCountCol","sameCountRow","lastCol","lastRow","getPenaltyN2","getPenaltyN3","bitsCol","bitsRow","getPenaltyN4","modulesCount","applyMask","getBestMask","setupFormatFunc","numPatterns","bestPattern","lowerPenalty","penalty","VersionCheck","Regex","NUMERIC","ccBits","MIXED","getCharCountIndicator","getBestModeForData","dataStr","testNumeric","testAlphanumeric","testKanji","NumericData","group","remainingNum","GF","coeff","divident","divisor","generateECPolynomial","degree","poly","AlignmentPattern","FinderPattern","MaskPattern","ECCode","ReedSolomonEncoder","Version","FormatInfo","Segments","setupFormatInfo","matrix","segments","dataTotalCodewordsBits","getSymbolTotalCodewords","remainingByte","totalCodewords","ecTotalCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","dcData","ecData","maxDataSize","dataSize","createCodewords","createSymbol","estimatedVersion","rawSegments","rawSplit","getBestVersionForData","bestVersion","dataBits","setupFinderPattern","setupAlignmentPattern","setupVersionInfo","setupData","toSJISFunc","setToSJISFunction","Polynomial","genPoly","paddedData","remainder","buff","kanji","BYTE_KANJI","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","dijkstra","getStringByteLength","getSegments","getSegmentsFromString","byteSegs","kanjiSegs","numSegs","alphaNumSegs","isKanjiModeEnabled","getSegmentBitsLength","buildSingleSegment","modesHint","bestMode","seg","nodes","segs","buildNodes","graph","prevNodeIds","nodeGroup","currentNodeIds","lastCount","prevNodeId","buildGraph","find_path","optimizedSegs","curr","prevSeg","mergeSegments","toSJISFunction","CODEWORDS_COUNT","G18_BCH","getReservedBitsCount","getTotalBitsFromDataArray","reservedBits","getCapacity","usableBits","currentVersion","getBestVersionForMixedData","getBestVersionForDataLength","qrData","canvasEl","getCanvasElement","getOptions","getImageWidth","createImageData","qrToImageData","clearRect","clearCanvas","putImageData","rendererOpts","quality","getColorAttrib","attrib","svgCmd","cmd","qrcodesize","bg","light","moveBy","newRow","lineLength","qrToPath","svgTag","hex2rgba","hexCode","hexValue","scale","getScale","qrSize","imgData","qr","symbolSize","scaledMargin","palette","posDst","pxColor","that","species","sliceLen","parseHex","window_getters_1","getWindowMetadataOfAny","metaTags","getElementsByTagName","attr","getName","icons","absoluteHref","pathname","absoluteUrl","getIcons","asn1","bignum","constants","decoders","encoders","Entity","_createNamed","Generated","entity","_initNamed","_getDecoder","_getEncoder","reporter","Reporter","DecoderBuffer","EncoderBuffer","isEncoderBuffer","isDecoderBuffer","restore","isEmpty","fail","_reporterState","Node","tags","_baseState","reverseArgs","choice","any","use","useDecoder","explicit","implicit","contains","stateProps","cstate","_useArgs","def","newKey","wrapResult","prevObj","present","prevKey","enterKey","_peekTag","isError","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","track","_getUse","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","_use","_createEncoderBuffer","_encodeValue","_skipDefault","primitive","_encodeChoice","_encodePrimitive","cls","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool","_isNumstr","_isPrintstr","ReporterError","rethrow","pathLen","inherited","partial","tagClass","tagClassByName","tagByName","_reverse","der","DERDecoder","tree","DERNode","derDecodeTag","oct","tagStr","derDecodeLen","decodedTag","_skipUntilEnd","possibleEnd","unused","numstr","printstr","relative","identifiers","ident","subident","second","year","mon","day","hour","sec","UTC","pem","PEMDecoder","lines","DEREncoder","encodedTag","encodeTag","lenOctets","objid","time","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","numArray","dataBuffer","defaultBuffer","PEMEncoder","isDeepEqual","isDeepStrictEqual","_require$codes","codes","ERR_AMBIGUOUS_ARGUMENT","ERR_INVALID_ARG_VALUE","ERR_INVALID_RETURN_VALUE","ERR_MISSING_ARGS","AssertionError","_require$types","isPromise","objectAssign","objectIs","lazyLoadComparison","comparison","warned","NO_EXCEPTION_SENTINEL","innerFail","innerOk","argLen","generatedMessage","expected","operator","stackStartFn","_len","internalMessage","argsLen","emitWarning","errArgs","notEqual","deepEqual","notDeepEqual","deepStrictEqual","notDeepStrictEqual","strictEqual","notStrictEqual","Comparison","_classCallCheck","compareExceptionKey","expectedException","isPrototypeOf","getActual","checkIsPromise","waitForActual","promiseFn","resultPromise","expectsError","fnType","expectsNoError","strict","_len6","_key6","throws","_len2","_key2","rejects","_len3","_key3","doesNotThrow","_len4","_key4","doesNotReject","_len5","_key5","ifError","newErr","origStack","tmp2","tmp1","_possibleConstructorReturn","_assertThisInitialized","search","this_len","blue","green","white","kReadableOperator","strictEqualObject","notStrictEqualObject","notIdentical","copyError","inspectValue","customInspect","maxArrayLength","showHidden","breakLength","showProxy","sorted","getters","createErrDiff","lastPos","skipped","actualInspected","actualLines","expectedLines","indicator","inputLength","stderr","isTTY","columns","maxCount","maxLines","_actualLines","printedLines","skippedMsg","expectedLine","actualLine","divergingLines","_Error","stackTraceLimit","getColorDepth","_res","knownOperators","_inherits","recurseTimes","_objectSpread","createErrorType","NodeError","_Base","arg1","arg2","arg3","oneOf","thing","determiner","inspected","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","regexFlagsSupported","flags","arrayFromSet","arrayFromMap","objectGetOwnPropertySymbols","uncurryThis","propertyIsEnumerable","objectToString","isAnyArrayBuffer","isArrayBufferView","isDate","isMap","isSet","isNativeError","isBoxedPrimitive","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isFloat32Array","isFloat64Array","isNonIndex","getOwnNonIndexProperties","innerDeepEqual","val1","val2","memos","buf1","buf2","val1Tag","keys1","keys2","keyCheck","areSimilarTypedArrays","areSimilarFloatArrays","_keys","_keys2","isEqualBoxedPrimitive","getEnumerables","iterationType","aKeys","bKeys","symbolKeysA","symbolKeysB","_symbolKeysB","val2MemoA","val2MemoB","areEq","objEquiv","setHasEqualElement","setValues","findLooseMatchingPrimitives","prim","setMightHaveLoosePrim","altValue","mapMightHaveLoosePrim","curB","mapHasEqualEntry","key1","item1","key2","aValues","bValues","_val","setEquiv","aEntries","_aEntries$i","item2","bEntries","_i2","_bEntries$_i","mapEquiv","keysA","tslib_1","Semaphore_1","Mutex","_semaphore","acquire","__awaiter","__generator","runExclusive","isLocked","release","Semaphore","_maxConcurrency","_queue","locked","ticket","_dispatch","trys","_currentReleaser","releaser","nextConsumer","released","Mutex_1","withTimeout_1","withTimeout","sync","timeoutError","isTimeout","_initialParams2","_isObject2","_setImmediate2","coll","iteratee","_eachOfLimit2","_withoutIndex2","_wrapAsync2","_isArrayLike2","eachOfArrayLike","eachOfGeneric","_breakLoop2","_doLimit2","_noop2","_once2","_onlyOnce2","iteratorCallback","_eachOfLimit3","_eachLimit2","_eachOf2","nextElem","_iterator2","running","looping","iterateeCallback","replenish","_slice2","_slice","createArrayIterator","_getIterator2","createES2015Iterator","okeys","createObjectIterator","eachfn","counter","_iteratee","callFn","tasks","task","hasNextTick","hasSetImmediate","_defer","setImmediate","nextTick","arrayLike","newLen","newArr","isAsync","_asyncify","_asyncify2","supportsSymbol","asyncFn","_doParallel2","_map2","_parallel2","_isArray2","taskIndex","nextTask","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","AxiosError","CanceledError","parseProtocol","onCanceled","requestData","requestHeaders","responseType","cancelToken","signal","isFormData","isStandardBrowserEnv","XMLHttpRequest","auth","username","password","Authorization","btoa","fullPath","baseURL","onloadend","responseHeaders","getAllResponseHeaders","responseText","paramsSerializer","onreadystatechange","readyState","responseURL","onabort","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","ETIMEDOUT","xsrfValue","withCredentials","xsrfCookieName","xsrfHeaderName","setRequestHeader","isUndefined","onDownloadProgress","onUploadProgress","upload","abort","aborted","ERR_BAD_REQUEST","Axios","mergeConfig","axios","createInstance","defaultConfig","extend","instanceConfig","CancelToken","isCancel","toFormData","Cancel","promises","spread","isAxiosError","executor","resolvePromise","token","onfulfilled","_resolve","throwIfRequested","listener","ERR_CANCELED","__CANCEL__","InterceptorManager","dispatchRequest","validators","interceptors","configOrUrl","assertOptions","silentJSONParsing","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","fulfilled","rejected","responseInterceptorChain","newConfig","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","fileName","lineNumber","columnNumber","descriptors","customProps","axiosError","toFlatObject","eject","isAbsoluteURL","combineURLs","requestedURL","transformData","throwIfCancellationRequested","transformRequest","adapter","transformResponse","config1","config2","getMergedValue","isPlainObject","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","configValue","validateStatus","ERR_BAD_RESPONSE","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","getDefaultAdapter","isArrayBuffer","isStream","isFile","isBlob","isURLSearchParams","isFileList","isObjectPayload","contentType","_FormData","FormData","rawValue","parser","isString","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","serializedParams","hashmarkIndex","relativeURL","expires","secure","cookie","isNumber","toGMTString","remove","originURL","msie","urlParsingNode","resolveURL","hostname","requestURL","normalizedName","ignoreDuplicateOf","line","formData","convertValue","isTypedArray","build","parentKey","fullKey","append","deprecatedWarnings","formatMessage","ERR_DEPRECATED","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","kindOf","kindOfTest","isFunction","TypedArray","assignValue","stripBOM","superConstructor","sourceObj","destObj","merged","getOwnPropertyNames","searchString","lastIndex","balanced","maybeMatch","reg","begs","beg","ai","bi","_Buffer","ALPHABET","BASE_MAP","BASE","LEADER","FACTOR","iFACTOR","decodeUnsafe","psz","zeroes","b256","it3","it4","vch","pbegin","pend","b58","it1","it2","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","pad_string_1","fromBase64","toBase64","base64url","stringLength","paddedStringLength","reversed","globalObject","isNumeric","mathceil","mathfloor","bignumberError","tooManyDigits","LOG_BASE","POWS_TEN","SQRT_BASE","MAX","bitFloor","coeffToString","yc","intCheck","toExponential","toFixedPoint","configObject","convertBase","parseNumeric","P","ONE","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","suffix","alphabetHasNormalDecimalDigits","caseChanged","isNum","rm","c0","ne","maxOrMin","normalise","sd","ni","rd","pows10","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EXPONENTIAL_AT","RANGE","maximum","minimum","pow2_53","random53bitInt","dp","Uint32Array","plus","decimal","toBaseOut","baseIn","baseOut","arrL","callerIsToString","xlo","xhi","klo","khi","aL","bL","subtract","more","prod","prodL","qc","remL","rem0","xL","yc0","yL","yz","NaN","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","absoluteValue","comparedTo","decimalPlaces","dividedBy","dividedToIntegerBy","idiv","exponentiatedBy","isModExp","nIsBig","nIsNeg","nIsOdd","times","integerValue","isEqualTo","isGreaterThan","isGreaterThanOrEqualTo","isLessThan","isLessThanOrEqualTo","isPositive","minus","xLTy","xe","ye","modulo","multipliedBy","xcL","ycL","ylo","yhi","zc","sqrtBase","negated","precision","shiftedBy","squareRoot","rep","toFormat","g1","g2","intPart","fractionPart","intDigits","toFraction","md","n0","n1","toPrecision","propertyKey","typeOfFunction","boolTrue","bound","BinaryReader","BinaryWriter","BorshError","baseDecode","baseEncode","bs58_1","textDecoder","fatal","INITIAL_LENGTH","fieldPath","originalMessage","fieldName","maybeResize","writeBuffer","writeU32","handlingRangeError","propertyDescriptor","originalMethod","readBuffer","readU32","capitalizeFirstLetter","serializeField","fieldType","writeFixedArray","writeArray","writeU8","serializeStruct","addToFieldPath","borshSerialize","structSchema","deserializeField","readFixedArray","readU8","deserializeStruct","classType","borshDeserialize","fieldValue","Rand","_rand","getBytes","getByte","asUInt32Array","scrubVec","cryptBlock","keySchedule","SUB_MIX","SBOX","nRounds","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s3","ksRow","RCON","G","INV_SBOX","INV_SUB_MIX","sx","AES","_reset","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","decryptBlock","m1","scrub","aes","Transform","GHASH","incr32","StreamCipher","_cipher","ck","_ghash","_finID","ghash","toPad","ivBits","tail","calcIv","_prev","_secCache","_decrypt","_alen","_mode","_authTag","_called","rump","_final","xorTest","getAuthTag","setAuthTag","setAAD","ciphers","deciphers","modes","createCipher","Cipher","Cipheriv","createDecipher","Decipher","Decipheriv","listCiphers","getCiphers","AuthCipher","MODES","ebtk","Splitter","_last","_autopadding","suite","flush","unpad","setAutoPadding","setTo","autoPadding","PADDING","padBuff","ZEROES","_multiply","lsbVi","Vi","Zi","abl","encryptStart","encryptByte","byteParam","shiftIn","getBlock","chunkNum","modeModules","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","DES","aesModes","desModes","keyLen","ivLen","CipherBase","instantiate","EDE","modeName","_des","des3","getr","modulus","prime1","prime2","crt","blinds","blinder","publicExponent","unblinder","blind","blinded","qinv","coefficient","exponent1","m2","exponent2","algorithms","Sign","algorithm","Writable","_hashType","_hash","_tag","_signType","Verify","createSign","createVerify","getKey","hlen","hbits","bits2int","bits2octets","obits","makeKey","kv","makeR","signType","curveId","ecSign","priv_key","dsaSign","checkValue","subjectPrivateKey","ecVerify","pub_key","unpacked","montp","dsaVerify","padNum","basex","SlowBuffer","INSPECT_MAX_BYTES","kMaxLength","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","$apply","$call","$reflectApply","$gOPD","$defineProperty","$max","originalFunction","applyBind","implementation","engine","stringOrBuffer","char","view","baseX","base16","base32","tupple","multibase","nameOrCode","getBase","bufOrString","isEncoded","errNotSupported","codeBuf","validEncode","isImplemented","varint","intTable","codecNameToCodeVarint","multicodecStrOrCode","varintBufferEncode","rmPrefix","getCodec","prefixedData","codecName","codec","getNumber","varintBufferDecode","getCode","getCodeVarint","getVarint","baseTable","nameTable","encodingName","tableByCode","bufferToNumber","numberToBuffer","varintEncode","varintTable","mh","CIDUtil","checkCIDComponents","multibaseName","multihash","errorMsg","multicodec","codecs","withIs","CID","_CID","isCID","cid","baseName","fromB58String","validateCID","_buffer","toB58String","toBaseEncodedString","symbolName","StringDecoder","hashMode","_finalOrDigest","__final","_decoder","inputEnc","outputEnc","outData","_toString","_transform","_flush","ClassIsWrapper","withoutNew","classNames","classes","argType","toVal","mix","cidV0ToV1Base32","ipfsHash","toV1","multiC","hexStringToBuffer","profiles","helpers","contentHash","profile","fromIpfs","fromSwarm","swarmHash","encodedValue","multiH","fromHexString","encodes","swarm","ipfs","utf8","decodes","hexMultiHash","b58MultiHash","CookieAccessInfo","script","Cookie","cookiestr","request_domain","request_path","expiration_date","explicit_path","explicit_domain","noscript","All","toValueString","cookie_str_splitter","CookieJar","cookies_list","setCookie","collidesWith","getCookie","cookie_name","access_info","matches","getCookies","access_domain","cookie_domain","wildcard","setCookies","successful","deselectCurrent","clipboardToIE11Formatting","reselectPrevious","selection","createRange","getSelection","textContent","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","clipboardData","clearData","setData","onCopy","selectNodeContents","addRange","execCommand","copyKey","prompt","removeRange","removeAllRanges","isBoolean","isNull","isNullOrUndefined","isSymbol","isPrimitive","CRC32","T0","signed_crc_table","TT","slice_by_16_tables","T3","T4","T5","T6","T7","T8","T9","Ta","Tb","Tc","Td","Te","Tf","bstr","DO_NOT_EXPORT_CRC","ECDH","aliases","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","formatReturnValue","p256","secp256r1","secp192r1","p384","p521","generateKeys","getPublicKey","computeSecret","inenc","getPrivateKey","setPublicKey","setPrivateKey","_priv","MD5","alg","Legacy","md5","ZEROS","blocksize","_alg","ipad","_ipad","opad","_opad","rng","pseudoRandomBytes","prng","algos","algoKeys","hashes","getHashes","pbkdf2","pbkdf2Sync","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","randomFillSync","createCredentials","singleMatcher","multiMatcher","decodeComponents","tokens","encodedURI","replaceMap","customDecodeURIComponent","hasSymbols","origDefineProperty","hasPropertyDescriptors","supportsDescriptors","predicate","predicates","CBCState","_cbcInit","_cbcState","inOff","outOff","superProto","bufferOff","_updateDecrypt","_updateEncrypt","_flushBuffer","inputOff","outputOff","_finalEncrypt","_finalDecrypt","_unpad","DESState","_desState","deriveKeys","shiftTable","kL","kR","pc1","r28shl","pc2","ip","_encrypt","lStart","rStart","keyL","keyR","expand","substitute","rip","EDEState","k3","_edeState","inL","inR","outL","outR","pc2table","sTable","permuteTable","padSplit","generatePrime","DH","ENCODINGS","genc","millerRabin","TWENTYFOUR","ELEVEN","TEN","THREE","SEVEN","_pub","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","simpleSieve","fermatTest","checkPrime","__gen","_gen","getPrime","front","getGenerator","findPrime","TWO","FIVE","FOUR","_getPrimes","n2","single_source_shortest_paths","predecessors","costs","closest","cost_of_s_to_u","adjacent_nodes","cost_of_s_to_u_plus_cost_of_e","cost_of_s_to_v","PriorityQueue","extract_shortest_path_from_predecessor_list","sorter","default_sorter","EdwardsCurve","twisted","mOneA","dd","oneC","_mulA","_mulC","lhs","pointFromY","_extDbl","nt","_projDbl","_extAdd","_projAdd","MontCurve","i4","a24","aa","bb","diffAdd","da","jumlAdd","EDDSA","pointClass","encodingLength","keyFromSecret","hashInt","messagePrefix","R","Rencoded","encodePoint","s_","pubBytes","makeSignature","SG","fromSecret","lastIx","normed","xIsOdd","encodeInt","decodeInt","isPoint","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","_writableState","_readableState","cancelled","onlegacyfinish","onfinish","onend","onexit","exitCode","onclosenexttick","ended","onrequest","setHeader","isRequest","stdio","isChildProcess","naiveFallback","__global__","firstSource","nextSource","keysArray","nextIndex","nextKey","polyfill","calculateSum","accumulator","currentValue","blockTrackerEvents","BaseBlockTracker","_blockResetDuration","blockResetDuration","_blockResetTimeout","_currentBlock","_isRunning","_onNewListener","_onRemoveListener","_resetCurrentBlock","_setupInternalEvents","latestBlock","_maybeStart","_getBlockTrackerEventCount","_maybeEnd","_cancelBlockResetTimeout","_start","_setupBlockResetTimeout","listenerCount","newBlock","currentBlock","hexToInt","_setCurrentBlock","oldBlock","unref","hexInt","pify","retryTimeout","keepEventLoopActive","_provider","_pollingInterval","_retryTimeout","_keepEventLoopActive","_setSkipCacheFlag","_updateLatestBlock","getLatestBlock","_performSync","emitErr","_fetchLatestBlock","_newPotentialLatest","skipCache","duration","timoutRef","uts46","toUnicode","useStd3ASCII","inputName","labels","labelSha","JS_SHA3_NO_NODE_JS","COMMON_JS","JS_SHA3_NO_COMMON_JS","HEX_CHARS","SHIFT","RC","BITS","OUTPUT_TYPES","createOutputMethod","Keccak","createShakeOutputMethod","outputBits","createMethod","methodNames","blockCount","byteCount","outputBlocks","notString","lastByteIndex","finalize","arrayBuffer","c3","c4","c5","c6","c7","c9","b16","b17","b18","b19","b20","b21","b22","b23","b24","b25","b26","b27","b28","b29","b30","b31","b32","b33","b34","b35","b36","b37","b38","b39","b40","b41","b42","b43","b44","b45","b46","b47","b48","b49","BaseFilterWithHistory","allResults","newResults","BaseFilter","updates","getBlocksForRange","incrementHexInt","BlockFilter","blockBodies","blockHashes","addResults","fromBlockNumber","toBlockNumber","missingBlockNumbers","blockNum","int","sortBlockRefs","refA","refB","unsafeRandomNibble","minBlockRef","sortedRefs","maxBlockRef","blockRefIsNumber","blockRef","unsafeRandomBytes","createAsyncMiddleware","createJsonRpcMiddleware","LogFilter","TxFilter","toFilterCreationMiddleware","createFilterFn","toAsyncRpcMiddleware","objValues","filterIndex","mutex","waitForFree","releaseLock","mutexMiddlewareWrapper","newLogFilter","uninstallFilterHandler","filterUpdater","uninstallAllFilters","installFilter","filterIndexHex","getChangesAndClear","getAllResults","prevFilterCount","idHex","newFilterCount","updateBlockTrackerSubs","EthQuery","ethQuery","_fetchLogs","newLogs","addInitialResults","matchingLogs","matchLog","getLogs","normalizedLogAddress","topicPattern","logTopic","subtopicsToMatch","JsonRpcEngine","jsonify","asyncMiddleware","nextPromise","resolveNextPromise","returnHandlerCallback","nextWasCalled","asyncNext","runReturnHandlersCallback","idCounter","getUniqueId_1","JsonRpcEngine_1","processFn","proxy","arguments_","promiseModule","multiArgs","errorFirst","filterCache","WeakMap","exclude","objectType","pified","excludeMain","writableOrConfigurableOwn","shouldFilter","include","createScaffoldMiddleware","createFilterMiddleware","normalizeBlock","parentHash","sha3Uncles","miner","transactionsRoot","receiptsRoot","logsBloom","difficulty","gasUsed","mixHash","extraData","filterManager","createSubNewHeads","createSubFromFilter","subId","_emitSubscriptionResult","subscriptionType","rawBlocks","filterParams","filterIdHex","blockTxHashes","cacheUtils","emptyValues","blockCache","BlockCacheStrategy","strategies","perma","fork","cacheTypeForPayload","canCacheRequest","blockTag","blockTagForPayload","requestedBlockNumber","latestBlockNumber","clearBefore","cacheResult","blockNumberHex","newCache","getBlockCacheForPayload","identifier","cacheIdentifierForPayload","canCacheResult","canCache","blockHash","oldBlockHex","oldBlockNumber","paramsWithoutBlockTag","blockTagParamIndex","skipBlockRef","simpleParams","Bytes","Nat","keccak256s","toChecksum","addressHash","checksumAddress","publicHash","encodeSignature","flatten","decodeSignature","makeSigner","addToV","fromNumber","fromNat","innerHex","middleHex","outerHex","vals","vrs","J","chunksOf","rnd","bs","rev","padRight","ascii","makeByte","ci","toNat","fromUint8Array","toUint8Array","KECCAK_PADDING","keccak512s","bin","toEther","wei","fromEther","eth","toUint256","uint","dataTree","parseTree","parseList","parseLength","lim","createRandomId","currentProvider","generateFnFor","generateFnWithDefaultBlockFor","argCount","getBalance","getTransactionCount","getStorageAt","protocolVersion","syncing","coinbase","mining","hashrate","getBlockTransactionCountByHash","getBlockTransactionCountByNumber","getUncleCountByBlockHash","getUncleCountByBlockNumber","estimateGas","getBlockByHash","getBlockByNumber","getTransactionByHash","getTransactionByBlockHashAndIndex","getTransactionByBlockNumberAndIndex","getTransactionReceipt","getUncleByBlockHashAndIndex","getUncleByBlockNumberAndIndex","getCompilers","compileLLL","compileSolidity","compileSerpent","getWork","submitWork","submitHashrate","ethUtil","ethAbi","typedSignatureHash","sigParams","fromRpcSig","getPublicKeyFor","hashPersonalMessage","padWithZeroes","myString","concatSig","rSig","fromSigned","sSig","vSig","rStr","toUnsigned","sStr","vStr","addHexPrefix","personalSign","recoverPersonalSignature","sender","extractPublicKey","hashBuffer","signTypedData","recoverTypedSignature","isBloom","bloom","isInBloom","bytesToHex","bitpos","codePointToInt","isTopic","isAddress","isUserEthereumAddressInBloom","ethereumAddress","padLeft","isContractAddressInBloom","contractAddress","isTopicInBloom","isByteArray","keccak_256","hasPrefix","hashConstructor","hash_utils_1","resp","random_1","secp256k1_1","__export","ABI","parseSignature","retargs","decodeSingle","parseType","rawType","subArray","memoryUsage","eventID","methodID","rawDecode","simpleEncode","simpleDecode","solidityHexValue","bitsize","subType","arraySize","bytesize","soliditySHA256","solidityRIPEMD160","fromSerpent","toSerpent","ethjsUtil","bytes_1","hash_1","fromBuf","saltBuf","initCodeBuf","rlp","secp256k1v3","privateKeyExport","privateKeyImport","privateKeyNegate","privateKeyModInverse","tweak","privateKeyTweakAdd","privateKeyTweakMul","publicKeyTweakAdd","publicKeyTweakMul","publicKeyCombine","signatureNormalize","signatureExport","signatureImport","sigObj","signatureImportLax","signOptions","noncefn","attempt","bufferAlgo","bufferData","ecdsaVerify","ecdh","ecdhUnsafe","EC_PRIVKEY_EXPORT_DER_COMPRESSED","EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED","lenb","lenbyte","rindex","sindex","rvalue","svalue","ecparams","toPublicKey","scalar","shared","fees","N_DIV_2","getSenderAddress","sigV","_homestead","includeSignature","_from","_senderPubKey","txDataZeroGas","txDataNonZeroGas","txGas","txCreation","getUpfrontCost","_require","MAX_INTEGER","TWO_POW256","KECCAK256_NULL_S","SHA3_NULL_S","KECCAK256_NULL","SHA3_NULL","KECCAK256_RLP_ARRAY_S","SHA3_RLP_ARRAY_S","KECCAK256_RLP_ARRAY","SHA3_RLP_ARRAY","KECCAK256_RLP_S","SHA3_RLP_S","KECCAK256_RLP","SHA3_RLP","isValidPrivate","isValidPublic","importPublic","toRpcSig","isZeroAddress","isValidChecksumAddress","isPrecompiled","isValidSignature","homestead","numberToBN","negative1","unitMap","getValueOfUnit","unitInput","unit","unitValue","numberToString","fromWei","weiInput","optionsInput","baseLength","fraction","whole","commify","toWei","etherInput","ether","comps","toUtf8","Events","EE","addListener","emitter","_eventsCount","clearEvent","eventNames","prefixed","ReflectOwnKeys","ReflectApply","NumberIsNaN","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","prepend","newListener","onceWrapper","fired","wrapFn","_onceWrap","wrapped","unwrap","evlistener","unwrapListeners","wrapListener","setMaxListeners","getMaxListeners","prependListener","prependOnceListener","originalListener","spliceOne","rawListeners","keyBits","used","keyStart","ivStart","stable","deterministicStringify","stableStringify","LIMIT_REPLACE_NODE","CIRCULAR_REPLACE_NODE","replacerStack","depthLimit","edgesLimit","replacer","spacer","decirc","replaceGetterValues","setReplace","edgeIndex","compareFunction","deterministicDecirc","autoBom","onload","dispatchEvent","MouseEvent","createEvent","initMouseEvent","saveAs","HTMLAnchorElement","webkitURL","download","createObjectURL","revokeObjectURL","msSaveOrOpenBlob","HTMLElement","safari","FileReader","readAsDataURL","isCallable","forEachArray","forEachString","forEachObject","JSON_RPC_VERSION","getPayloadId","createJsonRpcRequestPayload","createJsonRpcBatchRequestPayload","standardizeRequestPayload","FortmaticError","FortmaticWarning","isJsonRpcErrorCode","RPCErrorCode","InternalError","RpcError","createMissingApiKeyError","SDKErrorCode","MissingApiKey","createModalNotReadyError","ModalNotReady","createInvalidArgumentError","InvalidArgument","argIndex","functionName","createSynchronousWeb3MethodWarning","SDKWarningCode","SyncWeb3Method","createDuplicateIframeWarning","DuplicateIframe","emitWeb3Payload","emitFortmaticPayload","sendFortmaticAsync","isJsonRpcBatchRequestPayload","isJsonRpcRequestPayload","isJsonRpcResponsePayload","isFmRequest","isFmBatchRequest","isFmPayloadMethod","FmPayloadMethod","BaseModule","sdk","throw","ops","return","__values","JsonRpcResponse","applyResult","applyError","encodedQueryParams","messageHandlers","initMessageListener","iframe","contentWindow","msgType","FmIncomingWindowMessage","FORTMATIC_HANDLE_RESPONSE","FORTMATIC_USER_DENIED","hasError","FmPayloadTransport","_jsonrpc","_result","Fortmatic","gsnRelay","encodeQueryParameters","API_KEY","DOMAIN_ORIGIN","ETH_NETWORK","ethNetwork","getProvider","__provider__","FmProvider","SDK","PHANTOM_URL","user","PhantomUser","loginWithMagicLink","email","showUI","fm_auth_login_with_magic_link","PhantomMode","WIDGET_URL","TransactionsModule","UserModule","configure","fm_configure","Phantom","WidgetMode","getIdToken","fm_auth_get_access_token","getMetadata","fm_auth_get_metadata","isLoggedIn","fm_is_logged_in","logout","fm_auth_logout","fm_composeSend","fm_logout","fm_get_balances","fm_get_transactions","fm_accountSettings","fm_deposit","fm_get_user","FORTMATIC_OVERLAY_READY","FORTMATIC_SHOW_OVERLAY","FORTMATIC_HIDE_OVERLAY","FORTMATIC_USER_LOGOUT","FORTMATIC_HANDLE_BATCH_REQUEST","FORTMATIC_HANDLE_REQUEST","FORTMATIC_HANDLE_FORTMATIC_REQUEST","FmOutgoingWindowMessage","ParseError","InvalidRequest","MethodNotFound","InvalidParams","MagicLinkFailedVerification","MagicLinkExpired","MagicLinkRateLimited","UserAlreadyLoggedIn","LoginWithEmail","LoginWithPhone","WidgetModePrimaryLoginOption","login","getUser","getBalances","getTransactions","settings","deposit","isFortmatic","overlay","FmIframeController","payloadTransport","enqueue","onRequestComplete","isFortmaticMethod","overlayReady","dequeue","display","borderRadius","border","zIndex","_overlayReady","querySelectorAll","classList","dataset","fortmaticIframeLabel","showOverlay","hideOverlay","HARMONY","decodeQueryParameters","atob","ERROR_MESSAGE","funcType","binder","boundLength","boundArgs","Empty","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","needsEval","INTRINSICS","AggregateError","Atomics","DataView","decodeURI","eval","EvalError","Float32Array","FinalizationRegistry","Int8Array","Int16Array","parseFloat","Uint8ClampedArray","URIError","WeakRef","WeakSet","doEval","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","stringToPath","quote","subString","getBaseIntrinsic","intrinsicName","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","win","hasArrayLengthDefineBug","origSymbol","hasSymbolSham","symObj","syms","HashBase","_block","_blockSize","_blockOffset","_length","_finalized","throwIfNotStringOrBuffer","validateParams","blockIdxes","mapChar","mapStr","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","mapDomain","encoded","ucs2decode","digitToBasic","flag","adapt","numPoints","firstTime","baseMinusTMin","bias","basic","oldi","baseMinusT","fromCodePoint","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","punycode","idna_map","mapLabel","ucs2","cp","composite","validateLabel","codePointAt","verifyDnsLength","asciiLabels","toASCII","asciiString","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","callee","supportsStandardArguments","badArrayLike","isCallableMarker","fnToStr","reflectApply","constructorRegex","isES6ClassFn","fnStr","documentDotAll","tryFunctionObject","strClass","alert","confirm","isFnRegex","generatorFunc","getGeneratorFunc","getPolyfill","shim","duplex","availableTypedArrays","typedArrays","$slice","toStrTags","gOPD","typedArray","anyTrue","tryTypedArrays","isStrictTypedArray","isLooseTypedArray","uuid","generateRequest","ClientBrowser","callServer","reviver","notificationIdNull","isBatch","hasCallback","_parseResponse","ERROR","WINDOW","JS_SHA256_NO_WINDOW","WEB_WORKER","NODE_JS","JS_SHA256_NO_NODE_JS","JS_SHA256_NO_COMMON_JS","AMD","ARRAY_BUFFER","JS_SHA256_NO_ARRAY_BUFFER","EXTRA","JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW","is224","Sha256","nodeWrap","nodeMethod","createHmacOutputMethod","HmacSha256","createHmacMethod","sharedMemory","hBytes","finalized","oKeyPad","iKeyPad","maj","ab","cd","bc","dataView","setUint32","innerHash","INPUT_ERROR","JS_SHA3_NO_WINDOW","JS_SHA3_NO_ARRAY_BUFFER","CSHAKE_PADDING","SHAKE_BITS","CSHAKE_BYTEPAD","JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW","createCshakeOutputMethod","createKmacOutputMethod","createOutputMethods","bytepad","Kmac","newMethodName","encodeString","strs","paddingBytes","cycles","aobj","bobj","colonSeparator","objectKeys","escapee","uffff","walk","holder","gap","escapable","mind","createKeccak","createShake","KeccakState","Shake","rate","capacity","delimitedSuffix","hashBitLength","_rate","_capacity","_delimitedSuffix","_hashBitLength","absorb","absorbLastFewBits","squeeze","_resetState","dataByteLength","P1600_ROUND_CONSTANTS","p1600","lo0","hi0","lo1","hi1","lo2","hi2","lo3","hi3","lo4","hi4","t1slo0","t1shi0","t1slo5","t1shi5","t1slo10","t1shi10","t1slo15","t1shi15","t1slo20","t1shi20","t1slo1","t1shi1","t1slo6","t1shi6","t1slo11","t1shi11","t1slo16","t1shi16","t1slo21","t1shi21","t1slo2","t1shi2","t1slo7","t1shi7","t1slo12","t1shi12","t1slo17","t1shi17","t1slo22","t1shi22","t1slo3","t1shi3","t1slo8","t1shi8","t1slo13","t1shi13","t1slo18","t1shi18","t1slo23","t1shi23","t1slo4","t1shi4","t1slo9","t1shi9","t1slo14","t1shi14","t1slo19","t1shi19","t1slo24","t1shi24","t2slo0","t2shi0","t2slo16","t2shi16","t2slo7","t2shi7","t2slo23","t2shi23","t2slo14","t2shi14","t2slo10","t2shi10","t2slo1","t2shi1","t2slo17","t2shi17","t2slo8","t2shi8","t2slo24","t2shi24","t2slo20","t2shi20","t2slo11","t2shi11","t2slo2","t2shi2","t2slo18","t2shi18","t2slo9","t2shi9","t2slo5","t2shi5","t2slo21","t2shi21","t2slo12","t2shi12","t2slo3","t2shi3","t2slo19","t2shi19","t2slo15","t2shi15","t2slo6","t2shi6","t2slo22","t2shi22","t2slo13","t2shi13","t2slo4","t2shi4","keccakState","squeezing","HASH_UNDEFINED","argsTag","funcTag","objectTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","binding","nodeIsTypedArray","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","uid","IE_PROTO","nativeObjectToString","objectCtorString","reIsNative","getPrototype","objectCreate","symToStringTag","getNative","nativeIsBuffer","nativeMax","nativeNow","nativeCreate","baseCreate","ListCache","MapCache","Stack","__data__","arrayLikeKeys","isArr","isArg","isArguments","isBuff","isType","skipIndexes","baseTimes","isIndex","assignMergeValue","baseAssignValue","objValue","assocIndexOf","getMapData","pairs","LARGE_ARRAY_SIZE","fromRight","baseFor","keysFunc","baseGetTag","unmasked","getRawTag","baseIsArguments","isObjectLike","baseIsNative","isMasked","toSource","baseKeysIn","nativeKeysIn","isProto","isPrototype","baseMerge","srcIndex","customizer","srcValue","mergeFunc","safeGet","stacked","isCommon","isTyped","isArrayLike","copyArray","isDeep","cloneBuffer","cloneArrayBuffer","cloneTypedArray","Ctor","copyObject","keysIn","toPlainObject","initCloneObject","baseMergeDeep","baseRest","setToString","otherArgs","overRest","identity","baseSetToString","isKeyable","getValue","lastCalled","stamp","shortOut","isLength","baseUnary","assigner","sources","guard","isIterateeCall","hashClear","hashDelete","hashGet","hashHas","hashSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","nativeKeys","overArg","stubFalse","baseIsTypedArray","baseKeys","memoize","memoized","Cache","definition","undefinedType","isIE","logMethods","bindMethod","traceForIE","trace","realMethod","replaceLoggingMethods","loggerName","methodFactory","enableLoggingWhenConsoleArrives","defaultMethodFactory","defaultLevel","currentLevel","persistLevelIfPossible","levelNum","levelName","getPersistedLevel","storedLevel","clearPersistedLevel","getLevel","SILENT","setDefaultLevel","resetLevel","enableAll","TRACE","disableAll","initialLevel","defaultLogger","_loggersByName","getLogger","noConflict","getLoggers","Mexp","formulaEval","pop1","pop2","pop3","disp","eva","math","tan","anchor","asin","acos","atan","cosh","acosh","fact","tanh","atanh","sinh","asinh","Pi","preced","type0","type1","type1Asterick","type3Asterick","type6","newAr","str1","str2","addToken","lex","changeSignObj","changeSign","closingParObj","openingParObj","ptc","inpStr","allowed","bracToClose","asterick","Exception","precedence","tokenize","cToken","cType","cEv","cPre","cShow","hasDec","isDegree","pro","toRadian","inverse","low","high","ex","postfixEval","pow10x","sinha","cosha","toPostfix","popped","prep","ele","UserDefined","bool","ARRAY16","rotl","fnF","fnG","fnH","fnI","brorand","MillerRabin","_randbelow","min_bytes","_randrange","rone","rn1","getDivisor","defaultLengths","hashfn","coerceCode","isAppCode","multiplier","formattedString","stringArg","propIsEnumerable","toObject","test1","test2","test3","letter","shouldUseNative","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","functionToString","$match","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","isEnumerable","gPO","O","addNumericSeparator","sepRegex","intStr","dec","utilInspect","inspectCustom","inspectSymbol","wrapQuotes","defaultStyle","quoteChar","quoteStyle","inspect_","maxStringLength","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","getIndent","noIndent","nameOf","arrObjKeys","symString","markBoxed","nodeName","isElement","xs","singleLineValues","indentedJoin","cause","mapParts","collectionOf","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isBigInt","ys","protoTag","stringTag","trailer","lowbyte","lineJoiner","symMap","keysShim","isArgs","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","keysWorksWithArguments","installedModules","__webpack_require__","moduleId","__webpack_exports__","partialComplete","compose2","lazyUnion","varArgs","flip","lazyIntersection","always","functor","__WEBPACK_IMPORTED_MODULE_0__lists__","numBoundArgs","callArgs","f1","f2","fnsList","curFn","startParams","maybeValue","numberOfFixedArguments","argsHolder","fn1","fn2","cons","arrayAsList","listAsArray","foldR","without","applyEach","reverseList","__WEBPACK_IMPORTED_MODULE_0__functional__","emptyList","inputArray","arraySoFar","listItem","startValue","removedFn","withoutInner","subList","fnList","reverseInner","reversedAlready","isOfType","defined","hasAllProperties","__WEBPACK_IMPORTED_MODULE_1__functional__","maybeSomething","fieldList","NODE_OPENED","NODE_CLOSED","NODE_SWAP","NODE_DROP","FAIL_EVENT","ROOT_NODE_FOUND","ROOT_PATH_FOUND","HTTP_START","STREAM_DATA","STREAM_END","ABORTING","SAX_KEY","SAX_VALUE_OPEN","SAX_VALUE_CLOSE","errorReport","jsonBody","namedNode","keyOf","nodeOf","oboe","__WEBPACK_IMPORTED_MODULE_2__util__","__WEBPACK_IMPORTED_MODULE_3__defaults__","__WEBPACK_IMPORTED_MODULE_4__wire__","nodeStreamMethodNames","drop","incrementalContentBuilder","ROOT_PATH","__WEBPACK_IMPORTED_MODULE_0__events__","__WEBPACK_IMPORTED_MODULE_1__ascent__","__WEBPACK_IMPORTED_MODULE_3__lists__","oboeBus","emitNodeOpened","emitNodeClosed","emitRootOpened","emitRootClosed","appendBuiltContent","ancestorBranches","keyFound","ascent","newDeepestName","maybeNewDeepestNode","ascentWithNewPath","contentBuilderHandlers","newDeepestNode","arrayConsistentAscent","possiblyInconsistentAscent","arrayIndicesAreKeys","previouslyUnmappedName","__WEBPACK_IMPORTED_MODULE_0__publicApi__","applyDefaults","__WEBPACK_IMPORTED_MODULE_0__util__","passthrough","httpMethodName","baseUrl","modifiedUrl","wire","__WEBPACK_IMPORTED_MODULE_0__pubSub__","__WEBPACK_IMPORTED_MODULE_1__ascentManager__","__WEBPACK_IMPORTED_MODULE_2__incrementalContentBuilder__","__WEBPACK_IMPORTED_MODULE_3__patternAdapter__","__WEBPACK_IMPORTED_MODULE_4__jsonPath__","__WEBPACK_IMPORTED_MODULE_5__instanceApi__","__WEBPACK_IMPORTED_MODULE_6__libs_clarinet__","__WEBPACK_IMPORTED_MODULE_7__streamingHttp_node__","contentSource","pubSub","__WEBPACK_IMPORTED_MODULE_0__singleEventPubSub__","singles","newSingle","pubSubInstance","singleEventPubSub","__WEBPACK_IMPORTED_MODULE_1__util__","__WEBPACK_IMPORTED_MODULE_2__functional__","eventType","listenerTupleList","listenerList","hasId","listenerId","un","removed","hasListener","ascentManager","__WEBPACK_IMPORTED_MODULE_0__ascent__","__WEBPACK_IMPORTED_MODULE_1__events__","__WEBPACK_IMPORTED_MODULE_2__lists__","stateAfter","oldHead","ancestors","patternAdapter","__WEBPACK_IMPORTED_MODULE_1__lists__","__WEBPACK_IMPORTED_MODULE_2__ascent__","jsonPathCompiler","predicateEventMap","addUnderlyingListener","fullEventName","predicateEvent","compiledJsonPath","emitMatch","maybeMatchingMapping","descent","emitMatchingNode","removedEventName","__WEBPACK_IMPORTED_MODULE_3__util__","__WEBPACK_IMPORTED_MODULE_4__incrementalContentBuilder__","__WEBPACK_IMPORTED_MODULE_5__jsonPathSyntax__","pathNodeSyntax","doubleDotSyntax","dotSyntax","bangSyntax","emptySyntax","headKey","headNode","capture","previousExpr","detection","skip1","rootExpr","generateClauseReaderIfTokenFound","tokenDetector","clauseEvaluatorGenerators","jsonPath","parserGeneratedSoFar","detected","compiledParser","exprs","expr","expressionsReader","clauseMatcher","clauseForJsonPath","fieldListStr","hasAllrequiredFields","isMatch","matchesName","terminalCaseWhenArrivingAtRoot","terminalCaseWhenPreviousExpressionIsSatisfied","recursiveCase","cases","lastClause","exprMatch","returnFoundParser","_remainingJsonPath","compileJsonPathToFunction","uncompiledJsonPath","jsonPathSyntax","jsonPathClause","componentRegexes","possiblyCapturing","optionalFieldList","jsonPathNamedNodeInObjectNotation","jsonPathNamedNodeInArrayNotation","jsonPathNumberedNodeInArrayNotation","jsonPathPureDuckTyping","jsonPathDoubleDot","jsonPathDot","jsonPathBang","emptyString","instanceApi","__WEBPACK_IMPORTED_MODULE_3__publicApi__","oboeApi","fullyQualifiedNamePattern","rootNodeFinishedEvent","emitNodeDrop","emitNodeSwap","addForgettableCallback","wrapCallbackToSwapNodeIfSomethingReturned","safeCallback","protectedCallback","discard","forget","returnValueFromCallback","addSingleNodeOrPathListener","effectiveCallback","fullyQualifiedPatternMatchEvent","addNodeOrPathListenerApi","jsonPathOrListenerMap","listenerMap","addMultipleNodeOrPathListeners","rootNode","_statusCode","p3","clarinet","eventBus","latestError","textNode","emitSaxKey","emitValueOpen","emitValueClose","emitFail","MAX_BUFFER_LENGTH","stringTokenPattern","BEGIN","VALUE","OPEN_OBJECT","CLOSE_OBJECT","OPEN_ARRAY","CLOSE_ARRAY","STRING","OPEN_KEY","CLOSE_KEY","TRUE","TRUE2","TRUE3","FALSE","FALSE2","FALSE3","FALSE4","NULL","NULL2","NULL3","NUMBER_DECIMAL_POINT","bufferCheckPosition","numberNode","slashed","closed","unicodeS","unicodeI","column","emitError","errorString","whitespace","starti","STRING_BIGLOOP","reResult","maxActual","checkBufferLength","httpTransport","streamingHttp","__WEBPACK_IMPORTED_MODULE_0__detectCrossOrigin_browser__","__WEBPACK_IMPORTED_MODULE_3__parseResponseHeaders_browser__","__WEBPACK_IMPORTED_MODULE_4__functional__","xhr","emitStreamData","numberOfCharsAlreadyGivenToCallback","stillToSendStartEvent","handleProgress","textSoFar","newText","sendStartIfNotAlready","onprogress","headerName","isCrossOrigin","pageLocation","ajaxHost","portOf","parseUrlOrigin","urlHostMatch","parseResponseHeaders","headerStr","headerPair","wrappy","called","onceStrict","onceError","certificate","RSAPrivateKey","seq","RSAPublicKey","AlgorithmIdentifier","bitstr","null_","PrivateKeyInfo","octstr","PrivateKey","EncryptedPrivateKeyInfo","EncryptedPrivateKey","DSAPrivateKey","DSAparam","ECPrivateKey","ECParameters","namedCurve","asn","Time","utcTime","utctime","generalTime","gentime","AttributeTypeValue","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","TBSCertificate","X509Certificate","findProc","startRegex","fullRegex","evp","okey","cipherKey","match2","aesid","fixProc","compat","passphrase","subtype","ndata","stripped","tbsCertificate","subjectPublicKeyInfo","subjectPublicKey","kde","kdeparams","iters","keylen","headersArr","ZERO_BUF","checkParameters","defaultEncoding","toBrowser","checks","getNextTick","queueMicrotask","browserPbkdf2","iterations","deriveBits","checkNative","MAX_ALLOC","sizes","rmd160","saltLen","shaFunc","rmd160Func","getDigest","ipad1","ipad2","DK","block1","destPos","hLen","U","vnodeId","__","__b","__e","__d","__h","renderResult","reorderChildren","placeChild","eventProxyCapture","renderHook","contextId","__c","contextValue","errorInfo","handled","previousComponent","oldBeforeDiff","_reducer","_pendingArgs","_pendingValue","hookItem","HAS_RAF","hasErrored","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","argv","cwd","chdir","umask","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","propName","componentName","propFullName","getShim","isRequired","ReactPropTypes","bigint","arrayOf","elementType","instanceOf","objectOf","oneOfType","shape","exact","checkPropTypes","PropTypes","i2ops","mgf","withPublic","zBuffer","iHash","maskedSeed","maskedDb","db","dif","oaep","ps","pkcs1","paddedMsg","hLen2","dblen","nonZero","fs","ancient","isFn","destroyer","reading","writing","ReadStream","WriteStream","isFS","streams","destroys","encodeUtf8","strictUriEncode","decodeComponent","splitOnFirst","validateArrayFormatSeparator","keysSorter","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","parseBooleans","arrayFormatSeparator","parserForArrayFormat","skipNull","skipEmptyString","encoderForArrayFormat","objectCopy","parseUrl","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","qs","sep","regexp","maxKeys","kstr","vstr","stringifyPrimitive","ks","MAX_BYTES","MAX_UINT32","generated","oldBrowser","safeBuffer","kBufferMaxLength","kMaxUint32","assertOffset","actualFill","ourBuf","ca","ea","fa","ha","ia","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","xlinkHref","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","Pa","Qa","_payload","Ra","Sa","Va","_valueTracker","setValue","stopTracking","Ua","Wa","Xa","activeElement","Ya","defaultChecked","_wrapperState","initialChecked","Za","controlled","ownerDocument","eb","fb","defaultSelected","gb","hb","ib","kb","lb","mb","nb","namespaceURI","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","sb","tb","menuitem","area","br","embed","hr","img","keygen","wbr","ub","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Vb","alternate","Wb","memoizedState","dehydrated","Xb","Zb","Yb","$b","ac","unstable_scheduleCallback","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","pc","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","pointerId","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","Zc","$c","ad","bd","ReactCurrentBatchConfig","ed","transition","gd","hd","Uc","jd","kd","ld","nd","od","keyCode","charCode","pd","qd","_reactName","_targetInst","currentTarget","returnValue","cancelBubble","isPersistent","wd","xd","yd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","ud","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","locale","which","Rd","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","fe","ge","he","le","datetime","month","tel","week","me","oe","pe","qe","se","te","ue","ve","we","ze","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","compareDocumentPosition","Me","HTMLIFrameElement","Ne","contentEditable","Oe","focusedElem","selectionRange","selectionStart","selectionEnd","defaultView","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","setStart","setEnd","scrollLeft","scrollTop","focus","Pe","Qe","Re","Se","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","cf","df","ef","ff","lf","mf","nf","Ub","pf","qf","sf","passive","tf","uf","parentWindow","vf","wf","na","xa","$a","je","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","Jf","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Uf","Vf","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","effects","eventTime","lane","ih","jh","kh","isMounted","_reactInternals","enqueueSetState","lh","enqueueReplaceState","enqueueForceUpdate","oh","updater","qh","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillMount","_owner","_stringRef","uh","vh","Fh","Gh","Hh","Ih","tagName","Jh","Lh","Mh","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","baseQueue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","gi","ji","ki","getSnapshot","li","mi","lastEffect","stores","oi","pi","qi","ri","si","ti","vi","wi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useInsertionEffect","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","Li","Mi","Ni","Oi","Qi","Ri","Si","componentStack","Ti","pingCache","Ui","Wi","Xi","ReactCurrentOwner","Yi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","kj","lj","pendingContext","mj","Aj","Cj","Dj","nj","oj","pj","rj","tj","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tailMode","yj","Ej","Fj","Gj","wasMultiple","suppressHydrationWarning","onclick","autoFocus","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","_reactRootContainer","Xj","Yj","Zj","ak","onCommitFiberUnmount","bk","dk","ek","fk","isHidden","gk","hk","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","nk","qk","rk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","pendingChildren","mutableSourceEagerHydrationData","pendingSuspenseBoundaries","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unstable_scheduleHydration","usingClientEntryPoint","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","isDisabled","supportsFiber","inject","createRoot","unstable_strictMode","flushSync","hydrateRoot","hydratedSources","_getVersion","_source","unstable_renderSubtreeIntoContainer","checkDCE","_goober","as","ActionType","resolveValue","valOrFunction","genId","prefersReducedMotion","shouldReduceMotion","mediaQuery","matchMedia","toastTimeouts","addToRemoveQueue","toastId","REMOVE_TOAST","ADD_TOAST","toasts","UPDATE_TOAST","clearFromRemoveQueue","UPSERT_TOAST","DISMISS_TOAST","visible","START_PAUSE","pausedAt","END_PAUSE","pauseDuration","memoryState","defaultTimeouts","blank","createHandler","createdAt","ariaProps","role","createToast","dismiss","msgs","useToaster","toastOptions","mergedToasts","_toastOptions$t$type","_toastOptions","_toastOptions$t$type2","useStore","durationLeft","startPause","endPause","updateHeight","calculateOffset","reverseOrder","_ref$reverseOrder","gutter","_ref$gutter","defaultPosition","relevantToasts","toastIndex","toastsBefore","circleAnimation","keyframes","firstLineAnimation","secondLineAnimation","ErrorIcon","styled","secondary","rotate","LoaderIcon","checkmarkAnimation","CheckmarkIcon","StatusWrapper","IndicatorWrapper","enter","AnimatedIconWrapper","ToastIcon","iconTheme","enterAnimation","factor","exitAnimation","ToastBarBase","ToastBar","animationStyle","exit","getAnimationStyle","setup","activeClass","css","Toaster","_ref$position","containerStyle","containerClassName","bottom","pointerEvents","onMouseEnter","onMouseLeave","onRect","toastPosition","positionStyle","verticalStyle","horizontalStyle","justifyContent","getPositionStyle","rect","boundingRect","getBoundingClientRect","__self","__source","jsx","jsxs","_status","Profiler","StrictMode","_currentValue2","_threadCount","_globalName","startTransition","unstable_act","Readable","allowHalfOpen","onEndNT","highWaterMark","getBuffer","PassThrough","ReadableState","EElistenerCount","Stream","OurUint8Array","debugUtil","debuglog","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","readableObjectMode","pipes","pipesCount","flowing","endEmitted","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","awaitDrain","readingMore","readableAddChunk","addToFront","skipChunkCheck","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","_undestroy","undestroy","isPaused","setEncoding","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","finished","nOrig","doRead","pipeOpts","endFn","stdout","unpipe","onunpipe","unpipeInfo","hasUnpiped","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","pause","dests","ev","_fromList","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","_transformState","transforming","writecb","writechunk","needTransform","writeencoding","prefinish","err2","CorkedRequest","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","WritableState","internalUtil","deprecate","realHasInstance","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","doWrite","onwriteDrain","allBuffers","isBuf","callFinal","need","rState","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","setDefaultEncoding","endWritable","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","lastPromise","wrapForNext","_this2","_Object$create","hasStrings","_getString","_getBuffer","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","writableEnded","readableEnded","popCallback","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","utf8CheckExtraBytes","utf8CheckIncomplete","pipeline","reduceFunctionCall","mexp","NESTED_CALC_RE","decimalPrecision","evaluateExpression","expression","functionIdentifier","evaluatedPart","nonEvaluatedPart","balancedExpr","evaluated","evaluateNestedExpression","uniqueUnits","uniqueLowerCaseUnits","unitRegEx","getUnitsInExpression","percent","toEvaluate","functionRE","expressions","fnRE","searchMatch","startIndex","getFunctionCalls","evalFunctionCall","zr","sr","fn3","fn4","fn5","ar","cr","dr","tr","safeParseInt","hexLength","llength","innerRemainder","totalLength","integer","inputBuf","_createClass2","_classCallCheck2","_inherits2","_possibleConstructorReturn2","_getPrototypeOf2","_websocket","_createSuper","_isNativeReflectConstruct","Client","_CommonClient","_ref$autoconnect","_ref$reconnect","reconnect","_ref$reconnect_interv","reconnect_interval","_ref$max_reconnects","generate_request_id","_regenerator","_asyncToGenerator2","_typeof2","_eventemitter","__rest","CommonClient","_EventEmitter","webSocketFactory","_a$autoconnect","_a$reconnect","_a$reconnect_interval","_a$max_reconnects","rest_options","rpc_id","ready","current_reconnects","_connect","socket","ws_opts","_login","_callee","_x","_listMethods","_callee2","_context2","_this3","_subscribe","_callee3","_context3","_x2","_unsubscribe","_callee4","_context4","_x3","_this4","_ref2","WebSocketBrowserImpl","protocols","optionsOrCallback","AnimationFrameAction","scheduler","work","requestAsyncId","AsyncAction","AnimationFrameScheduler","actions","AsyncScheduler","animationFrameScheduler","VirtualTimeScheduler","SchedulerAction","maxFrames","frame","VirtualAction","schedule","recycleAsyncId","isObservable","bindCallback","callbackFunc","resultSelector","isScheduler","subject","AsyncSubject","innerArgs","canReportError","dispatchNext","bindNodeCallback","dispatchError","first_1","forkJoinInternal","_loop_1","hasValue","emitted","setupSubscription","isEventTarget","isJQueryStyleEventEmitter","isNodeStyleEventEmitter","fromEventPattern","addHandler","removeHandler","retValue","initialStateOrOptions","iterate","resultSelectorOrObservable","conditionResult","trueResult","period","partition","subscribeTo","using","resourceFactory","observableFactory","resource","EMPTY","thrownError","hasCompleted","hasNext","NotificationKind","observe","observer","do","accept","nextOrObserver","toObservable","_isScalar","lift","observable","sink","Subscriber","syncErrorThrowable","syncErrorThrown","promiseCtor","Symbol_observable","operations","toPromise","getPromiseCtor","hostReportError","OuterSubscriber","notifyNext","notifyError","notifyComplete","bufferSize","windowTime","nextInfiniteTimeWindow","nextTimeWindow","_getNow","_infiniteTimeWindow","SubjectSubscription","_trimBufferThenGetEvents","_bufferSize","_windowTime","spliceCount","eventsCount","ReplayEvent","SubjectSubscriber","destination","rxSubscriberSymbol","AnonymousSubject","observers","isStopped","_trySubscribe","subscriberIndex","destinationOrNext","emptyObserver","_complete","_parentOrParents","SafeSubscriber","_parentSubscriber","observerOrNext","useDeprecatedSynchronousErrorHandling","__tryOrSetError","__tryOrUnsub","syncErrorValue","wrappedComplete","_subscriptions","_ctorUnsubscribe","parent_1","UnsubscriptionError","teardown","subscriptionIndex","flattenUnsubscriptionErrors","_enable_super_gross_mode_that_will_cause_bad_things","SimpleInnerSubscriber","SimpleOuterSubscriber","innerSubscribe","innerSubscriber","ConnectableObservable","subjectFactory","getSubject","_subject","_connection","refCount","connectableObservableDescriptor","_refCount","connectableProto","_isComplete","ConnectableSubscriber","connectable","observables","CombineLatestOperator","CombineLatestSubscriber","NONE","toRespond","oldVal","innerValue","concurrent","RaceOperator","RaceSubscriber","hasFirst","outerIndex","dueTime","periodOrScheduler","ZipOperator","ZipSubscriber","iterators","StaticArrayIterator","StaticIterator","notifyInactive","checkIterators","shouldComplete","_tryresultSelector","ZipBufferIterator","concatAll","FilterOperator","FilterSubscriber","groupBy","keySelector","elementSelector","durationSelector","subjectSelector","GroupByOperator","GroupBySubscriber","_group","groups","groupedObservable","removeGroup","attemptedToUnsubscribe","GroupDurationSubscriber","GroupedObservable","refCountSubscription","groupSubject","InnerRefCountSubscription","project","MapOperator","MapSubscriber","MergeMapOperator","MergeMapSubscriber","_tryNext","_innerSub","innerSubscription","ObserveOnOperator","ObserveOnSubscriber","scheduleMessage","RefCountOperator","refCounter","RefCountSubscriber","sharedConnection","scheduleArray","scheduled","isInteropObservable","Symbol_iterator","execute","_execute","errored","errorValue","Action","Scheduler","nextHandle","RESOLVED","findAndClearHandle","activeHandles","AsapAction","Immediate","AsapScheduler","asapScheduler","asyncScheduler","QueueAction","QueueScheduler","queueScheduler","getSymbolIterator","ArgumentOutOfRangeErrorImpl","EmptyErrorImpl","ObjectUnsubscribedErrorImpl","TimeoutErrorImpl","UnsubscriptionErrorImpl","closed_1","not","pred","notPred","pipeFromArray","subscribeToArray","InnerSubscriber","outerValue","audit","AuditOperator","AuditSubscriber","throttled","clearThrottle","closingNotifier","BufferOperator","BufferSubscriber","startBufferEvery","BufferCountOperator","BufferCountSubscriber","BufferSkipCountSubscriber","buffers","bufferTime","bufferTimeSpan","bufferCreationInterval","maxBufferSize","BufferTimeOperator","BufferTimeSubscriber","closeState","dispatchBufferClose","contexts","context_1","filledBufferContext","onBufferFull","closeContext","closeAction","timeSpanOnlyState","openContext","dispatchBufferTimeSpanOnly","prevContext","dispatchBufferCreation","bufferToggle","openings","closingSelector","BufferToggleOperator","BufferToggleSubscriber","context_2","closeBuffer","trySubscribe","subscribeToResult","bufferWhen","BufferWhenOperator","BufferWhenSubscriber","subscribing","closingSubscription","selector","CatchOperator","CatchSubscriber","_unsubscribeAndRecycle","combineAll","concatMap","concatMapTo","innerObservable","CountOperator","CountSubscriber","debounce","DebounceOperator","DebounceSubscriber","emitValue","DebounceTimeOperator","DebounceTimeSubscriber","clearDebounce","debouncedNext","lastValue","debouncedSubscription","DefaultIfEmptyOperator","DefaultIfEmptySubscriber","DelayOperator","DelaySubscriber","delay_1","_schedule","DelayMessage","scheduleNotification","delayWhen","delayDurationSelector","subscriptionDelay","SubscriptionDelayObservable","DelayWhenOperator","DelayWhenSubscriber","removeSubscription","innerSub","delayNotifier","tryComplete","subscriptionIdx","delayNotifierSubscriptions","tryDelay","notifierSubscription","SubscriptionDelaySubscriber","subscribeToSource","sourceSubscribed","dematerialize","DeMaterializeOperator","DeMaterializeSubscriber","distinct","flushes","DistinctOperator","DistinctSubscriber","_finalizeNext","DistinctUntilChangedOperator","DistinctUntilChangedSubscriber","distinctUntilKeyChanged","errorFactory","defaultErrorFactory","ThrowIfEmptyOperator","ThrowIfEmptySubscriber","TakeOperator","TakeSubscriber","elementAt","hasDefaultValue","defaultIfEmpty","EveryOperator","EverySubscriber","everyValueMatch","exhaust","SwitchFirstOperator","SwitchFirstSubscriber","hasSubscription","exhaustMap","ExhaustMapOperator","ExhaustMapSubscriber","ExpandOperator","ExpandSubscriber","subscribeToProjection","FinallyOperator","FinallySubscriber","FindValueOperator","FindValueSubscriber","yieldIndex","ignoreElements","IgnoreElementsOperator","IgnoreElementsSubscriber","IsEmptyOperator","IsEmptySubscriber","takeLast","TakeLastOperator","TakeLastSubscriber","ring","mapTo","MapToOperator","MapToSubscriber","materialize","MaterializeOperator","MaterializeSubscriber","scan","hasSeed","ScanOperator","ScanSubscriber","_seed","MergeScanOperator","MergeScanSubscriber","ish","multicast","subjectOrSubjectFactory","MulticastOperator","nextSources","OnErrorResumeNextOperator","OnErrorResumeNextSubscriber","subscribeToNextSource","pairwise","PairwiseOperator","PairwiseSubscriber","hasPrev","plucker","currentProp","publish","publishBehavior","publishLast","publishReplay","selectorOrScheduler","RepeatOperator","RepeatSubscriber","repeatWhen","notifier","RepeatWhenOperator","RepeatWhenSubscriber","sourceIsBeingSubscribedTo","retries","retriesSubscription","notifications","subscribeToRetries","RetryOperator","RetrySubscriber","retryWhen","RetryWhenOperator","RetryWhenSubscriber","sample","SampleOperator","sampleSubscriber","SampleSubscriber","SampleTimeOperator","SampleTimeSubscriber","dispatchNotification","sequenceEqual","compareTo","comparator","SequenceEqualOperator","SequenceEqualSubscriber","_oneComplete","checkValues","areEqual","nextB","completeB","SequenceEqualCompareToSubscriber","shareSubjectFactory","share","shareReplay","configOrBufferSize","shareReplayOperator","useRefCount","single","SingleOperator","SingleSubscriber","applySingleValue","seenValue","SkipOperator","SkipSubscriber","skipLast","SkipLastOperator","_skipCount","SkipLastSubscriber","_count","skipCount","_ring","skipUntil","SkipUntilOperator","SkipUntilSubscriber","skipWhile","SkipWhileOperator","SkipWhileSubscriber","skipping","SubscribeOnObservable","delayTime","asap","SubscribeOnOperator","SwitchMapOperator","SwitchMapSubscriber","switchAll","switchMapTo","takeUntil","TakeUntilOperator","takeUntilSubscriber","TakeUntilSubscriber","inclusive","TakeWhileOperator","TakeWhileSubscriber","nextOrComplete","DoOperator","TapSubscriber","_tapComplete","_tapError","_tapNext","defaultThrottleConfig","leading","trailing","ThrottleOperator","ThrottleSubscriber","_leading","_hasValue","_sendValue","throttle","_throttled","_trailing","throttlingDone","ThrottleTimeOperator","ThrottleTimeSubscriber","_trailingValue","_hasTrailingValue","TimeInterval","interval","TimeoutWithOperator","withObservable","waitFor","TimeoutWithSubscriber","scheduleTimeout","toArrayReducer","windowBoundaries","WindowOperator","windowSubscriber","WindowSubscriber","sourceSubscription","openWindow","prevWindow","startWindowEvery","WindowCountOperator","windowSize","WindowCountSubscriber","windows","windowTimeSpan","windowCreationInterval","maxWindowSize","POSITIVE_INFINITY","WindowTimeOperator","CountedSubject","WindowTimeSubscriber","dispatchWindowClose","window_1","window_2","closeWindow","dispatchWindowTimeSpanOnly","dispatchWindowCreation","timeSpanState","windowToggle","WindowToggleOperator","WindowToggleSubscriber","context_3","context_4","windowWhen","closingNotification","WithLatestFromOperator","WithLatestFromSubscriber","zipAll","extendStatics","copyProps","SafeBuffer","safer","Safer","kStringMaxLength","MAX_LENGTH","MAX_STRING_LENGTH","sortIndex","performance","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","MAX_VALUE","bytesLeft","bitLenHi","bitLenLo","numZeros","PBKDF2_HMAC_SHA256_OneIter","dkLen","innerLen","outerKey","incrementCounter","blockmix_salsa8","BY","_X","arraycopy","blockxor","salsa20_8","srcPos","checkBufferish","ensureInteger","_scrypt","i1","XY","totalOps","currentOp","lastPercent10","i0","incrementalSMix","steps","percent10","derivedKey","lib","scrypt","progressCallback","lastProgress","progress","syncScrypt","loadPublicKey","xbuf","loadCompressedPublicKey","ybuf","loadUncompressedPublicKey","savePublicKey","contextRandomize","seckey","tweaked","publicKeyNegate","pubkeys","sigR","sigS","lenR","posR","lenS","posS","outputlen","_noncefn","msg32","sigr","sigs","cond","isUint8Array","numbers","isCompressed","toTypeString","getAssertedOutput","semaphore","firstHere","isFirst","leave","available","finalSize","_finalSize","assigned","lowBits","highBits","Algorithm","Sha","_w","rotl30","ft","Sha1","rotl5","Sha224","_f","_g","_h","sigma0","sigma1","gamma0","Sha384","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","writeInt64BE","Sha512","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","$wm","$m","$o","channel","listGet","listHas","listSet","separator","separatorIndex","_isStdio","didOnEnd","ClientRequest","statusCodes","defaultProtocol","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","getXHR","XDomainRequest","checkTypeSupport","ReadableStream","writableStream","WritableStream","abortController","AbortController","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","rStates","readyStates","preferBinary","_opts","_body","_headers","useFetch","decideMode","_fetchTimer","_socketTimeout","_socketTimer","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","_destroyed","headersObj","headersList","keyName","controller","_fetchAbortController","requestTimeout","credentials","_fetchResponse","_resetTimers","_xhr","_response","LOADING","DONE","_onXHRProgress","statusValid","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","resetTimers","rawHeaders","trailers","rawTrailers","statusMessage","_resumeFetch","pipeTo","getReader","_pos","_charset","mimeType","charsetMatch","MSStreamReader","readAsArrayBuffer","isBufferEncoding","assertEncoding","surrogateSize","detectIncompleteChar","utf16DetectIncompleteChar","base64DetectIncompleteChar","passThroughWrite","charBuffer","charReceived","charLength","charStr","unavailable","readFile","files","safeDownloadArchived","directoryTree","arch","child_process","spawn","mimetype","defaultArchives","downloadUrl","picker","fileInput","fileLoader","directory","totalFiles","loadedFiles","file","webkitRelativePath","_path","webkitdirectory","mozdirectory","msdirectory","odirectory","mouseEvent","initEvent","swarmHashBlock","lengthEncoded","maxSize","innerNodes","toMap","rawUrl","swarmUrl","downloadData","downloadEntries","routes","downloadEntry","impureInsert","downloadRoutes","route","downloadDirectory","paths","hashs","datas","downloadDataToDisk","filePath","downloadDirectoryToDisk","dirPath","routingTable","downloads","uploadData","uploadToManifest","slashRoute","uploadFile","uploadDirectory","uploadFileFromDisk","uploadRoute","uploadDataFromDisk","uploadDirectoryFromDisk","defaultPath","fullPaths","_upload","defaultFile","_download","isDirectory","isDir","downloadBinary","archives","system","archive","archiveUrl","archiveMD5","binaryMD5","startProcess","swarmSetup","hasString","dataDir","ensApi","swarmProcess","binPath","handleProcessOutput","stdin","stopProcess","kill","killTimeout","_isAvailable","uncurry","uint8Array","isAvailable","useAPI","onData","onProgress","pna","readableHwm","readableHighWaterMark","defaultHwm","needMoreData","copyFromBufferString","copyFromBuffer","fromListPartial","increasedAwaitDrain","asyncWrite","writableHwm","writableHighWaterMark","xtend","DestroyableTransform","through2","Through2","ranges","getRangeAt","blur","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","_arguments","verb","__spread","__asyncGenerator","fulfill","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","__classPrivateFieldGet","__classPrivateFieldSet","__classPrivateFieldIn","ucs2encode","Url","slashes","urlParse","resolveObject","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","esc","qm","tkeys","tkey","rkeys","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","up","isAbsolute","checkScalarValue","createByte","encodeCodePoint","readContinuationByte","continuationByte","decodeSymbol","byte1","byteString","isArgumentsObject","whichTypedArray","BigIntSupported","SymbolSupported","ObjectToString","numberValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","working","isDataViewToString","isDataView","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isBigInt64Array","isBigUint64Array","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","formatRegExp","noDeprecation","throwDeprecation","traceDeprecation","debugs","debugEnvRegex","NODE_DEBUG","debugEnv","stylize","stylizeNoColor","_extend","stylizeWithColor","formatValue","styleType","styles","simple","formatPrimitive","visibleKeys","arrayToHash","formatError","braces","toUTCString","formatProperty","formatArray","numLinesEst","reduceToSingleString","pid","months","getHours","getMinutes","getSeconds","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","rnds8","REGEX","byteToHex","rnds","oldOffset","INT","N1","N2","N3","N4","N5","N6","N7","N8","N9","Bzz","givenProvider","_requestManager","setProvider","ethereum","bzz","noProviderError","InvalidNumberOfParams","got","InvalidConnection","ConnectionError","InvalidProvider","InvalidResponse","ConnectionTimeout","ConnectionNotOpenError","ConnectionCloseError","MaxAttemptsReachedOnReconnectingError","PendingRequestsOnReconnectingError","RevertInstructionError","TransactionRevertInstructionError","receipt","TransactionError","NoContractAddressFoundError","ContractCodeNotStoredError","TransactionRevertedWithoutReasonError","TransactionOutOfGasError","ResolverMethodMissingError","ContractMissingABIError","ContractOnceRequiresCallbackError","ContractEventDoesNotExistError","ContractReservedEventError","ContractMissingDeployDataError","ContractNoAddressDefinedError","ContractNoFromAddressDefinedError","Iban","outputBigNumberFormatter","inputBlockNumberFormatter","isPredefinedBlockNumber","isHexStrict","numberToHex","_txInputFormatter","inputAddressFormatter","isHex","outputTransactionFormatter","hexToNumber","transactionIndex","outputLogFormatter","transactionHash","logIndex","shaId","iban","isDirect","inputDefaultBlockNumberFormatter","defaultBlock","inputCallFormatter","defaultAccount","inputTransactionFormatter","inputPostFormatter","ttl","workToProve","inputLogFormatter","toTopic","inputSignFormatter","utf8ToHex","inputStorageKeysFormatter","outputProofFormatter","proof","hexToNumberString","outputTransactionReceiptFormatter","cumulativeGasUsed","effectiveGasPrice","outputBlockFormatter","totalDifficulty","baseFeePerGas","outputPostFormatter","expiry","workProved","outputSyncingFormatter","startingBlock","knownStates","pulledStates","promiEvent","Subscriptions","EthersTransactionUtils","Method","inputFormatter","outputFormatter","transformPayload","extraFormatters","abiCoder","requestManager","transactionBlockTimeout","transactionConfirmationBlocks","transactionPollingTimeout","transactionPollingInterval","blockHeaderTimeout","defaultCommon","defaultChain","handleRevert","setRequestManager","createFunction","buildCall","attachToObject","getCall","extractCallback","validateArgs","formatInput","formatOutput","toPayload","_confirmTransaction","promiseResolved","canUnsubscribe","timeoutCount","confirmationCount","intervalId","blockHeaderTimeoutId","lastBlock","gasProvided","isContractDeployment","hasBytecode","_ethereumCalls","_ethereumCall","mthd","checkConfirmation","existingReceipt","isPolling","blockHeader","_fireError","eventEmitter","receiptFormatter","latestBlockHash","contractDeployFormatter","outOfGas","revertMessage","txReplayOptions","rawTransactionHex","parsedTx","getRevertReason","startWatching","blockHeaderArrived","startInterval","getWallet","wallet","_handleTxPricing","getGasPrice","isSendTx","isCall","sendTxCallback","reasonData","isRevertReasonString","decodeParameter","sendSignedTx","signedPayload","signTransaction","txPricing","PromiEvent","justPromise","Jsonrpc","Batch","sortResponses","_sortResponses","sendBatch","isValidResponse","web3","BatchManager","RequestManager","net","providers","WebsocketProvider","HttpProvider","IpcProvider","clearSubscriptions","deprecatedResult","resubscribe","_isCleanCloseEvent","_isIpcCloseError","jsonrpcPayload","jsonrpcResultCallback","_jsonrpcResultCallback","callbackRequest","toBatchPayload","addSubscription","keepIsSyncing","wasClean","Manager","messageId","validateSingleMessage","messages","_extractCallback","_validateArgs","_formatInput","_formatOutput","_toPayload","subscriptionMethod","err1","blockParams","resultItem","subscriptionHandler","pckg","extendedObject","packageInit","pkg","manager","BatchRequest","addProviders","EthersAbiCoder","ethersAbiCoder","Result","ABICoder","encodeFunctionSignature","_jsonInterfaceMethodToString","encodeEventSignature","encodeParameter","encodeParameters","mapTypes","formatParam","modifyParams","mappedTypes","isSimplifiedStructFormat","structName","mapStructNameAndType","mapStructToCoderFormat","paramTypeBytesArray","paramTypeNumberArray","leftPad","rightPad","encodeFunctionCall","jsonInterface","inputs","decodeParameters","outputs","decodeParametersWith","__length__","decodedValue","decodeLog","notIndexedInputs","indexedParams","topicCount","staticType","nonIndexedData","notIndexedParams","core","cryp","HardForks","ethereumjsUtil","isNot","isExist","Accounts","Wallet","_accounts","defaultKeyName","_addAccountFunctions","randomHex","privateKeyToAccount","ignoreLength","transactionOptions","hasTxSigningOptions","customChain","_validateTransactionForSigning","London","signedTx","validationErrors","validationError","hasEip1559","_handleTxType","getNetworkId","txchainId","txnonce","txnetworkId","txgasInfo","recoverTransaction","rawTx","messageHex","messageBytes","hexToBytes","messageBuffer","preamble","preambleBuffer","ethMessage","preFixed","v3Keystore","nonStrict","kdfparams","kdf","dklen","prf","cipherparams","v4","_findSafeIndex","pointer","_currentIndexes","numberOfAccounts","addressOrIndex","encryptedWallet","keystore","storageAvailable","bth","_nodeId","_clockseq","bytesToUuid","_lastMSecs","_lastNSecs","clockseq","seedBytes","msecs","nsecs","dt","tmh","Contract","lastArg","_getOrSetDefaultOptions","_address","_jsonInterface","funcName","stateMutability","payable","_createTxObject","cascadeFunc","nextMethod","_on","allEvents","_ethAccounts","_getCallback","_checkListener","_encodeEventABI","anonymous","indexedTopics","_decodeEventABI","intf","indexedInputs","argTopics","returnValues","_encodeMethodABI","methodSignature","_method","paramsABI","_deployData","_decodeMethodReturn","deploy","deployData","_generateEventOptions","subOptions","getPastEvents","getPastLogs","txObject","_executeMethod","encodeABI","createAccessList","_processExecuteArguments","processedArgs","ethAccounts","newContract","Registry","ResolverMethodHandler","contenthash","ENS","registryAddress","_detectedAddress","_lastSyncCheck","supportsInterface","interfaceId","getResolver","setResolver","txConfig","setRecord","setSubnodeRecord","setApprovalForAll","approved","isApprovedForAll","recordExists","setSubnodeOwner","getTTL","setTTL","getOwner","setOwner","resolverMethodHandler","setAddress","getPubkey","setPubkey","getContent","setContent","getContenthash","setContenthash","getMultihash","setMultihash","checkNetwork","headAge","getNetworkType","networkType","main","interfaceIds","setAddr","namehash","REGISTRY_ABI","RESOLVER_ABI","ens","contract","ensName","methodArguments","preparedArguments","prepareArguments","checkInterfaceSupport","handleCall","handleSend","confirmationNumber","supported","protocolType","iso13616Prepare","mod9710","_iban","isIndirect","base36","asBn","fromBban","bban","countryCode","institution","Net","Personal","getId","givenId","BaseContract","blockCall","transactionFromBlockCall","uncleCall","getBlockTransactionCountCall","uncleCountCall","Eth","personal","maxListenersWarningThreshold","removeSubscriptionById","_isSyncing","_isSyncingTimeout","EthBlockTracker","eachSeries","Stoplight","createPayload","Web3ProviderEngine","directProvider","_handleAsync","blockTrackerProvider","_blockTracker","_ready","_providers","toBufferBlock","jsonBlock","receiptRoot","go","_getBlockByNumberWithRetry","bufferBlock","_running","isRunning","addProvider","setEngine","removeProvider","await","retriesRemaining","attemptRequest","_getBlockByNumber","afterRequest","resultObj","ProviderSubprovider","createBlockCacheMiddleware","BlockCacheSubprovider","SubscriptionsSubprovider","Subprovider","FixtureProvider","staticResponses","staticResponse","waterfall","parallel","sigUtil","hexRegex","HookedWalletSubprovider","nonceLock","getAccounts","processTransaction","processMessage","processPersonalMessage","processTypedMessage","approveTransaction","autoApprove","approveMessage","approvePersonalMessage","approveDecryptMessage","approveEncryptionPublicKey","approveTypedMessage","mustProvideInConstructor","signMessage","signPersonalMessage","decryptMessage","encryptionPublicKey","signTypedMessage","publishTransaction","resemblesAddress","fixed","resemblesData","isValidHex","txParams","extraParams","_parityRequests","_parityRequestCount","validateTransaction","processSignTransaction","validateMessage","validatePersonalMessage","validateDecryptMessage","processDecryptMessage","validateEncryptionPublicKey","processEncryptionPublicKey","validateTypedMessage","parityPostTransaction","parityPostSign","requestId","parityCheckRequest","didApprove","checkApproval","finalizeAndSubmitTx","finalizeTx","emitPayload","senderHex","validateSender","senderIsValid","senderAddress","fillInTxExtras","cloneTxParams","taskResults","JsonRpcEngineMiddlewareSubprovider","constructorFn","_constructorFn","provEngNext","provEngEnd","NonceTrackerSubprovider","nonceCache","cachedResult","hexNonce","SubProvider","getRandomId","includeBlockRef","XHR2","keepAlive","httpsAgent","httpAgent","_prepareRequest","agents","nodejsSet","supportsSubscriptions","responseCallbacks","notificationCallbacks","addDefaultEvents","_timeout","lastChunk","lastChunkTimeout","_addResponseCallback","isRN","_btoa","newURL","parseURL","Ws","_customTimeout","reconnectOptions","auto","maxAttempts","onTimeout","clientConfig","requestOptions","DATA","CLOSE","CONNECT","RECONNECT","requestQueue","responseQueue","reconnectAttempts","reconnecting","parsedURL","authorization","OPEN","_addSocketListeners","_onConnect","_onClose","_removeSocketListeners","Shh","ethjsUnit","soliditySha3","_flattenTypes","includeTuple","puts","arrayBracket","hexToAscii","asciiToHex","getUnitValue","optionalData","sha3Raw","soliditySha3Raw","encodePacked","checkAddressChecksum","toDecimal","fromDecimal","hexToUtf8","hexToString","stringToHex","toTwosComplement","compareBlockNumbers","bnA","bnB","_parseNumber","_solidityPack","_elementaryName","typesize","_parseTypeN","_processSolidityEncodePackedArgs","_parseTypeNArray","hexArgs","ethereumBloomFilters","returnType","_Hash","BNwrapped","toLocaleLowerCase","Web3","shh","ns","themesList","reactIs","REACT_STATICS","getDefaultProps","mixins","propTypes","KNOWN_STATICS","caller","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","reactPropsRegex","checkInjectedProviders","injectedAvailable","verifyInjectedProvider","check","OPERA","FALLBACK","getInjectedProvider","injectedProviders","getProviderInfoFromChecksArray","filterProviders","filterProviderChecks","filterMatches","METAMASK","CIPHER","injectedProvider","providerInfo","network","findMatchingRequiredOptions","requiredOptions","providedOptions","requiredOption","styledComponentId","REACT_APP_SC_ATTR","SC_ATTR","SC_DISABLE_SPEEDY","REACT_APP_SC_DISABLE_SPEEDY","indexOfGroup","insertRules","insertRule","clearGroup","deleteRule","getGroup","getRule","registerName","getTag","__webpack_nonce__","hasAttribute","$","sheet","styleSheets","ownerNode","cssRules","rules","isServer","useCSSOMInjection","gs","registerId","reconstructWithOptions","allocateGSInstance","hasNameForId","clearNames","clearRules","clearTag","staticRulesId","isStatic","componentId","baseHash","baseStyle","generateAndInjectStyles","plugins","stylisPlugins","disableCSSOMInjection","disableVendorPrefixes","isCss","Ge","parentComponentId","shouldForwardProp","componentStyle","foldedComponentIds","$as","withComponent","_foldedDefaultProps","withConfig","createStyles","removeStyles","renderStyles","_emitSheetCSS","getStyleTags","sealed","getStyleElement","seal","collectStyles","interleaveWithNodeStream","StyleSheet","masterSheet","SIcon","SName","SDescription","SProviderContainer","SProviderWrapper","hover","themeColors","otherProps","_eventCallbacks","eventCallback","eventObj","eventCallbacks","EventController","objA","objB","compareContext","keysB","bHasOwnProperty","valueA","valueB","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","Core","INITIAL_STATE","defaultOpts","lightboxOpacity","cacheProvider","disableInjectedProvider","eventController","toggleModal","connectTo","providerController","connector","_toggleModal","updateState","trigger","onProviderSelect","providerId","onConnect","updateWeb3Modal","resetState","userOptions","getUserOptions","renderModal","cachedProvider","connectToCachedProvider","clearCachedProvider","setCachedProvider","suspense","IsSomeRendererActing","_calculateChangedBits","_ctor","extractEvents","eventTypes","phasedRegistrationNames","registrationName","_debugOwner","_debugSource","effectTag","_dispatchListeners","_dispatchInstances","nc","topLevelType","targetInst","bubbled","captured","eventPriority","Ed","Gd","Kd","Sd","dispatchConfig","Ud","Wd","Interface","eventPool","destructor","getPooled","beforeInput","compositionEnd","compositionStart","compositionUpdate","change","_isInputEventSupported","mouseEnter","mouseLeave","pointerEnter","pointerLeave","select","jf","kf","onSelect","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","childExpirationTime","observedBits","responders","suspenseConfig","_reactInternalFiber","nextEffect","firstEffect","responder","eagerReducer","useResponder","retryTime","unstable_avoidThisFallback","tailExpiration","lastExpiredTime","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","Bj","finishedExpirationTime","lastSuspendedTime","busyMinDurationMs","busyDelayMs","firstSuspendedTime","activeElementDetached","unstable_observedBits","unstable_createPortal","isLocalStorageAvailable","jsonData","localData","mergedData","getNodeVersion","browserName","1","2","3","4","5","6","10","11","22","23","25","30","31","42","56","60","61","62","63","64","69","76","77","88","97","99","100","101","108","162","163","211","250","269","338","385","534","820","821","137","1284","1285","42161","42220","44787","62320","80001","43113","43114","246529","246785","1007","1012","421611","1666600000","1313161554","celo","boltX","WalletConnectProvider","bridge","infuraId","Portis","pt","_portis","fm","Torus","defaultVerifier","networkParams","torus","buttonPosition","modalZIndex","showTorusButton","loginParams","verifier","Venly","clientId","secretType","environment","signMethod","createProviderEngine","Authereum","authereum","networkName","BurnerConnectProvider","defaultNetwork","MewConnectProvider","mewConnect","makeWeb3Provider","DcentProvider","Bitski","bitski","callbackUrl","extraBitskiOptions","signIn","extraProviderOptions","ethProvider","isFrameNative","BinanceChain","ConnectToCoinbaseWalletSdk","CoinbaseWalletSdk","coinbaseWalletSdk","sequence","isSequence","app","authorize","clover","isOpera","package","SLightbox","SModalContainer","SHitbox","SModalCard","maxWidth","lightboxOffset","lightboxRef","mainModalCard","prevProps","prevState","lightboxRect","ContextConsumer","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","AsyncMode","ConcurrentMode","shouldCacheProvider","defaultProviderList","displayInjected","providerList","shouldDisplayProvider","providerPackage","getProviderOption","connectors","providerPackageOptions","_globalThis","NativeWebSocket","MozWebSocket","websocket_version","W3CWebSocket","foundName","setQuery","ensureHeader","mimeTypeJson","defaultResponse","lower","rawRequest","useJson","createXHR","_createXHR","getBody","responseXML","firefoxBugTakenEffect","getXml","isJson","errorFunc","timeoutTimer","failureResponse","loadFunc","useXDR","cors","beforeSend","XMLHttpRequestEventTarget","handleEvent","XMLHttpRequestUpload","_contentType","loweredHeaders","xml_http_request_event_target_1","xml_http_request_upload_1","TRACK","cookie2","dnt","expect","referer","upgrade","via","v8","_anonymous","anon","_restrictedMethods","SecurityError","xhrUrl","_parseUrl","_url","_sync","_loweredHeaders","_mimeOverride","_setReadyState","_request","_responseParts","_responseHeaders","_loadedBytes","_totalBytes","_lengthComputable","InvalidStateError","loweredName","_restrictedHeaders","_sendFile","_sendHttp","NetworkError","_setError","_dispatchProgress","nodejsHttpAgent","nodejsHttpsAgent","nodejsBaseUrl","progress_event_1","_setData","_finalizeHeaders","_sendHxxpRequest","cookieJar","hxxp","requestMethod","_onHttpTimeout","_onHttpResponse","_onHttpRequestError","_startUpload","Host","_userAgent","Referer","_onHttpResponseData","_onHttpResponseEnd","_onHttpResponseClose","responseUrl","_parseResponseHeaders","lengthString","ProgressEvent","lengthComputable","loaded","urlString","xhrUser","xhrPassword","_privateHeaders","_parseResponseEncoding","possibleNames","_arrayLikeToArray","_asyncToGenerator","_createClass","_createForOfIteratorHelper","_superPropBase","_iterableToArray","_objectSpread2","_objectWithoutProperties","sourceSymbolKeys","_toConsumableArray","_unsupportedIterableToArray","inRange","ToDictionary","endOfStream","decoderError","opt_code_point","DEFAULT_ENCODING","_streaming","_BOMseen","_fatal","_ignoreBOM","_encoder","UTF8Decoder","utf8_code_point","utf8_bytes_seen","utf8_bytes_needed","utf8_lower_boundary","utf8_upper_boundary","bite","code_point","UTF8Encoder","input_stream","code_points","codePointsToString","opt_string","stringToCodePoints","__webpack_module_cache__","cachedModule","__webpack_modules__","amdO","leafPrototypes","chunkId","miniCssF","inProgress","dataWebpackPrefix","needAttach","scripts","onScriptComplete","doneFns","nmd","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","chunkLoadingGlobal","NavigationContext","LocationContext","RouteContext","outlet","matchRoutes","locationArg","basename","stripBasename","parsePath","branches","flattenRoutes","score","siblings","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matchRouteBranch","parentsMeta","parentPath","relativePath","caseSensitive","joinPaths","computeScore","paramRe","isSplat","initialScore","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","paramNames","regexpSource","paramName","compilePath","matcher","captureGroups","splatValue","safelyDecodeURIComponent","resolveTo","toArg","routePathnames","locationPathname","toPathname","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","useHref","useInRouterContext","useResolvedPath","joinedPathname","getToPathname","endsWithSlash","createHref","useLocation","useNavigate","routePathnamesJson","activeRef","navigate","useParams","routeMatch","_renderMatches","parentMatches","reduceRight","React.createElement","Route","Router","_ref3","basenameProp","locationProp","navigationType","NavigationType","static","staticProp","navigationContext","trailingPathname","Routes","_ref4","parentParams","parentPathnameBase","locationFromContext","parsedLocationArg","_parsedLocationArg$pa","useRoutes","createRoutesFromChildren","BrowserRouter","historyRef","createBrowserHistory","history","Link","reloadDocument","internalOnClick","replaceProp","isModifiedEvent","createPath","useLinkClickHandler","WalletReadyState","WalletAdapterNetwork","WalletError","WalletNotReadyError","WalletNotConnectedError","BaseWalletAdapter","scopePollingDetectionStrategy","disposers","detectAndDispose","WalletConnectionError","WalletDisconnectedError","WalletDisconnectionError","WalletAccountError","WalletPublicKeyError","WalletSendTransactionError","WalletSignMessageError","WalletSignTransactionError","BaseSignerWalletAdapter","getRecentBlockhash","BaseMessageSignerWalletAdapter","GlowWalletName","GlowWalletAdapter","_config","_readyState","_disconnected","_wallet","_publicKey","_connecting","_network","__glow_loaded","glowSolana","isGlow","connecting","signAndSendTransaction","signAllTransactions","WalletLoadError","getDerivationPath","derivationPath","harden","MAX_PAYLOAD","LEDGER_CLA","transport","LedgerWalletName","LedgerWalletAdapter","hid","_transport","_derivationPath","TransportWebHIDClass","WalletWindowClosedError","PhantomWalletName","PhantomWalletAdapter","solana","isPhantom","handleDisconnect","_handleDisconnect","SlopeWalletName","SlopeWalletAdapter","Slope","slopeApp","WalletConfigError","SolflareWalletName","SolflareWalletAdapter","solflare","isSolflare","SolflareApp","SolflareClass","WalletTimeoutError","WalletWindowBlockedError","BaseSolletWalletAdapter","sollet","SolWalletAdapterClass","popup","_popup","_responsePromises","SolletWalletName","SolletWalletAdapter","SolletExtensionWalletName","SolletExtensionWalletAdapter","TorusWalletName","TorusWalletAdapter","_params","TorusClass","isInitialized","cleanUp","ConnectionContext","ConnectionProvider","WalletNotSelectedError","EMPTY_ARRAY","DEFAULT_CONTEXT","autoConnect","disconnecting","constructMissingProviderErrorMessage","_transaction","valueName","WalletContext","useWallet","WalletProvider","adapters","wallets","localStorageKey","defaultState","isFirstRender","useLocalStorage","setName","setConnecting","setDisconnecting","isConnecting","isDisconnecting","isUnloading","setWallets","handleReadyStateChange","prevWallets","walletIndex","handleConnect","handleError","setVisible","_open","WalletModalContext","useWalletModal","Button","tabIndex","startIcon","endIcon","Collapse","instant","scrollHeight","openCollapse","offsetHeight","closeCollapse","handleComplete","handleTransitionEnd","WalletListItem","handleClick","WalletSVG","clipPath","gradientUnits","stopColor","WalletModal","fadeIn","setFadeIn","portal","setPortal","installed","notDetected","loadable","installedWallets","otherWallets","getStartedWallet","hideModal","handleClose","handleWalletClick","walletName","handleCollapseClick","handleTabKey","focusableElements","firstElement","lastElement","handleKeyDown","getComputedStyle","onMouseDown","WalletModalProvider","API","MerchantAPI","DEFAULT_VALUES","firstName","lastName","UserContext","useUserProfile","UserProfileProvider","fetchingProfile","setEmail","setFirstName","setLastName","fetchProfile","strokeLinecap","strokeLinejoin","currentPage","setCurrentPage","logoIcon","logoutIcon","screenWidth","tokenSymbol","side","emptyTransactionsListIllustration","transactionsGroupedByDate","setScreenWidth","BTN_CLASSNAMES","NO_GRADIENT_BTN_CLASSNAMES","GRADIENT_BTN_CLASSNAMES","onPrevClick","onNextClick","balances","prices","balancesToShow","setBalancesToShow","setIsOpen","hasBackBtn","onBackBtnClick","TokenInstruction","inputClassName","htmlFor","exclamationIcon","bigIntBE","toBigIntBE","toBufferBE","u8","boolLayout","publicKeyLayout","TOKEN_PROGRAM_ID","ASSOCIATED_TOKEN_PROGRAM_ID","TokenError","TokenAccountNotFoundError","TokenInvalidAccountOwnerError","TokenInvalidAccountSizeError","TokenInvalidMintError","TokenInvalidOwnerError","TokenOwnerOffCurveError","addSigners","ownerOrAuthority","multiSigners","transferInstructionData","createTransferInstruction","AuthorityType","AccountState","createAssociatedTokenAccountInstruction","associatedToken","associatedTokenProgramId","AccountLayout","u32","ACCOUNT_SIZE","getAccount","rawAccount","delegateOption","delegatedAmount","Uninitialized","Frozen","isNative","isNativeOption","rentExemptReserve","closeAuthority","closeAuthorityOption","MintLayout","getAssociatedTokenAddress","allowOwnerOffCurve","MultisigLayout","getOrCreateAssociatedTokenAccount","confirmOptions","isEVMNetwork","reservedEvents","signingMethods","infuraNetworks","ENC_HEX","ENC_UTF8","STRING_ZERO","bufferToArray","bufferToUtf8","arrayToBuffer","typedArrayToBuffer","arrayToHex","arrayToUtf8","hexToBuffer","removeHexPrefix","hexToArray","utf8ToBuffer","utf8ToArray","concatArrays","calcByteLength","byteSize","sanitizeBytes","padString","sanitizeHex","convertArrayBufferToBuffer","arrBuf","convertBufferToArrayBuffer","convertUtf8ToHex","noPrefix","convertNumberToHex","SERVER_ERROR","payloadId","removeHexLeadingZeros","jsonRpcUtils","getRpcUrl","infuraUrl","getInfuraRpcUrl","isJsonRpcResponseSuccess","isJsonRpcResponseError","isInternalEvent","isSilentPayload","parsePersonalSign","isEmptyArray","parseTransactionData","parseHexValues","isEmptyString","txDataRPC","prunable","appendToQueryString","newQueryParams","queryParams","queryStringUtils","formatQueryString","NetworkMonitor","_eventEmitters","eventEmitters","WS","SocketTransport","_protocol","_version","_netMonitor","_socket","_nextSocket","netMonitor","_socketCreate","_socketClose","silent","_socketSend","splitUrl","pathEnd","getQueryString","getWebSocketUrl","_socketReceive","_socketOpen","_socketError","_queueSubscriptions","_pushQueue","socketMessage","_setToQueue","ERROR_SESSION_CONNECTED","ERROR_SESSION_DISCONNECTED","ERROR_INVALID_RESPONSE","ERROR_QRCODE_MODAL_USER_CLOSED","EventManager","isJsonRpcRequest","isReservedEvent","SessionStorage","storageId","isWalletConnectSession","bridges","selectRandomBridgeUrl","Connector","_clientMeta","connectorOpts","clientMeta","_cryptoLib","cryptoLib","_sessionStorage","sessionStorage","_qrcodeModal","qrcodeModal","_qrcodeModalOptions","_signingMethods","extractHostname","extractRootDomain","shouldSelectRandomly","_getStorageSession","handshakeId","_subscribeToSessionResponse","_subscribeToInternalEvents","_initTransport","_subscribeToSessionRequest","pushServerOpts","_registerPushServer","_bridge","convertHexToArrayBuffer","_clientId","_peerId","_peerMeta","_handshakeTopic","_handshakeId","_formatUri","_parseUri","handshakeTopic","_networkId","_rpcUrl","_connected","peerId","peerMeta","_eventManager","instantRequest","_generateKey","_formatRequest","endInstantRequest","killSession","_sendCallRequest","createSession","_sendSessionRequest","sessionStatus","sessionParams","_sendResponse","_setStorageSession","sessionError","_formatResponse","_removeStorageSession","_manageStorageSession","_handleSessionDisconnect","chainParams","_subscribeToResponse","formattedRequest","formattedResponse","callRequest","encryptionPayload","forcePushNotification","_subscribeToCallResponse","baseResponse","formatRpcError","transportClose","_handleSessionResponse","mobileLinkUrl","internalPayload","_handleIncomingMessages","pathStart","requiredParams","parseRequiredParams","parseQueryParams","parseWalletConnectUri","generateKey","getSession","setSession","removeSession","pushSubscription","peerName","Accept","AES_BROWSER_ALGO","HMAC_BROWSER_ALGO","HMAC_BROWSER","getAlgo","getOps","browserImportKey","browserHmacSha256Sign","browserAesEncrypt","browserAesDecrypt","hmacSha256Sign","verifyHmac","hmacHex","unsigned","chmac","chmacHex","providedIv","ivArrayBuffer","ivHex","contentString","cipherTextHex","WalletConnect","XHR","HTTPConnection","responded","ProviderEngine","CacheSubprovider","FixtureSubprovider","FilterSubprovider","NonceSubprovider","QRCodeModal","getWalletConnector","subscribeWalletConnector","connectCallbacks","disableSessionCreation","onDisconnect","handleOtherRequests","formatResponse","handleReadRequests","sendCustomRequest","triggerConnect","updateRpcUrl","updateHttpConnection","HttpConnection","eth_hashrate","eth_mining","eth_syncing","net_listening","web3_clientVersion","configWallet","ETHEREUM_NETWORK","internalType","NodeDetailManager","proxyAddress","localUrl","projectId","Web3EthContract","nodeListContract","nodeListAddress","updated","currentEpoch","_currentEpoch","torusNodeEndpoints","_torusNodeEndpoints","torusNodePub","_torusNodePub","torusIndexes","_torusIndexes","verifierId","_nodeDetails","hashedVerifierId","getNodeSet","nodeDetails","torusNodePubX","torusNodePubY","updatedEndpoints","updatedNodePub","endPointElement","pubKx","pubKy","loglevel","SomeError","Some","predicateError","finishedCount","sharedState","errorArr","resultArr","finally","GetOrSetNonceError","kCombinations","combs","tailCombs","thresholdSame","hashMap","JsonStringify","keyLookup","endpoints","lookupPromises","verifier_id","lookupResults","lookupShares","errorResult","keyResult","waitKeyLookup","keyAssign","torusNodePubs","lastPoint","firstPoint","signerHost","nodeNum","initialPoint","pubKeyX","pubKeyY","enableOneKey","metadataHost","allowHost","serverTimeOffset","doesKeyAssign","isNewKey","assignResult","finalKeyResult","_finalKeyResult$keys$","pub_key_X","pub_key_Y","getOrSetNonce","nonceResult","typeOfUser","modifiedPubKey","pubNonce","finalX","finalY","generateAddressFromPubKey","upgraded","privKeyHex","metadataNonce","torusKeyHex","customKeyHex","torusKey","privKey","customKey","newMetadataNonce","generateMetadataParams","setMetadata","indexes","verifierParams","idToken","promiseArr","_context5","tmpKey","generatePrivate","tokenCommitment","messageprefix","tokencommitment","temppubx","temppuby","verifieridentifier","promiseArrRequest","nodeSigs","idtoken","nodesignatures","_ref5","shareResponses","completedRequests","thresholdPublicKey","sharePromises","nodeIndexes","currentShareResponse","Index","firstKey","Metadata","Share","sharesResolved","decryptedShares","allCombis","_loop","currentCombi","currentCombiShares","shares","derivedPrivateKey","lagrangeInterpolation","decryptedPubKey","decryptedPubKeyX","decryptedPubKeyY","_ret","returnedKey","getNonce","_yield$_this$getNonce","generateAddressFromPrivKey","_context6","metadataResponse","set_data","_context7","nodeIndex","upper","ethAddressLower","publicKeyX","publicKeyY","isExtended","_context8","_ref8","_finalKeyResult$keys$2","_nonce","getOnly","_context10","privKeyBN","LOGIN_PROVIDER","WALLET_VERIFIERS","GOOGLE","FACEBOOK","TWITCH","REDDIT","DISCORD","EMAIL_PASSWORDLESS","WALLET_OPENLOGIN_VERIFIER_MAP","PAYMENT_PROVIDER","TORUS_BUILD_ENV","BUTTON_POSITION","paymentProviders","line1","line2","line3","supportPage","minOrderValue","maxOrderValue","validCurrencies","validCryptoCurrencies","includeFees","enforceMax","sell","supportedVerifierList","api","translations","en","continue","actionRequired","pendingAction","cookiesRequired","enableCookies","clickHere","ko","prodTorusUrl","localStorageKeyPrefix","runOnLoad","htmlToElement","html","template","trimmedHtml","handlerArgs","handlerWrapper","handleStream","documentReady","permanentlyDisconnected","sendSiteMetadata","unsupportedSync","invalidDuplexStream","invalidOptions","maxEventListeners","shouldSendMetadata","invalidRequestArgs","invalidRequestMethod","invalidRequestParams","invalidLoggerObject","invalidLoggerMethod","warnings","enableDeprecation","sendDeprecation","networkChanged","publicConfigStore","createErrorMiddleware","logStreamDisconnectWarning","remoteLabel","warningMsg","getPreopenInstanceId","getTorusUrl","buildEnv","integrity","versionUsed","torusUrl","getUserLanguage","userLanguage","userLanguages","EMITTED_NOTIFICATIONS","NOOP","FEATURES_PROVIDER_CHANGE_WINDOW","FEATURES_DEFAULT_WALLET_WINDOW","FEATURES_CONFIRM_WINDOW","TorusInpageProvider","connectionStream","jsonRpcStreamName","experimentalMethods","isDuplexStream","isTorus","_defaultState","networkVersion","_handleAccountsChanged","_handleChainChanged","_handleUnlockStateChanged","_handleConnect","_handleStreamDisconnect","_sendSync","_warnOfDeprecation","_initializeState","_publicConfigStore","storeAsStream","jsonRpcConnection","rpcEngine","_rpcEngine","_sentWarnings","isUnlocked","isInternal","tryPreopenHandle","methodOrPayload","callbackOrArgs","isRecoverable","isPermanentlyDisconnected","streamName","isEthAccounts","finalAccounts","dequal","hasEmittedConnection","internalHashes","finalOptions","sri","PopupHandler","features","dualScreenLeft","screenLeft","dualScreenTop","screenTop","clientWidth","screen","innerHeight","clientHeight","getPopupFeatures","windowTimer","iClosedWindow","_setupTimer","redirect","locationReplaceOnRedirect","imgExists","getSiteName","siteName","metaTitle","getSiteIcon","_icon","getSiteMetadata","domainMetadata","defaultVerifiers","iframeIntegrity","expectedCacheControlHeader","UNSAFE_METHODS","torusIframeHtml","crossOrigin","relList","configuration","torusWidgetVisibility","requestedVerifier","currentVerifier","nodeDetailManager","torusJs","TorusJs","alertZIndex","isIframeFullScreen","dappStorageKey","enableLogging","enabledVerifiers","blockExplorer","ticker","tickerName","loginConfig","whiteLabel","skipTKey","useWalletConnect","storedKey","generatedKey","torusIframeUrl","torusIframe","torusAlertContainer","styleLink","defaultLanguage","customTranslations","mergedTranslations","deepmerge","languageTranslations","embedTranslations","handleSetup","_setupWeb3","initStream","communicationMux","_displayIframe","fetchUrl","calculatedIntegrity","generateIntegrity","clearInit","login_hint","loginHint","statusStream","loggedIn","HTMLDocument","torusAlert","hideTorusButton","_sendWidgetVisibilityStatus","providerChangeStream","preopenInstanceId","_handleWindow","showWallet","showWalletStream","finalPath","showWalletHandler","instanceId","finalUrl","searchParams","getNodeDetails","walletVerifier","openloginVerifier","getUserTypeAndAddress","existingV1User","v2User","newV2User","getUserInfo","userInfoAccessStream","newRequest","userInfoStream","handlerChunk","initiateTopup","selectedProvider","selectedParams","fiatValue","requestedOrderAmount","selectedCurrency","selectedCryptoCurrency","validatePaymentProvider","topupStream","userInfo","loginPrivKeyStream","walletConnectStream","windowStream","handledWindow","_createPopupBlockAlert","closeHandler","receivedId","_setEmbedWhiteLabel","torusBrand1","torusGray2","_getLogoUrl","logoUrl","logoLight","logoDark","isFull","metamaskStream","communicationStream","inpageProvider","detectAccountRequestPrototypeModifier","handleLoginCb","_showLoginPopup","isLoginCallback","proxiedInpageProvider","deleteProperty","calledFromEmbed","loginHandler","oauthStream","successAlert","btnContainer","ETH_TOKEN_ADDRESSES","USDT","USDC","DAI","BSC_TOKEN_ADDRESSES","BUSD","AVAX_TOKEN_ADDRESSES","FTM_TOKEN_ADDRESSES","MATIC_TOKEN_ADDRESSES","SOL_TOKEN_ADDRESSES","onComplete","solPublicKey","solConnected","isWalletConnected","setIsWalletConnected","web3Account","setWeb3Account","setWeb3","onConnectClick","web3Modal","Web3Modal","walletconnect","coinbasewallet","fortmatic","binancechainwallet","currentChainId","onPayClick","displaySuccessToastAndComplete","displayError","tokenAddresses","EVM_TOKEN_ABI","solanaWeb3","txId","tokenPubKey","fromTokenAccount","toTokenAccount","option","networks","walletDepositSelected","setWalletDepositSelected","selectedToken","setSelectedToken","selectedNetwork","setSelectedNetwork","setAccounts","qrCodeURL","setQrCodeURL","tokenAmount","setTokenAmount","fetchingAccounts","fetchAccounts","errorIllustration","totalBalance","setTotalBalance","setBalances","setPrices","setTransactions","withdrawPendingtransactions","setWithdrawPendingTransactions","fetchingBalances","fetchingTransactions","fetchingPendingWithdrawTransactions","setError","depositModalOpen","setDepositModalOpen","fetchBalances","filteredBalances","pricesResponse","totalUSDBalance","fetchTransactions","txs","fetchPendingWithdrawTransactions","rightArrowIcon","emailRegEx","isValidEmail","isValidPassword","isValidName","setPassword","setErrors","resetPasswordEmail","setResetPasswordEmail","isResetPasswordModalOpen","setIsResetPasswordModalOpen","checkErrors","newErrors","onSubmit","sendResetPasswordLink","loginIllustration","setChecked","isModalOpen","setIsModalOpen","infoIcon","maxSecurityLevel","setMaxSecurityLevel","agreeTerms","setAgreeTerms","isMaxSecurityLevelModalOpen","setIsMaxSecurityLevelModalOpen","securityLevel","signupIllustration","setFees","requireToPayFees","setRequireToPayFees","totalFees","setTotalFees","fetchingFees","balancesTotalPages","setBalancesTotalPages","balanceToWithdraw","setBalanceToWithdraw","subtitle","setSubtitle","USDAmount","setUSDAmount","withdrawAddress","setWithdrawAddress","networkFee","setNetworkFee","maxWithdrawAmount","setMaxWithdrawAmount","fetchFeesLoading","setFetchFeesLoading","fetchBalancesLoading","setFetchBalancesLoading","fetchMaxWithdrawLoading","setFetchMaxWithdrawLoading","createPaymentLoading","setCreatePaymentLoading","fetchFees","needToPayFees","onPayFeesClick","formId","costInUSD","successURL","cancelURL","callbackEndpoint","productNames","logoURL","productsImagesURLs","customerEmail","extraDataForCallback","feesPaid","paymentPageURL","fetchMaxWithdrawAmount","onTokenAmountChange","newTokenAmount","expectedUSDAmount","onConfirmClick","toastID","tokenAmountWithFees","doubleArrows","newUSDAmount","expectedTokenAmount","showPlaceholder","dropdownContainerClassName","contentClassName","setOpen","downIcon","tokenOptions","newAcc","tokenOptionsArray","formName","setFormName","referenceForClients","setReferenceForClients","acceptedTokens","setAcceptedTokens","collectedCustomerData","setCollectedCustomerData","tokenNetworksSelectOpen","setTokenNetworksSelectOpen","onCollectedCustomerDataChange","onOptionChange","newAcceptedTokens","checkAndSetErrors","clientReference","isOptionSelected","onOptionClick","setNumberOrNumberAccessor","tau","epsilon","tauEpsilon","Path","_x0","_y0","_x1","_y1","closePath","quadraticCurveTo","bezierCurveTo","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","arc","ccw","dx","dy","cw","Linear","pointX","pointY","curveLinear","defined0","lineStart","lineEnd","_temp2","x0z","y0z","areaStart","areaEnd","arealine","lineX0","lineY0","lineY1","lineX1","d3Area","_line","_point","AreaClosed","yScale","_ref$data","_ref$defined","setNumOrAccessor","LinePath","_temp3","d3Line","Bar","Line","slope3","slope2","MonotoneX","MonotoneY","ReflectContext","monotoneX","_t0","Group","_ref$top","_ref$left","_pt","_ref$x","_ref$y","_proto","getTicks","numTicks","ticks","coerceNumber","GridRows","_ref$stroke","_ref$strokeWidth","_ref$numTicks","lineStyle","tickValues","scaleOffset","bandwidth","getScaleBandwidth","tickLines","_coerceNumber","ascending","ascendingComparator","center","e10","e5","e2","tickIncrement","tickStep","step0","step1","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","newInterval","floori","offseti","previous","setTime","millisecond","getMilliseconds","minute","setDate","getTimezoneOffset","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","setMonth","setFullYear","utcMinute","setUTCSeconds","utcHour","setUTCMinutes","utcDay","setUTCHours","setUTCDate","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcMonth","setUTCMonth","utcYear","setUTCFullYear","tickIntervals","tickInterval","bisector","utcWeek","timeTicks","timeTickInterval","localDate","utcDate","newDate","timeFormat","pads","numberRe","percentRe","requoteRe","requote","formatRe","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekNumberMonday","parseFullYear","parseYear","parseZone","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","timeDay","timeYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","timeSunday","dISO","timeThursday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","timeMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","utcFormats","parses","parseSpecifier","newFormat","specifier","newParse","utcFormat","utcParse","formatLocale","ascendingBisect","bisectRight","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","rgbn","Rgb","rgba","hsla","rgbConvert","rgb_formatHex","rgb_formatRgb","Hsl","hslConvert","hsl2rgb","v0","v3","channels","displayable","formatHsl","linear","nogamma","exponential","rgbGamma","colorRgb","rgbSpline","spline","genericArray","reA","reB","am","bm","numberArray","bimap","interpolate","polymap","bisect","clamp","transformer","untransform","piecewise","interpolateValue","rescale","clamper","invert","interpolateNumber","rangeRound","interpolateRound","continuous","initRange","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","tickFormat","nice","hsl","deg2rad","rad2deg","Xn","Zn","labConvert","Lab","Hcl","hcl2lab","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","atan2","hcl","hue","colorHcl","hclLong","colorHsl","hslLong","ED","EB","BC_DA","cubehelixConvert","Cubehelix","cubehelix","cubehelixGamma","colorCubehelix","cubehelixLong","interpolatorMap","colorLab","interpolateHcl","interpolateHclLong","interpolateHsl","interpolateHslLong","interpolateCubehelix","interpolateCubehelixLong","interpolateRgb","TEST_TIME","localTimeIntervals","timeHour","timeMinute","timeMonth","timeSecond","timeWeek","utcIntervals","utcSecond","ALL_OPERATORS","operators","timeScale","isUtc","isUtcScale","parsedInterval","isDescending","domainWithZero","interpolator","createColorInterpolator","align","exponent","paddingInner","paddingOuter","reversedRange","scaleOperator","selectedOps","updateTimeScale","createTimeScale","scaleTime","prefixExponent","formatSpecifier","FormatSpecifier","formatDecimalParts","formatRounded","formatPrefix","prefixes","grouping","thousands","currencyPrefix","currency","currencySuffix","numerals","formatNumerals","nan","formatTypes","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","precisionPrefix","precisionRound","precisionFixed","linearish","prestep","maxIter","defaultLocale","updateLinearScale","createLinearScale","scaleLinear","MEASUREMENT_ELEMENT_ID","textEl","getComputedTextLength","isXOrYInValid","xOrY","useText","_props$verticalAnchor","verticalAnchor","_props$scaleToFit","scaleToFit","angle","_props$lineHeight","_props$capHeight","capHeight","textProps","_textProps$x","_textProps$y","isXOrYNotValid","_useMemo","wordsWithWidth","wordWidth","getStringWidth","spaceWidth","wordsByLines","currentLine","newLine","startDy","reduceCSSCalc","transforms","lineWidth","sy","originX","originY","SVG_STYLE","Text","_props$dx","_props$dy","_props$textAnchor","textAnchor","innerTextRef","_useText","Ticks","hideTicks","horizontal","orientation","tickClassName","tickComponent","allTickLabelProps","tickLabelProps","_ref$tickStroke","tickStroke","tickTransform","tickLineProps","_allTickLabelProps$in","formattedValue","tickLabelFontSize","tickYCoord","Orientation","defaultTextProps","fontFamily","AxisRenderer","axisFromPoint","axisLineClassName","axisToPoint","hideAxisLine","_ref$label","labelClassName","_ref$labelOffset","labelOffset","_ref$labelProps","labelProps","_ref$orientation","_ref$tickLabelProps","_ref$tickLength","tickLength","_ref$ticksComponent","ticksComponent","maxTickLabelFontSize","yBottomOffset","getLabelTransform","createPoint","Axis","_ref$children","axisClassName","_ref$hideAxisLine","_ref$hideTicks","_ref$hideZero","hideZero","_ref$rangePadding","rangePadding","getTickFormatter","isLeft","isTop","tickPosition","scaledValue","getTickPosition","tickSign","filteredTickValues","bottomTickLabelProps","AxisBottom","leftTickLabelProps","AxisLeft","defaultStyles","boxShadow","useTooltip","initialTooltipState","_useState","tooltipOpen","tooltipState","setTooltipState","showTooltip","showArgs","tooltipLeft","tooltipTop","tooltipData","hideTooltip","updateTooltip","withTooltip","BaseComponent","containerProps","renderContainer","tooltipProps","DEFAULT_POINT","localPoint","isTouchEvent","isMouseEvent","boundingClientRect","getXAndYFromEvent","SVGElement","screenCTM","isSVGGraphicsElement","getScreenCTM","isSVGSVGElement","createSVGPoint","matrixTransform","clientLeft","clientTop","nodeOrEvent","maybeEvent","localPointGeneric","Event","isEvent","LinearGradient","_y2","_ref$fromOffset","fromOffset","_ref$fromOpacity","fromOpacity","_ref$toOffset","toOffset","_ref$toOpacity","toOpacity","_ref$vertical","vertical","gradientTransform","valueof","tooltipStyles","formatDate","getYValue","getXValue","dateScale","extent","dataValueScale","handleTooltip","curveMonotoneX","onTouchStart","onTouchMove","onMouseMove","isFilterApplied","parseDateTime","midnight_ts","isBetween","isSame","formatTokens","longMonths","toJSDate","shortMonth","longMonth","ampm","formatPatterns","MONTH_JS","autoApply","calendars","getCalendarHeaderView","getCalendarDayNamesView","getCalendarDaysView","getCalendarFooterView","previousMonth","nextMonth","firstDay","dayIdx","calcOffsetDays","getCalendarDayView","datePicked","easepick","instances","getPluginFn","detach","removeInstance","addInstance","hidePicker","readonly","inline","scrollToDate","documentClick","binds","shadowRoot","handleOptions","attachShadow","handleCSS","onView","onRender","PluginManager","renderAll","CustomEvent","Calendar","isCalendarHeaderButton","isCalendarDay","hide","isApplyButton","isCancelButton","onClickHeaderButton","onClickCalendarDay","onClickApplyButton","onClickCancelButton","isShown","adjustPosition","updateValues","HTMLInputElement","composedPath","getRootNode","readOnly","cssLoaded","dependenciesNotFound","pluginsAsStringArray","camelCaseToKebab","onAttach","onDetach","setStartDate","setEndDate","setDateRange","getStartDate","getEndDate","onShow","elementEnd","repick","tooltip","tooltipNumber","few","many","_setStartDate","_setEndDate","_setDateRange","_getStartDate","_getEndDate","_parseValues","_updateValues","_clear","_onClickCalendarDay","_onClickApplyButton","checkIntlPluralLocales","triggerElement","gotoDate","initializeRepick","tooltipElement","isContainer","isAfter","toggle","Intl","PluralRules","visibility","onDatesChange","initialStartDate","initialEndDate","randomId","datepickerObject","RangePlugin","areaGradientID","chartName","chartWidth","setChartWidth","offsetWidth","MinimalLineChart","onResetClick","displayButton","onSearchClick","itemsPerPage","totalItems","totalPages","customerFirstName","customerLastName","coin","paymentsGroupedByDate","payment","date30daysAgo","DEFAULT_FILTERS","PERIOD_FILTERS","NETWORKS_ARRAY","fetchingFormsList","fetchingChartData","additionalDataContainer","formsList","setFormsList","paymentsChartData","setPaymentsChartData","totalPayments","setTotalPayments","salesNumber","setSalesNumber","numberOfSalesData","setNumberOfSalesData","customersNumber","setCustomersNumber","numberOfCustomersData","setNumberOfCustomersData","selectedForm","setSelectedForm","selectedPeriodFilter","setSelectedPeriodFilter","chartsFilters","setChartsFilters","transactionsFilters","setTransactionsFilters","minAmount","setMinAmount","maxAmount","setMaxAmount","setProductNames","totalTransactions","setTotalTransactions","transactionsPage","setTransactionsPage","transactionSearchTerm","setTransactionSearchTerm","exportLoading","setExportLoading","newSelectedForm","fetchFormsList","paymentForms","fetchChartData","paymentsAmountData","payments","refreshPaymentsData","refreshChartData","newChartData","newSalesChartData","newCustomersChartData","onSelectedPeriodChange","onCoinsFilterChange","isSelected","newCoinsFilter","coins","onNetworksFilterChange","newNetworksFilter","onResetTransactionFilters","newFilters","onExportClick","getSalesPeriodTitle","exportIcon","searchTerm","onApplyAmountFilters","onApplyProductFilters","newPage","newPassword","setNewPassword","confirmPassword","setConfirmPassword","setApiKey","formErrors","settingsIllustration","solNetwork","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","reportWebVitals"],"sourceRoot":""}