User:Kylu/translit

From Wikipedia


/*
This script is a modified version of Alex benenson's cyrillic translitarator
*/


// default latinica - russian-oriented customized tranlit readable both ways

var amhaHash='{"k":"क्","क्a":"क","कa":"का","क्i":"कि","क्I":"की","किi":"किइ","केe":"की","क्u":"कु","क्U":"कू","कोo":"कू","कुu":"कू","क्e":"के","कi":"कै","क्o":"को","कu":"कौ","क्\:":"कः","क\:":"कः","क्O":"कॉ","कॉM":"काँ","क्E":"कॅ","कॅM":"कँ","क्R":"कृ","कृu":"कृ","कृU":"कॄ","कृ\u0913o":"कृऊ","कृl":"कॢ","कॢu":"कॢ","कॢU":"कॣ","कॢ\u0913o":"कॢऊ","क्M":"कं","क्h":"ख्","ख्a":"ख","खa":"खा","ख्i":"खि","ख्I":"खी","खिi":"खिइ","खेe":"खी","ख्u":"खु","ख्U":"खू","खोo":"खू","खुu":"खू","ख्e":"खे","खi":"खै","ख्o":"खो","खu":"खौ","ख्\:":"खः","ख\:":"खः","ख्O":"खॉ","खॉM":"खाँ","ख्E":"खॅ","खॅM":"खँ","ख्R":"खृ","खृu":"खृ","खृU":"खॄ","खृ\u0913o":"खृऊ","ख्M":"खं","खृl":"खॢ","खॢu":"खॢ","खॢU":"खॣ","खॢ\u0913o":"खॢऊ","g":"\u0917\u094D","\u0917\u094Da":"\u0917","\u0917a":"\u0917\u093E","\u0917\u094Di":"\u0917\u093F","\u0917\u094DI":"\u0917\u0940","\u0917\u093Fi":"\u0917\u0940","\u0917\u0947e":"\u0917\u0940","\u0917\u094Du":"\u0917\u0941","\u0917\u094DU":"\u0917\u0942","\u0917\u094Bo":"\u0917\u0942","\u0917\u0941u":"\u0917\u0942","\u0917\u094De":"\u0917\u0947","\u0917i":"\u0917\u0948","\u0917\u094Do":"\u0917\u094B","\u0917u":"\u0917\u094C","\u0917\u094D\:":"\u0917\u0903","\u0917\:":"\u0917\u0903","\u0917\u094DO":"\u0917\u0949","\u0917\u0949M":"\u0917\u093E\u0901","\u0917\u094DE":"\u0917\u0945","\u0917\u0945M":"\u0917\u0901","\u0917\u094DR":"\u0917\u0943","\u0917\u0943u":"\u0917\u0943","\u0917\u0943U":"\u0917\u0944","\u0917\u0943\u0913o":"\u0917\u0944","\u0917\u094DM":"\u0917\u0902","\u0917\u0943l":"\u0917\u0962","\u0917\u0962u":"\u0917\u0962","\u0917\u0962U":"\u0917\u0963","\u0917\u0962o":"\u0917\u0963","\u0917\u094Dh":"\u0918\u094D","\u0918\u094Da":"\u0918","\u0918a":"\u0918\u093E","\u0918\u094Di":"\u0918\u093F","\u0918\u094DI":"\u0918\u0940","\u0918\u093Fi":"\u0918\u0940","\u0918\u0947e":"\u0918\u0940","\u0918\u094Du":"\u0918\u0941","\u0918\u094DU":"\u0918\u0942","\u0918\u094Bo":"\u0918\u0942","\u0918\u0941u":"\u0918\u0942","\u0918\u094De":"\u0918\u0947","\u0918i":"\u0918\u0948","\u0918\u094Do":"\u0918\u094B","\u0918u":"\u0918\u094C","\u0918\u094D\:":"\u0918\u0903","\u0918\:":"\u0918\u0903","\u0918\u094DO":"\u0918\u0949","\u0918\u0949M":"\u0918\u093E\u0901","\u0918\u094DE":"\u0918\u0945","\u0918\u0945M":"\u0918\u0901","\u0918\u094DR":"\u0918\u0943","\u0918\u0943u":"\u0918\u0943","\u0918\u0943U":"\u0918\u0944","\u0918\u0943\u0913o":"\u0918\u0944","\u0918\u094DM":"\u0918\u0902","\u0918\u0943l":"\u0918\u0962","\u0918\u0962u":"\u0918\u0962","\u0918\u0962U":"\u0918\u0963","\u0918\u0962\u0913o":"\u0918\u0963","\u0919\u094Da":"\u0919","\u0919a":"\u0919\u093E","\u0919\u094Di":"\u0919\u093F","\u0919\u094DI":"\u0919\u0940","\u0919\u093Fi":"\u0919\u0940","\u0919\u0947e":"\u0919\u0940","\u0919\u094Du":"\u0919\u0941","\u0919\u094DU":"\u0919\u0942","\u0919\u094Bo":"\u0919\u0942","\u0919\u0941u":"\u0919\u0942","\u0919\u094De":"\u0919\u0947","\u0919i":"\u0919\u0948","\u0919\u094Do":"\u0919\u094B","\u0919u":"\u0919\u094C","\u0919\u094D:":"\u0919\u0903","\u0919:":"\u0919\u0903","\u0919\u094DO":"\u0919\u0949","\u0919\u0949M":"\u0919\u093E\u0901","\u0919\u094DE":"\u0919\u0945","\u0919\u0945M":"\u0919\u0901","\u0919\u094DR":"\u0919\u0943","\u0919\u0943u":"\u0919\u0943","\u0919\u0943U":"\u0919\u0944","\u0919\u0943\u0913o":"\u0919\u0944","\u0919\u094DM":"\u0919\u0902","\u0919\u0943l":"\u0919\u0962","\u0919\u0962u":"\u0919\u0962","\u0919\u0962U":"\u0919\u0963","\u0919\u0962\u0913o":"\u0919\u0963","c":"\u091A\u094D","\u091A\u094Da":"\u091A","\u091Aa":"\u091A\u093E","\u091A\u094Di":"\u091A\u093F","\u091A\u094DI":"\u091A\u0940","\u091A\u093Fi":"\u0A1A\u0940","\u091A\u0947e":"\u091A\u0940","\u091A\u094Du":"\u091A\u0941","\u091A\u094DU":"\u091A\u0942","\u091A\u094Bo":"\u091A\u0942","\u091A\u0941u":"\u091A\u0942","\u091A\u094De":"\u091A\u0947","\u091Ai":"\u091A\u0948","\u091A\u094Do":"\u091A\u094B","\u091Au":"\u091A\u094C","\u091A\u094D":"\u091A\u0903","\u091A:":"\u091A\u0903","\u091A\u094DO":"\u091A\u0949","\u091A\u0949M":"\u091A\u093E\u0901","\u091A\u094DE":"\u091A\u0945","\u091A\u0945M":"\u091A\u0901","\u091A\u094DR":"\u091A\u0943","\u091A\u0943u":"\u091A\u0943","\u091A\u0943U":"\u091A\u0944","\u091A\u0943\u0913o":"\u091A\u0944","\u091A\u094DM":"\u091A\u0902","\u091A\u0943l":"\u091A\u0962","\u091A\u0962u":"\u091A\u0962","\u091A\u0962U":"\u091A\u0963","\u091A\u0962\u0913o":"\u091A\u0963","\u091A\u094Dh":"\u091B\u094D","\u091B\u094Dh":"\u091B\u094D","\u091B\u094Da":"\u091B","\u091Ba":"\u091B\u093E","\u091B\u094Di":"\u091B\u093F","\u091B\u094DI":"\u091B\u0940","\u091B\u093Fi":"\u0A1B\u0940","\u091B\u0947e":"\u091B\u0940","\u091B\u094Du":"\u091B\u0941","\u091B\u094DU":"\u091B\u0942","\u091B\u094Bo":"\u091B\u0942","\u091B\u0941u":"\u091B\u0942","\u091B\u094De":"\u091B\u0947","\u091Bi":"\u091B\u0948","\u091B\u094Do":"\u091B\u094B","\u091Bu":"\u091B\u094C","\u091B\u094D:":"\u091B\u0903","\u091B:":"\u091B\u0903","\u091B\u094DO":"\u091B\u0949","\u091B\u0949M":"\u091B\u093E\u0901","\u091B\u094DE":"\u091B\u0945","\u091B\u0945M":"\u091B\u0901","\u091B\u094DR":"\u091B\u0943","\u091B\u0943u":"\u091B\u0943","\u091B\u0943U":"\u091B\u0944","\u091B\u0943\u0913o":"\u091B\u0944","\u091B\u094DM":"\u091B\u0902","\u091B\u0943l":"\u091B\u0962","\u091B\u0962u":"\u091B\u0962","\u091B\u0962U":"\u091B\u0963","\u091B\u0962\u0913o":"\u091B\u0963","j":"\u091C\u094D","\u091C\u094Da":"\u091C","\u091Ca":"\u091C\u093E","\u091C\u094Di":"\u091C\u093F","\u091C\u094DI":"\u091C\u0940","\u091C\u093Fi":"\u091C\u0940","\u091C\u0947e":"\u091C\u0940","\u091C\u094Du":"\u091C\u0941","\u091C\u094DU":"\u091C\u0942","\u091C\u094Bo":"\u091C\u0942","\u091C\u0941u":"\u091C\u0942","\u091C\u094De":"\u091C\u0947","\u091Ci":"\u091C\u0948","\u091C\u094Do":"\u091C\u094B","\u091Cu":"\u091C\u094C","\u091C\u094D:":"\u091C\u0903","\u091C:":"\u091C\u0903","\u091C\u094DO":"\u091C\u0949","\u091C\u0949M":"\u091C\u093E\u0901","\u091C\u094DE":"\u091C\u0945","\u091C\u0945M":"\u091C\u0901","\u091C\u094DR":"\u091C\u0943","\u091C\u0943u":"\u091C\u0943","\u091C\u0943U":"\u091C\u0944","\u091C\u0943\u0913o":"\u091C\u0944","\u091C\u094DM":"\u091C\u0902","\u091C\u0943l":"\u091C\u0962","\u091C\u0962u":"\u091C\u0962","\u091C\u0962U":"\u091C\u0963","\u091C\u0962\u0913o":"\u091C\u0963","\u091C\u094Dh":"\u091D\u094D","\u091D\u094Da":"\u091D","\u091Da":"\u091D\u093E","\u091D\u094Di":"\u091D\u093F","\u091D\u094DI":"\u091D\u0940","\u091D\u093Fi":"\u091D\u0940","\u091D\u0947e":"\u091D\u0940","\u091D\u094Du":"\u091D\u0941","\u091D\u094DU":"\u091D\u0942","\u091D\u094Bo":"\u091D\u0942","\u091D\u0941u":"\u091D\u0942","\u091D\u094De":"\u091D\u0947","\u091Di":"\u091D\u0948","\u091D\u094Do":"\u091D\u094B","\u091Du":"\u091D\u094C","\u091D\u094D:":"\u091D\u0903","\u091D\u094Da:":"\u091D\u0903","\u091D\u094DO":"\u091D\u0949","\u091D\u0949M":"\u091D\u093E\u0901","\u091D\u094DE":"\u091D\u0945","\u091D\u0945M":"\u091D\u0901","\u091D\u094DR":"\u091D\u0943","\u091D\u0943u":"\u091D\u0943","\u091D\u0943U":"\u091D\u0944","\u091D\u0943\u0913o":"\u091D\u0944","\u091D\u094DM":"\u091D\u0902","\u091D\u0943l":"\u091D\u0962","\u091D\u0962u":"\u091D\u0962","\u091D\u0962U":"\u091D\u0963","\u091D\u0962\u0913o":"\u091D\u0963","z":"\u091D\u094D","\u091D\u094Da":"\u091D","\u091Da":"\u091D\u093E","\u091D\u094Di":"\u091D\u093F","\u091D\u094DI":"\u091D\u0940","\u091D\u093Fi":"\u091D\u0940","\u091D\u0947e":"\u091D\u0940","\u091D\u094Du":"\u091D\u0941","\u091D\u094DU":"\u091D\u0942","\u091D\u094Bo":"\u091D\u0942","\u091D\u0941u":"\u091D\u0942","\u091D\u094De":"\u091D\u0947","\u091Di":"\u091D\u0948","\u091D\u094Do":"\u091D\u094B","\u091Du":"\u091D\u094C","\u091D\u094D:":"\u091D\u0903","\u091D:":"\u091D\u0903","\u091D\u094DO":"\u091D\u0949","\u091D\u0949M":"\u091D\u093E\u0901","\u091D\u094DE":"\u091D\u0945","\u091D\u0945M":"\u091D\u0901","\u091D\u094DR":"\u091D\u0943","\u091D\u0943u":"\u091D\u0943","\u091D\u0943U":"\u091D\u0944","\u091D\u0943\u0913o":"\u091D\u0944","\u091D\u094DM":"\u091D\u0902","\u091D\u0943l":"\u091D\u0962","\u091D\u0962u":"\u091D\u0962","\u091D\u0962U":"\u091D\u0963","\u091D\u0962\u0913o":"\u091D\u0963","Z":"\u091D\u094D","\u091D\u094Da":"\u091D","\u091Da":"\u091D\u093E","\u091D\u094Di":"\u091D\u093F","\u091D\u094DI":"\u091D\u0940","\u091D\u093Fi":"\u091D\u0940","\u091D\u0947e":"\u091D\u0940","\u091D\u094Du":"\u091D\u0941","\u091D\u094DU":"\u091D\u0942","\u091D\u094Bo":"\u091D\u0942","\u091D\u0941u":"\u091D\u0942","\u091D\u094De":"\u091D\u0947","\u091Di":"\u091D\u0948","\u091D\u094Do":"\u091D\u094B","\u091Du":"\u091D\u094C","\u091D\u094D:":"\u091D\u0903","\u091D:":"\u091D\u0903","\u091D\u094DO":"\u091D\u0949","\u091D\u0949M":"\u091D\u093E\u0901","\u091D\u094DE":"\u091D\u0945","\u091D\u0945M":"\u091D\u0901","\u091D\u094DR":"\u091D\u0943","\u091D\u0943u":"\u091D\u0943","\u091D\u0943U":"\u091D\u0944","\u091D\u0943\u0913o":"\u091D\u0944","\u091D\u094DM":"\u091D\u0902","\u091D\u0943l":"\u091D\u0962","\u091D\u0962u":"\u091D\u0962","\u091D\u0962U":"\u091D\u0963","\u091D\u0962\u0913o":"\u091D\u0963","Y":"\u091E\u094D","\u091E\u094Da":"\u091E","\u091Ea":"\u091E\u093E","\u091E\u094Di":"\u091E\u093F","\u091E\u094DI":"\u091E\u0940","\u091E\u093Fi":"\u091E\u0940","\u091E\u0947e":"\u091E\u0940","\u091E\u094Du":"\u091E\u0941","\u091E\u094DU":"\u091E\u0942","\u091E\u094Bo":"\u091E\u0942","\u091E\u0941u":"\u091E\u0942","\u091E\u094De":"\u091E\u0947","\u091Ei":"\u091E\u0948","\u091E\u094Do":"\u091E\u094B","\u091Eu":"\u091E\u094C","\u091D\u094D:":"\u091E\u0903","\u091E:":"\u091E\u0903","\u091E\u094DO":"\u091E\u0949","\u091E\u0949M":"\u091E\u093E\u0901","\u091E\u094DE":"\u091E\u0945","\u091E\u0945M":"\u091E\u0901","\u091E\u094DR":"\u091E\u0943","\u091E\u0943u":"\u091E\u0943","\u091E\u0943U":"\u091E\u0944","\u091E\u0943\u0913o":"\u091E\u0944","\u091E\u094DM":"\u091E\u0902","\u091E\u0943l":"\u091E\u0962","\u091E\u0962u":"\u091E\u0962","\u091E\u0962U":"\u091E\u0963","\u091E\u0962\u0913o":"\u091E\u0963","T":"\u091F\u094D","\u091F\u094Da":"\u091F","\u091Fa":"\u091F\u093E","\u091F\u094Di":"\u091F\u093F","\u091F\u094DI":"\u091F\u0940","\u091F\u093Fi":"\u091F\u0940","\u091F\u0947e":"\u091F\u0940","\u091F\u094Du":"\u091F\u0941","\u091F\u094DU":"\u091F\u0942","\u091F\u094Bo":"\u091F\u0942","\u091F\u0941u":"\u091F\u0942","\u091F\u094De":"\u091F\u0947","\u091Fi":"\u091F\u0948","\u091F\u094Do":"\u091F\u094B","\u091Fu":"\u091F\u094C","\u091F\u094D:":"\u091F\u0903","\u091F:":"\u091F\u0903","\u091F\u094DO":"\u091F\u0949","\u091F\u0949M":"\u091F\u093E\u0901","\u091F\u094DE":"\u091F\u0945","\u091F\u0945M":"\u091F\u0901","\u091F\u094DR":"\u091F\u0943","\u091F\u0943u":"\u091F\u0943","\u091F\u0943U":"\u091F\u0944","\u091F\u0943\u0913o":"\u091F\u0944","\u091F\u094DM":"\u091F\u0902","\u091F\u0943l":"\u091F\u0962","\u091F\u0962u":"\u091F\u0962","\u091F\u0962U":"\u091F\u0963","\u091F\u0962\u0913o":"\u091F\u0963","\u091F\u094Dh":"\u0920\u094D","\u0920\u094Da":"\u0920","\u0920a":"\u0920\u093E","\u0920\u094Di":"\u0920\u093F","\u0920\u094DI":"\u0920\u0940","\u0920\u093Fi":"\u0920\u0940","\u0920\u0947e":"\u0920\u0940","\u0920\u094Du":"\u0920\u0941","\u0920\u094DU":"\u0920\u0942","\u0920\u094Bo":"\u0920\u0942","\u0920\u0941u":"\u0920\u0942","\u0920\u094De":"\u0920\u0947","\u0920i":"\u0920\u0948","\u0920\u094Do":"\u0920\u094B","\u0920u":"\u0920\u094C","\u0920\u094D:":"\u0920\u0903","\u0920\u094Da:":"\u0920\u0903","\u0920\u094DO":"\u0920\u0949","\u0920\u0949M":"\u0920\u093E\u0901","\u0920\u094DE":"\u0920\u0945","\u0920\u0945M":"\u0920\u0901","\u0920\u094DR":"\u0920\u0943","\u0920\u0943u":"\u0920\u0943","\u0920\u0943U":"\u0920\u0944","\u0920\u0943\u0913o":"\u0920\u0944","\u0920\u094DM":"\u0920\u0902","\u0920\u0943l":"\u0920\u0962","\u0920\u0962u":"\u0920\u0962","\u0920\u0962U":"\u0920\u0963","\u0920\u0962\u0913o":"\u0920\u0963","D":"\u0921\u094D","\u0921\u094Da":"\u0921","\u0921a":"\u0921\u093E","\u0921\u094Di":"\u0921\u093F","\u0921\u094DI":"\u0921\u0940","\u0921\u093Fi":"\u0921\u0940","\u0921\u0947e":"\u0921\u0940","\u0921\u094Du":"\u0921\u0941","\u0921\u094DU":"\u0921\u0942","\u0921\u094Bo":"\u0921\u0942","\u0921\u0941u":"\u0921\u0942","\u0921\u094De":"\u0921\u0947","\u0921i":"\u0921\u0948","\u0921\u094Do":"\u0921\u094B","\u0921u":"\u0921\u094C","\u0921\u094D:":"\u0921\u0903","\u0921:":"\u0921\u0903","\u0921\u094DO":"\u0921\u0949","\u0921\u0949M":"\u0911\u093E\u0901","\u0921\u094DE":"\u0921\u0945","\u0921\u0945M":"\u0921\u0901","\u0921\u094DR":"\u0921\u0943","\u0921\u0943u":"\u0921\u0943","\u0921\u0943U":"\u0921\u0944","\u0921\u0943\u0913o":"\u0921\u0944","\u0921\u094DM":"\u0921\u0902","\u0921\u0943l":"\u0921\u0962","\u0921\u0962u":"\u0921\u0962","\u0921\u0962U":"\u0921\u0963","\u0921\u0962\u0913o":"\u0921\u0963","\u0921\u094Dh":"\u0922\u094D","\u0922\u094Da":"\u0922","\u0922a":"\u0922\u093E","\u0922\u094Di":"\u0922\u093F","\u0922\u094DI":"\u0922\u0940","\u0922\u093Fi":"\u0922\u0940","\u0922\u0947e":"\u0922\u0940","\u0922\u094Du":"\u0922\u0941","\u0922\u094DU":"\u0922\u0942","\u0922\u094Bo":"\u0922\u0942","\u0922\u0941u":"\u0922\u0942","\u0922\u094De":"\u0922\u0947","\u0922i":"\u0922\u0948","\u0922\u094Do":"\u0922\u094B","\u0922u":"\u0922\u094C","\u0922\u094D:":"\u0922\u0903","\u0922\u094Da:":"\u0922\u0903","\u0922\u094DO":"\u0922\u0949","\u0922\u0949M":"\u0922\u093E\u0901","\u0922\u094DE":"\u0922\u0945","\u0922\u0945M":"\u0922\u0901","\u0922\u094DR":"\u0922\u0943","\u0922\u0943u":"\u0922\u0943","\u0922\u0943U":"\u0922\u0944","\u0922\u0943\u0913o":"\u0922\u0944","\u0922\u094DM":"\u0922\u0902","\u0922\u0943l":"\u0922\u0962","\u0922\u0962u":"\u0922\u0962","\u0922\u0962U":"\u0922\u0963","\u0922\u0962\u0913o":"\u0922\u0963","N":"\u0923\u094D","\u0923\u094Da":"\u0923","\u0923a":"\u0923\u093E","\u0923\u094Di":"\u0923\u093F","\u0923\u094DI":"\u0923\u0940","\u0923\u093Fi":"\u0923\u0940","\u0923\u0947e":"\u0923\u0940","\u0923\u094Du":"\u0923\u0941","\u0923\u094DU":"\u0923\u0942","\u0923\u094Bo":"\u0923\u0942","\u0923\u0941u":"\u0923\u0942","\u0923\u094De":"\u0923\u0947","\u0923i":"\u0923\u0948","\u0923\u094Do":"\u0923\u094B","\u0923u":"\u0923\u094C","\u0923\u094D:":"\u0923\u0903","\u0923:":"\u0923\u0903","\u0923\u094DO":"\u0923\u0949","\u0923\u0949M":"\u0923\u093E\u0901","\u0923\u094DE":"\u0923\u0945","\u0923\u0945M":"\u0923\u0901","\u0923\u094DR":"\u0923\u0943","\u0923\u0943u":"\u0923\u0943","\u0923\u0943U":"\u0923\u0944","\u0923\u0943\u0913o":"\u0923\u0944","\u0923\u094DM":"\u0923\u0902","\u0923\u0943l":"\u0923\u0962","\u0923\u0962u":"\u0923\u0962","\u0923\u0962U":"\u0923\u0963","\u0923\u0962\u0913o":"\u0923\u0963","t":"\u0924\u094D","\u0924\u094Da":"\u0924","\u0924a":"\u0924\u093E","\u0924\u094Di":"\u0924\u093F","\u0924\u094DI":"\u0924\u0940","\u0924\u093Fi":"\u0924\u0940","\u0924\u0947e":"\u0924\u0940","\u0924\u094Du":"\u0924\u0941","\u0924\u094DU":"\u0924\u0942","\u0924\u094Bo":"\u0924\u0942","\u0924\u0941u":"\u0924\u0942","\u0924\u094De":"\u0924\u0947","\u0924i":"\u0924\u0948","\u0924\u094Do":"\u0924\u094B","\u0924u":"\u0924\u094C","\u0924\u094D:":"\u0924\u0903","\u0924:":"\u0924\u0903","\u0924\u094DO":"\u0924\u0949","\u0924\u0949M":"\u0924\u093E\u0901","\u0924\u094DE":"\u0924\u0945","\u0924\u0945M":"\u0924\u0901","\u0924\u094DR":"\u0924\u0943","\u0924\u0943u":"\u0924\u0943","\u0924\u0943U":"\u0924\u0944","\u0924\u0943\u0913o":"\u0924\u0944","\u0924\u094DM":"\u0924\u0902","\u0924\u0943l":"\u0924\u0962","\u0924\u0962u":"\u0924\u0962","\u0924\u0962U":"\u0924\u0963","\u0924\u0962\u0913o":"\u0924\u0963","\u0924\u094Dh":"\u0925\u094D","\u0925\u094Da":"\u0925","\u0925a":"\u0925\u093E","\u0925\u094Di":"\u0925\u093F","\u0925\u094DI":"\u0925\u0940","\u0925\u093Fi":"\u0925\u0940","\u0925\u0947e":"\u0925\u0940","\u0925\u094Du":"\u0925\u0941","\u0925\u094DU":"\u0925\u0942","\u0925\u094Bo":"\u0925\u0942","\u0925\u0941u":"\u0925\u0942","\u0925\u094De":"\u0925\u0947","\u0925i":"\u0925\u0948","\u0925\u094Do":"\u0925\u094B","\u0925u":"\u0925\u094C","\u0925\u094D:":"\u0925\u0903","\u0925\u094Da:":"\u0925\u0903","\u0925\u094DO":"\u0925\u0949","\u0925\u0949M":"\u0925\u093E\u0901","\u0925\u094DE":"\u0925\u0945","\u0925\u0945M":"\u0925\u0901","\u0925\u094DR":"\u0925\u0943","\u0925\u0943u":"\u0925\u0943","\u0925\u0943U":"\u0925\u0944","\u0925\u0943\u0913o":"\u0925\u0944","\u0925\u094DM":"\u0925\u0902","\u0925\u0943l":"\u0925\u0962","\u0925\u0962u":"\u0925\u0962","\u0925\u0962U":"\u0925\u0963","\u0925\u0962\u0913o":"\u0925\u0963","d":"\u0926\u094D","\u0926\u094Da":"\u0926","\u0926a":"\u0926\u093E","\u0926\u094Di":"\u0926\u093F","\u0926\u094DI":"\u0926\u0940","\u0926\u093Fi":"\u0926\u0940","\u0926\u0947e":"\u0926\u0940","\u0926\u094Du":"\u0926\u0941","\u0926\u094DU":"\u0926\u0942","\u0926\u094Bo":"\u0926\u0942","\u0926\u0941u":"\u0926\u0942","\u0926\u094De":"\u0926\u0947","\u0926i":"\u0926\u0948","\u0926\u094Do":"\u0926\u094B","\u0926u":"\u0926\u094C","\u0926\u094D:":"\u0926\u0903","\u0926:":"\u0926\u0903","\u0926\u094DO":"\u0926\u0949","\u0926\u0949M":"\u0926\u093E\u0901","\u0926\u094DE":"\u0926\u0945","\u0926\u0945M":"\u0926\u0901","\u0926\u094DR":"\u0926\u0943","\u0926\u0943u":"\u0926\u0943","\u0926\u0943U":"\u0926\u0944","\u0926\u0943\u0913o":"\u0926\u0944","\u0926\u094DM":"\u0926\u0902","\u0926\u0943l":"\u0926\u0962","\u0926\u0962u":"\u0926\u0962","\u0926\u0962U":"\u0926\u0963","\u0926\u0962\u0913o":"\u0926\u0963","\u0926\u094Dh":"\u0927\u094D","\u0927\u094Da":"\u0927","\u0927a":"\u0927\u093E","\u0927\u094Di":"\u0927\u093F","\u0927\u094DI":"\u0927\u0940","\u0927\u093Fi":"\u0927\u0940","\u0927\u0947e":"\u0927\u0940","\u0927\u094Du":"\u0927\u0941","\u0927\u094DU":"\u0927\u0942","\u0927\u094Bo":"\u0927\u0942","\u0927\u0941u":"\u0927\u0942","\u0927\u094De":"\u0927\u0947","\u0927i":"\u0927\u0948","\u0927\u094Do":"\u0927\u094B","\u0927u":"\u0927\u094C","\u0927\u094D:":"\u0927\u0903","\u0927\u094Da:":"\u0927\u0903","\u0927\u094DO":"\u0927\u0949","\u0927\u0949M":"\u0927\u093E\u0901","\u0927\u094DE":"\u0927\u0945","\u0927\u0947M":"\u0927\u0901","\u0927\u094DR":"\u0927\u0943","\u0927\u0943u":"\u0927\u0943","\u0927\u0943U":"\u0927\u0944","\u0927\u0943\u0913o":"\u0927\u0944","\u0927\u094DM":"\u0927\u0902","\u0927\u0943l":"\u0927\u0962","\u0927\u0962u":"\u0927\u0962","\u0927\u0962U":"\u0927\u0963","\u0927\u0962\u0913o":"\u0927\u0963","n":"\u0928\u094D","\u0928\u094Da":"\u0928","\u0928a":"\u0928\u093E","\u0928\u094Di":"\u0928\u093F","\u0928\u094DI":"\u0928\u0940","\u0928\u093Fi":"\u0928\u0940","\u0928\u0947e":"\u0928\u0940","\u0928\u094Du":"\u0928\u0941","\u0928\u094DU":"\u0928\u0942","\u0928\u094Bo":"\u0928\u0942","\u0928\u0941u":"\u0928\u0942","\u0928\u094De":"\u0928\u0947","\u0928i":"\u0928\u0948","\u0928\u094Do":"\u0928\u094B","\u0928u":"\u0928\u094C","\u0928\u094D:":"\u0928\u0903","\u0928:":"\u0928\u0903","\u0928\u094DO":"\u0928\u0949","\u0928\u0949M":"\u0928\u093E\u0901","\u0928\u094DE":"\u0928\u0945","\u0928\u0945M":"\u0928\u0901","\u0928\u094DR":"\u0928\u0943","\u0928\u0943u":"\u0928\u0943","\u0928\u0943U":"\u0928\u0944","\u0928\u0943\u0913o":"\u0928\u0944","\u0928\u094DM":"\u0928\u0902","\u0928\u0943l":"\u0928\u0962","\u0928\u0962u":"\u0928\u0962","\u0928\u0962U":"\u0928\u0963","\u0928\u0962\u0913o":"\u0928\u0963","p":"\u092A\u094D","\u092A\u094Da":"\u092A","\u092Aa":"\u092A\u093E","\u092A\u094Di":"\u092A\u093F","\u092A\u094DI":"\u092A\u0940","\u092A\u093Fi":"\u092A\u0940","\u092A\u0947e":"\u092A\u0940","\u092A\u094Du":"\u092A\u0941","\u092A\u094DU":"\u092A\u0942","\u092A\u094Bo":"\u092A\u0942","\u092A\u0941u":"\u092A\u0942","\u092A\u094De":"\u092A\u0947","\u092Ai":"\u092A\u0948","\u092A\u094Do":"\u092A\u094B","\u092Au":"\u092A\u094C","\u092A\u094D:":"\u092A\u0903","\u092A:":"\u092A\u0903","\u092A\u094DO":"\u092A\u0949","\u092A\u0949M":"\u092A\u093E\u0901","\u092A\u094DE":"\u092A\u0945","\u092A\u0945M":"\u092A\u0901","\u092A\u094DR":"\u092A\u0943","\u092A\u0943u":"\u092A\u0943","\u092A\u0943U":"\u092A\u0944","\u092A\u0943\u0913o":"\u092A\u0944","\u092A\u094DM":"\u092A\u0902","\u092A\u0943l":"\u092A\u0962","\u092A\u0962u":"\u092A\u0962","\u092A\u0962U":"\u092A\u0963","\u092A\u0962\u0913o":"\u092A\u0963","P":"\u092A\u094D","\u092A\u094Da":"\u092A","\u092Aa":"\u092A\u093E","\u092A\u094Di":"\u092A\u093F","\u092A\u094DI":"\u092A\u0940","\u092A\u093Fi":"\u092A\u0940","\u092A\u0947e":"\u092A\u0940","\u092A\u094Du":"\u092A\u0941","\u092A\u094DU":"\u092A\u0942","\u092A\u094Bo":"\u092A\u0942","\u092A\u0941u":"\u092A\u0942","\u092A\u094De":"\u092A\u0947","\u092Ai":"\u092A\u0948","\u092A\u094Do":"\u092A\u094B","\u092Au":"\u092A\u094C","\u092A\u094D:":"\u092A\u0903","\u092A\u094Da:":"\u092A\u0903","\u092A\u094DO":"\u092A\u0949","\u092A\u0949M":"\u092A\u093E\u0901","\u092A\u094DE":"\u092A\u0945","\u092A\u0945M":"\u092A\u0901","\u092A\u094DR":"\u092A\u0943","\u092A\u0943u":"\u092A\u0943","\u092A\u0943U":"\u092A\u0944","\u092A\u0943\u0913o":"\u092A\u0944","\u092A\u094DM":"\u092A\u0902","\u092A\u0943l":"\u092A\u0962","\u092A\u0962u":"\u092A\u0962","\u092A\u0962U":"\u092A\u0963","\u092A\u0962\u0913o":"\u092A\u0963","\u092A\u094Dh":"\u092B\u094D","\u092B\u094Da":"\u092B","\u092Ba":"\u092B\u093E","\u092B\u094Di":"\u092B\u093F","\u092B\u094DI":"\u092B\u0940","\u092B\u093Fi":"\u092B\u0940","\u092B\u094Dee":"\u092B\u0940","\u092B\u094Du":"\u092B\u0941","\u092B\u094DU":"\u092B\u0942","\u092B\u094Bo":"\u092B\u0942","\u092B\u094Duu":"\u092B\u0942","\u092B\u094De":"\u092B\u0947","\u092Bi":"\u092B\u0948","\u092B\u094Do":"\u092B\u094B","\u092Bu":"\u092B\u094C","\u092B\u094D:":"\u092B\u0903","\u092B\u094Da:":"\u092B\u0903","\u092B\u094DO":"\u092B\u0949","\u092B\u0949M":"\u092B\u093E\u0901","\u092B\u094DE":"\u092B\u0945","\u092B\u0945M":"\u092B\u0901","\u092B\u094DR":"\u092B\u0943","\u092B\u0943u":"\u092B\u0943","\u092B\u0943U":"\u092B\u0944","\u092B\u0943\u0913o":"\u092B\u0944","\u092B\u094DM":"\u092B\u0902","\u092B\u0943l":"\u092B\u0962","\u092B\u0962u":"\u092B\u0962","\u092B\u0962U":"\u092B\u0963","\u092B\u0962\u0913o":"\u092B\u0963","\u092A\u094Dh":"\u092B\u094D","f":"\u092B\u094D","F":"\u092B\u094D","b":"\u092C\u094D","\u092C\u094Da":"\u092C","\u092Ca":"\u092C\u093E","\u092C\u094Di":"\u092C\u093F","\u092C\u094DI":"\u092C\u0940","\u092C\u093Fi":"\u092C\u0940","\u092C\u0947e":"\u092C\u0940","\u092C\u094Du":"\u092C\u0941","\u092C\u094DU":"\u092C\u0942","\u092C\u094Bo":"\u092C\u0942","\u092C\u0941u":"\u092C\u0942","\u092C\u094De":"\u092C\u0947","\u092Ci":"\u092C\u0948","\u092C\u094Do":"\u092C\u094B","\u092Cu":"\u092C\u094C","\u092C\u094D:":"\u092C\u0903","\u092C:":"\u092C\u0903","\u092C\u094DO":"\u092C\u0949","\u092C\u0949M":"\u092C\u093E\u0901","\u092C\u094DE":"\u092C\u0945","\u092C\u0945M":"\u092C\u0901","\u092C\u094DR":"\u092C\u0943","\u092C\u0943u":"\u092C\u0943","\u092C\u0943U":"\u092C\u0944","\u092C\u0943\u0913o":"\u092C\u0944","\u092C\u094DM":"\u092C\u0902","\u092C\u0943l":"\u092C\u0962","\u092C\u0962u":"\u092C\u0962","\u092C\u0962U":"\u092C\u0963","\u092C\u0962\u0913o":"\u092C\u0963","B":"\u092C\u094D","\u092C\u094Dh":"\u092D\u094D","\u092D\u094Da":"\u092D","\u092Da":"\u092D\u093E","\u092D\u094Di":"\u092D\u093F","\u092D\u094DI":"\u092D\u0940","\u092D\u093Fi":"\u092D\u0940","\u092D\u0947e":"\u092D\u0940","\u092D\u094Du":"\u092D\u0941","\u092D\u094DU":"\u092D\u0942","\u092D\u094Bo":"\u092D\u0942","\u092D\u0941u":"\u092D\u0942","\u092D\u094De":"\u092D\u0947","\u092Di":"\u092D\u0948","\u092D\u094Do":"\u092D\u094B","\u092Du":"\u092D\u094C","\u092D\u094D:":"\u092D\u0903","\u092D\u094Da:":"\u092D\u0903","\u092D\u094DO":"\u092D\u0949","\u092D\u0949M":"\u092D\u093E\u0901","\u092D\u094DE":"\u092D\u0945","\u092D\u0945M":"\u092D\u0901","\u092D\u0943":"\u092D\u0943","\u092D\u0943u":"\u092D\u0943","\u092D\u0943U":"\u092D\u0944","\u092D\u0943\u0913o":"\u092D\u0944","\u092D\u094DM":"\u092D\u0902","\u092D\u0943l":"\u092D\u0962","\u092D\u0962u":"\u092D\u0962","\u092D\u0962U":"\u092D\u0963","\u092D\u0962\u0913o":"\u092D\u0963","\U092D\U094D":"\u092D\u094D","m":"\u092E\u094D","\u092E\u094Da":"\u092E","\u092Ea":"\u092E\u093E","\u092E\u094Di":"\u092E\u093F","\u092E\u094DI":"\u092E\u0940","\u092E\u093Fi":"\u092E\u0940","\u092E\u0947e":"\u092E\u0940","\u092E\u094Du":"\u092E\u0941","\u092E\u094DU":"\u092E\u0942","\u092E\u094Bo":"\u092E\u0942","\u092E\u0941u":"\u092E\u0942","\u092E\u094De":"\u092E\u0947","\u092Ei":"\u092E\u0948","\u092E\u094Do":"\u092E\u094B","\u092Eu":"\u092E\u094C","\u092E\u094D:":"\u092E\u0903","\u092E:":"\u092E\u0903","\u092E\u094DO":"\u092E\u0949","\u092E\u0949M":"\u092E\u093E\u0901","\u092E\u094DE":"\u092E\u0945","\u092E\u0945M":"\u092E\u0901","\u092E\u094DR":"\u092E\u0943","\u092E\u0943u":"\u092E\u0943","\u092E\u0943U":"\u092E\u0944","\u092E\u0943\u0913o":"\u092E\u0944","\u092E\u094DM":"\u092E\u0902","\u092E\u0943l":"\u092E\u0962","\u092E\u0962u":"\u092E\u0962","\u092E\u0962U":"\u092E\u0963","\u092E\u0962\u0913o":"\u092E\u0963","y":"\u092F\u094D","\u092F\u094Da":"\u092F","\u092Fa":"\u092F\u093E","\u092F\u094Di":"\u092F\u093F","\u092F\u094DI":"\u092F\u0940","\u092F\u093Fi":"\u092F\u0940","\u092F\u0947e":"\u092F\u0940","\u092F\u094Du":"\u092F\u0941","\u092F\u094DU":"\u092F\u0942","\u092F\u094Bo":"\u092F\u0942","\u092F\u0941u":"\u092F\u0942","\u092F\u094De":"\u092F\u0947","\u092Fi":"\u092F\u0948","\u092F\u094Do":"\u092F\u094B","\u092Fu":"\u092F\u094C","\u092F\u094D:":"\u092F\u0903","\u092F:":"\u092F\u0903","\u092F\u094DO":"\u092F\u0949","\u092F\u0949M":"\u092F\u093E\u0901","\u092F\u094DE":"\u092F\u0945","\u092F\u0945M":"\u092F\u0901","\u092F\u094DR":"\u092F\u0943","\u092F\u0943u":"\u092F\u0943","\u092F\u0943U":"\u092F\u0944","\u092F\u0943\u0913o":"\u092F\u0944","\u092F\u094DM":"\u092F\u0902","\u092F\u0943l":"\u092F\u0962","\u092F\u0962u":"\u092F\u0962","\u092F\u0962U":"\u092F\u0963","\u092F\u0962\u0913o":"\u092F\u0963","r":"\u0930\u094D","\u0930\u094Da":"\u0930","\u0930a":"\u0930\u093E","\u0930\u094Di":"\u0930\u093F","\u0930\u094DI":"\u0930\u0940","\u0930\u093Fi":"\u0930\u0940","\u0930\u0947e":"\u0930\u0940","\u0930\u094Du":"\u0930\u0941","\u0930\u094DU":"\u0930\u0942","\u0930\u094Bo":"\u0930\u0942","\u0930\u0941u":"\u0930\u0942","\u0930\u094De":"\u0930\u0947","\u0930i":"\u0930\u0948","\u0930\u094Do":"\u0930\u094B","\u0930u":"\u0930\u094C","\u0930\u094D:":"\u0930\u0903","\u0930:":"\u0930\u0903","\u0930\u094DO":"\u0930\u0949","\u0930\u0949M":"\u0930\u093E\u0901","\u0930\u094DE":"\u0930\u0945","\u0930\u0945M":"\u0930\u0901","\u0930\u094DM":"\u0930\u0902","\u0930\u0962":"\u0930\u0962","\u0930\u0962u":"\u0930\u0962","\u0930\u0962U":"\u0930\u0963","\u0930\u0962\u0913o":"\u0930\u0963","\u0930\u094DR":"\u0930\u0943","\u0930\u0943u":"\u0930\u0943","\u0930\u0943U":"\u0930\u0944","\u0930\u0943\u0913o":"\u0930\u0944","l":"\u0932\u094D","\u0932\u094Da":"\u0932","\u0932a":"\u0932\u093E","\u0932\u094Di":"\u0932\u093F","\u0932\u094DI":"\u0932\u0940","\u0932\u093Fi":"\u0932\u0940","\u0932\u0947e":"\u0932\u0940","\u0932\u094Du":"\u0932\u0941","\u0932\u094DU":"\u0932\u0942","\u0932\u094Bo":"\u0932\u0942","\u0932\u0941u":"\u0932\u0942","\u0932\u094De":"\u0932\u0947","\u0932i":"\u0932\u0948","\u0932\u094Do":"\u0932\u094B","\u0932u":"\u0932\u094C","\u0932\u094D:":"\u0932\u0903","\u0932:":"\u0932\u0903","\u0932\u094DO":"\u0932\u0949","\u0932\u0949M":"\u0932\u093E\u0901","\u0932\u094DE":"\u0932\u0945","\u0932\u0945M":"\u0932\u0901","\u0932\u094DR":"\u0932\u0943","\u0932\u0943u":"\u0932\u0943","\u0932\u0943U":"\u0932\u0944","\u0932\u0943\u0913o":"\u0932\u0944","\u0932\u094DM":"\u0932\u0902","\u0932\u0943l":"\u0932\u0962","\u0932\u0962u":"\u0932\u0962","\u0932\u0962U":"\u0932\u0963","\u0932\u0962\u0913o":"\u0932\u0963","v":"\u0935\u094D","\u0935\u094Da":"\u0935","\u0935a":"\u0935\u093E","\u0935\u094Di":"\u0935\u093F","\u0935\u094DI":"\u0935\u0940","\u0935\u093Fi":"\u0935\u0940","\u0935\u0947e":"\u0935\u0940","\u0935\u094Du":"\u0935\u0941","\u0935\u094DU":"\u0935\u0942","\u0935\u094Bo":"\u0935\u0942","\u0935\u0941u":"\u0935\u0942","\u0935\u094De":"\u0935\u0947","\u0935i":"\u0935\u0948","\u0935\u094Do":"\u0935\u094B","\u0935u":"\u0935\u094C","\u0935\u094D:":"\u0935\u0903","\u0935:":"\u0935\u0903","\u0935\u094DO":"\u0935\u0949","\u0935\u0949M":"\u0935\u093E\u0901","\u0935\u094DE":"\u0935\u0945","\u0935\u0945M":"\u0935\u0901","\u0935\u094DR":"\u0935\u0943","\u0935\u0943u":"\u0935\u0943","\u0935\u0943U":"\u0935\u0944","\u0935\u0943\u0913o":"\u0935\u0943U","\u0935\u094DM":"\u0935\u0902","\u0935\u0943l":"\u0935\u0962","\\u0935\\u0962u":"\u0935\u0962","\\u0935\\u0962U":"\u0935\u0963","\\u0935\\u0962\u0913o":"\u0935\u0963","V":"\u0935\u094D","w":"\u0935\u094D","W":"\u0935\u094D","\u0938\u094Dh":"\u0936\u094D","\u0936\u094Da":"\u0936","\u0936a":"\u0936\u093E","\u0936\u094Di":"\u0936\u093F","\u0936\u094DI":"\u0936\u0940","\u0936\u093Fi":"\u0936\u0940","\u0936\u0947e":"\u0936\u0940","\u0936\u094Du":"\u0936\u0941","\u0936\u094DU":"\u0936\u0942","\u0936\u094Bo":"\u0936\u0942","\u0936\u0941u":"\u0936\u0942","\u0936\u094De":"\u0936\u0947","\u0936i":"\u0936\u0948","\u0936\u094Do":"\u0936\u094B","\u0936u":"\u0936\u094C","\u0936\u094D:":"\u0936\u0903","\u0936\u094Da:":"\u0936\u0903","\u0936\u094DO":"\u0936\u0949","\u0936\u0949M":"\u0936\u093E\u0901","\u0936\u094DE":"\u0936\u0945","\u0936\u0945M":"\u0936\u0901","\u0936\u094DrR":"\u0936\u0930\u0943","\u0936\u0930\u0943u":"\u0936\u0930\u0943","\u0936\u0930\u0943U":"\u0936\u0930\u0944","\u0936\u0930\u0943oo":"\u0936\u0930\u0944","\u0936\u094DR":"\u0936\u0943","\u0936\u0943u":"\u0936\u0943","\u0936\u0943U":"\u0936\u0944","\u0936\u0943\u0913o":"\u0936\u0944","\u0936\u094DM":"\u0936\u0902","\u0936\u0943l":"\u0936\u0962","\u0936\u0962u":"\u0936\u0962","\u0936\u0962U":"\u0936\u0963","\u0936\u0962\u0913o":"\u0936\u0963","\u0936\u094Dh":"\u0937\u094D","\u0937\u094Da":"\u0937","\u0937a":"\u0937\u093E","\u0937\u094Di":"\u0937\u093F","\u0937\u094DI":"\u0937\u0940","\u0937\u093Fi":"\u0937\u0940","\u0937\u0947e":"\u0937\u0940","\u0937\u094Du":"\u0937\u0941","\u0937\u094DU":"\u0937\u0942","\u0937\u094Bo":"\u0937\u0942","\u0937\u0941u":"\u0937\u0942","\u0937\u094De":"\u0937\u0947","\u0937i":"\u0937\u0948","\u0937\u094Do":"\u0937\u094B","\u0937u":"\u0937\u094C","\u0937\u094D:":"\u0937\u0903","\u0937:":"\u0937\u0903","\u0937\u094DO":"\u0937\u0949","\u0937\u0949M":"\u0937\u093E\u0901","\u0937\u094DE":"\u0937\u0945","\u0937\u0945M":"\u0937\u0901","\u0937\u094DR":"\u0937\u0943","\u0937\u0943u":"\u0937\u0943","\u0937\u0943U":"\u0937\u0944","\u0937\u0943\u0913o":"\u0937\u0944","\u0937\u094DM":"\u0937\u0902","\u0937\u0943l":"\u0937\u0962","\u0937\u0962u":"\u0937\u0962","\u0937\u0962U":"\u0937\u0963","\u0937\u0962\u0913o":"\u0937\u0963","\u0937\u094Dh":"\u0936\u094D","s":"\u0938\u094D","\u0938\u094Da":"\u0938","\u0938a":"\u0938\u093E","\u0938\u094Di":"\u0938\u093F","\u0938\u094DI":"\u0938\u0940","\u0938\u093Fi":"\u0938\u0940","\u0938\u0947e":"\u0938\u0940","\u0938\u094Du":"\u0938\u0941","\u0938\u094DU":"\u0938\u0942","\u0938\u094Bo":"\u0938\u0942","\u0938\u0941u":"\u0938\u0942","\u0938\u094De":"\u0938\u0947","\u0938i":"\u0938\u0948","\u0938\u094Do":"\u0938\u094B","\u0938u":"\u0938\u094C","\u0938:":"\u0938\u0903","\u0938\u093E:":"\u0938\u0903","\u0938\u094DO":"\u0938\u0949","\u0938\u0949M":"\u0938\u093E\u0901","\u0938\u094DE":"\u0938\u0945","\u0938\u0945M":"\u0938\u0901","\u0938\u094DR":"\u0938\u0943","\u0938\u0943u":"\u0938\u0943","\u0938\u0943U":"\u0938\u0944","\u0938\u0943\u0913o":"\u0938\u0944","\u0938\u094DM":"\u0938\u0902","\u0938\u0943l":"\u0938\u0962","\u0938\u0962u":"\u0938\u0962","\u0938\u0962U":"\u0938\u0963","\u0938\u0962\u0913o":"\u0938\u0963","S":"\u0937\u094D","h":"\u0939\u094D","\u0939\u094Da":"\u0939","\u0939a":"\u0939\u093E","\u0939\u094Di":"\u0939\u093F","\u0939\u094DI":"\u0939\u0940","\u0939\u093Fi":"\u0939\u0940","\u0939\u0947e":"\u0939\u0940","\u0939\u094Du":"\u0939\u0941","\u0939\u094DU":"\u0939\u0942","\u0939\u094Bo":"\u0939\u0942","\u0939\u0941u":"\u0939\u0942","\u0939\u094De":"\u0939\u0947","\u0939i":"\u0939\u0948","\u0939\u094Do":"\u0939\u094B","\u0939u":"\u0939\u094C","\u0939\u094D:":"\u0939\u0903","\u0939:":"\u0939\u0903","\u0939\u094DO":"\u0939\u0949","\u0939\u0949M":"\u0939\u093E\u0901","\u0939\u094DE":"\u0939\u0945","\u0939\u0945M":"\u0939\u0901","\u0939\u094DR":"\u0939\u0943","\u0939\u0943u":"\u0939\u0943","\u0939\u0943U":"\u0939\u0944","\u0939\u0943\u0913o":"\u0939\u0944","\u0939\u094DM":"\u0939\u0902","\u0939\u0943l":"\u0939\u0962","\u0939\u0962u":"\u0939\u0962","\u0939\u0962U":"\u0939\u0963","\u0939\u0962\u0913o":"\u0939\u0963","L":"\u0933\u094D","\u0933\u094Da":"\u0933","\u0933a":"\u0933\u093E","\u0933\u094Di":"\u0933\u093F","\u0933\u094DI":"\u0933\u0940","\u0933\u093Fi":"\u0933\u0940","\u0933\u0947e":"\u0933\u0940","\u0933\u094Du":"\u0933\u0941","\u0933\u094DU":"\u0933\u0942","\u0933\u094Bo":"\u0933\u0942","\u0933\u0941u":"\u0933\u0942","\u0933\u094De":"\u0933\u0947","\u0933i":"\u0933\u0948","\u0933\u094Do":"\u0933\u094B","\u0933u":"\u0933\u094C","\u0933\u094D:":"\u0933\u0903","\u0933:":"\u0933\u0903","\u0933\u094DO":"\u0933\u0949","\u0933\u0949M":"\u0933\u093E\u0901","\u0933\u094DE":"\u0933\u0945","\u0933\u0945M":"\u0933\u0901","\u0933\u094DR":"\u0933\u0943","\u0933\u0943u":"\u0933\u0943","\u0933\u0943U":"\u0933\u0944","\u0933\u0943\u0913o":"\u0933\u0944","\u0933\u094DM":"\u0933\u0902","\u0933\u0943l":"\u0933\u0962","\u0933\u0962u":"\u0933\u0962","\u0933\u0962U":"\u0933\u0963","\u0933\u0962\u0913o":"\u0933\u0963","x":"\u0915\u094D\u0937\u094D","\u0915\u094D\u0937\u094Da":"\u0915\u094D\u0937","\u0915\u094D\u0937a":"\u0915\u094D\u0937\u093E","\u0915\u094D\u0937\u094Di":"\u0915\u094D\u0937\u093F","\u0915\u094D\u0937\u094DI":"\u0915\u094D\u0937\u0940","\u0915\u094D\u0937\u093Fi":"\u0915\u094D\u0937\u0940","\u0915\u094D\u0937\u0947e":"\u0915\u094D\u0937\u0940","\u0915\u094D\u0937\u094Du":"\u0915\u094D\u0937\u0941","\u0915\u094D\u0937\u094DU":"\u0915\u094D\u0937\u0942","\u0915\u094D\u0937\u094Bo":"\u0915\u094D\u0937\u0942","\u0915\u094D\u0937\u0941u":"\u0915\u094D\u0937\u0942","\u0915\u094D\u0937\u094De":"\u0915\u094D\u0937\u0947","\u0915\u094D\u0937i":"\u0915\u094D\u0937\u0948","\u0915\u094D\u0937\u094Do":"\u0915\u094D\u0937\u094B","\u0915\u094D\u0937u":"\u0915\u094D\u0937\u094C","\u0915\u094D\u0937\u094D:":"\u0915\u094D\u0937\u0903","\u0915\u094D\u0937:":"\u0915\u094D\u0937\u0903","\u0915\u094D\u0937\u094DO":"\u0915\u094D\u0937\u0949","\u0915\u094D\u0937\u0949M":"\u0915\u094D\u0937\u093E\u0901","\u0915\u094D\u0937\u094DE":"\u0915\u094D\u0937\u0945","\u0915\u094D\u0937\u0945M":"\u0915\u094D\u0937\u0901","\u0915\u094D\u0937\u094DR":"\u0915\u094D\u0937\u0943","\u0915\u094D\u0937\u0943u":"\u0915\u094D\u0937\u0943","\u0915\u094D\u0937\u0943U":"\u0915\u094D\u0937\u0944","\u0915\u094D\u0937\u0943\u0913o":"\u0915\u094D\u0937\u0944","\u0915\u094D\u0937\u094DM":"\u0915\u094D\u0937\u0902","\u0915\u094D\u0937\u0943l":"\u0915\u094D\u0937\u0962","\u0915\u094D\u0937\u0962u":"\u0915\u094D\u0937\u0962","\u0915\u094D\u0937\u0962U":"\u0915\u094D\u0937\u0963","\u0915\u094D\u0937\u0962\u0913o":"\u0915\u094D\u0937\u0963","X":"\u0915\u094D\u0937\u094D","\u0915\u094D\u0937\u094Da":"\u0915\u094D\u0937","\u0915\u094D\u0937a":"\u0915\u094D\u0937\u093E","\u0915\u094D\u0937\u094Di":"\u0915\u094D\u0937\u093F","\u0915\u094D\u0937\u094DI":"\u0915\u094D\u0937\u0940","\u0915\u094D\u0937\u093Fi":"\u0915\u094D\u0937\u0940","\u0915\u094D\u0937\u0947e":"\u0915\u094D\u0937\u0940","\u0915\u094D\u0937\u094Du":"\u0915\u094D\u0937\u0941","\u0915\u094D\u0937\u094DU":"\u0915\u094D\u0937\u0942","\u0915\u094D\u0937\u094Bo":"\u0915\u094D\u0937\u0942","\u0915\u094D\u0937\u0941u":"\u0915\u094D\u0937\u0942","\u0915\u094D\u0937\u094De":"\u0915\u094D\u0937\u0947","\u0915\u094D\u0937i":"\u0915\u094D\u0937\u0948","\u0915\u094D\u0937\u094Do":"\u0915\u094D\u0937\u094B","\u0915\u094D\u0937u":"\u0915\u094D\u0937\u094C","\u0915\u094D\u0937\u094D:":"\u0915\u094D\u0937\u0903","\u0915\u094D\u0937:":"\u0915\u094D\u0937\u0903","\u0915\u094D\u0937\u094DO":"\u0915\u094D\u0937\u0949","\u0915\u094D\u0937\u0949M":"\u0915\u094D\u0937\u093E\u0901","\u0915\u094D\u0937\u094DE":"\u0915\u094D\u0937\u0945","\u0915\u094D\u0937\u0945M":"\u0915\u094D\u0937\u0901","\u0915\u094D\u0937\u094DR":"\u0915\u094D\u0937\u0943","\u0915\u094D\u0937\u0943u":"\u0915\u094D\u0937\u0943","\u0915\u094D\u0937\u0943U":"\u0915\u094D\u0937\u0944","\u0915\u094D\u0937\u0943\u0913o":"\u0915\u094D\u0937\u0944","\u0915\u094D\u0937\u094DM":"\u0915\u094D\u0937\u0902","\u0915\u094D\u0937\u0943l":"\u0915\u094D\u0937\u0962","\u0915\u094D\u0937\u0962u":"\u0915\u094D\u0937\u0962","\u0915\u094D\u0937\u0962U":"\u0915\u094D\u0937\u0963","\u0915\u094D\u0937\u0962\u0913o":"\u0915\u094D\u0937\u0963","\u091C\u094Dn":"\u091C\u094D\u091E\u094D","\u091C\u094D\u091E\u094Da":"\u091C\u094D\u091E","\u091C\u094D\u091Ea":"\u091C\u094D\u091E\u093E","\u091C\u094D\u091E\u094Di":"\u091C\u094D\u091E\u093F","\u091C\u094D\u091E\u094DI":"\u091C\u094D\u091E\u0940","\u091C\u094D\u091E\u093Fi":"\u091C\u094D\u091E\u0940","\u091C\u094D\u091E\u0947e":"\u091C\u094D\u091E\u0940","\u091C\u094D\u091E\u094Du":"\u091C\u094D\u091E\u0941","\u091C\u094D\u091E\u094DU":"\u091C\u094D\u091E\u0942","\u091C\u094D\u091E\u094Bo":"\u091C\u094D\u091E\u0942","\u091C\u094D\u091E\u0941u":"\u091C\u094D\u091E\u0942","\u091C\u094D\u091E\u094De":"\u091C\u094D\u091E\u0947","\u091C\u094D\u091Ei":"\u091C\u094D\u091E\u0948","\u091C\u094D\u091E\u094Do":"\u091C\u094D\u091E\u094B","\u091C\u094D\u091Eu":"\u091C\u094D\u091E\u094C","\u091C\u094D\u091E\u094D:":"\u091C\u094D\u091E\u0903","\u091C\u094D\u091E\u094Da:":"\u091C\u094D\u091E\u0903","\u091C\u094D\u091E\u094DO":"\u091C\u094D\u091E\u0949","\u091C\u094D\u091E\u0949M":"\u091C\u094D\u091E\u093E\u0901","\u091C\u094D\u091E\u094DE":"\u091C\u094D\u091E\u0945","\u091C\u094D\u091E\u0945M":"\u091C\u094D\u091E\u0901","\u091C\u094D\u091E\u094DR":"\u091C\u094D\u091E\u0943","\u091C\u094D\u091E\u0943u":"\u091C\u094D\u091E\u0943","\u091C\u094D\u091E\u0943U":"\u091C\u094D\u091E\u0944","\u091C\u094D\u091E\u0943\u0913o":"\u091C\u094D\u091E\u0944","\u091C\u094D\u091E\u094DM":"\u091C\u094D\u091E\u0902","\u091C\u094D\u091E\u0943l":"\u091C\u094D\u091E\u0962","\u091C\u094D\u091E\u0962u":"\u091C\u094D\u091E\u0962","\u091C\u094D\u091E\u0962U":"\u091C\u094D\u091E\u0963","\u091C\u094D\u091E\u0962\u0913o":"\u091C\u094D\u091E\u0963","a":"\u0905","a\u0905":"\u0906","A":"\u0906","i":"\u0907","I":"\u0908","\u090Fe":"I","u":"\u0909","u\u0909":"\u090A","U":"\u090A","\u0913o":"\u090A","e":"\u090F","\u0905i":"\u0910","o":"\u0913","\u0905u":"\u0914","M":"\u0902","E":"\u090D","\u090DM":"\u0905\u0901","O":"\u0911","\u0911M":"\u0906\u0901","\u0906U":"\u0911","\u090Bl":"\u0961","\u0961u":"\u0961","R":"\u090B","\u090Bu":"\u090B","\u090BU":"\u0960","\u090B\u0913o":"\u0960","\u0905~":"\u093D","q":"\u0951","\u0951q":"\u0952","Q":"\u0953","\u0953Q":"\u0954","J":"\u093C","K":"\u093C","C":"\u0970","H":"\u0964","\u0964H":"\u0965","0":"\u0966","1":"\u0967","2":"\u0968","3":"\u0969","4":"\u096A","5":"\u096B","6":"\u096C","7":"\u096D","8":"\u096E","9":"\u096F"}';






