(self.webpackChunktimetrex=self.webpackChunktimetrex||[]).push([["filebrowser-CameraBrowser"],{8128:(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("/* provided dependency */ var jQuery = __webpack_require__(9755);\n( function( $ ) {\n\n\t$.fn.CameraBrowser = function( options ) {\n\n\t\tGlobal.addCss( 'global/widgets/filebrowser/TImageBrowser.css' );\n\t\tvar opts = $.extend( {}, $.fn.CameraBrowser.defaults, options );\n\n\t\tvar $this = this;\n\t\tvar field;\n\n\t\tvar enabled = true;\n\t\tvar video = null;\n\t\tvar canvas = null;\n\n\t\tvar local_stream = null;\n\n\t\tthis.stopCamera = function() {\n\n\t\t\tif ( local_stream ) {\n\t\t\t\tif ( local_stream.stop ) {\n\t\t\t\t\t// This is the legacy method to stop video.\n\t\t\t\t\tlocal_stream.stop();\n\t\t\t\t} else if ( local_stream.getTracks ) {\n\t\t\t\t\t// This is the modern approach for stopping the video. https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/stop\n\t\t\t\t\tlocal_stream.getTracks().forEach( track => track.stop() );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.showCamera = function() {\n\n\t\t\t// check for getUserMedia support\n\t\t\tnavigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia || navigator.oGetUserMedia;\n\t\t\tif ( navigator.mediaDevices && navigator.mediaDevices.getUserMedia ) {\n\t\t\t\t// Most up to date as of May 2020 (Aside from using async and await) https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia\n\n\t\t\t\t// get webcam feed if available\n\t\t\t\tnavigator.mediaDevices.getUserMedia( { video: true } )\n\t\t\t\t\t.then(function(stream) {\n\t\t\t\t\t\tif ('srcObject' in video) {\n\t\t\t\t\t\t\tvideo.srcObject = stream;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Fallback for older browsers. https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject#Supporting_fallback_to_the_src_property\n\t\t\t\t\t\t\tvideo.src = URL.createObjectURL( stream );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvideo.play();\n\t\t\t\t\t\tlocal_stream = stream;\n\t\t\t\t\t})\n\t\t\t\t\t.catch(function(err) {\n\t\t\t\t\t\terrorBack();\n\t\t\t\t\t});\n\t\t\t} else if ( navigator.getUserMedia ) {\n\t\t\t\t// Semi-deprecated, legacy, but still works. https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getUserMedia\n\n\t\t\t\t// get webcam feed if available\n\t\t\t\tnavigator.getUserMedia( { video: true }, function( stream ) {\n\t\t\t\t\tif ('srcObject' in video) {\n\t\t\t\t\t\tvideo.srcObject = stream;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Fallback for older browsers. https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject#Supporting_fallback_to_the_src_property\n\t\t\t\t\t\tvideo.src = URL.createObjectURL( stream );\n\t\t\t\t\t}\n\t\t\t\t\tvideo.play();\n\t\t\t\t\tlocal_stream = stream;\n\t\t\t\t}, errorBack );\n\t\t\t} else if ( navigator.webkitGetUserMedia ) { // WebKit-prefixed\n\t\t\t\tnavigator.webkitGetUserMedia( { video: true }, function( stream ) {\n\t\t\t\t\tvideo.src = window.webkitURL.createObjectURL( stream );\n\t\t\t\t\tvideo.play();\n\t\t\t\t\tlocal_stream = stream;\n\t\t\t\t}, errorBack );\n\t\t\t} else if ( navigator.mozGetUserMedia ) { // Firefox-prefixed\n\t\t\t\tnavigator.mozGetUserMedia( { video: true }, function( stream ) {\n\t\t\t\t\tvideo.src = window.URL.createObjectURL( stream );\n\t\t\t\t\tvideo.play();\n\t\t\t\t\tlocal_stream = stream;\n\t\t\t\t}, errorBack );\n\t\t\t} else {\n\t\t\t\terrorBack();\n\t\t\t}\n\n\t\t\tfunction errorBack() {\n\t\t\t\tTAlertManager.showAlert( $.i18n._( 'Unable to access Camera.
Please check your camera connections, permissions, and ensure you are using HTTPS. Alternatively, use the File upload method instead.' ) );\n\t\t\t}\n\t\t};\n\n\t\tthis.setEnable = function( val ) {\n\t\t\tenabled = val;\n\n\t\t\tvar btn = this.children().eq( 1 );\n\n\t\t\tif ( !val ) {\n\t\t\t\tbtn.attr( 'disabled', true );\n\t\t\t\tbtn.removeClass( 'disable-element' ).addClass( 'disable-element' );\n\t\t\t} else {\n\t\t\t\tbtn.removeAttr( 'disabled' );\n\t\t\t\tbtn.removeClass( 'disable-element' );\n\t\t\t}\n\n\t\t};\n\n\t\tthis.clearErrorStyle = function() {\n\n\t\t};\n\n\t\tthis.getField = function() {\n\t\t\treturn field;\n\t\t};\n\n\t\tthis.getValue = function() {\n\t\t\treturn false;\n\t\t};\n\n\t\tthis.getFileName = function() {\n\t\t\treturn 'camera_stream.png';\n\t\t};\n\n\t\tthis.getImageSrc = function() {\n\t\t\treturn canvas[0].toDataURL();\n\t\t};\n\n\t\tthis.setImage = function( val ) {\n\t\t\tvar image = $this.children().eq( 0 );\n\n\t\t\tif ( !val ) {\n\t\t\t\timage.attr( 'src', '' );\n\t\t\t\timage.hide();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar d = new Date();\n\t\t\timage.hide();\n\t\t\timage.attr( 'src', val + '&t=' + d.getTime() );\n\t\t\timage.css( 'height', 'auto' );\n\t\t\timage.css( 'width', 'auto' );\n\n\t\t};\n\n\t\tthis.onImageLoad = function( image ) {\n\n//\t\t\tvar image_height = $( image ).height() > 0 ? $( image ).height() : image.naturalHeight;\n//\t\t\tvar image_width = $( image ).width() > 0 ? $( image ).width() : image.naturalWidth;\n//\n//\t\t\tif ( image_height > default_height ) {\n//\t\t\t\t$( image ).css( 'height', default_height );\n//\n//\t\t\t}\n//\n//\t\t\tif ( image_width > default_width ) {\n//\t\t\t\t$( image ).css( 'width', default_width );\n//\n//\t\t\t\t$( image ).css( 'height', 'auto' );\n//\t\t\t}\n//\n//\t\t\t$this.trigger( 'setSize' );\n\n\t\t\t$( image ).show();\n\n\t\t};\n\n\t\tthis.setValue = function( val ) {\n\n\t\t\tif ( !val ) {\n\t\t\t\tval = '';\n\t\t\t}\n\n\t\t};\n\n\t\tthis.each( function() {\n\n\t\t\tvar o = $.meta ? $.extend( {}, opts, $( this ).data() ) : opts;\n\n\t\t\tfield = o.field;\n\n\t\t\tvar $$this = this;\n\n\t\t\tvideo = $( this ).children().eq( 0 ).children().eq( 0 )[0];\n\t\t\tcanvas = $( this ).children().eq( 0 ).children().eq( 1 );\n\n\t\t\tvar take_picture = $( this ).children().eq( 1 ).children().eq( 0 );\n\t\t\tvar try_again = $( this ).children().eq( 1 ).children().eq( 1 );\n\n\t\t\t// Set initial states of the buttons.\n\t\t\ttake_picture.prop( 'disabled', false );\n\t\t\ttry_again.prop( 'disabled', true );\n\n\t\t\ttake_picture.bind( 'click', function() {\n\t\t\t\ttake_picture.prop( 'disabled', true );\n\t\t\t\ttry_again.prop( 'disabled', false );\n\t\t\t\t// Global.glowAnimation.start(); // not needed here as its triggered in UserPhotoWizardController.buildCurrentStepUI()\n\n\t\t\t\t// flash the photo area to indicate a picture has been taken.\n\t\t\t\tcanvas.parent().addClass( 'flash' );\n\n\t\t\t\tsetTimeout( function(){\n\t\t\t\t\tcanvas.parent().removeClass( 'flash' );\n\t\t\t\t}, 1000);\t// Timeout must be the same length as the CSS3 transition or longer (or you'll mess up the transition)\n\n\t\t\t\t// handle picture taking\n\t\t\t\tvar ctx = canvas[0].getContext( '2d' );\n\t\t\t\tctx.drawImage( video, 0, 0, 400, 300 );\n\t\t\t\tcanvas.css( 'z-index', 51 );\n\n\t\t\t\t$this.trigger( 'change', [$this] );\n\t\t\t} );\n\n\t\t\ttry_again.bind( 'click', function() {\n\t\t\t\ttake_picture.prop( 'disabled', false );\n\t\t\t\ttry_again.prop( 'disabled', true );\n\t\t\t\tGlobal.glowAnimation.stop();\n\n\t\t\t\tcanvas.css( 'z-index', -1 );\n\n\t\t\t\t$this.trigger( 'NoImageChange', [$this] );\n\t\t\t} );\n\n\t\t} );\n\n\t\treturn this;\n\n\t};\n\n\t$.fn.CameraBrowser.defaults = {};\n\t$.fn.CameraBrowser.html_template = `\n\t
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t
\n\t
\n\t`;\n\n} )( jQuery );//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODEyOC5qcyIsIm1hcHBpbmdzIjoiO0FBQUE7O0FBRUE7O0FBRUE7QUFDQSx5QkFBeUI7O0FBRXpCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQ0FBMkMsY0FBYztBQUN6RDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsTUFBTTtBQUNOLEtBQUs7QUFDTDs7QUFFQTtBQUNBLDhCQUE4QixhQUFhO0FBQzNDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxLQUFLLDJDQUEyQztBQUNoRCxvQ0FBb0MsYUFBYTtBQUNqRDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsS0FBSyx3Q0FBd0M7QUFDN0MsaUNBQWlDLGFBQWE7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxnQ0FBZ0M7O0FBRWhDOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscUNBQXFDOztBQUVyQztBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLLFNBQVM7O0FBRWQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTCxJQUFJOztBQUVKOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLEdBQUcsTUFBTSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2ludGVyZmFjZS9odG1sNS9nbG9iYWwvd2lkZ2V0cy9maWxlYnJvd3Nlci9DYW1lcmFCcm93c2VyLmpzP2Q2ZWMiXSwic291cmNlc0NvbnRlbnQiOlsiKCBmdW5jdGlvbiggJCApIHtcblxuXHQkLmZuLkNhbWVyYUJyb3dzZXIgPSBmdW5jdGlvbiggb3B0aW9ucyApIHtcblxuXHRcdEdsb2JhbC5hZGRDc3MoICdnbG9iYWwvd2lkZ2V0cy9maWxlYnJvd3Nlci9USW1hZ2VCcm93c2VyLmNzcycgKTtcblx0XHR2YXIgb3B0cyA9ICQuZXh0ZW5kKCB7fSwgJC5mbi5DYW1lcmFCcm93c2VyLmRlZmF1bHRzLCBvcHRpb25zICk7XG5cblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdHZhciBmaWVsZDtcblxuXHRcdHZhciBlbmFibGVkID0gdHJ1ZTtcblx0XHR2YXIgdmlkZW8gPSBudWxsO1xuXHRcdHZhciBjYW52YXMgPSBudWxsO1xuXG5cdFx0dmFyIGxvY2FsX3N0cmVhbSA9IG51bGw7XG5cblx0XHR0aGlzLnN0b3BDYW1lcmEgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0aWYgKCBsb2NhbF9zdHJlYW0gKSB7XG5cdFx0XHRcdGlmICggbG9jYWxfc3RyZWFtLnN0b3AgKSB7XG5cdFx0XHRcdFx0Ly8gVGhpcyBpcyB0aGUgbGVnYWN5IG1ldGhvZCB0byBzdG9wIHZpZGVvLlxuXHRcdFx0XHRcdGxvY2FsX3N0cmVhbS5zdG9wKCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIGxvY2FsX3N0cmVhbS5nZXRUcmFja3MgKSB7XG5cdFx0XHRcdFx0Ly8gVGhpcyBpcyB0aGUgbW9kZXJuIGFwcHJvYWNoIGZvciBzdG9wcGluZyB0aGUgdmlkZW8uIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9NZWRpYVN0cmVhbVRyYWNrL3N0b3Bcblx0XHRcdFx0XHRsb2NhbF9zdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCggdHJhY2sgPT4gdHJhY2suc3RvcCgpICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0dGhpcy5zaG93Q2FtZXJhID0gZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIGNoZWNrIGZvciBnZXRVc2VyTWVkaWEgc3VwcG9ydFxuXHRcdFx0bmF2aWdhdG9yLmdldFVzZXJNZWRpYSA9IG5hdmlnYXRvci5nZXRVc2VyTWVkaWEgfHwgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSB8fCBuYXZpZ2F0b3IubW96R2V0VXNlck1lZGlhIHx8IG5hdmlnYXRvci5tc0dldFVzZXJNZWRpYSB8fCBuYXZpZ2F0b3Iub0dldFVzZXJNZWRpYTtcblx0XHRcdGlmICggbmF2aWdhdG9yLm1lZGlhRGV2aWNlcyAmJiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSApIHtcblx0XHRcdFx0Ly8gTW9zdCB1cCB0byBkYXRlIGFzIG9mIE1heSAyMDIwIChBc2lkZSBmcm9tIHVzaW5nIGFzeW5jIGFuZCBhd2FpdCkgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL01lZGlhRGV2aWNlcy9nZXRVc2VyTWVkaWFcblxuXHRcdFx0XHQvLyBnZXQgd2ViY2FtIGZlZWQgaWYgYXZhaWxhYmxlXG5cdFx0XHRcdG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCB7IHZpZGVvOiB0cnVlIH0gKVxuXHRcdFx0XHRcdC50aGVuKGZ1bmN0aW9uKHN0cmVhbSkge1xuXHRcdFx0XHRcdFx0aWYgKCdzcmNPYmplY3QnIGluIHZpZGVvKSB7XG5cdFx0XHRcdFx0XHRcdHZpZGVvLnNyY09iamVjdCA9IHN0cmVhbTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdC8vIEZhbGxiYWNrIGZvciBvbGRlciBicm93c2Vycy4gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxNZWRpYUVsZW1lbnQvc3JjT2JqZWN0I1N1cHBvcnRpbmdfZmFsbGJhY2tfdG9fdGhlX3NyY19wcm9wZXJ0eVxuXHRcdFx0XHRcdFx0XHR2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKCBzdHJlYW0gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZpZGVvLnBsYXkoKTtcblx0XHRcdFx0XHRcdGxvY2FsX3N0cmVhbSA9IHN0cmVhbTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5jYXRjaChmdW5jdGlvbihlcnIpIHtcblx0XHRcdFx0XHRcdGVycm9yQmFjaygpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIGlmICggbmF2aWdhdG9yLmdldFVzZXJNZWRpYSApIHtcblx0XHRcdFx0Ly8gU2VtaS1kZXByZWNhdGVkLCBsZWdhY3ksIGJ1dCBzdGlsbCB3b3Jrcy4gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL05hdmlnYXRvci9nZXRVc2VyTWVkaWFcblxuXHRcdFx0XHQvLyBnZXQgd2ViY2FtIGZlZWQgaWYgYXZhaWxhYmxlXG5cdFx0XHRcdG5hdmlnYXRvci5nZXRVc2VyTWVkaWEoIHsgdmlkZW86IHRydWUgfSwgZnVuY3Rpb24oIHN0cmVhbSApIHtcblx0XHRcdFx0XHRpZiAoJ3NyY09iamVjdCcgaW4gdmlkZW8pIHtcblx0XHRcdFx0XHRcdHZpZGVvLnNyY09iamVjdCA9IHN0cmVhbTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gRmFsbGJhY2sgZm9yIG9sZGVyIGJyb3dzZXJzLiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTE1lZGlhRWxlbWVudC9zcmNPYmplY3QjU3VwcG9ydGluZ19mYWxsYmFja190b190aGVfc3JjX3Byb3BlcnR5XG5cdFx0XHRcdFx0XHR2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKCBzdHJlYW0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmlkZW8ucGxheSgpO1xuXHRcdFx0XHRcdGxvY2FsX3N0cmVhbSA9IHN0cmVhbTtcblx0XHRcdFx0fSwgZXJyb3JCYWNrICk7XG5cdFx0XHR9IGVsc2UgaWYgKCBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhICkgeyAvLyBXZWJLaXQtcHJlZml4ZWRcblx0XHRcdFx0bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSggeyB2aWRlbzogdHJ1ZSB9LCBmdW5jdGlvbiggc3RyZWFtICkge1xuXHRcdFx0XHRcdHZpZGVvLnNyYyA9IHdpbmRvdy53ZWJraXRVUkwuY3JlYXRlT2JqZWN0VVJMKCBzdHJlYW0gKTtcblx0XHRcdFx0XHR2aWRlby5wbGF5KCk7XG5cdFx0XHRcdFx0bG9jYWxfc3RyZWFtID0gc3RyZWFtO1xuXHRcdFx0XHR9LCBlcnJvckJhY2sgKTtcblx0XHRcdH0gZWxzZSBpZiAoIG5hdmlnYXRvci5tb3pHZXRVc2VyTWVkaWEgKSB7IC8vIEZpcmVmb3gtcHJlZml4ZWRcblx0XHRcdFx0bmF2aWdhdG9yLm1vekdldFVzZXJNZWRpYSggeyB2aWRlbzogdHJ1ZSB9LCBmdW5jdGlvbiggc3RyZWFtICkge1xuXHRcdFx0XHRcdHZpZGVvLnNyYyA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKCBzdHJlYW0gKTtcblx0XHRcdFx0XHR2aWRlby5wbGF5KCk7XG5cdFx0XHRcdFx0bG9jYWxfc3RyZWFtID0gc3RyZWFtO1xuXHRcdFx0XHR9LCBlcnJvckJhY2sgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVycm9yQmFjaygpO1xuXHRcdFx0fVxuXG5cdFx0XHRmdW5jdGlvbiBlcnJvckJhY2soKSB7XG5cdFx0XHRcdFRBbGVydE1hbmFnZXIuc2hvd0FsZXJ0KCAkLmkxOG4uXyggJ1VuYWJsZSB0byBhY2Nlc3MgQ2FtZXJhLjxicj48YnI+UGxlYXNlIGNoZWNrIHlvdXIgY2FtZXJhIGNvbm5lY3Rpb25zLCBwZXJtaXNzaW9ucywgYW5kIGVuc3VyZSB5b3UgYXJlIHVzaW5nIEhUVFBTLiBBbHRlcm5hdGl2ZWx5LCB1c2UgdGhlIEZpbGUgdXBsb2FkIG1ldGhvZCBpbnN0ZWFkLicgKSApO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHR0aGlzLnNldEVuYWJsZSA9IGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0XHRlbmFibGVkID0gdmFsO1xuXG5cdFx0XHR2YXIgYnRuID0gdGhpcy5jaGlsZHJlbigpLmVxKCAxICk7XG5cblx0XHRcdGlmICggIXZhbCApIHtcblx0XHRcdFx0YnRuLmF0dHIoICdkaXNhYmxlZCcsIHRydWUgKTtcblx0XHRcdFx0YnRuLnJlbW92ZUNsYXNzKCAnZGlzYWJsZS1lbGVtZW50JyApLmFkZENsYXNzKCAnZGlzYWJsZS1lbGVtZW50JyApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YnRuLnJlbW92ZUF0dHIoICdkaXNhYmxlZCcgKTtcblx0XHRcdFx0YnRuLnJlbW92ZUNsYXNzKCAnZGlzYWJsZS1lbGVtZW50JyApO1xuXHRcdFx0fVxuXG5cdFx0fTtcblxuXHRcdHRoaXMuY2xlYXJFcnJvclN0eWxlID0gZnVuY3Rpb24oKSB7XG5cblx0XHR9O1xuXG5cdFx0dGhpcy5nZXRGaWVsZCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIGZpZWxkO1xuXHRcdH07XG5cblx0XHR0aGlzLmdldFZhbHVlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fTtcblxuXHRcdHRoaXMuZ2V0RmlsZU5hbWUgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiAnY2FtZXJhX3N0cmVhbS5wbmcnO1xuXHRcdH07XG5cblx0XHR0aGlzLmdldEltYWdlU3JjID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gY2FudmFzWzBdLnRvRGF0YVVSTCgpO1xuXHRcdH07XG5cblx0XHR0aGlzLnNldEltYWdlID0gZnVuY3Rpb24oIHZhbCApIHtcblx0XHRcdHZhciBpbWFnZSA9ICR0aGlzLmNoaWxkcmVuKCkuZXEoIDAgKTtcblxuXHRcdFx0aWYgKCAhdmFsICkge1xuXHRcdFx0XHRpbWFnZS5hdHRyKCAnc3JjJywgJycgKTtcblx0XHRcdFx0aW1hZ2UuaGlkZSgpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHZhciBkID0gbmV3IERhdGUoKTtcblx0XHRcdGltYWdlLmhpZGUoKTtcblx0XHRcdGltYWdlLmF0dHIoICdzcmMnLCB2YWwgKyAnJnQ9JyArIGQuZ2V0VGltZSgpICk7XG5cdFx0XHRpbWFnZS5jc3MoICdoZWlnaHQnLCAnYXV0bycgKTtcblx0XHRcdGltYWdlLmNzcyggJ3dpZHRoJywgJ2F1dG8nICk7XG5cblx0XHR9O1xuXG5cdFx0dGhpcy5vbkltYWdlTG9hZCA9IGZ1bmN0aW9uKCBpbWFnZSApIHtcblxuLy9cdFx0XHR2YXIgaW1hZ2VfaGVpZ2h0ID0gJCggaW1hZ2UgKS5oZWlnaHQoKSA+IDAgPyAkKCBpbWFnZSApLmhlaWdodCgpIDogaW1hZ2UubmF0dXJhbEhlaWdodDtcbi8vXHRcdFx0dmFyIGltYWdlX3dpZHRoID0gJCggaW1hZ2UgKS53aWR0aCgpID4gMCA/ICQoIGltYWdlICkud2lkdGgoKSA6IGltYWdlLm5hdHVyYWxXaWR0aDtcbi8vXG4vL1x0XHRcdGlmICggaW1hZ2VfaGVpZ2h0ID4gZGVmYXVsdF9oZWlnaHQgKSB7XG4vL1x0XHRcdFx0JCggaW1hZ2UgKS5jc3MoICdoZWlnaHQnLCBkZWZhdWx0X2hlaWdodCApO1xuLy9cbi8vXHRcdFx0fVxuLy9cbi8vXHRcdFx0aWYgKCBpbWFnZV93aWR0aCA+IGRlZmF1bHRfd2lkdGggKSB7XG4vL1x0XHRcdFx0JCggaW1hZ2UgKS5jc3MoICd3aWR0aCcsIGRlZmF1bHRfd2lkdGggKTtcbi8vXG4vL1x0XHRcdFx0JCggaW1hZ2UgKS5jc3MoICdoZWlnaHQnLCAnYXV0bycgKTtcbi8vXHRcdFx0fVxuLy9cbi8vXHRcdFx0JHRoaXMudHJpZ2dlciggJ3NldFNpemUnICk7XG5cblx0XHRcdCQoIGltYWdlICkuc2hvdygpO1xuXG5cdFx0fTtcblxuXHRcdHRoaXMuc2V0VmFsdWUgPSBmdW5jdGlvbiggdmFsICkge1xuXG5cdFx0XHRpZiAoICF2YWwgKSB7XG5cdFx0XHRcdHZhbCA9ICcnO1xuXHRcdFx0fVxuXG5cdFx0fTtcblxuXHRcdHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cblx0XHRcdHZhciBvID0gJC5tZXRhID8gJC5leHRlbmQoIHt9LCBvcHRzLCAkKCB0aGlzICkuZGF0YSgpICkgOiBvcHRzO1xuXG5cdFx0XHRmaWVsZCA9IG8uZmllbGQ7XG5cblx0XHRcdHZhciAkJHRoaXMgPSB0aGlzO1xuXG5cdFx0XHR2aWRlbyA9ICQoIHRoaXMgKS5jaGlsZHJlbigpLmVxKCAwICkuY2hpbGRyZW4oKS5lcSggMCApWzBdO1xuXHRcdFx0Y2FudmFzID0gJCggdGhpcyApLmNoaWxkcmVuKCkuZXEoIDAgKS5jaGlsZHJlbigpLmVxKCAxICk7XG5cblx0XHRcdHZhciB0YWtlX3BpY3R1cmUgPSAkKCB0aGlzICkuY2hpbGRyZW4oKS5lcSggMSApLmNoaWxkcmVuKCkuZXEoIDAgKTtcblx0XHRcdHZhciB0cnlfYWdhaW4gPSAkKCB0aGlzICkuY2hpbGRyZW4oKS5lcSggMSApLmNoaWxkcmVuKCkuZXEoIDEgKTtcblxuXHRcdFx0Ly8gU2V0IGluaXRpYWwgc3RhdGVzIG9mIHRoZSBidXR0b25zLlxuXHRcdFx0dGFrZV9waWN0dXJlLnByb3AoICdkaXNhYmxlZCcsIGZhbHNlICk7XG5cdFx0XHR0cnlfYWdhaW4ucHJvcCggJ2Rpc2FibGVkJywgdHJ1ZSApO1xuXG5cdFx0XHR0YWtlX3BpY3R1cmUuYmluZCggJ2NsaWNrJywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHRha2VfcGljdHVyZS5wcm9wKCAnZGlzYWJsZWQnLCB0cnVlICk7XG5cdFx0XHRcdHRyeV9hZ2Fpbi5wcm9wKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xuXHRcdFx0XHQvLyBHbG9iYWwuZ2xvd0FuaW1hdGlvbi5zdGFydCgpOyAvLyBub3QgbmVlZGVkIGhlcmUgYXMgaXRzIHRyaWdnZXJlZCBpbiBVc2VyUGhvdG9XaXphcmRDb250cm9sbGVyLmJ1aWxkQ3VycmVudFN0ZXBVSSgpXG5cblx0XHRcdFx0Ly8gZmxhc2ggdGhlIHBob3RvIGFyZWEgdG8gaW5kaWNhdGUgYSBwaWN0dXJlIGhhcyBiZWVuIHRha2VuLlxuXHRcdFx0XHRjYW52YXMucGFyZW50KCkuYWRkQ2xhc3MoICdmbGFzaCcgKTtcblxuXHRcdFx0XHRzZXRUaW1lb3V0KCBmdW5jdGlvbigpe1xuXHRcdFx0XHRcdGNhbnZhcy5wYXJlbnQoKS5yZW1vdmVDbGFzcyggJ2ZsYXNoJyApO1xuXHRcdFx0XHR9LCAxMDAwKTtcdC8vIFRpbWVvdXQgbXVzdCBiZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIENTUzMgdHJhbnNpdGlvbiBvciBsb25nZXIgKG9yIHlvdSdsbCBtZXNzIHVwIHRoZSB0cmFuc2l0aW9uKVxuXG5cdFx0XHRcdC8vIGhhbmRsZSBwaWN0dXJlIHRha2luZ1xuXHRcdFx0XHR2YXIgY3R4ID0gY2FudmFzWzBdLmdldENvbnRleHQoICcyZCcgKTtcblx0XHRcdFx0Y3R4LmRyYXdJbWFnZSggdmlkZW8sIDAsIDAsIDQwMCwgMzAwICk7XG5cdFx0XHRcdGNhbnZhcy5jc3MoICd6LWluZGV4JywgNTEgKTtcblxuXHRcdFx0XHQkdGhpcy50cmlnZ2VyKCAnY2hhbmdlJywgWyR0aGlzXSApO1xuXHRcdFx0fSApO1xuXG5cdFx0XHR0cnlfYWdhaW4uYmluZCggJ2NsaWNrJywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHRha2VfcGljdHVyZS5wcm9wKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xuXHRcdFx0XHR0cnlfYWdhaW4ucHJvcCggJ2Rpc2FibGVkJywgdHJ1ZSApO1xuXHRcdFx0XHRHbG9iYWwuZ2xvd0FuaW1hdGlvbi5zdG9wKCk7XG5cblx0XHRcdFx0Y2FudmFzLmNzcyggJ3otaW5kZXgnLCAtMSApO1xuXG5cdFx0XHRcdCR0aGlzLnRyaWdnZXIoICdOb0ltYWdlQ2hhbmdlJywgWyR0aGlzXSApO1xuXHRcdFx0fSApO1xuXG5cdFx0fSApO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fTtcblxuXHQkLmZuLkNhbWVyYUJyb3dzZXIuZGVmYXVsdHMgPSB7fTtcblx0JC5mbi5DYW1lcmFCcm93c2VyLmh0bWxfdGVtcGxhdGUgPSBgXG5cdDxkaXYgY2xhc3M9XCJmaWxlLWJyb3dzZXJcIj5cblx0XHQ8ZGl2IGNsYXNzPVwidmlkZW8tZGl2XCI+XG5cdFx0XHQ8dmlkZW8gY2xhc3M9XCJ2aWRlby1kaXNwbGF5XCIgd2lkdGg9XCI0MDBcIiBoZWlnaHQ9XCIzMDBcIj5cblx0XHRcdDwvdmlkZW8+XG5cdFx0XHQ8Y2FudmFzIGNsYXNzPVwidmlkZW8tY2FwdHVyZVwiIHdpZHRoPVwiNDAwXCIgaGVpZ2h0PVwiMzAwXCI+XG5cdFx0XHQ8L2NhbnZhcz5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuXHRcdFx0PGJ1dHRvbiBpZD1cInRha2VfcGljdHVyZVwiIGNsYXNzPVwidC1idXR0b25cIj5UYWtlIFBpY3R1cmU8L2J1dHRvbj5cblx0XHRcdDxidXR0b24gaWQ9XCJ0cnlfYWdhaW5cIiBjbGFzcz1cInQtYnV0dG9uXCI+VHJ5IEFnYWluPC9idXR0b24+XG5cdFx0PC9kaXY+XG5cdDwvZGl2PlxuXHRgO1xuXG59ICkoIGpRdWVyeSApOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///8128\n")}}]);