{"version":3,"file":"scripts.1e1d6f2e3afbaa4d.js","mappings":"UAAAA,KACA,sCACAC,qBACA,0BACA,GAAK,wCAGLC,sCACA,EAACC,gBAED,kBAEA,MAEA,gGAEAC,+BAEA,QACAC,kBAA8CA,qBAC9CC,4BAGAC,iBAEA,CACA,cAEAC,gCAEA,qBAEA,wBAEAC,yEACAC,kDACAF,oCAEA,4BAEAG,oDAEAC,mBACA,EAAiB,CAEjB,EACAJ,sBACA,CAqDA,cACA,YAA6B,qDAC7B,QACA,CACA,OAxDA,cA6CA,6CACAK,4BADA,0CACAC,sDADA,wBACA,yCADA,2BACA,YADA,mBACAA,6BAEA,SAAyBC,sFAEzBF,GAjDA,aAEA,QACAG,IAA2BA,YAAqB,CAEhD,wFACA,4DACAC,MACA,KACA,mCAEAV,iBAEA,6CAEA,aAEA,WAEAC,uDACAA,cACAA,gBACAD,SACAU,MACAC,OAEAC,UAGAP,wCAIAI,YAKAA,IAIAI,gCACA,CAMAC,EACA,CAMA,GAAC,SC9FDC,KAAe,aAAa,mBAAmBC,aAAa,IAA+CC,UAA/CD,KAAQE,KAAKC,WAAS,GAATC,QAAS,GAAyBC,KAAgB,UAAUC,SAASC,yDAAiDC,6GAA0GC,wFAA6FC,yGAA8GC,oKAA+JC,oEAAyEX,cAAe,4BAAs3I,CAAEY,sBAAsB,wCAAuCC,wBAAyB,0CAAyCC,QAA59If,GAAIgB,QAAQP,yBAAwBQ,mCAAoC,kMAA6NC,qBAAcnB,uGAA+HoB,qBAAepB,2EAA0FqB,cAAeC,uIAAsIC,cAAe,gBAAgBC,0CAAyCC,cAAeC,mCAAkC7C,0JAA2J8C,oCAAmC,KAAKC,qBAAsB,yGAAwGC,kBAAmB,+CAA2Y,OAA5VL,2JAAyJvB,iMAAmM6B,GAAU,cAAsCN,GAAtCA,0BAAsCrB,iDAAoDtB,qCAAqCA,oBAAsB,MAAM,aAAqC2C,GAArCA,0BAAqCrB,qDAAwDtB,qCAAqCA,oBAAsB,MAAM,YAAoC2C,GAApCA,0BAAoCrB,gCAAmCtB,gBAAiC,8FAA6FkD,oBAAqB,iCAAiClD,+BAA+BmD,mBAAiBC,6BAAwBjC,2CAA0D8B,IAAII,2BAA4BP,kBAAkB,iBAAiBQ,uBAAgCjC,KAAK,kEAAkE,+DAA+D,+EAAwF,8DAA+DkC,uDAAqDhC,sBAAuBY,mBAAoB,sFAAsF,qBAAqB,8BAA6BqB,gBAAiB/B,0JAAyJgC,gBAAiBR,mfAAkfjB,oBAAqB,iBAAiBmB,uBAAgC/B,KAAK,+EAA+EsC,uBAAwB,iCAAiCpC,iJAAiJA,8CAA6C,qBAAqBqC,gBAAiB,MAAM,oFAAoF,gDAA+CC,iBAAkB,WAAWrC,2JAA0JsC,uBAAwB,iHAAgP1B,uCAAiD,0BAAyB2B,yBAA0B,wCAAuCC,sBAAuB,kCAAiCC,oBAAqB,gCAA+BL,gBAAiBvC,UAASgB,kBAAkB,+CAAgD,sBAAajB,mCD8FjkL,CC9FsnLnB,MCXvnL,WAAY,aAAa,aAAa,wBAAwB,wFAAwF,0CAA0CiE,+HAA8H1C,6KAA8KC,oCAA+B,kbAAsbA,2BAAuB,gVAAoVL,mDAAoD,kDAAkD,2CAA2CgC,mFAA+E,CAAK,8GAA8G7B,0OAAyOH,qCAAiC,qDAA0D+C,gHAA8G5C,qNAAsNH,sCAAuC,yBAAyB,kBAAkB,KAAKK,uEAAoEA,uBAAwB,UAAU,SAA7H,CAAsIxB,iEAAkEmE,oIAAoID,2CAAwC1C,YAAe0C,yCAAwC,MAAE5C,iEAAsE,gBAAgBtB,mCAAmC,cAAc,2GAA2G,sDAAsD,4HAA4H,gBAAgB,2FAA2F,gBAAgB,+CAA+C,+BAA+B,cAAc,kCAAkCsD,wLAAwL,kBAAkB,kBAAkBa,4HAA4HC,6DAA4D,EAAG,4DAAqE1D,YAAWc,IAAx3H,GCAC,WAED,wBAGA,iBACA6C,kBACAC,cACAC,eACAC,UACAC,YACAC,WACAC,WACAC,4BACAC,qCACAC,YAIAA,YAFAF,WAEA,0BAEAL,iBACAD,eACA,GAGA,GAmBA,iCAkWAS,uCACAC,iBACAC,aAGAC,gCACA,yDACAC,GACAA,eACA,EAMAC,qBACA,8BACAC,6DAEAC,IACAP,sDAEA,uCACAQ,4BACA,IACAC,yFAGA,CAFA,MAAcrE,GACdc,QACA,CACAwD,wCACAD,4BACAA,MACA,GAkQAV,oCACAA,oCACAA,iCACAA,wCACAA,sCACAA,oDAEAY,6BAEAZ,gDACAA,uDAGAY,6BAEAZ,uCAGAa,gCAEAvC,+DAIAA,mCAGAwC,qBAEAd,0DACAa,+BACAE,sBA7sBA,CA0BA,yBACA,oHACA,4BAEA,CAAqBC,mBADrBC,iCACqB,QAErB,iBAEA,OADAA,2CAEA,CAAyBD,gDAEzBE,iEACA,sCACAA,mBACA,CAAgBF,wBAChB,CAGA,gCAEA,0BAEAG,iCAOA,OANAA,iCACAC,2BACAD,gCACAC,gCACAD,iCACAC,6BAGA,CAEA,0BACAD,iCACAA,gCACAA,iCAIAnB,gCACAA,6DACAqB,sFACArB,4DACAqB,qFACArB,6DACAqB,sFACAT,6BAEAZ,6DACAa,8CACAb,4DACAa,6CACAb,6DACAa,gDAjBAQ,4FAmBA,CAEA,8BAEArB,mCACAA,0CACAA,yCACAA,oCACAA,2CACAA,0CACAA,yCAEAA,kCAEAA,iDAEAA,oDAEAA,oDACAA,qDACAA,mDAEAA,sCACAA,kCACAA,gCACAA,8CACAA,oCAEAA,wGACAA,0FACAA,oGACAA,sFAEAA,qGACAA,mHACAA,qGACAA,mHAEAA,qCACAA,iCACAA,+BACAA,4CACAA,sCAEAA,qCACAA,qCACAA,mCAEAA,4DACAA,sDACAA,0DAEAA,oDACAA,mDAEAA,iDACAA,oDACAA,mDACAA,iDACAA,qDACAA,iDACAA,yDACAA,0DACAA,0DACAA,kDACAA,2DACAA,qDACAA,kDAEAA,oDAEAA,0CAEAA,gCACAA,+CAEAA,sCACAA,0CACAA,gCAEAA,2DACAA,4DACAA,mEACAA,4DACAA,6DACAA,oEACAA,wCAEAA,wCACAA,wCAEAA,yCACAA,4CACAA,8CAEAA,gDACAA,gDACAA,gDACAA,iDACAA,gDACAA,2DAEAA,2CACAA,0CACAA,0CACAA,0CACAA,8CACAA,8CACAA,8CACAA,qDACAA,8DACAA,8DACAA,0DACAA,mEACAA,mEAEAA,8BACAA,6BACAA,8BAEAA,iCACAA,iDACAA,iDACAA,0CACAA,kDAEAA,sCACAA,4CACAA,yCACAA,sCAEAA,8CACAA,uCACAA,oCACAA,mCAEAA,mCACAA,oCACAA,mCAEAA,kCACAA,iCACAA,+BACAA,+BAEAA,4CACAA,6BACAA,0BACA,CAEA,wBACA,gBACA,MACA,IACAsB,SAGA,CAFA,MAAcC,GACd,wBACA,CACA,cACAD,QAEAE,kCAEA,CACA,iDACAC,mBACAC,oBACA,UACA,CAEA,gBAGA,0DACA,CAEA,iBACA,2CACAC,oCACAA,oCACA,CAEA,oCAGA,gBAGA,4BAGA,iCACA9B,aACA,GAGA,6BACAH,WACAkC,0BAOA,+BACAjC,aACAiC,0BAOA,6BACAA,yBAQA,8BACAhC,YACAgC,+BAFA,GAQA,CAGA,yBACA,WAGA,sEAEA,WAEA,8BACA,IAIA,OADAjB,2CACAkB,eAUA,CATA,MAEA,IAEA,OADAlB,kDACAkB,eAIA,CAHA,MAEA,kjBACA,CACA,CAGA,IAEA,OADAlB,2CACAkB,eAKA,CAJA,MAGA,2BACA,EAGA,mCACA,CAEA,+BACA,aACAC,kBAGAA,4BACA,CAEA,oCACA,gBACA,SAEUzF,WACVkF,4CAFAA,IAIAA,CACA,CAEA,yBACA,+CACA,kCAGA,IACA,kCAGA,CAFA,MACA,iCACA,CACA,CAGA,gCACA,kDACA,CAGA,8BACA,wCACA,CAsCA,wEACA,WACAQ,GAUA,GATA9B,mFACA8B,KACA,2BACAC,UACA,0BACAC,qCACAA,qCAEA,GACAF,GACA,SACA,aACA,CAEA,iDAEA,8CACA,CACA,oCACAG,uBACAA,+HACAA,2vCAKAvB,wDACAA,yFAEAwB,yHACAxB,oEACA,GAEAuB,sCAEAC,yHACAxB,oEACA,GACAuB,6BAEA,CACA,4CACAE,2EACA,CAEA,8BACAvB,mDACAA,8CACA,iEAEAd,kCAEA,wBACA,CAEA,iDACA,uEACAsC,iFAIA,OAFAhB,6HACAc,sBAGA,uCACAG,yCACAA,wBACAA,8BACAA,0CACA3B,6DAEAyB,4EAEArC,qCACA,GAAS,EACT,CAGA,0BAEA,uBAEAwC,6BAGA7C,oBACA4C,oCACAE,uCACAF,kGACAA,8BACAA,4BACA3B,4DACc,CAEd,2CACA6B,uCACAF,kGACAA,8BACAA,4BACA3B,wDAGA,CAGA,6BAEA,uCAMA,GALA8B,0CACAA,6CACAA,6CACA9B,wDACA+B,2DACAC,OACA,CACA,uCACAC,8CACAA,uEACAA,6CACAjC,wDACA,uCACAkC,uCACAA,uEACAA,6CACAlC,wDAEA,CAGA,yBAEApB,kBACAO,WAEAL,iBAEAoB,4CAEA,CAGA,wCAEAiC,6BACAA,uGACAvD,kBACAO,WAEAN,iBAEAqB,gDAEA,CAGA,8BAEA,sBAEAlB,WAEAoD,wCAEAxD,kBACAO,WAEAN,wOAEAqB,iDAGA,CAGA,0BAEA,qBACA,CAEA,8BACA,IACAgB,+BACAmB,eAmBA,CAlBA,MAEArC,mEAGA,iDACA,KAGAwB,oBAFAc,gBAEA,qNAGA,4JAIAd,wHAEA,CACA,CAGA,gCAEA,oCACAe,yDACA,uCAEAf,kNAIAvB,2BAEAuC,iBACSrD,WAUT,kCACAsD,oBACAC,sBAEAxC,2CACAuC,oBACAC,oBACA,GAAiB,GAhBjBxC,8CACA,sCAEAuC,oBACAC,qBACA,GACA,EAaA,CAEA,6BAEAX,cACA,CAEA,+BAEA,iFAGA,CAmCA,CAjtBC,GCAD,WAOA7B,0BACAA,0DAGAA,yCACAyC,sCACAC,sCACAC,2BAIA3C,iDACAyC,gFACAC,uFACAC,wEAEA3C,iDACAyC,qBACAC,qBACAC,aAGA,OACAC,kBACAC,gBACAC,kBACAC,eAwBA,cACA,gBACA,MACA,IACAtC,SAGA,CAFA,MAAcC,GACd,wBACA,CACA,+BAEA,cACAsC,EAEAA,WAEA,CACA,iDACApC,mBACAC,oBACA,UACA,CA0NA,gBAEA,QADAoC,eACAzH,eAA0CA,MAAOA,GACjD,kBACA,mBACA,0BAGA,QACA,CAEA,cACA,sEACA0H,+DACAA,oDACA,CAEA,cACA,qEACAlD,iEAEAmD,8DACAnD,iEAEAmD,qDACAnD,wDAEA,CACA,CAEA,cACA,gBACA,SAEUxE,WACVkF,UAIA,cACA,aACAO,kBAGAA,4BACA,CAVAmC,gBAFA1C,IAIAA,CASA,CAGA,aACA,mEACA,MACA,2IACA,sBACA2C,CACA,CAEA,kBACA,MACA,IACA,oDACAC,YAQA,CAPA,MACAC,GACA,yCACA,uIAEAA,SAEA,CACA,CAEA,cACA,yBACAC,uBACAC,qBACAC,sBACAC,wBACAC,sBACAC,oBAEAC,aAEA,OACAC,aACAP,eACAQ,SACAP,sBACAQ,UACAP,uBACAQ,YACAC,UACAC,WACAC,YACAR,OAEA,CAEA,cACA,0BACAS,oBAEA,aADAA,OAEA,CAEA,cACA,wBAGA,aAFAC,QAGA,CAEA,cACA,8BACAC,sBACAC,oBACAC,uBAEA,4EACA,CAEA,gBACA,2BACAC,wEAEA,kBADAA,SAEA,WACAA,SAGA,CApYA3E,2CA2CA,aACA,SAKA,aACA,gBACA,IACA,mEACA4E,UACA,mCACAC,QACAA,mBAGA,SACA,qDACAC,eACA9E,mDACAA,oDAGA,OACA4E,QACAG,0BACAC,4CACAC,YAeA,CAbA,MAAc/D,GACd,wDACA,WAEA0D,EADAxC,gBACA8C,UAEAA,UAEA,CACAN,QACAI,gEACA3G,QAEA,CACA,GAzCA8G,kBACA,qBACA,EAwCA,EApFAnF,oCAsFA,cACA,MACA,SAOA,cACA,WACAqD,YACA+B,IAMA,QAFAC,IAHAC,uBACAC,gBAIA5J,IAA4BA,KAAcA,KAC1C0J,kBACA,IAGA,cAFAA,gBAEA,CACA5E,aACA,MAGA,CADA,MACA,EAEA,uBACAA,CACA,EA9BA+E,GACAL,kBACA,SACAC,UACA,kBACA,EA0BA,EApHApF,oCAsHA,cACA,MACA,SAOA,cACA,WACAoF,YAEA,IACAK,EADAH,uBAIAG,EADAC,EACAJ,QAEAA,+DAIA,QAFAK,gBACAlF,KACA9E,IAA4BA,KAAYA,KACxC0J,qBACA,oBACAO,qBACA,SACA,oBACAnF,WAGA,uBACAA,CACA,EAhCAiF,GACAP,kBACA,SACAC,UACA,kBACA,EA4BA,EAtJApF,4CAwJA,cACA,MACA,SAOA,cACA,WACAoF,YACA,mBACA,WACA,yCACA,uBACAA,UACA,gBACA,qDACApF,iDACA6F,KAEA,QACA,EArBA9B,GACAoB,kBACA,SACAC,UACA,kBACA,EAiBA,EA7KApF,yCA+KA,gBACA,MACA,SAOA,cACA,WACA8F,OACAV,YACA,mBACA,WACA,kIACA,iBACA,SACA,uPAEA,wEAEAf,aACA0B,6BACAA,2EACAA,UACA,oBACA,uBACAC,CACA,EA3BAjC,KACAoB,kBACA,SACAC,UACA,kBACA,EAuBA,EA1MApF,gCA4MA,gBACA,MACA,SAOA,cACA,WACAgG,OACAZ,YACA,mBACA,WACA,kIACA,iBACA,SACA,uPAGA,4EACAa,yBAEA,mFACAC,wEACA,wEAEA7B,aACA0B,6BACAA,kBACA,kEAEA,uBACAI,CACA,EAjCApC,KACAoB,kBACA,SACAC,UACA,kBACA,EA6BA,EA7OApF,wEAmXA,CA1aA,GCAA,WAYA,aACA,mBACA,8KACA,uBACA,4KAEA,yBACA,CAQA,cACA,2BAA0C,+CAC1C,CA5BAA,0BACAA,wBACAoG,UAmBA,aACA,2BAA0C,qDAC1C,EApBAC,kBACAC,KAqCA,gBACA,2BAA0C,6CAC1C,EAtCAC,SAyCA,cACA,4BACAC,oBAA0C,+CAC1C,EA3CAC,gBA8CA,gBAEA,mBACAJ,UAWA,cAIA,QAHA5F,KAGA9E,OAFA2J,SAEAoB,OAAoD/K,IAAaA,IACjE0J,UACAsB,uCACA,gCACAC,6BACAA,2BACAA,uBACAA,2BACAnG,UAEA,GAGA,QACA,EA7BArD,SAEAuD,oBAEA,gBACA,8BACAiG,kCACAA,EACA,IACA,CAqBA,EA9EAC,cAwBA,gBACA,2BAA0C,sDAC1C,EAzBAC,aA4BA,cACA,2BAA0C,uDAC1C,EAqEA,CA5GA","names":["root","define","module","this","viewBox","clone","fragment","parent","xhr","cachedDocument","body","target","embed","polyfill","test","requestAnimationFrame","index","svg","id","loadreadystatechange","uses","oninterval","e","r","a","i","s","o","u","buttons","holder","submit","ok","cancel","input","log","alert","confirm","extend","labels","delay","m","g","y","v","b","t","w","p","f","bind","build","n","close","h","setTimeout","dialog","c","type","hide","init","notify","set","setup","unbind","prompt","success","error","scroll","left","l","scrollable","plugin_resolved","plugin_reject","plugin_resolve","isOpera","isFireFox","isSafari","isYandex","canPromise","cadesplugin_loaded_event_recieved","cadesplugin","ru_cryptopro_npcades_10_native_bridge","callbacksCount","callbacks","resultForCallback","callback","call","callbackId","hasCallback","arrObjs","iframe","document","isNativeMessageSupported","window","set_constantValues","check_plugin_working","name","tem","M","level","console","cpcsp_console_log","result","err","Promise","onFulfilled","onRejected","navigator","browserSpecs","CreateObject","number","ex","eval","tmpobj","ovr","plugin_loaded_error","cpcsp_chrome_nmcades","url","fileref","nmcades_api_onload","setAttribute","elem","pluginObject","isIE","elem1","elem2","msg","show_firefox_missing_extension_dialog","plugin_loaded","mimetype","div","load_extension","load_npapi_plugin","check_npapi_plugin","Gost3411_2012_256","Gost3411_2012_512","Gost3411","Unknown","Loaded","Enabled","Ready","promise","parts","algorithmOid","oid","decimalToHexString","oStore","oVersion","er","serialNumber","issuerName","subjectName","validFromDate","validToDate","data","alg","thumbprint","issuer","subject","validFrom","validTo","status","algorithm","certAlgorithm","validator","publicKey","algo","friendlyName","oCerts","state","pluginVersion","providerVersions","plugin","jsModule","providers","states","catch","store","cert","certs","certCnt","serial","certificates","includeInactive","count","isValid","kind","content","oHashedData","hash","oSigner","oSignedData","sSignedData","getStatus","getCertificates","sign","findCert","ready","mapCertificates","length","ko","signer","getBase64Hash","getAlgorithm"],"sourceRoot":"webpack:///","sources":["node_modules/svg4everybody/dist/svg4everybody.js","node_modules/alertify/lib/alertify.min.js","node_modules/smoothscroll-polyfill/dist/smoothscroll.min.js","src/scripts/cryptopro/cadesplugin_api.js","src/scripts/cryptopro/ETR.cadesextensions_async.js","src/scripts/cryptopro/ETR.cadesplugin.js"],"sourcesContent":["!function(root, factory) {\n \"function\" == typeof define && define.amd ? // AMD. Register as an anonymous module unless amdModuleId is set\n define([], function() {\n return root.svg4everybody = factory();\n }) : \"object\" == typeof module && module.exports ? // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory() : root.svg4everybody = factory();\n}(this, function() {\n /*! svg4everybody v2.1.9 | github.com/jonathantneal/svg4everybody */\n function embed(parent, svg, target) {\n // if the target exists\n if (target) {\n // create a document fragment to hold the contents of the target\n var fragment = document.createDocumentFragment(), viewBox = !svg.hasAttribute(\"viewBox\") && target.getAttribute(\"viewBox\");\n // conditionally set the viewBox on the svg\n viewBox && svg.setAttribute(\"viewBox\", viewBox);\n // copy the contents of the clone into the fragment\n for (// clone the target\n var clone = target.cloneNode(!0); clone.childNodes.length; ) {\n fragment.appendChild(clone.firstChild);\n }\n // append the fragment into the svg\n parent.appendChild(fragment);\n }\n }\n function loadreadystatechange(xhr) {\n // listen to changes in the request\n xhr.onreadystatechange = function() {\n // if the request is ready\n if (4 === xhr.readyState) {\n // get the cached html document\n var cachedDocument = xhr._cachedDocument;\n // ensure the cached html document based on the xhr response\n cachedDocument || (cachedDocument = xhr._cachedDocument = document.implementation.createHTMLDocument(\"\"), \n cachedDocument.body.innerHTML = xhr.responseText, xhr._cachedTarget = {}), // clear the xhr embeds list and embed each item\n xhr._embeds.splice(0).map(function(item) {\n // get the cached target\n var target = xhr._cachedTarget[item.id];\n // ensure the cached target\n target || (target = xhr._cachedTarget[item.id] = cachedDocument.getElementById(item.id)), \n // embed the target into the svg\n embed(item.parent, item.svg, target);\n });\n }\n }, // test the ready state change immediately\n xhr.onreadystatechange();\n }\n function svg4everybody(rawopts) {\n function oninterval() {\n // while the index exists in the live collection\n for (// get the cached index\n var index = 0; index < uses.length; ) {\n // get the current \n var use = uses[index], parent = use.parentNode, svg = getSVGAncestor(parent), src = use.getAttribute(\"xlink:href\") || use.getAttribute(\"href\");\n if (!src && opts.attributeName && (src = use.getAttribute(opts.attributeName)), \n svg && src) {\n if (polyfill) {\n if (!opts.validate || opts.validate(src, svg, use)) {\n // remove the element\n parent.removeChild(use);\n // parse the src and get the url and id\n var srcSplit = src.split(\"#\"), url = srcSplit.shift(), id = srcSplit.join(\"#\");\n // if the link is external\n if (url.length) {\n // get the cached xhr request\n var xhr = requests[url];\n // ensure the xhr request exists\n xhr || (xhr = requests[url] = new XMLHttpRequest(), xhr.open(\"GET\", url), xhr.send(), \n xhr._embeds = []), // add the svg and id as an item to the xhr embeds list\n xhr._embeds.push({\n parent: parent,\n svg: svg,\n id: id\n }), // prepare the xhr ready state change event\n loadreadystatechange(xhr);\n } else {\n // embed the local id into the svg\n embed(parent, svg, document.getElementById(id));\n }\n } else {\n // increase the index when the previous value was not \"valid\"\n ++index, ++numberOfSvgUseElementsToBypass;\n }\n }\n } else {\n // increase the index when the previous value was not \"valid\"\n ++index;\n }\n }\n // continue the interval\n (!uses.length || uses.length - numberOfSvgUseElementsToBypass > 0) && requestAnimationFrame(oninterval, 67);\n }\n var polyfill, opts = Object(rawopts), newerIEUA = /\\bTrident\\/[567]\\b|\\bMSIE (?:9|10)\\.0\\b/, webkitUA = /\\bAppleWebKit\\/(\\d+)\\b/, olderEdgeUA = /\\bEdge\\/12\\.(\\d+)\\b/, edgeUA = /\\bEdge\\/.(\\d+)\\b/, inIframe = window.top !== window.self;\n polyfill = \"polyfill\" in opts ? opts.polyfill : newerIEUA.test(navigator.userAgent) || (navigator.userAgent.match(olderEdgeUA) || [])[1] < 10547 || (navigator.userAgent.match(webkitUA) || [])[1] < 537 || edgeUA.test(navigator.userAgent) && inIframe;\n // create xhr requests object\n var requests = {}, requestAnimationFrame = window.requestAnimationFrame || setTimeout, uses = document.getElementsByTagName(\"use\"), numberOfSvgUseElementsToBypass = 0;\n // conditionally start the interval if the polyfill is active\n polyfill && oninterval();\n }\n function getSVGAncestor(node) {\n for (var svg = node; \"svg\" !== svg.nodeName.toLowerCase() && (svg = svg.parentNode); ) {}\n return svg;\n }\n return svg4everybody;\n});","/**\n * alertify\n * An unobtrusive customizable JavaScript notification system\n *\n * @author Fabien Doiron \n * @copyright Fabien Doiron 2012\n * @license MIT \n * @link http://fabien-d.github.com/alertify.js/\n * @module alertify\n * @version 0.3.0\n */\n(function(e,t){\"use strict\";var n=e.document,r;r=function(){var r={},i={},s=!1,o={ENTER:13,ESC:27,SPACE:32},u=[],a,f,l,c,h;return i={buttons:{holder:'',submit:'',ok:'{{ok}}',cancel:'{{cancel}}'},input:'
',message:'

{{message}}

',log:'
{{message}}
'},a=function(e){return n.getElementById(e)},r={labels:{ok:\"OK\",cancel:\"Cancel\"},delay:5e3,addListeners:function(r){var i=a(\"alertify-resetFocus\"),s=a(\"alertify-ok\")||t,u=a(\"alertify-cancel\")||t,f=a(\"alertify-text\")||t,l=a(\"alertify-form\")||t,c=typeof s!=\"undefined\",h=typeof u!=\"undefined\",p=typeof f!=\"undefined\",d=\"\",v=this,m,g,y,b,w;m=function(e){typeof e.preventDefault!=\"undefined\"&&e.preventDefault(),y(e),typeof f!=\"undefined\"&&(d=f.value),typeof r==\"function\"&&r(!0,d)},g=function(e){typeof e.preventDefault!=\"undefined\"&&e.preventDefault(),y(e),typeof r==\"function\"&&r(!1)},y=function(e){v.hide(),v.unbind(n.body,\"keyup\",b),v.unbind(i,\"focus\",w),p&&v.unbind(l,\"submit\",m),c&&v.unbind(s,\"click\",m),h&&v.unbind(u,\"click\",g)},b=function(e){var t=e.keyCode;t===o.SPACE&&!p&&m(e),t===o.ESC&&h&&g(e)},w=function(e){p?f.focus():h?u.focus():s.focus()},this.bind(i,\"focus\",w),c&&this.bind(s,\"click\",m),h&&this.bind(u,\"click\",g),this.bind(n.body,\"keyup\",b),p&&this.bind(l,\"submit\",m),e.setTimeout(function(){f?(f.focus(),f.select()):s.focus()},50)},bind:function(e,t,n){typeof e.addEventListener==\"function\"?e.addEventListener(t,n,!1):e.attachEvent&&e.attachEvent(\"on\"+t,n)},build:function(e){var t=\"\",n=e.type,r=e.message,s=e.cssClass||\"\";t+='
',n===\"prompt\"&&(t+='
'),t+='
',t+=i.message.replace(\"{{message}}\",r),n===\"prompt\"&&(t+=i.input),t+=i.buttons.holder,t+=\"
\",n===\"prompt\"&&(t+=\"
\"),t+='Reset Focus',t+=\"
\";switch(n){case\"confirm\":t=t.replace(\"{{buttons}}\",i.buttons.cancel+i.buttons.ok),t=t.replace(\"{{ok}}\",this.labels.ok).replace(\"{{cancel}}\",this.labels.cancel);break;case\"prompt\":t=t.replace(\"{{buttons}}\",i.buttons.cancel+i.buttons.submit),t=t.replace(\"{{ok}}\",this.labels.ok).replace(\"{{cancel}}\",this.labels.cancel);break;case\"alert\":t=t.replace(\"{{buttons}}\",i.buttons.ok),t=t.replace(\"{{ok}}\",this.labels.ok);break;default:}return c.className=\"alertify alertify-show alertify-\"+n+\" \"+s,l.className=\"alertify-cover\",t},close:function(e,t){var n=t&&!isNaN(t)?+t:this.delay;this.bind(e,\"click\",function(){h.removeChild(e)}),setTimeout(function(){typeof e!=\"undefined\"&&e.parentNode===h&&h.removeChild(e)},n)},dialog:function(e,t,r,i,o){f=n.activeElement;var a=function(){if(c&&c.scrollTop!==null)return;a()};if(typeof e!=\"string\")throw new Error(\"message must be a string\");if(typeof t!=\"string\")throw new Error(\"type must be a string\");if(typeof r!=\"undefined\"&&typeof r!=\"function\")throw new Error(\"fn must be a function\");return typeof this.init==\"function\"&&(this.init(),a()),u.push({type:t,message:e,callback:r,placeholder:i,cssClass:o}),s||this.setup(),this},extend:function(e){if(typeof e!=\"string\")throw new Error(\"extend method must have exactly one paramter\");return function(t,n){return this.log(t,e,n),this}},hide:function(){u.splice(0,1),u.length>0?this.setup():(s=!1,c.className=\"alertify alertify-hide alertify-hidden\",l.className=\"alertify-cover alertify-hidden\",f.focus())},init:function(){n.createElement(\"nav\"),n.createElement(\"article\"),n.createElement(\"section\"),l=n.createElement(\"div\"),l.setAttribute(\"id\",\"alertify-cover\"),l.className=\"alertify-cover alertify-hidden\",n.body.appendChild(l),c=n.createElement(\"section\"),c.setAttribute(\"id\",\"alertify\"),c.className=\"alertify alertify-hidden\",n.body.appendChild(c),h=n.createElement(\"section\"),h.setAttribute(\"id\",\"alertify-logs\"),h.className=\"alertify-logs\",n.body.appendChild(h),n.body.setAttribute(\"tabindex\",\"0\"),delete this.init},log:function(e,t,n){var r=function(){if(h&&h.scrollTop!==null)return;r()};return typeof this.init==\"function\"&&(this.init(),r()),this.notify(e,t,n),this},notify:function(e,t,r){var i=n.createElement(\"article\");i.className=\"alertify-log\"+(typeof t==\"string\"&&t!==\"\"?\" alertify-log-\"+t:\"\"),i.innerHTML=e,h.insertBefore(i,h.firstChild),setTimeout(function(){i.className=i.className+\" alertify-log-show\"},50),this.close(i,r)},set:function(e){var t;if(typeof e!=\"object\"&&e instanceof Array)throw new Error(\"args must be an object\");for(t in e)e.hasOwnProperty(t)&&(this[t]=e[t])},setup:function(){var e=u[0];s=!0,c.innerHTML=this.build(e),typeof e.placeholder==\"string\"&&e.placeholder!==\"\"&&(a(\"alertify-text\").value=e.placeholder),this.addListeners(e.callback)},unbind:function(e,t,n){typeof e.removeEventListener==\"function\"?e.removeEventListener(t,n,!1):e.detachEvent&&e.detachEvent(\"on\"+t,n)}},{alert:function(e,t,n){return r.dialog(e,\"alert\",t,\"\",n),this},confirm:function(e,t,n){return r.dialog(e,\"confirm\",t,\"\",n),this},extend:r.extend,init:r.init,log:function(e,t,n){return r.log(e,t,n),this},prompt:function(e,t,n,i){return r.dialog(e,\"prompt\",t,n,i),this},success:function(e,t){return r.log(e,\"success\",t),this},error:function(e,t){return r.log(e,\"error\",t),this},set:function(e){r.set(e)},labels:r.labels}},typeof define==\"function\"?define([],function(){return new r}):typeof e.alertify==\"undefined\"&&(e.alertify=new r)})(this);","!function(){\"use strict\";function o(){var o=window,t=document;if(!(\"scrollBehavior\"in t.documentElement.style&&!0!==o.__forceSmoothScrollPolyfill__)){var l,e=o.HTMLElement||o.Element,r=468,i={scroll:o.scroll||o.scrollTo,scrollBy:o.scrollBy,elementScroll:e.prototype.scroll||n,scrollIntoView:e.prototype.scrollIntoView},s=o.performance&&o.performance.now?o.performance.now.bind(o.performance):Date.now,c=(l=o.navigator.userAgent,new RegExp([\"MSIE \",\"Trident/\",\"Edge/\"].join(\"|\")).test(l)?1:0);o.scroll=o.scrollTo=function(){void 0!==arguments[0]&&(!0!==f(arguments[0])?h.call(o,t.body,void 0!==arguments[0].left?~~arguments[0].left:o.scrollX||o.pageXOffset,void 0!==arguments[0].top?~~arguments[0].top:o.scrollY||o.pageYOffset):i.scroll.call(o,void 0!==arguments[0].left?arguments[0].left:\"object\"!=typeof arguments[0]?arguments[0]:o.scrollX||o.pageXOffset,void 0!==arguments[0].top?arguments[0].top:void 0!==arguments[1]?arguments[1]:o.scrollY||o.pageYOffset))},o.scrollBy=function(){void 0!==arguments[0]&&(f(arguments[0])?i.scrollBy.call(o,void 0!==arguments[0].left?arguments[0].left:\"object\"!=typeof arguments[0]?arguments[0]:0,void 0!==arguments[0].top?arguments[0].top:void 0!==arguments[1]?arguments[1]:0):h.call(o,t.body,~~arguments[0].left+(o.scrollX||o.pageXOffset),~~arguments[0].top+(o.scrollY||o.pageYOffset)))},e.prototype.scroll=e.prototype.scrollTo=function(){if(void 0!==arguments[0])if(!0!==f(arguments[0])){var o=arguments[0].left,t=arguments[0].top;h.call(this,this,void 0===o?this.scrollLeft:~~o,void 0===t?this.scrollTop:~~t)}else{if(\"number\"==typeof arguments[0]&&void 0===arguments[1])throw new SyntaxError(\"Value could not be converted\");i.elementScroll.call(this,void 0!==arguments[0].left?~~arguments[0].left:\"object\"!=typeof arguments[0]?~~arguments[0]:this.scrollLeft,void 0!==arguments[0].top?~~arguments[0].top:void 0!==arguments[1]?~~arguments[1]:this.scrollTop)}},e.prototype.scrollBy=function(){void 0!==arguments[0]&&(!0!==f(arguments[0])?this.scroll({left:~~arguments[0].left+this.scrollLeft,top:~~arguments[0].top+this.scrollTop,behavior:arguments[0].behavior}):i.elementScroll.call(this,void 0!==arguments[0].left?~~arguments[0].left+this.scrollLeft:~~arguments[0]+this.scrollLeft,void 0!==arguments[0].top?~~arguments[0].top+this.scrollTop:~~arguments[1]+this.scrollTop))},e.prototype.scrollIntoView=function(){if(!0!==f(arguments[0])){var l=function(o){for(;o!==t.body&&!1===(e=p(l=o,\"Y\")&&a(l,\"Y\"),r=p(l,\"X\")&&a(l,\"X\"),e||r);)o=o.parentNode||o.host;var l,e,r;return o}(this),e=l.getBoundingClientRect(),r=this.getBoundingClientRect();l!==t.body?(h.call(this,l,l.scrollLeft+r.left-e.left,l.scrollTop+r.top-e.top),\"fixed\"!==o.getComputedStyle(l).position&&o.scrollBy({left:e.left,top:e.top,behavior:\"smooth\"})):o.scrollBy({left:r.left,top:r.top,behavior:\"smooth\"})}else i.scrollIntoView.call(this,void 0===arguments[0]||arguments[0])}}function n(o,t){this.scrollLeft=o,this.scrollTop=t}function f(o){if(null===o||\"object\"!=typeof o||void 0===o.behavior||\"auto\"===o.behavior||\"instant\"===o.behavior)return!0;if(\"object\"==typeof o&&\"smooth\"===o.behavior)return!1;throw new TypeError(\"behavior member of ScrollOptions \"+o.behavior+\" is not a valid value for enumeration ScrollBehavior.\")}function p(o,t){return\"Y\"===t?o.clientHeight+c1?1:n,l=.5*(1-Math.cos(Math.PI*c)),e=t.startX+(t.x-t.startX)*l,i=t.startY+(t.y-t.startY)*l,t.method.call(t.scrollable,e,i),e===t.x&&i===t.y||o.requestAnimationFrame(d.bind(o,t))}function h(l,e,r){var c,f,p,a,h=s();l===t.body?(c=o,f=o.scrollX||o.pageXOffset,p=o.scrollY||o.pageYOffset,a=i.scroll):(c=l,f=l.scrollLeft,p=l.scrollTop,a=n),d({scrollable:c,method:a,startTime:h,startX:f,startY:p,x:e,y:r})}}\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports={polyfill:o}:o()}();",";(function () {\n //already loaded\n if(window.cadesplugin)\n return;\n\n var pluginObject;\n var plugin_resolved = 0;\n var plugin_reject;\n var plugin_resolve;\n var isOpera = 0;\n var isFireFox = 0;\n var isSafari = 0;\n var isYandex = 0;\n var canPromise = !!window.Promise;\n var cadesplugin_loaded_event_recieved = false;\n var cadesplugin;\n\n if(canPromise)\n {\n cadesplugin = new Promise(function(resolve, reject)\n {\n plugin_resolve = resolve;\n plugin_reject = reject;\n });\n } else\n {\n cadesplugin = {};\n }\n\n function check_browser() {\n var ua= navigator.userAgent, tem, M= ua.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n if(/trident/i.test(M[1])){\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\n return { name:'IE', version:(tem[1] || '')};\n }\n if(M[1] === 'Chrome'){\n tem = ua.match(/\\b(OPR|Edg|YaBrowser)\\/(\\d+)/);\n if (tem != null)\n return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] };\n }\n M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null)\n M.splice(1, 1, tem[1]);\n return {name:M[0],version:M[1]};\n }\n var browserSpecs = check_browser();\n\n function cpcsp_console_log(level, msg){\n //IE9 не может писать в консоль если не открыта вкладка developer tools\n if(typeof(console) === 'undefined')\n return;\n if (level <= cadesplugin.current_log_level ){\n if (level === cadesplugin.LOG_LEVEL_DEBUG)\n console.log(\"DEBUG: %s\", msg);\n if (level === cadesplugin.LOG_LEVEL_INFO)\n console.info(\"INFO: %s\", msg);\n if (level === cadesplugin.LOG_LEVEL_ERROR)\n console.error(\"ERROR: %s\", msg);\n return;\n }\n }\n\n function set_log_level(level){\n if (!((level === cadesplugin.LOG_LEVEL_DEBUG) ||\n (level === cadesplugin.LOG_LEVEL_INFO) ||\n (level === cadesplugin.LOG_LEVEL_ERROR))){\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"cadesplugin_api.js: Incorrect log_level: \" + level);\n return;\n }\n cadesplugin.current_log_level = level;\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = DEBUG\");\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = INFO\");\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = ERROR\");\n if(isNativeMessageSupported())\n {\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)\n window.postMessage(\"set_log_level=debug\", \"*\");\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)\n window.postMessage(\"set_log_level=info\", \"*\");\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)\n window.postMessage(\"set_log_level=error\", \"*\");\n }\n }\n\n function set_constantValues()\n {\n cadesplugin.CAPICOM_MEMORY_STORE = 0;\n cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1;\n cadesplugin.CAPICOM_CURRENT_USER_STORE = 2;\n cadesplugin.CADESCOM_MEMORY_STORE = 0;\n cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1;\n cadesplugin.CADESCOM_CURRENT_USER_STORE = 2;\n cadesplugin.CADESCOM_CONTAINER_STORE = 100;\n\n cadesplugin.CAPICOM_MY_STORE = \"My\";\n\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\n\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\n\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\n\n cadesplugin.CADESCOM_XADES_DEFAULT = 0x00000010;\n cadesplugin.CADESCOM_XADES_BES = 0x00000020;\n cadesplugin.CADESCOM_XADES_T = 0x00000050;\n cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0;\n cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000;\n\n cadesplugin.XmlDsigGost3410UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411\";\n cadesplugin.XmlDsigGost3411UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr3411\";\n cadesplugin.XmlDsigGost3410Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411\";\n cadesplugin.XmlDsigGost3411Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411\";\n \n cadesplugin.XmlDsigGost3411Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256\";\n cadesplugin.XmlDsigGost3410Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256\";\n cadesplugin.XmlDsigGost3411Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512\";\n cadesplugin.XmlDsigGost3410Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512\";\n\n cadesplugin.CADESCOM_CADES_DEFAULT = 0;\n cadesplugin.CADESCOM_CADES_BES = 1;\n cadesplugin.CADESCOM_CADES_T = 0x5;\n cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\n cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff;\n\n cadesplugin.CADESCOM_ENCODE_BASE64 = 0;\n cadesplugin.CADESCOM_ENCODE_BINARY = 1;\n cadesplugin.CADESCOM_ENCODE_ANY = -1;\n\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\n\n cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\n cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\n\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\n\n cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\n\n cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9;\n\n cadesplugin.CAPICOM_OID_OTHER = 0;\n cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\n\n cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2;\n cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5;\n cadesplugin.CAPICOM_EKU_OTHER = 0;\n\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\n cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1;\n\n cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0;\n cadesplugin.CADESCOM_BASE64_TO_BINARY = 1;\n\n cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0;\n cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1;\n cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\n\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\n\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0;\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1;\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2;\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3;\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\n\n cadesplugin.LOG_LEVEL_DEBUG = 4;\n cadesplugin.LOG_LEVEL_INFO = 2;\n cadesplugin.LOG_LEVEL_ERROR = 1;\n\n cadesplugin.CADESCOM_AllowNone = 0;\n cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1;\n cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2;\n cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4;\n cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000;\n\n cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01;\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02;\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04;\n cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07;\n\n cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00;\n cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01;\n cadesplugin.ENABLE_CARRIER_CREATE = 0x02;\n cadesplugin.ENABLE_ANY_OPERATION = 0x03;\n\n cadesplugin.CADESCOM_PRODUCT_CSP = 0;\n cadesplugin.CADESCOM_PRODUCT_OCSP = 1;\n cadesplugin.CADESCOM_PRODUCT_TSP = 2;\n\n cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001;\n cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002;\n cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004;\n cadesplugin.MEDIA_TYPE_SCARD = 0x00000008;\n\n cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0;\n cadesplugin.AT_KEYEXCHANGE = 1;\n cadesplugin.AT_SIGNATURE = 2;\n }\n\n function async_spawn(generatorFunc) {\n function continuer(verb, arg) {\n var result;\n try {\n result = generator[verb](arg);\n } catch (err) {\n return Promise.reject(err);\n }\n if (result.done) {\n return result.value;\n } else {\n return Promise.resolve(result.value).then(onFulfilled, onRejected);\n }\n }\n var generator = generatorFunc(Array.prototype.slice.call(arguments, 1));\n var onFulfilled = continuer.bind(continuer, \"next\");\n var onRejected = continuer.bind(continuer, \"throw\");\n return onFulfilled();\n }\n\n function isIE() {\n // var retVal = ((\"Microsoft Internet Explorer\" == navigator.appName) || // IE < 11\n // navigator.userAgent.match(/Trident\\/./i)); // IE 11\n return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE');\n }\n\n function isIOS() {\n return (navigator.userAgent.match(/ipod/i) ||\n navigator.userAgent.match(/ipad/i) ||\n navigator.userAgent.match(/iphone/i));\n }\n\n function isNativeMessageSupported()\n {\n // В IE работаем через NPAPI\n if(isIE())\n return false;\n // В Edge работаем через NativeMessage\n if (browserSpecs.name === 'Edg') {\n return true;\n }\n if (browserSpecs.name === 'YaBrowser') {\n isYandex = true;\n return true;\n }\n // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии\n if(browserSpecs.name === 'Opera') {\n isOpera = true;\n if(browserSpecs.version >= 33){\n return true;\n }\n else{\n return false;\n }\n }\n if(browserSpecs.name === 'Firefox') {\n isFireFox = true;\n if(browserSpecs.version >= 52){\n return true;\n }\n else{\n return false;\n }\n }\n if(browserSpecs.name === 'Chrome') {\n if(browserSpecs.version >= 42){\n return true;\n }\n else{\n return false;\n }\n }\n //В Сафари начиная с 12 версии нет NPAPI\n if(browserSpecs.name === 'Safari') {\n isSafari = true;\n if(browserSpecs.version >= 12) {\n return true;\n } else {\n return false;\n }\n }\n }\n\n // Функция активации объектов КриптоПро ЭЦП Browser plug-in\n function CreateObject(name) {\n if (isIOS()) {\n // На iOS для создания объектов используется функция\n // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js\n return call_ru_cryptopro_npcades_10_native_bridge(\"CreateObject\", [name]);\n }\n if (isIE()) {\n // В Internet Explorer создаются COM-объекты\n if (name.match(/X509Enrollment/i)) {\n try {\n // Объекты CertEnroll пробуем создавать через нашу фабрику,\n // если не получилось то через CX509EnrollmentWebClassFactory\n var objCertEnrollClassFactory = document.getElementById(\"webClassFactory\");\n return objCertEnrollClassFactory.CreateObject(name);\n }\n catch (e) {\n try {\n var objWebClassFactory = document.getElementById(\"certEnrollClassFactory\");\n return objWebClassFactory.CreateObject(name);\n }\n catch (err) {\n throw (\"Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS\");\n }\n }\n }\n // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory\n try {\n var objWebClassFactory = document.getElementById(\"webClassFactory\");\n return objWebClassFactory.CreateObject(name);\n }\n catch (e) {\n // Для версий плагина ниже 2.0.12538\n return new ActiveXObject(name);\n }\n }\n // создаются объекты NPAPI\n return pluginObject.CreateObject(name);\n }\n\n function decimalToHexString(number) {\n if (number < 0) {\n number = 0xFFFFFFFF + number + 1;\n }\n\n return number.toString(16).toUpperCase();\n }\n\n function GetMessageFromException(e) {\n var err = e.message;\n if (!err) {\n err = e;\n } else if (e.number) {\n err += \" (0x\" + decimalToHexString(e.number) + \")\";\n }\n return err;\n }\n\n function getLastError(exception) {\n if(isNativeMessageSupported() || isIE() || isIOS() ) {\n return GetMessageFromException(exception);\n }\n\n try {\n return pluginObject.getLastError();\n } catch(e) {\n return GetMessageFromException(exception);\n }\n }\n\n // Функция для удаления созданных объектов\n function ReleasePluginObjects() {\n return cpcsp_chrome_nmcades.ReleasePluginObjects();\n }\n\n // Функция активации асинхронных объектов КриптоПро ЭЦП Browser plug-in\n function CreateObjectAsync(name) {\n return pluginObject.CreateObjectAsync(name);\n }\n\n //Функции для IOS\n var ru_cryptopro_npcades_10_native_bridge = {\n callbacksCount : 1,\n callbacks : {},\n\n // Automatically called by native layer when a result is available\n resultForCallback : function resultForCallback(callbackId, resultArray) {\n var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId];\n if (!callback) return;\n callback.apply(null,resultArray);\n },\n\n // Use this in javascript to request native objective-c code\n // functionName : string (I think the name is explicit :p)\n // args : array of arguments\n // callback : function with n-arguments that is going to be called when the native code returned\n call : function call(functionName, args, callback) {\n var hasCallback = callback && typeof callback === \"function\";\n var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0;\n\n if (hasCallback)\n ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback;\n\n var iframe = document.createElement(\"IFRAME\");\n var arrObjs = new Array(\"_CPNP_handle\");\n try{\n iframe.setAttribute(\"src\", \"cpnp-js-call:\" + functionName + \":\" + callbackId+ \":\" + encodeURIComponent(JSON.stringify(args, arrObjs)));\n } catch(e){\n alert(e);\n }\n document.documentElement.appendChild(iframe);\n iframe.parentNode.removeChild(iframe);\n iframe = null;\n }\n };\n\n function call_ru_cryptopro_npcades_10_native_bridge(functionName, array){\n var tmpobj;\n var ex;\n ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function(e, response){\n ex = e;\n var str='tmpobj='+response;\n eval(str);\n if (typeof (tmpobj) === \"string\"){\n tmpobj = tmpobj.replace(/\\\\\\n/gm, \"\\n\");\n tmpobj = tmpobj.replace(/\\\\\\r/gm, \"\\r\");\n }\n });\n if(ex)\n throw ex;\n return tmpobj;\n }\n\n function show_firefox_missing_extension_dialog()\n {\n if (!window.cadesplugin_skip_extension_install)\n {\n var ovr = document.createElement('div');\n ovr.id = \"cadesplugin_ovr\";\n ovr.style = \"visibility: hidden; position: fixed; left: 0px; top: 0px; width:100%; height:100%; background-color: rgba(0,0,0,0.7)\";\n ovr.innerHTML = \"
\" +\n \"\" +\n \"

Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его.\" +\n \"

Скачать расширение

\" +\n \"
\";\n document.getElementsByTagName(\"Body\")[0].appendChild(ovr);\n document.getElementById(\"cadesplugin_close_install\").addEventListener('click',function()\n {\n plugin_loaded_error(\"Плагин недоступен\");\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\n });\n\n ovr.addEventListener('click',function()\n {\n plugin_loaded_error(\"Плагин недоступен\");\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\n });\n ovr.style.visibility=\"visible\";\n }\n }\n function firefox_or_safari_nmcades_onload() {\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\n }\n\n function nmcades_api_onload () {\n window.postMessage(\"cadesplugin_echo_request\", \"*\");\n window.addEventListener(\"message\", function (event){\n if (typeof(event.data) !== \"string\" || !event.data.match(\"cadesplugin_loaded\"))\n return;\n if (cadesplugin_loaded_event_recieved)\n return;\n if(isFireFox || isSafari)\n {\n // Для Firefox, Сафари вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js\n var url = event.data.substring(event.data.indexOf(\"url:\") + 4);\n if (!url.match(\"^moz-extension://[a-zA-Z0-9-]+/nmcades_plugin_api.js$\")\n && !url.match(\"^safari-extension://[a-zA-Z0-9-]+/[a-zA-Z0-9]+/nmcades_plugin_api.js$\"))\n {\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"Bad url \\\"\" + url + \"\\\" for load CryptoPro Extension for CAdES Browser plug-in\");\n plugin_loaded_error();\n return;\n }\n var fileref = document.createElement('script');\n fileref.setAttribute(\"type\", \"text/javascript\");\n fileref.setAttribute(\"src\", url);\n fileref.onerror = plugin_loaded_error;\n fileref.onload = firefox_or_safari_nmcades_onload;\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\n }else {\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\n }\n cadesplugin_loaded_event_recieved = true;\n }, false);\n }\n\n //Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari\n function load_extension()\n {\n if(isFireFox || isSafari){\n // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера.\n nmcades_api_onload();\n } else {\n // в асинхронном варианте для Yandex и Opera подключаем расширение из Opera store.\n if (isOpera || isYandex) {\n var fileref = document.createElement('script');\n fileref.setAttribute(\"type\", \"text/javascript\");\n fileref.setAttribute(\"src\", \"chrome-extension://epebfcehmdedogndhlcacafjaacknbcm/nmcades_plugin_api.js\");\n fileref.onerror = plugin_loaded_error;\n fileref.onload = nmcades_api_onload;\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\n } else {\n // для Chrome, Chromium, Chromium Edge расширение из Chrome store\n var fileref = document.createElement('script');\n fileref.setAttribute(\"type\", \"text/javascript\");\n fileref.setAttribute(\"src\", \"chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/nmcades_plugin_api.js\");\n fileref.onerror = plugin_loaded_error;\n fileref.onload = nmcades_api_onload;\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\n }\n }\n }\n\n //Загружаем плагин для NPAPI\n function load_npapi_plugin()\n {\n var elem = document.createElement('object');\n elem.setAttribute(\"id\", \"cadesplugin_object\");\n elem.setAttribute(\"type\", \"application/x-cades\");\n elem.setAttribute(\"style\", \"visibility: hidden\");\n document.getElementsByTagName(\"body\")[0].appendChild(elem);\n pluginObject = document.getElementById(\"cadesplugin_object\");\n if(isIE())\n {\n var elem1 = document.createElement('object');\n elem1.setAttribute(\"id\", \"certEnrollClassFactory\");\n elem1.setAttribute(\"classid\", \"clsid:884e2049-217d-11da-b2a4-000e7bbb2b09\");\n elem1.setAttribute(\"style\", \"visibility: hidden\");\n document.getElementsByTagName(\"body\")[0].appendChild(elem1);\n var elem2 = document.createElement('object');\n elem2.setAttribute(\"id\", \"webClassFactory\");\n elem2.setAttribute(\"classid\", \"clsid:B04C8637-10BD-484E-B0DA-B8A039F60024\");\n elem2.setAttribute(\"style\", \"visibility: hidden\");\n document.getElementsByTagName(\"body\")[0].appendChild(elem2);\n }\n }\n\n //Отправляем событие что все ок.\n function plugin_loaded()\n {\n plugin_resolved = 1;\n if(canPromise)\n {\n plugin_resolve();\n }else {\n window.postMessage(\"cadesplugin_loaded\", \"*\");\n }\n }\n\n //Отправляем событие что сломались.\n function plugin_loaded_error(msg)\n {\n if(typeof(msg) === 'undefined' || typeof(msg) === 'object')\n msg = \"Плагин недоступен\";\n plugin_resolved = 1;\n if(canPromise)\n {\n plugin_reject(msg);\n } else {\n window.postMessage(\"cadesplugin_load_error\", \"*\");\n }\n }\n\n //проверяем что у нас хоть какое то событие ушло, и если не уходило кидаем еще раз ошибку\n function check_load_timeout()\n {\n if(plugin_resolved === 1)\n return;\n if(isFireFox)\n {\n show_firefox_missing_extension_dialog();\n }\n plugin_resolved = 1;\n if(canPromise)\n {\n plugin_reject(\"Истекло время ожидания загрузки плагина\");\n } else {\n window.postMessage(\"cadesplugin_load_error\", \"*\");\n }\n\n }\n\n //Вспомогательная функция для NPAPI\n function createPromise(arg)\n {\n return new Promise(arg);\n }\n\n function check_npapi_plugin (){\n try {\n var oAbout = CreateObject(\"CAdESCOM.About\");\n plugin_loaded();\n }\n catch (err) {\n document.getElementById(\"cadesplugin_object\").style.display = 'none';\n // Объект создать не удалось, проверим, установлен ли\n // вообще плагин. Такая возможность есть не во всех браузерах\n var mimetype = navigator.mimeTypes[\"application/x-cades\"];\n if (mimetype) {\n var plugin = mimetype.enabledPlugin;\n if (plugin) {\n plugin_loaded_error(\"Плагин загружен, но не создаются обьекты\");\n }else\n {\n plugin_loaded_error(\"Ошибка при загрузке плагина\");\n }\n }else\n {\n plugin_loaded_error(\"Плагин недоступен\");\n }\n }\n }\n\n //Проверяем работает ли плагин\n function check_plugin_working()\n {\n var div = document.createElement(\"div\");\n div.innerHTML = \"\";\n var isIeLessThan9 = (div.getElementsByTagName(\"i\").length === 1);\n if (isIeLessThan9) {\n plugin_loaded_error(\"Internet Explorer версии 8 и ниже не поддерживается\");\n return;\n }\n\n if(isNativeMessageSupported())\n {\n load_extension();\n }else if(!canPromise) {\n window.addEventListener(\"message\", function (event){\n if (event.data !== \"cadesplugin_echo_request\")\n return;\n load_npapi_plugin();\n check_npapi_plugin();\n },\n false);\n }else\n {\n if(document.readyState === \"complete\"){\n load_npapi_plugin();\n check_npapi_plugin();\n } else {\n window.addEventListener(\"load\", function (event) {\n load_npapi_plugin();\n check_npapi_plugin();\n }, false);\n }\n }\n }\n\n function set_pluginObject(obj)\n {\n pluginObject = obj;\n }\n\n function is_capilite_enabled()\n {\n if ((typeof (cadesplugin.EnableInternalCSP) !== 'undefined') && cadesplugin.EnableInternalCSP)\n return true;\n return false;\n };\n\n //Export\n cadesplugin.JSModuleVersion = \"2.3.1\";\n cadesplugin.async_spawn = async_spawn;\n cadesplugin.set = set_pluginObject;\n cadesplugin.set_log_level = set_log_level;\n cadesplugin.getLastError = getLastError;\n cadesplugin.is_capilite_enabled = is_capilite_enabled;\n\n if(isNativeMessageSupported())\n {\n cadesplugin.CreateObjectAsync = CreateObjectAsync;\n cadesplugin.ReleasePluginObjects = ReleasePluginObjects;\n }\n\n if(!isNativeMessageSupported())\n {\n cadesplugin.CreateObject = CreateObject;\n }\n\n if(window.cadesplugin_load_timeout)\n {\n setTimeout(check_load_timeout, window.cadesplugin_load_timeout);\n }\n else\n {\n setTimeout(check_load_timeout, 20000);\n }\n\n set_constantValues();\n\n cadesplugin.current_log_level = cadesplugin.LOG_LEVEL_ERROR;\n window.cadesplugin = cadesplugin;\n check_plugin_working();\n}());\n","(function () {\n // загрузка упадет в IE 9-11 из-за генераторов\n // свойства в асинхронном варианте задаются через методы propset_()\n // async_spawn(generator) разворачивает генератор в один промис,\n // cadesplugin.async_spawn был заменен из-за того, что эксепшн или возврат до вызова первого yield не оборачивался в промис\n\n /* EXPORTS */\n window.ETR = window.ETR || {};\n window.ETR.cadesextensions = window.ETR.cadesextensions || {};\n\n // маппинг OID алгоритмов\n window.ETR.cadesextensions.AlgoritmKind = {\n \"Gost3411_2012_256\": \"1.2.643.7.1.1.1.1\",\n \"Gost3411_2012_512\": \"1.2.643.7.1.1.1.2\",\n \"Gost3411\": \"1.2.643.2.2.19\"\n };\n\n // маппинг провайдеров\n window.ETR.cadesextensions.AlgoritmProviderName = {\n \"Gost3411_2012_256\": \"Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider\",\n \"Gost3411_2012_512\": \"Crypto-Pro GOST R 34.10-2012 Strong Cryptographic Service Provider\",\n \"Gost3411\": \"Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider\"\n };\n window.ETR.cadesextensions.AlgoritmProviderType = {\n \"Gost3411_2012_256\": 80,\n \"Gost3411_2012_512\": 81,\n \"Gost3411\": 75\n };\n\n var states = {\n Unknown: \"Unknown\",\n Loaded: \"Loaded\",\n Enabled: \"Enabled\",\n Ready: \"Ready\"\n };\n\n // проверить версию плагина\n window.ETR.cadesextensions.getPluginStatus = checkForPlugInAsync;\n\n // найти первый сертификат по серийному номеру\n window.ETR.cadesextensions.findCert = findCertAsync;\n\n // список валидных сертификатов\n window.ETR.cadesextensions.getCerts = getCertificatesAsync;\n\n // тип алгоритма \"Gost3411_2012_256\" | \"Gost3411_2012_512\" | \"Gost3411\"\n window.ETR.cadesextensions.getAlgorithmKind = getAlgorithmKindAsync;\n\n // посчитать хеш для строки в формате Base64\n window.ETR.cadesextensions.getBase64Hash = getBase64HashAsync;\n\n // подписать хеш \n window.ETR.cadesextensions.sign = signAsync;\n\n // код загружен\n window.ETR.cadesextensions_resolve && window.ETR.cadesextensions_resolve();\n\n function async_spawn(generatorFunc) {\n function continuer(verb, arg) {\n var result;\n try {\n result = generator[verb](arg);\n } catch (err) {\n return Promise.reject(err);\n }\n var promise = Promise.resolve(result.value);\n\n if (result.done) {\n return promise;\n } else {\n return promise.then(onFulfilled, onRejected);\n }\n }\n var generator = generatorFunc(Array.prototype.slice.call(arguments, 1));\n var onFulfilled = continuer.bind(continuer, \"next\");\n var onRejected = continuer.bind(continuer, \"throw\");\n return onFulfilled();\n }\n\n /* DEFINITIONS */\n function checkForPlugInAsync() {\n return async_spawn(versionGenerator)\n .catch(function (ex) {\n throw new Error(getErrorMessage(ex))\n });\n\n function* versionGenerator() {\n var state = states.Unknown;\n try {\n var oAbout = yield window.cadesplugin.CreateObjectAsync(\"CAdESCOM.About\");\n state = states.Ready;\n var pluginVersion = yield oAbout.PluginVersion;\n if (typeof (pluginVersion) == \"undefined\") {\n pluginVersion = yield oAbout.Version;\n }\n\n var providerVersions = {};\n for (var kind in window.ETR.cadesextensions.AlgoritmKind) {\n providerVersions[kind] = yield* getVersion(oAbout,\n window.ETR.cadesextensions.AlgoritmProviderName[kind],\n window.ETR.cadesextensions.AlgoritmProviderType[kind]);\n }\n\n return {\n state: state,\n plugin: yield pluginVersion.toString(),\n jsModule: window.cadesplugin.JSModuleVersion,\n providers: providerVersions\n };\n } catch (ex) {\n var mimetype = window.navigator.mimeTypes[\"application/x-cades\"];\n if (mimetype) {\n if (mimetype.enabledPlugin)\n state = states.Enabled;\n else\n state = states.Loaded;\n }\n return {\n state: state,\n jsModule: window.cadesplugin && window.cadesplugin.JSModuleVersion,\n error: ex\n };\n }\n }\n }\n\n function findCertAsync(serial) {\n var store;\n return async_spawn(findCertGenerator, serial)\n .catch(function (ex) {\n if (store)\n store.Close();\n throw new Error(getErrorMessage(ex) || ex);\n });\n\n function* findCertGenerator(args) {\n var serial = args[0];\n var oStore = yield* getOpenedStore();\n store = oStore;\n var certs = yield oStore.Certificates;\n var certCnt = yield certs.Count;\n\n var cert, serialNumber, result;\n\n for (var i = 1; i <= certCnt; i++) {\n cert = yield certs.Item(i);\n try {\n serialNumber = yield cert.SerialNumber;\n\n if (serial === serialNumber) {\n result = yield* mapCertificate(cert);\n break;\n }\n } catch (ex) {\n }\n }\n yield oStore.Close();\n return result;\n }\n }\n\n function getCertificatesAsync(includeInactive) {\n var store;\n return async_spawn(getCertificatesGenerator, includeInactive)\n .catch(function (ex) {\n if (store)\n store.Close();\n throw new Error(getErrorMessage(ex) || ex);\n });\n\n function* getCertificatesGenerator(args) {\n var includeInactive = args[0];\n store = yield* getOpenedStore();\n\n var certs = yield store.Certificates;\n var certificates;\n\n if (includeInactive)\n certificates = certs;\n else\n certificates = yield certs.Find(window.cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);\n\n var count = yield certificates.Count;\n var result = [];\n for (var i = 1; i <= count; i++) {\n cert = yield certificates.Item(i);\n var isGost = yield* isGostWithPrivateKeyCert(cert);\n var isValid = includeInactive || (yield* isValidCert(cert));\n if (isGost && isValid) {\n var mapped = yield* mapCertificate(cert);\n result.push(mapped);\n }\n }\n yield store.Close();\n return result;\n }\n }\n\n function getAlgorithmKindAsync(thumbprint) {\n var store;\n return async_spawn(algGenerator, thumbprint)\n .catch(function (ex) {\n if (store)\n store.Close();\n throw new Error(getErrorMessage(ex) || ex);\n });\n\n function* algGenerator(args) {\n var thumbprint = args[0];\n store = yield* getOpenedStore();\n var cert = yield* getCertificateByThumbprint(store, thumbprint);\n if (cert == null)\n throw new Error(\"Certificate not found\");\n var oid = yield* getAlgorithmOid(cert);\n yield store.Close();\n var kind = \"Unknown\";\n for (var k in window.ETR.cadesextensions.AlgoritmKind) {\n if (window.ETR.cadesextensions.AlgoritmKind[k] === oid)\n kind = k;\n }\n return kind;\n }\n }\n\n function getBase64HashAsync(thumbprint, content) {\n var store;\n return async_spawn(hashGenerator, thumbprint, content)\n .catch(function (ex) {\n if (store)\n store.Close();\n throw new Error(getErrorMessage(ex) || ex);\n });\n\n function* hashGenerator(args) {\n var thumbprint = args[0];\n var content = args[1];\n store = yield* getOpenedStore();\n var cert = yield* getCertificateByThumbprint(store, thumbprint);\n if (cert == null)\n throw new Error(\"Сертификат не найден\");\n var algorithmOid = yield* getAlgorithmOid(cert);\n if (!isAlgorithmSupported(algorithmOid))\n throw new Error(\"Используется не поддерживаемый алгоритм (\" + algorithmOid + \")\");\n\n var oHashedData = yield window.cadesplugin.CreateObjectAsync(\"CAdESCOM.HashedData\");\n\n var algorithm = getAlgorithm(algorithmOid);\n yield oHashedData.propset_Algorithm(algorithm);\n yield oHashedData.propset_DataEncoding(window.cadesplugin.CADESCOM_BASE64_TO_BINARY);\n yield oHashedData.Hash(content);\n var hash = yield oHashedData.Value;\n yield store.Close();\n return hash;\n }\n }\n\n function signAsync(thumbprint, hash) {\n var store;\n return async_spawn(signGenerator, thumbprint, hash)\n .catch(function (ex) {\n if (store)\n store.Close();\n throw new Error(getErrorMessage(ex) || ex);\n });\n\n function* signGenerator(args) {\n var thumbprint = args[0];\n var hash = args[1];\n store = yield* getOpenedStore();\n var cert = yield* getCertificateByThumbprint(store, thumbprint);\n if (cert == null)\n throw new Error(\"Сертификат не найден\");\n var algorithmOid = yield* getAlgorithmOid(cert);\n if (!isAlgorithmSupported(algorithmOid))\n throw new Error(\"Используется не поддерживаемый алгоритм (\" + algorithmOid + \")\");\n\n\n var oSigner = yield window.cadesplugin.CreateObjectAsync(\"CAdESCOM.CPSigner\");\n yield oSigner.propset_Certificate(cert);\n\n var oSignedData = yield window.cadesplugin.CreateObjectAsync(\"CAdESCOM.CadesSignedData\");\n yield oSignedData.propset_ContentEncoding(window.cadesplugin.CADESCOM_BASE64_TO_BINARY);\n var oHashedData = yield window.cadesplugin.CreateObjectAsync(\"CAdESCOM.HashedData\");\n\n var algorithm = getAlgorithm(algorithmOid);\n yield oHashedData.propset_Algorithm(algorithm);\n yield oHashedData.SetHashValue(hash);\n var sSignedData = yield oSignedData.SignHash(oHashedData, oSigner, window.cadesplugin.CADESCOM_CADES_BES);\n\n yield store.Close();\n return sSignedData;\n }\n }\n\n /* HELPERS */\n function getCertFieldValue(field, prefix) {\n var parts = field.split(',');\n for (var e = 0, l = parts.length; e < l; ++e) {\n var part = parts[e].trim();\n if (part.startsWith(prefix)) {\n return part.substr(prefix.length);\n }\n }\n return '';\n }\n\n function isAlgorithmSupported(algorithmOid) {\n return algorithmOid === window.ETR.cadesextensions.AlgoritmKind[\"Gost3411_2012_256\"]\n || algorithmOid === window.ETR.cadesextensions.AlgoritmKind[\"Gost3411_2012_512\"]\n || algorithmOid === window.ETR.cadesextensions.AlgoritmKind[\"Gost3411\"];\n }\n\n function getAlgorithm(oid) {\n if (oid === window.ETR.cadesextensions.AlgoritmKind[\"Gost3411_2012_256\"]) {\n return window.cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256;\n }\n if (oid === window.ETR.cadesextensions.AlgoritmKind[\"Gost3411_2012_512\"]) {\n return window.cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512;\n }\n if (oid === window.ETR.cadesextensions.AlgoritmKind[\"Gost3411\"]) {\n return window.cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411;\n }\n return 0;\n }\n\n function getErrorMessage(e) {\n var err = e.message;\n if (!err) {\n err = e;\n } else if (e.number) {\n err += \" (0x\" + decimalToHexString(e.number) + \")\";\n }\n return err;\n\n function decimalToHexString(number) {\n if (number < 0) {\n number = 0xFFFFFFFF + number + 1;\n }\n\n return number.toString(16).toUpperCase();\n }\n }\n\n /* PRIVATES */\n function* getOpenedStore() {\n var oStore = yield window.cadesplugin.CreateObjectAsync(\"CAdESCOM.Store\");\n if (!oStore)\n throw new Error(\"Ошибка при создании CAdESCOM.Store\");\n yield oStore.Open();\n return oStore;\n }\n\n function* getVersion(oAboutObjectRef, ProviderName, ProviderType) {\n var oVersion;\n try {\n oVersion = yield oAboutObjectRef.CSPVersion(ProviderName, parseInt(ProviderType, 10));\n return yield oVersion.toString();\n }\n catch (er) {\n if (er.message.indexOf(\"0x80090019\") + 1)\n return \"Указанный CSP не установлен\";\n else\n return er.message;\n return false;\n }\n }\n\n function* mapCertificate(cert) {\n var thumbprint = yield cert.Thumbprint;\n var serialNumber = yield cert.SerialNumber;\n var issuerName = yield cert.IssuerName;\n var subjectName = yield cert.SubjectName;\n var validFromDate = yield cert.ValidFromDate;\n var validToDate = yield cert.ValidToDate;\n var data = yield cert.Export(0);\n\n var alg = yield* getAlgorithmOid(cert);\n\n return {\n thumbprint: thumbprint,\n serialNumber: serialNumber,\n issuer: issuerName,\n issuerName: getCertFieldValue(issuerName, 'CN='),\n subject: subjectName,\n subjectName: getCertFieldValue(subjectName, 'CN='),\n validFrom: validFromDate,\n validTo: validToDate,\n status: '?',\n algorithm: alg,\n data: data\n };\n }\n\n function* getAlgorithmOid(cert) {\n var certPublicKey = yield cert.PublicKey();\n var certAlgorithm = yield certPublicKey.Algorithm;\n var algorithmValue = yield certAlgorithm.Value;\n return algorithmValue;\n }\n\n function* isValidCert(cert) {\n var validator = yield cert.IsValid();\n var valid = yield validator.Result;\n\n return valid;\n }\n\n function* isGostWithPrivateKeyCert(cert) {\n var hasPrivateKey = yield cert.HasPrivateKey();\n var publicKey = yield cert.PublicKey();\n var algo = yield publicKey.Algorithm;\n var friendlyName = yield algo.FriendlyName;\n\n return hasPrivateKey && (friendlyName.indexOf('GOST') != -1 || friendlyName.indexOf('ГОСТ') != -1);\n }\n\n function* getCertificateByThumbprint(store, thumbprint) {\n var certs = yield store.Certificates;\n var oCerts = yield certs.Find(window.cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);\n var count = yield oCerts.Count;\n if (count === 0)\n return null;\n var cert = yield oCerts.Item(1);\n return cert;\n\n }\n}());","(function () {\n window.ETR = window.ETR || {};\n window.ETR.cadesplugin = {\n getStatus: getStatus,\n getCertificates: getCertificates,\n sign: sign,\n findCert: findCert,\n mapCertificates: mapCertificates,\n getBase64Hash: getBase64Hash,\n getAlgorithm: getAlgorithm\n };\n\n function ready() {\n if (!window.Promise)\n throw new Error(\"Для работы с CryptoPro подключите ES6 Promise polyfill\")\n if (!window.cadesplugin)\n throw new Error(\"Для работы с CryptoPro подключите cadesplugin_api.js\")\n // return window.cadesplugin.then(includeCode);\n return window.cadesplugin;\n };\n\n\t// проверить установлен/нет криптопро плагин\n\tfunction getStatus() {\n return ready().then(function () { return window.ETR.cadesextensions.getPluginStatus(); })\n }\n\n\t// сертификаты для ЭЦП\n function getCertificates(includeInactive) {\n return ready().then(function () { return window.ETR.cadesextensions.getCerts(includeInactive); });\n }\n\n\t// посчитать хеш\n function getBase64Hash(thumbprint, content) {\n return ready().then(function () { return window.ETR.cadesextensions.getBase64Hash(thumbprint, content); });\n }\n\n\t// получить тип алгоритма (строка)\n function getAlgorithm(thumbprint) {\n return ready().then(function () { return window.ETR.cadesextensions.getAlgorithmKind(thumbprint); });\n }\n \n // сформировать ЭЦП\n function sign(thumbprint, content) {\n return ready().then(function () { return window.ETR.cadesextensions.sign(thumbprint, content); });\n }\n\n // найти сертификат по серийному номеру\n function findCert(number) {\n number = number && number.toUpperCase();\n return ready().then(function () { return window.ETR.cadesextensions.findCert(number); });\n }\n\n //todo move this logic from helper\n function mapCertificates(signers, includeInactive) {\n \n if (signers && signers.length)\n return getCertificates(includeInactive).then(gotCertificates.bind(signers));\n\n return Promise.resolve([]);\n\n function isMatchSubject(signer, certNumber) {\n certNumber = certNumber && certNumber.toUpperCase();\n return certNumber && signer.certificatePart.serialNumber == certNumber\n ? signer\n : null;\n }\n\n function gotCertificates(certs) {\n var result = [];\n var certs = certs || [];\n\n for (var i = 0, certCnt = certs.length; i < certCnt; i++) {\n cert = certs[i];\n ko.utils.arrayForEach(this, function (signer) {\n if (isMatchSubject(signer, cert.serialNumber) !== null) {\n signer.thumbprint = cert.thumbprint;\n signer.validFrom = cert.validFrom;\n signer.validTo = cert.validTo;\n signer.algorithm = cert.algorithm;\n result.push(signer);\n }\n });\n }\n\n return result;\n }\n };\n // function includeCode() {\n // if (window.ETR && window.ETR.cadesextensions_promise) {\n // return window.ETR.cadesextensions_promise;\n // }\n\n // var script = !!window.cadesplugin.CreateObjectAsync\n // ? 'ETR.cadesextensions_async.js'\n // : 'ETR.cadesextensions_sync.js';\n\n // var fileref = document.createElement('script');\n // fileref.setAttribute(\"type\", \"text/javascript\");\n // fileref.setAttribute(\"src\", \"/Content/cryptopro/\" + script);\n // document.getElementsByTagName(\"head\")[0].appendChild(fileref);\n\n // window.ETR = window.ETR || {};\n // window.ETR.cadesextensions_promise = new Promise(function (resolve, reject) {\n // window.ETR.cadesextensions_resolve = resolve;\n // });\n\n // return window.ETR.cadesextensions_promise;\n // }\n}());"],"x_google_ignoreList":[]}