// for compatibility with bookmarklets
function cyr_translit(src) {
        return to_cyrillic(src);
}

var conversionHash = undefined;
var maxcyrlength = 0;

function getConversionHash() {
        if (conversionHash == undefined) {
                conversionHash = eval("("+amhaHash+")");
                 maxcyrlength=6;
        }

        return conversionHash;
}


function to_cyrillic(src, output, chunks) {
        if (src == undefined || src == "" || src == null)
                return src;
        if (output == undefined)
                output = new String();

        var hash = getConversionHash();
        
        var location = 0;
        
        while (location < src.length) {
                var len = Math.min(maxcyrlength, src.length - location);
                var arr = undefined;
                var sub;
                while (len > 0) {
                        sub = src.substr(location, len);
                        arr = hash[sub];
                        if (arr != undefined) 
                                break;
                        else 
                                len--;
                }
                
                // need this for translit on the fly
                if (chunks != undefined)
                        chunks[chunks.length] = sub;
                        
                if (arr == undefined) {
                        output += sub;
                        location ++;
                }
                else {

                        // case analysis
                        var newChar = arr;
                        
                        if (sub.toLowerCase() == sub.toUpperCase() && arr.length > 1 && arr[1] && (newChar.toUpperCase() != newChar.toLowerCase())) {
                        
                                // need translit hash to determine if previous character (and possibly the one before it) 
                                // were converted and are in upper case
                                
                                // set prevDud to true previous is not a translated character or simply a blank
                                // set prevCap to true if previous was translated and was upper case

                                var prevCh = output.length == 0 ? null : output.substr(output.length - 1, 1);
                                var prevDud = !prevCh || !getTranslitString(prevCh);
                                var prevCap = (!prevDud && prevCh == prevCh.toUpperCase());

                                // sub is caseless but result isn't. case will depend on lookbehind and lookahead
                                if (prevDud || !prevCap) {
                                        output += newChar.toLowerCase();
                                        prevCap = false;
                                }
                                else {
                                        var next = " ";
                                        if (location + len < src.length)
                                                next = src.substr(location + len, 1);

                                        if (next != next.toUpperCase() && next == next.toLowerCase() ) {
                                                //next is lowercase (and not caseless)
                                                output += newChar.toLowerCase();
                                        }
                                        else if (next == next.toUpperCase() && next != next.toLowerCase() ) {
                                                // next is uppercase (and not caseless)
                                                output += newChar.toUpperCase();
                                        }
                                        else {
                                                // next is caseless. output case determined by the case of output[length - 2]
                                                var pprevCh = output.length == 1 ? null : output.substr(output.length - 2, 1);
                                                var pprevDud = !pprevCh || !getTranslitString(pprevCh);
                                                if (!pprevDud && (pprevCh == pprevCh.toUpperCase())) {
                                                        //pre-prev is in upper case. output is also uppercase
                                                        output += newChar.toUpperCase();
                                                }
                                                else {
                                                    output += newChar.toLowerCase();
                                                }
                                                
                                        }
                                }
                                        
                        }
                        else if ((sub.toLowerCase() == sub.toUpperCase()) && (arr.length < 2 || !arr[1])) {
                                
                                // literal treatment of newChar
                                output += newChar;

                        }
                        else if (sub != sub.toLowerCase()) {
                        
                                // sub not all-lowercase
                                output += newChar.toUpperCase();
                        }
                        else {
                                        
                                        
                                        
                                // sub is lowercase
                            output += newChar.toLowerCase();
                        }
                        location += len;
                }
        }
        
        return output;
}

// split string on HTML tags, return array containing both the matches and the pieces of string between them, matches always in even positions - since IE does not support this in String.split
function splitHtmlString(string) {
        var re = /<[\/]?[!A-Z][^>]*>/ig;
        var result = new Array();
        var lastIndex = 0;
        var arr = null;
        while ( (arr = re.exec(string)) != null) {
                result[result.length] = string.substring(lastIndex, arr.index);
                result[result.length] = string.substring(arr.index, re.lastIndex);
                lastIndex = re.lastIndex;
        }
        result[result.length] = string.substr(lastIndex);
        
        return result;
}

/* convert cyrillic to translit using to_translit-- similar to from_translit.... */
function to_translit_ext (src, skipHtml) {
        return convertWithSkip(src, skipHtml, to_translit);
}

/* convert translit to cyrillic (using ToCyrillic.to_cyrillic above) */
function to_cyrillic_ext (src, skipHtml) {
        return convertWithSkip(src, skipHtml, to_cyrillic);
}

function convertIt(src,converter){
 var resultbuffer=""; 
        for(var i=0;i<src.length;i++){
        resultbuffer=converter(resultbuffer+src[i]);
        }
        return converter(resultbuffer);

}

function convertWithSkip(src, skipHtml, converter) {
   
        if (src == "" || src == null)
        return src;
    if (!skipHtml)
        return convertIt(src,converter);
         
         else {
        var arr = splitHtmlString(src);
        
        for (var i = 0; i < arr.length; i++) {
            if ( (i % 2) == 0)
                arr[i] = convertIt(arr[i],converter);
        }

        return arr.join("");
    }
}

var translitHash = undefined;

function initTranslit() {
        if (translitHash == undefined) {
                translitHash = new Array();

                for (var i = 0; i < conversionHash.length; i++) {
                        var ch = conversionHash[i][1];
                        // if the translit string is not caseless, convert cyr string to upper case
                        // otherwise maintain its case
                        if (conversionHash[i][0].toUpperCase() != conversionHash[i][0].toLowerCase())
                                ch = ch.toUpperCase();
                                
                        if (translitHash[ch] == undefined)
                                translitHash[ch] = conversionHash[i][0];
                }
        }
}


/* convert cyrillic 'o translit */
function getTranslitString(ch) {
        initTranslit();
                
        var value = translitHash[ch];
        if (value == undefined)
                value = translitHash[ch.toUpperCase()];
        return value;
}

function to_translit(src) {
        if (src == undefined || src == "" || src == null)
                return src;
        
        
        var output = new String();
        for (var i = 0; i < src.length; i++) {
                var ch = src.substr(i, 1);
                var value = getTranslitString(ch);
                if (value != undefined) {
                        if (ch != ch.toUpperCase()) {
                                output += value.toLowerCase();
                        }
                        else {
                                prev = i == 0 ? null : src.substr(i - 1, 1);
                                next = i == src.length - 1 ? null : src.substr(i + 1, 1);
                                if ( value.length == 1 ||
                                   (prev && prev == prev.toUpperCase()) ||
                                   (next && next == next.toUpperCase())) {
                                     // completely capitalize
                                     output += value.toUpperCase();
                                }
                                else {
                                         // capitalize first letter
                                         output += value.substr(0, 1).toUpperCase() + value.substr(1).toLowerCase();
                                }
                        }
                }
                else
                        output += ch;
        }

        return output;
}

//-- translit on-the-fly -- 

function replaceValue(node, value, stepback) {
        if (stepback == undefined)
                stepback = 0;
                
        if (isExplorer()) {
                var range = document.selection.createRange();
                range.moveStart("character", -stepback);
                range.text = value;
                range.collapse(false);
                range.select();
        }
        else {
                var scrollTop = node.scrollTop;
                var cursorLoc =  node.selectionStart;
                node.value = node.value.substring(0, node.selectionStart - stepback) + value + 
                node.value.substring(node.selectionEnd, node.value.length);
                node.scrollTop = scrollTop;
                node.selectionStart = cursorLoc + value.length - stepback;
                node.selectionEnd = cursorLoc + value.length - stepback;
        }
}


// compare positions
function positionIsEqual(other) {
        if (isExplorer())
                return this.position.isEqual(other.position);
        else
                return this.position == other.position;
  
}

function Position(node) {
  if (node.selectionStart != undefined)
        this.position = node.selectionStart;
  else if (document.selection && document.selection.createRange())
    this.position = document.selection.createRange();
    
  this.isEqual = positionIsEqual;
}

function resetState() {
        this.position = new Position(this.node);
        this.transBuffer = "";
        this.cyrBuffer = "";
}

function StateObject(node) {
        this.node = node;
        this.reset = resetState;
        this.cyrBuffer = "";
        this.transBuffer = "";
        this.position = new Position(node);
}


var stateHash = new Array();

function isExplorer() {
  return (document.selection != undefined && document.selection.createRange().isEqual != undefined);
}

function pressedKey(event) {
  if (isExplorer())
        return event.keyCode;
  else
    return event.which;
}

function translitonkey(event) {
     /*
        if ((event.keyCode == 255 && event.charCode > 0) || event.keyCode == 8) {
                return;
        }
    */
    
    if (event == undefined)
                event = window.event;
    
        var node = null;
        if (event.target)
                node = event.target;
        else if (event.srcElement)
                node = event.srcElement;
                
        
        
        // initialize state
        var state = stateHash[node];
        if (state == null) {
                state = new StateObject(node);
                stateHash[node] = state;
        }
        if ( (pressedKey(event) > 20) && !event.ctrlKey && !event.altKey && !event.metaKey) {

                var c = String.fromCharCode(pressedKey(event));

                // process input
                var result = process_translit(state, c);
                // finish up
                if (c != result.out || result.replace != 0) {
                  if (isExplorer())
                        event.returnValue = false;
                  else
                    event.preventDefault();
                  
                  replaceValue(node, result.out, result.replace);
                  
                  state.position = new Position(node);

                }
        }
        
}

function TranslitResult() {
        this.out = "";
        this.replace = 0;
}

function process_translit(state, c) {
        // reset state if position changed
        if (!state.position.isEqual(new Position(state.node)))
                state.reset();
                
        var result = new TranslitResult();
        
        // initial backbuffer. Add to it as characters are converted
        var backbuffer = getBackBuffer(state.node, state.cyrBuffer.length, 2);
        var chunks = new Array();
        
        state.transBuffer = state.transBuffer+ c

        var str = to_cyrillic(state.cyrBuffer+c, backbuffer, chunks);

        // remove backbuffer from output
        str = str.substr(backbuffer.length);
        result.out = str; 
        /* str is now left alone - it has the output matching contents of chunks and 
           will be used to reinitialize backbuffers, along with chunks and state.transBuffer
        */
        
        // get the difference between state.cyrBuffer and output
        for (var i = 0; i < Math.min(state.cyrBuffer.length, result.out.length); i++) {
                if (state.cyrBuffer.substr(i, 1) != result.out.substr(i, 1)) {
                        result.replace = state.cyrBuffer.length - i;
                        result.out = result.out.substr(i);
                        break;
                }
        }
        if (result.replace == 0) {
               if(result.out.length<state.cyrBuffer.length)
                                result.replace=state.cyrBuffer.length- result.out.length;
                result.out = result.out.substr(Math.min(state.cyrBuffer.length, result.out.length));
                 
                       //    result.out+="\u0008"
                         
        }
        
        // update state: backbuffer, bufferArray
        if (chunks.length > 0 && chunks[chunks.length - 1] == result.out.substr(result.out.length - 1)) {
                // no convertion took place, reset state
                state.reset();
        }
        else {
                while (state.transBuffer.length > maxcyrlength) {
                        state.transBuffer = state.transBuffer.substr(chunks[0].length);
                        chunks.shift();
                        str = str.substr(1);
                }
                state.cyrBuffer = str;
        }
        return result;
}

function getBackBuffer(node, offset, count) {
                
        if (isExplorer()) { //.tagName.toUpperCase() == "EDITOR") {
        
                var range = document.selection.createRange();
                range.moveStart("character", -offset);
                var result = range.text.substr(-count);
                if (!result)
                        result = "";
                        
                return result;

        } else {
                return node.value.substring(0, node.selectionStart - offset).substr(-count);
        }
}

// need this for bookmarklets
function getSelectedNode() {
  if (document.activeElement)
        return document.activeElement;
  else
    if (window.getSelection && window.getSelection() && window.getSelection().rangeCount > 0) {
                var range = window.getSelection().getRangeAt(0);
                if (range.startContainer && range.startContainer.childNodes && range.startContainer.childNodes.length > range.startOffset)
                        return range.startContainer.childNodes[range.startOffset]
    }
  return null;
}

function toggleCyrMode() {
        var node = getSelectedNode();
        if (node) {
                if (stateHash[node]) {
                        if (removeKeyEventListener(node))
                                delete stateHash[node];
                }
                else {
                        if (addKeyEventListener(node))
                                stateHash[node] = new StateObject(node);
                }
        }
}

function addKeyEventListener(node) {
        if (node.addEventListener)
                node.addEventListener("keypress", translitonkey, false);
        else if (node.attachEvent)
            node.attachEvent("onkeypress", translitonkey);
        else return false;
        return true;
}
function removeKeyEventListener(node) {
        if (node.removeEventListener)
                node.removeEventListener("keypress", translitonkey, false);
        else if (node.detachEvent)
                node.detachEvent("onkeypress", translitonkey);
        else return false;
        return true;
}

function getSelectedText() {
        if (isExplorer()) {
                return document.selection.createRange().text;
        }
        else {
                var node = getSelectedNode();
                if (node && node.value && node.selectionStart != undefined && node.selectionEnd != undefined)
                        return node.value.substring(node.selectionStart, node.selectionEnd);
        }
        return "";
}


function bmkToCyrillic() {
        batchConverter(to_cyrillic_ext);
}
function bmkToTranslit() {
        batchConverter(to_translit_ext);
        
}


function RangeConversionState(range, converter) {
        this.range = range;
        this.convert = converter;
        this.started = false;
        this.finished = false;
        this.toString = function() {
                return "started : " + this.started + ", finished: " + this.finished;
        };
}

function convertRangeNode(node, state) {
        if (state.started && state.finished)
                return;

        if (!state.started && 
                ( ( (state.range.startContainer.nodeType == node.TEXT_NODE || 
                         state.range.startContainer.nodeType == node.PROCESSING_INSTRUCTION_NODE || 
                         state.range.startContainer.nodeType == node.COMMENT_NODE       )
                    && node == state.range.startContainer) 
                        ||
                  ( state.range.startContainer.childNodes && node == state.range.startContainer.childNodes[state.range.startOffset])
                ))
                state.started = true;

        if (node.nodeType == node.TEXT_NODE || node.nodeType == node.PROCESSING_INSTRUCTION_NODE || node.nodeType == node.COMMENT_NODE) {
                if (state.started && !state.finished) {
                        // convert text
                        var start = (node == state.range.startContainer) ? state.range.startOffset : 0;
                        var end   = (node == state.range.endContainer) ? state.range.endOffset : node.nodeValue.length;
                        var remainder = (node == state.range.endContainer) ? node.nodeValue.length - state.range.endOffset : 0;
                        node.nodeValue = 
                                node.nodeValue.substring(0, start) +
                                state.convert(node.nodeValue.substring(start, end)) +
                                node.nodeValue.substr(end);
                        
                        if (node == state.range.endContainer)
                                state.range.setEnd(node, node.nodeValue.length - remainder);
                        if (node == state.range.startContainer)
                                state.range.setStart(node, start);
                }
        }
        else if (node.childNodes)
                // walk the tree
                for (var i = 0; i < node.childNodes.length; i++) {
                        convertRangeNode(node.childNodes[i], state);
                        if (state.started && state.finished)
                                break;
                }
                
        if (!state.finished && 
                ( ((state.range.endContainer.nodeType == node.TEXT_NODE || 
                         state.range.endContainer.nodeType == node.PROCESSING_INSTRUCTION_NODE || 
                         state.range.endContainer.nodeType == node.COMMENT_NODE )
                     && node == state.range.endContainer) 
                        ||
                  ( (state.range.endContainer.childNodes.length > 0) && node == state.range.endContainer.childNodes[state.range.endOffset - 1])
                ))
                state.finished = true;
                
}

function convertSelection (selection, converter) {
        if (selection == null) return;
        for(var i = 0; i < selection.rangeCount; i++) {
                convertRangeNode(selection.getRangeAt(i).commonAncestorContainer, new RangeConversionState(selection.getRangeAt(i), converter));
        }
        selection.collapseToEnd();
}


function batchConverter(convert) {
        if (isExplorer()) {
                var range = document.selection.createRange();
                try {
                        range.pasteHTML(convert(range.htmlText, true));
                }
                catch (err) {
                        range.text = convert(range.text, true);
                }
        }
        else if (window.getSelection) {
                var node = getSelectedNode();
                var sel = window.getSelection();

                if (node && node.value && node.selectionStart != undefined && node.selectionEnd != undefined)
                        replaceValue(node, convert(node.value.substring(node.selectionStart, node.selectionEnd), true));
                else if(sel && sel.toString() != "")
                        convertSelection(sel, convert);
        }
}