compress.js 105 KB

1
  1. "use strict";function Compressor(l,e){if(!(this instanceof Compressor))return new Compressor(l,e);TreeTransformer.call(this,this.before,this.after),this.options=defaults(l,{arrows:!e,booleans:!e,collapse_vars:!e,comparisons:!e,computed_props:!e,conditionals:!e,dead_code:!e,drop_console:!1,drop_debugger:!e,ecma:5,evaluate:!e,expression:!1,global_defs:{},hoist_funs:!1,hoist_props:!e,hoist_vars:!1,ie8:!1,if_return:!e,inline:!e,join_vars:!e,keep_classnames:!1,keep_fargs:!0,keep_fnames:!1,keep_infinity:!1,loops:!e,negate_iife:!e,passes:1,properties:!e,pure_getters:!e&&"strict",pure_funcs:null,reduce_funcs:!e,reduce_vars:!e,sequences:!e,side_effects:!e,switches:!e,top_retain:null,toplevel:!!(l&&l.top_retain),typeofs:!e,unsafe:!1,unsafe_arrows:!1,unsafe_comps:!1,unsafe_Function:!1,unsafe_math:!1,unsafe_methods:!1,unsafe_proto:!1,unsafe_regexp:!1,unsafe_undefined:!1,unused:!e,warnings:!1},!0);var t=this.options.global_defs;if("object"==typeof t)for(var o in t)/^@/.test(o)&&HOP(t,o)&&(t[o.slice(1)]=parse(t[o],{expression:!0}));!0===this.options.inline&&(this.options.inline=3);var i=this.options.pure_funcs;this.pure_funcs="function"==typeof i?i:i?function(t){return 0>i.indexOf(t.expression.print_to_string())}:return_true;var n=this.options.top_retain;n instanceof RegExp?this.top_retain=function(t){return n.test(t.name)}:"function"==typeof n?this.top_retain=n:n&&("string"==typeof n&&(n=n.split(/,/)),this.top_retain=function(t){return 0<=n.indexOf(t.name)});var r=this.options.toplevel;this.toplevel="string"==typeof r?{funcs:/funcs/.test(r),vars:/vars/.test(r)}:{funcs:r,vars:r};var a=this.options.sequences;this.sequences_limit=1==a?800:0|a,this.warnings_produced={}}Compressor.prototype=new TreeTransformer,merge(Compressor.prototype,{option:function(t){return this.options[t]},exposed:function(n){if(n.export)return!0;if(n.global)for(var e=0,t=n.orig.length;e<t;e++)if(!this.toplevel[n.orig[e]instanceof AST_SymbolDefun?"funcs":"vars"])return!0;return!1},in_boolean_context:function(){if(!this.option("booleans"))return!1;for(var n,e=this.self(),t=0;n=this.parent(t);t++){if(n instanceof AST_SimpleStatement||n instanceof AST_Conditional&&n.condition===e||n instanceof AST_DWLoop&&n.condition===e||n instanceof AST_For&&n.condition===e||n instanceof AST_If&&n.condition===e||n instanceof AST_UnaryPrefix&&"!"==n.operator&&n.expression===e)return!0;if(n instanceof AST_Binary&&("&&"==n.operator||"||"==n.operator)||n instanceof AST_Conditional||n.tail_node()===e)e=n;else return!1}},compress:function(s){this.option("expression")&&s.process_expression(!0);for(var e=+this.options.passes||1,t=1/0,o=!1,i={ie8:this.option("ie8")},n=0;n<e;n++)if(s.figure_out_scope(i),(0<n||this.option("reduce_vars"))&&s.reset_opt_flags(this),s=s.transform(this),1<e){var r=0;if(s.walk(new TreeWalker(function(){r++})),this.info("pass "+n+": last_count: "+t+", count: "+r),r<t)t=r,o=!1;else if(o)break;else o=!0}return this.option("expression")&&s.process_expression(!1),s},info:function(){"verbose"==this.options.warnings&&AST_Node.warn.apply(AST_Node,arguments)},warn:function(n,e){if(this.options.warnings){var t=string_template(n,e);t in this.warnings_produced||(this.warnings_produced[t]=!0,AST_Node.warn.apply(AST_Node,arguments))}},clear_warnings:function(){this.warnings_produced={}},before:function(n,e){if(n._squeezed)return n;var t=!1;n instanceof AST_Scope&&(n=n.hoist_properties(this),n=n.hoist_declarations(this),t=!0),e(n,this),e(n,this);var o=n.optimize(this);return t&&o instanceof AST_Scope&&(o.drop_unused(this),e(o,this)),o===n&&(o._squeezed=!0),o}}),function(){function G(o,n){o.DEFMETHOD("optimize",function(t){var e=this;if(e._optimized)return e;if(t.has_directive("use asm"))return e;var o=n(e,t);return o._optimized=!0,o})}function $(t){return t instanceof AST_Arrow||t instanceof AST_Function}function t(o){if(o instanceof AST_This)return!0;if(o instanceof AST_SymbolRef)return o.definition().orig[0]instanceof AST_SymbolLambda;if(o instanceof AST_PropAccess){if(o=o.expression,o instanceof AST_SymbolRef){if(o.is_immutable())return!1;o=o.fixed_value()}return!o||!(o instanceof AST_RegExp)&&(!!(o instanceof AST_Constant)||t(o))}return!1}function Q(i,e){if(!(i instanceof AST_SymbolRef))return!1;for(var t=i.definition().orig,o=t.length;0<=--o;)if(t[o]instanceof e)return!0}function X(i,e){for(var t,o=0;(t=i.parent(o++))&&!(t instanceof AST_Scope);)if(t instanceof AST_Catch){t=t.argname.definition().scope;break}return t.find_variable(e)}function te(n,e,t){return t||(t={}),e&&(!t.start&&(t.start=e.start),!t.end&&(t.end=e.end)),new n(t)}function W(o,e){return 1==e.length?e[0]:te(AST_Sequence,o,{expressions:e.reduce(a,[])})}function r(o,e){switch(typeof o){case"string":return te(AST_String,e,{value:o});case"number":return isNaN(o)?te(AST_NaN,e):isFinite(o)?0>1/o?te(AST_UnaryPrefix,e,{operator:"-",expression:te(AST_Number,e,{value:-o})}):te(AST_Number,e,{value:o}):0>o?te(AST_UnaryPrefix,e,{operator:"-",expression:te(AST_Infinity,e)}):te(AST_Infinity,e);case"boolean":return te(o?AST_True:AST_False,e);case"undefined":return te(AST_Undefined,e);default:if(null===o)return te(AST_Null,e,{value:null});if(o instanceof RegExp)return te(AST_RegExp,e,{value:o});throw new Error(string_template("Can't handle constant of type: {type}",{type:typeof o}));}}function J(n,e,t){return n instanceof AST_UnaryPrefix&&"delete"==n.operator||n instanceof AST_Call&&n.expression===e&&(t instanceof AST_PropAccess||t instanceof AST_SymbolRef&&"eval"==t.name)?W(e,[te(AST_Number,e,{value:0}),t]):t}function a(o,e){return e instanceof AST_Sequence?o.push.apply(o,e.expressions):o.push(e),o}function n(t){if(null===t)return[];if(t instanceof AST_BlockStatement)return t.body;if(t instanceof AST_EmptyStatement)return[];if(t instanceof AST_Statement)return[t];throw new Error("Can't convert thing to statement array")}function s(t){return null===t||!!(t instanceof AST_EmptyStatement)||!!(t instanceof AST_BlockStatement)&&0==t.body.length}function l(t){return!(t instanceof AST_DefClass||t instanceof AST_Defun||t instanceof AST_Let||t instanceof AST_Const||t instanceof AST_Export||t instanceof AST_Import)}function p(t){return t instanceof AST_IterationStatement?t.body instanceof AST_BlockStatement?t.body:t:t}function f(t){return"Call"==t.TYPE&&(t.expression instanceof AST_Function||f(t.expression))}function oe(t){return t instanceof AST_SymbolRef&&t.definition().undeclared}function d(t){return t instanceof AST_Infinity||t instanceof AST_NaN||t instanceof AST_Undefined}function i(o,e){function i(r,h){function n(n){if(n instanceof AST_Scope)return n;if(n instanceof AST_Switch){n.expression=n.expression.transform(E);for(var e,t=0,o=n.body.length;!V&&t<o;t++)if(e=n.body[t],e instanceof AST_Case){if(!S){if(e!==z[k])continue;k++}if(e.expression=e.expression.transform(E),C||!N)break}return V=!0,n}}function l(l,e,p){var o=!1,i=!(l instanceof AST_Arrow);return e.walk(new TreeWalker(function(e,t){if(o)return!0;if(e instanceof AST_SymbolRef&&l.variables.has(e.name)){var n=e.definition().scope;if(n!==x)for(;n=n.parent_scope;)if(n===x)return!0;return o=!0}if((p||i)&&e instanceof AST_This)return o=!0;if(e instanceof AST_Scope&&!(e instanceof AST_Arrow)){var r=i;return i=!1,t(),i=r,!0}})),o}function e(){var t,n=h.self();if($(n)&&!n.name&&!n.uses_arguments&&!n.uses_eval&&(t=h.parent())instanceof AST_Call&&t.expression===n&&all(t.args,function(t){return!(t instanceof AST_Expansion)})){var o=h.has_directive("use strict");o&&!member(o,n.body)&&(o=!1);var e=n.argnames.length;m=t.args.slice(e);for(var r=Object.create(null),a=e;0<=--a;){var s=n.argnames[a],i=t.args[a];if(m.unshift(te(AST_VarDef,s,{name:s,value:i})),!(s.name in r))if(r[s.name]=!0,s instanceof AST_Expansion){var p=t.args.slice(a);all(p,function(t){return!l(n,t,o)})&&v.unshift([te(AST_VarDef,s,{name:s.expression,value:te(AST_Array,t,{elements:p})})])}else i?l(n,i,o)&&(i=null):i=te(AST_Undefined,s).transform(h),i&&v.unshift([te(AST_VarDef,s,{name:s,value:i})])}}}function o(t){z.push(t),t instanceof AST_Assign?(!t.left.has_side_effects(h)&&v.push(z.slice()),o(t.right)):t instanceof AST_Binary?(o(t.left),o(t.right)):t instanceof AST_Call?(o(t.expression),t.args.forEach(o)):t instanceof AST_Case?o(t.expression):t instanceof AST_Conditional?(o(t.condition),o(t.consequent),o(t.alternative)):t instanceof AST_Definitions&&(h.option("unused")||!(t instanceof AST_Const))?t.definitions.forEach(o):t instanceof AST_DWLoop?(o(t.condition),!(t.body instanceof AST_Block)&&o(t.body)):t instanceof AST_Exit?t.value&&o(t.value):t instanceof AST_For?(t.init&&o(t.init),t.condition&&o(t.condition),t.step&&o(t.step),!(t.body instanceof AST_Block)&&o(t.body)):t instanceof AST_ForIn?(o(t.object),!(t.body instanceof AST_Block)&&o(t.body)):t instanceof AST_If?(o(t.condition),!(t.body instanceof AST_Block)&&o(t.body),t.alternative&&!(t.alternative instanceof AST_Block)&&o(t.alternative)):t instanceof AST_Sequence?t.expressions.forEach(o):t instanceof AST_SimpleStatement?o(t.body):t instanceof AST_Switch?(o(t.expression),t.body.forEach(o)):t instanceof AST_Unary?("++"==t.operator||"--"==t.operator)&&v.push(z.slice()):t instanceof AST_VarDef&&t.value&&(v.push(z.slice()),o(t.value)),z.pop()}function a(n,e,t){var o=E.parent(e);return o instanceof AST_Assign?t&&!(o.left instanceof AST_PropAccess||o.left.name in H)?a(o,e+1,t):n:o instanceof AST_Binary?t&&(!O(o.operator)||o.left===n)?a(o,e+1,t):n:o instanceof AST_Call?n:o instanceof AST_Case?n:o instanceof AST_Conditional?t&&o.condition===n?a(o,e+1,t):n:o instanceof AST_Definitions?a(o,e+1,!0):o instanceof AST_Exit?t?a(o,e+1,t):n:o instanceof AST_If?t&&o.condition===n?a(o,e+1,t):n:o instanceof AST_IterationStatement?n:o instanceof AST_Sequence?a(o,e+1,o.tail_node()!==n):o instanceof AST_SimpleStatement?a(o,e+1,!0):o instanceof AST_Switch?n:o instanceof AST_VarDef?n:null}function i(n){var e=n.value;if(e instanceof AST_SymbolRef&&"arguments"!=e.name){var t=e.definition();return t.undeclared?void 0:q=t}}function s(n){if(n instanceof AST_VarDef&&n.name instanceof AST_SymbolDeclaration){var e=n.name.definition();if(!member(n.name,e.orig))return;var t=e.orig.length-e.eliminated,o=e.references.length-e.replaced;if(1<t&&!(n.name instanceof AST_SymbolFunarg)||(1<o?i(n):!h.exposed(e)))return te(AST_SymbolRef,n.name,n.name)}else{var r=n[n instanceof AST_Assign?"left":"expression"];return!Q(r,AST_SymbolConst)&&r}}function p(t){return t[t instanceof AST_Assign?"right":"value"]}function f(n){var r=Object.create(null);if(n instanceof AST_Unary)return r;var t=new TreeWalker(function(o){for(var e=o;e instanceof AST_PropAccess;)e=e.expression;(e instanceof AST_SymbolRef||e instanceof AST_This)&&(r[e.name]=r[e.name]||Z(o,t.parent()))});return p(n).walk(t),r}function c(n){if(n.name instanceof AST_SymbolFunarg){var e=h.parent(),t=h.self().argnames,o=t.indexOf(n.name);if(0>o)e.args.length=z(e.args.length,t.length-1);else{var i=e.args;i[o]&&(i[o]=te(AST_Number,i[o],{value:0}))}return!0}var a=!1;return r[b].transform(new TreeTransformer(function(t,e,o){return a?t:t===n||t.body===n?(a=!0,t instanceof AST_VarDef?(t.value=null,t):o?MAP.skip:null):void 0},function(t){if(t instanceof AST_Sequence)switch(t.expressions.length){case 0:return null;case 1:return t.expressions[0];}}))}function _(t){return!(t instanceof AST_Unary)&&p(t).has_side_effects(h)}function u(o){var e=o.definition();return!(1==e.orig.length&&e.orig[0]instanceof AST_SymbolDefun)&&(e.scope.get_defun_scope()!==x||!all(e.references,function(t){return t.scope.get_defun_scope()===x}))}function g(o,e){if(o instanceof AST_Assign)return g(o.left,!0);if(o instanceof AST_Unary)return g(o.expression,!0);if(o instanceof AST_VarDef)return o.value&&g(o.value);if(e){if(o instanceof AST_Dot)return g(o.expression,!0);if(o instanceof AST_Sub)return g(o.expression,!0);if(o instanceof AST_SymbolRef)return o.definition().scope!==x}return!1}if(x.uses_eval||x.uses_with)return r;for(var m,v=[],y=h.self()instanceof AST_Try,b=r.length,E=new TreeTransformer(function(r){if(V)return r;if(!S)return r===z[k]?(k++,k<z.length)?n(r):(S=!0,T=a(r,0),T===r&&(V=!0),r):r;var e=E.parent();if(r instanceof AST_Assign&&"="!=r.operator&&M.equivalent_to(r.left)||r instanceof AST_Await||r instanceof AST_Call&&M instanceof AST_PropAccess&&M.equivalent_to(r.expression)||r instanceof AST_Debugger||r instanceof AST_Destructuring||r instanceof AST_IterationStatement&&!(r instanceof AST_For)||r instanceof AST_LoopControl||r instanceof AST_Try||r instanceof AST_With||e instanceof AST_For&&r!==e.init||(C||!N)&&r instanceof AST_SymbolRef&&!r.is_declared(h))return V=!0,r;if(!F&&(C||!N)&&(e instanceof AST_Binary&&O(e.operator)&&e.left!==r||e instanceof AST_Conditional&&e.condition!==r||e instanceof AST_If&&e.condition!==r)&&(F=e),Y&&!(r instanceof AST_SymbolDeclaration)&&M.equivalent_to(r)){if(F)return V=!0,r;if(Z(r,e))return q&&A++,r;if(w=V=!0,A++,h.info("Collapsing {name} [{file}:{line},{col}]",{name:r.print_to_string(),file:r.start.file,line:r.start.line,col:r.start.col}),D instanceof AST_UnaryPostfix)return te(AST_UnaryPrefix,D,D);if(D instanceof AST_VarDef){if(q)return V=!1,r;var t=D.name.definition(),o=D.value;return 1!=t.references.length-t.replaced||h.exposed(t)?te(AST_Assign,D,{operator:"=",left:te(AST_SymbolRef,D.name,D.name),right:o}):(t.replaced++,P&&d(o)?o.transform(h):J(e,r,o))}return D.write_only=!1,D}var i;return(r instanceof AST_Call||r instanceof AST_Exit&&(C||M instanceof AST_PropAccess||u(M))||r instanceof AST_PropAccess&&(C||r.expression.may_throw_on_access(h))||r instanceof AST_SymbolRef&&(H[r.name]||C&&u(r))||r instanceof AST_VarDef&&r.value&&((r.name.name in H)||C&&u(r.name))||(i=Z(r.left,r))&&(i instanceof AST_PropAccess||(i.name in H))||R&&(y?r.has_side_effects(h):g(r)))&&(T=r,r instanceof AST_Scope&&(V=!0)),n(r)},function(t){V||(T===t&&(V=!0),F===t&&(F=null))}),w=new TreeTransformer(function(t){return V?t:S?t instanceof AST_SymbolRef&&t.name==I.name?(--A||(V=!0),Z(t,w.parent()))?t:(I.replaced++,q.replaced--,D.value):t instanceof AST_Default||t instanceof AST_Scope?t:void 0:t===z[k]?(k++,k<z.length)?void 0:(S=!0,t):t});0<=--b;){0==b&&h.option("unused")&&e();var z=[];for(o(r[b]);0<v.length;){z=v.pop();var k=0,D=z[z.length-1],q=null,T=null,F=null,M=s(D);if(!(!M||t(M)||M.has_side_effects(h))){var H=f(D);M instanceof AST_SymbolRef&&(H[M.name]=!1);var N=q;if(!N&&M instanceof AST_SymbolRef){var I=M.definition();I.references.length-I.replaced==(D instanceof AST_VarDef?1:2)&&(N=!0)}var C=_(D),R=D.may_throw(h),P=D.name instanceof AST_SymbolFunarg,S=P,V=!1,A=0,Y=!m||!S;if(!Y){for(var U=h.self().argnames.lastIndexOf(D.name)+1;!V&&U<m.length;U++)m[U].transform(E);Y=!0}for(var B=b;!V&&B<r.length;B++)r[B].transform(E);if(q){var I=D.name.definition();if(V&&I.references.length-I.replaced>A)A=!1;else{V=!1,k=0,S=P;for(var B=b;!V&&B<r.length;B++)r[B].transform(w);q.single_use=!1}}A&&!c(D)&&r.splice(b,1)}}}}function r(i){for(var e,t=[],o=0;o<i.length;)e=i[o],e instanceof AST_BlockStatement&&all(e.body,l)?(w=!0,r(e.body),[].splice.apply(i,[o,1].concat(e.body)),o+=e.body.length):e instanceof AST_EmptyStatement?(w=!0,i.splice(o,1)):e instanceof AST_Directive?0>t.indexOf(e.value)?(o++,t.push(e.value)):(w=!0,i.splice(o,1)):o++}function s(d,e){function t(i){for(var e,t=0,o=i.length;0<=--o;)if(e=i[o],e instanceof AST_If&&e.body instanceof AST_Return&&1<++t)return!0;return!1}function z(t){return!t||t instanceof AST_UnaryPrefix&&"void"==t.operator}function o(t){if(!t)return!1;for(var o,n=g+1,i=d.length;n<i;n++)if(o=d[n],o instanceof AST_Const||o instanceof AST_Let)return!1;var r=t instanceof AST_LoopControl?e.loopcontrol_target(t):null;return t instanceof AST_Return&&u&&z(t.value)||t instanceof AST_Continue&&f===p(r)||t instanceof AST_Break&&r instanceof AST_BlockStatement&&f===r}function r(){var e=d.slice(g+1);return d.length=g+1,e.filter(function(e){return!(e instanceof AST_Defun)||(d.push(e),!1)})}function a(i,e){var t=n(i).slice(0,-1);return e.value&&t.push(te(AST_SimpleStatement,e.value,{body:e.value.expression})),t}function s(e){for(var t,o=e+1,i=d.length;o<i&&(t=d[o],!!(t instanceof AST_Var&&_(t)));o++);return o}function l(e){for(var t,o=e;0<=--o&&(t=d[o],!!(t instanceof AST_Var&&_(t))););return o}for(var f=e.self(),c=t(d),u=f instanceof AST_Lambda,g=d.length;0<=--g;){var h=d[g],i=s(g),y=d[i];if(u&&!y&&h instanceof AST_Return){if(!h.value){w=!0,d.splice(g,1);continue}if(h.value instanceof AST_UnaryPrefix&&"void"==h.value.operator){w=!0,d[g]=te(AST_SimpleStatement,h,{body:h.value.expression});continue}}if(h instanceof AST_If){var v=m(h.body);if(o(v)){v.label&&remove(v.label.thedef.references,v),w=!0,h=h.clone(),h.condition=h.condition.negate(e);var b=a(h.body,v);h.body=te(AST_BlockStatement,h,{body:n(h.alternative).concat(r())}),h.alternative=te(AST_BlockStatement,h,{body:b}),d[g]=h.transform(e);continue}var v=m(h.alternative);if(o(v)){v.label&&remove(v.label.thedef.references,v),w=!0,h=h.clone(),h.body=te(AST_BlockStatement,h.body,{body:n(h.body).concat(r())});var b=a(h.alternative,v);h.alternative=te(AST_BlockStatement,h.alternative,{body:b}),d[g]=h.transform(e);continue}}if(h instanceof AST_If&&h.body instanceof AST_Return){var x=h.body.value;if(!x&&!h.alternative&&(u&&!y||y instanceof AST_Return&&!y.value)){w=!0,d[g]=te(AST_SimpleStatement,h.condition,{body:h.condition});continue}if(x&&!h.alternative&&y instanceof AST_Return&&y.value){w=!0,h=h.clone(),h.alternative=y,d.splice(g,1,h.transform(e)),d.splice(i,1);continue}if(x&&!h.alternative&&(!y&&u&&c||y instanceof AST_Return)){w=!0,h=h.clone(),h.alternative=y||te(AST_Return,h,{value:null}),d.splice(g,1,h.transform(e)),y&&d.splice(i,1);continue}var k=d[l(g)];if(e.option("sequences")&&u&&!h.alternative&&k instanceof AST_If&&k.body instanceof AST_Return&&s(i)==d.length&&y instanceof AST_SimpleStatement){w=!0,h=h.clone(),h.alternative=te(AST_BlockStatement,y,{body:[y,te(AST_Return,y,{value:null})]}),d.splice(g,1,h.transform(e)),d.splice(i,1);continue}}}}function f(d,e){for(var t,o,r=e.self(),a=0,s=0,i=d.length;a<i;a++){if(o=d[a],o instanceof AST_LoopControl){var n=e.loopcontrol_target(o);o instanceof AST_Break&&!(n instanceof AST_IterationStatement)&&p(n)===r||o instanceof AST_Continue&&p(n)===r?o.label&&remove(o.label.thedef.references,o):d[s++]=o}else d[s++]=o;if(m(o)){t=d.slice(a+1);break}}d.length=s,w=s!=i,t&&t.forEach(function(t){c(e,t,d)})}function _(t){return all(t.definitions,function(t){return!t.value})}function u(r,e){function t(){if(s.length){var e=W(s[0],s);r[l++]=te(AST_SimpleStatement,e,{body:e}),s=[]}}if(!(2>r.length)){for(var o,s=[],l=0,p=0,n=r.length;p<n;p++)if(o=r[p],o instanceof AST_SimpleStatement){s.length>=e.sequences_limit&&t();var i=o.body;0<s.length&&(i=i.drop_side_effect_free(e)),i&&a(s,i)}else o instanceof AST_Definitions&&_(o)||o instanceof AST_Defun?r[l++]=o:(t(),r[l++]=o);t(),r.length=l,l!=n&&(w=!0)}}function g(a,e){if(!(a instanceof AST_BlockStatement))return a;for(var t,o=null,n=0,r=a.body.length;n<r;n++)if(t=a.body[n],t instanceof AST_Var&&_(t))e.push(t);else{if(o)return!1;o=t}return o}function h(r,a){function e(n){s--,w=!0;var e=t.body;return W(e,[e,n]).transform(a)}for(var t,o,s=0,l=0;l<r.length;l++){if(o=r[l],t)if(o instanceof AST_Exit)o.value=e(o.value||te(AST_Undefined,o).transform(a));else if(!(o instanceof AST_For))o instanceof AST_ForIn?o.init instanceof AST_Const||o.init instanceof AST_Let||(o.object=e(o.object)):o instanceof AST_If?o.condition=e(o.condition):o instanceof AST_Switch?o.expression=e(o.expression):o instanceof AST_With&&(o.expression=e(o.expression));else if(!(o.init instanceof AST_Definitions)){var n=!1;t.body.walk(new TreeWalker(function(t){return!!(n||t instanceof AST_Scope)||(t instanceof AST_Binary&&"in"==t.operator?(n=!0,!0):void 0)})),n||(o.init?o.init=e(o.init):(o.init=t.body,s--,w=!0))}if(a.option("conditionals")&&o instanceof AST_If){var i=[],p=g(o.body,i),d=g(o.alternative,i);if(!1!==p&&!1!==d&&0<i.length){var f=i.length;i.push(te(AST_If,o,{condition:o.condition,body:p||te(AST_EmptyStatement,o.body),alternative:d})),i.unshift(s,1),[].splice.apply(r,i),l+=f,s+=f+1,t=null,w=!0;continue}}r[s++]=o,t=o instanceof AST_SimpleStatement?o:null}r.length=s}function v(n,r){if(n instanceof AST_Definitions){var t=n.definitions[n.definitions.length-1];if(t.value instanceof AST_Object){var o;if(r instanceof AST_Assign?o=[r]:r instanceof AST_Sequence&&(o=r.expressions.slice()),!!o){var i=!1;do{var a=o[0];if(!(a instanceof AST_Assign))break;if("="!=a.operator)break;if(!(a.left instanceof AST_PropAccess))break;var s=a.left.expression;if(!(s instanceof AST_SymbolRef))break;if(t.name.name!=s.name)break;if(!a.right.is_constant_expression(x))break;var l=a.left.property;if(l instanceof AST_Node&&(l=l.evaluate(e)),l instanceof AST_Node)break;if(l=""+l,6>e.option("ecma")&&e.has_directive("use strict")&&!all(t.value.properties,function(t){return t.key!=l&&t.key.name!=l}))break;t.value.properties.push(te(AST_ObjectKeyVal,a,{key:l,value:a.right})),o.shift(),i=!0}while(o.length);return i&&o}}}}function y(a){function e(e){a[++n]=r;var t=v(s,e);return t?(w=!0,t.length?W(e,t):e instanceof AST_Sequence?e.tail_node().left:e.left):e}for(var t,o=0,n=-1,i=a.length;o<i;o++){var r=a[o],s=a[n];if(r instanceof AST_Definitions)s&&s.TYPE==r.TYPE?(s.definitions=s.definitions.concat(r.definitions),w=!0):t&&t.TYPE==r.TYPE&&_(r)?(t.definitions=t.definitions.concat(r.definitions),w=!0):(a[++n]=r,t=r);else if(r instanceof AST_Exit)r.value=e(r.value);else if(r instanceof AST_For){var l=v(s,r.init);l?(w=!0,r.init=l.length?W(r.init,l):null,a[++n]=r):s instanceof AST_Var&&(!r.init||r.init.TYPE==s.TYPE)?(r.init&&(s.definitions=s.definitions.concat(r.init.definitions)),r.init=s,a[n]=r,w=!0):t&&r.init&&t.TYPE==r.init.TYPE&&_(r.init)?(t.definitions=t.definitions.concat(r.init.definitions),r.init=null,a[++n]=r,w=!0):a[++n]=r}else if(r instanceof AST_ForIn)r.object=e(r.object);else if(r instanceof AST_If)r.condition=e(r.condition);else if(r instanceof AST_SimpleStatement){var l=v(s,r.body);if(l){if(w=!0,!l.length)continue;r.body=W(r.body,l)}a[++n]=r}else r instanceof AST_Switch?r.expression=e(r.expression):r instanceof AST_With?r.expression=e(r.expression):a[++n]=r}a.length=n+1}var w,x=e.find_parent(AST_Scope).get_defun_scope(),b=10;do w=!1,r(o),e.option("dead_code")&&f(o,e),e.option("if_return")&&s(o,e),0<e.sequences_limit&&(u(o,e),h(o,e)),e.option("join_vars")&&y(o),e.option("collapse_vars")&&i(o,e);while(w&&0<b--)}function c(n,e,t){e instanceof AST_Defun||n.warn("Dropping unreachable code [{file}:{line},{col}]",e.start),e.walk(new TreeWalker(function(o){return o instanceof AST_Var?(n.warn("Declarations in unreachable code! [{file}:{line},{col}]",o.start),o.remove_initializers(),t.push(o),!0):o instanceof AST_Defun&&(o===e||!n.has_directive("use strict"))?(t.push(o===e?o:te(AST_Var,o,{definitions:[te(AST_VarDef,o,{name:te(AST_SymbolVar,o.name,o.name),value:null})]})),!0):!!(o instanceof AST_Scope)||void 0}))}function _(t){return t instanceof AST_Constant?t.getValue():t instanceof AST_UnaryPrefix&&"void"==t.operator&&t.expression instanceof AST_Constant?void 0:t}function o(o,e){return o.is_undefined||o instanceof AST_Undefined||o instanceof AST_UnaryPrefix&&"void"==o.operator&&!o.expression.has_side_effects(e)}function Z(o,e){return e instanceof AST_Unary&&q(e.operator)?e.expression:e instanceof AST_Assign&&e.left===o?o:void 0}function u(o,e){return o.print_to_string().length>e.print_to_string().length?e:o}function g(o,e){return u(te(AST_SimpleStatement,o,{body:o}),te(AST_SimpleStatement,e,{body:e})).body}function ne(n,e,t){return(first_in_statement(n)?g:u)(e,t)}function h(o){for(var e in o)o[e]=makePredicate(o[e])}function m(t){return t&&t.aborts()}function v(r,s){function e(t){return t instanceof AST_Break&&s.loopcontrol_target(t)===s.self()}function t(e){e=n(e),r.body instanceof AST_BlockStatement?(r.body=r.body.clone(),r.body.body=e.concat(r.body.body.slice(1)),r.body=r.body.transform(s)):r.body=te(AST_BlockStatement,r.body,{body:e}).transform(s),r=v(r,s)}var o=r.body instanceof AST_BlockStatement?r.body.body[0]:r.body;if(s.option("dead_code")&&e(o)){var i=[];return r.init instanceof AST_Statement?i.push(r.init):r.init&&i.push(te(AST_SimpleStatement,r.init,{body:r.init})),r.condition&&i.push(te(AST_SimpleStatement,r.condition,{body:r.condition})),c(s,r.body,i),te(AST_BlockStatement,r,{body:i})}return o instanceof AST_If&&(e(o.body)?(r.condition=r.condition?te(AST_Binary,r.condition,{left:r.condition,operator:"&&",right:o.condition.negate(s)}):o.condition.negate(s),t(o.alternative)):e(o.alternative)&&(r.condition=r.condition?te(AST_Binary,r.condition,{left:r.condition,operator:"&&",right:o.condition}):o.condition,t(o.body))),r}function y(t){return t instanceof AST_Array||t instanceof AST_Lambda||t instanceof AST_Object||t instanceof AST_Class}function w(r,e){for(var t,o=0;t=r.parent(o);o++)if(t instanceof AST_Lambda){var n=t.name;if(n&&n.definition()===e)break}return t}function b(o,e){return o instanceof AST_SymbolRef||o.TYPE===e.TYPE}function x(a,r){var s=!1,e=new TreeWalker(function(t){return!!s||(t instanceof AST_SymbolRef&&member(t.definition(),r)?s=!0:void 0)}),o=new TreeWalker(function(n){if(s)return!0;if(n instanceof AST_Scope&&n!==a){var t=o.parent();return t instanceof AST_Call&&t.expression===n?void 0:(n.walk(e),!0)}});return a.walk(o),s}function e(o,e){return e.in_boolean_context()?ne(e,o,W(o,[o,te(AST_True,o)]).optimize(e)):o}function E(o,e){if(!e.option("computed_props"))return o;if(!(o.key instanceof AST_Constant))return o;if(o.key instanceof AST_String||o.key instanceof AST_Number){if("constructor"==o.key.value&&e.parent()instanceof AST_Class)return o;o.key=o instanceof AST_ObjectKeyVal?o.key.value:te(AST_SymbolMethod,o.key,{name:o.key.value})}return o}var z=Math.min;G(AST_Node,function(t){return t}),AST_Node.DEFMETHOD("equivalent_to",function(t){return this.TYPE==t.TYPE&&this.print_to_string()==t.print_to_string()}),AST_Scope.DEFMETHOD("process_expression",function(r,e){var t=this,o=new TreeTransformer(function(i){if(r&&i instanceof AST_SimpleStatement)return te(AST_Return,i,{value:i.body});if(!r&&i instanceof AST_Return){if(e){var n=i.value&&i.value.drop_side_effect_free(e,!0);return n?te(AST_SimpleStatement,i,{body:n}):te(AST_EmptyStatement,i)}return te(AST_SimpleStatement,i,{body:i.value||te(AST_UnaryPrefix,i,{operator:"void",expression:te(AST_Number,i,{value:0})})})}if(i instanceof AST_Class||i instanceof AST_Lambda&&i!==t)return i;if(i instanceof AST_Block){var a=i.body.length-1;0<=a&&(i.body[a]=i.body[a].transform(o))}else i instanceof AST_If?(i.body=i.body.transform(o),i.alternative&&(i.alternative=i.alternative.transform(o))):i instanceof AST_With&&(i.body=i.body.transform(o));return i});t.transform(o)}),function(s){function v(o,e){e.assignments=0,e.chained=!1,e.direct_access=!1,e.escaped=!1,e.fixed=!(e.scope.uses_eval||e.scope.uses_with)&&(e.orig[0]instanceof AST_SymbolConst||!o.exposed(e))&&e.init,e.recursive_refs=0,e.references=[],e.should_replace=void 0,e.single_use=void 0}function b(t,e,o){o.variables.each(function(o){v(e,o),null===o.fixed?(o.safe_ids=t.safe_ids,a(t,o,!0)):o.fixed&&(t.loop_ids[o.id]=t.in_loop,a(t,o,!0))})}function x(t,e){e.block_scope&&e.block_scope.variables.each(function(e){v(t,e)})}function E(t){t.safe_ids=Object.create(t.safe_ids)}function n(t){t.safe_ids=Object.getPrototypeOf(t.safe_ids)}function a(n,e,t){n.safe_ids[e.id]=t}function l(n,e){if(n.safe_ids[e.id]){if(null==e.fixed){var t=e.orig[0];if(t instanceof AST_SymbolFunarg||"arguments"==t.name)return!1;e.fixed=te(AST_Undefined,t)}return!0}return e.fixed instanceof AST_Defun}function p(n,e,t){return void 0===e.fixed||(null===e.fixed&&e.safe_ids?(e.safe_ids[e.id]=!1,delete e.safe_ids,!0):!!HOP(n.safe_ids,e.id)&&!!l(n,e)&&!1!==e.fixed&&(null==e.fixed||t&&!(e.references.length>e.assignments))&&all(e.orig,function(t){return!(t instanceof AST_SymbolConst||t instanceof AST_SymbolDefun||t instanceof AST_SymbolLambda)}))}function f(n,e,t){return e.option("unused")&&!t.scope.uses_eval&&!t.scope.uses_with&&1==t.references.length-t.recursive_refs&&n.loop_ids[t.id]===n.in_loop}function c(t){return!!t&&(t.is_constant()||t instanceof AST_Lambda||t instanceof AST_This)}function z(i,e){if(e=_(e),!(e instanceof AST_Node)){var t;if(i instanceof AST_Array){var o=i.elements;if("length"==e)return r(o.length,i);"number"==typeof e&&e in o&&(t=o[e])}else if(i instanceof AST_Object){e=""+e;for(var n,r=i.properties,a=r.length;0<=--a;){if(n=r[a],!(n instanceof AST_ObjectKeyVal))return;t||r[a].key!==e||(t=r[a].value)}}return t instanceof AST_SymbolRef&&t.fixed_value()||t}}function u(s,e,t,o,i){var n=s.parent(o);if(Z(e,n)||!i&&n instanceof AST_Call&&n.expression===e&&!(t instanceof AST_Arrow)&&!(t instanceof AST_Class)&&(!(t instanceof AST_Function)||!(n instanceof AST_New)&&t.contains_this()))return!0;if(n instanceof AST_Array)return u(s,n,n,o+1);if(n instanceof AST_ObjectKeyVal&&e===n.value){var r=s.parent(o+1);return u(s,r,r,o+2)}return n instanceof AST_PropAccess&&n.expression===e?!i&&u(s,n,z(t,n.property),o+1):void 0}function g(p,e,t,o,i,n,r){var a=p.parent(n);if(i){if(i.is_constant())return;if(i instanceof AST_ClassExpression)return}if(a instanceof AST_Assign&&"="==a.operator&&o===a.right||a instanceof AST_Call&&o!==a.expression||a instanceof AST_Exit&&o===a.value&&o.scope!==e.scope||a instanceof AST_VarDef&&o===a.value||a instanceof AST_Yield&&o===a.value&&o.scope!==e.scope)return 1<r&&!(i&&i.is_constant_expression(t))&&(r=1),void((!e.escaped||e.escaped>r)&&(e.escaped=r));if(a instanceof AST_Array||a instanceof AST_Await||a instanceof AST_Binary&&O(a.operator)||a instanceof AST_Conditional&&o!==a.condition||a instanceof AST_Expansion||a instanceof AST_Sequence&&o===a.tail_node())g(p,e,t,a,a,n+1,r);else if(a instanceof AST_ObjectKeyVal&&o===a.value){var s=p.parent(n+1);g(p,e,t,s,s,n+2,r)}else if(a instanceof AST_PropAccess&&o===a.expression&&(i=z(i,a.property),g(p,e,t,a,i,n+1,r+1),i))return;0==n&&(e.direct_access=!0)}function e(o,e,t){this.inlined=!1;var i=o.safe_ids;return o.safe_ids=Object.create(null),b(o,t,this),e(),o.safe_ids=i,!0}function t(r,e,t){var l=this;l.inlined=!1,E(r),b(r,t,l);var i;return!l.name&&(i=r.parent())instanceof AST_Call&&i.expression===l&&l.argnames.forEach(function(e,t){if(e.definition){var o=e.definition();l.uses_arguments||void 0!==o.fixed?o.fixed=!1:(o.fixed=function(){return i.args[t]||te(AST_Undefined,i)},r.loop_ids[o.id]=r.in_loop,a(r,o,!0))}}),e(),n(r),!0}s(AST_Node,noop);var d=new TreeWalker(function(o){if(o instanceof AST_Symbol){var e=o.definition();e&&(o instanceof AST_SymbolRef&&e.references.push(o),e.fixed=!1)}});s(AST_Accessor,function(o,e,t){return E(o),b(o,t,this),e(),n(o),!0}),s(AST_Arrow,t),s(AST_Assign,function(n){var e=this;if(e.left instanceof AST_Destructuring)return void e.left.walk(d);if(e.left instanceof AST_SymbolRef){var t=e.left.definition(),o=t.fixed;if(o||"="==e.operator)return p(n,t,e.right)?(t.references.push(e.left),t.assignments++,"="!=e.operator&&(t.chained=!0),t.fixed="="==e.operator?function(){return e.right}:function(){return te(AST_Binary,e,{operator:e.operator.slice(0,-1),left:o instanceof AST_Node?o:o(),right:e.right})},a(n,t,!1),e.right.walk(n),a(n,t,!0),!0):void 0}}),s(AST_Binary,function(t){if(O(this.operator))return this.left.walk(t),E(t),this.right.walk(t),n(t),!0}),s(AST_Block,function(n,e,t){x(t,this)}),s(AST_ClassExpression,function(o,e){return this.inlined=!1,E(o),e(),n(o),!0}),s(AST_Conditional,function(t){return this.condition.walk(t),E(t),this.consequent.walk(t),n(t),E(t),this.alternative.walk(t),n(t),!0}),s(AST_DefClass,e),s(AST_Defun,e),s(AST_Do,function(i,e,t){x(t,this);var o=i.in_loop;return i.in_loop=this,E(i),this.body.walk(i),this.condition.walk(i),n(i),i.in_loop=o,!0}),s(AST_For,function(i,e,t){x(t,this),this.init&&this.init.walk(i);var o=i.in_loop;return i.in_loop=this,this.condition&&(E(i),this.condition.walk(i),n(i)),E(i),this.body.walk(i),n(i),this.step&&(E(i),this.step.walk(i),n(i)),i.in_loop=o,!0}),s(AST_ForIn,function(i,e,t){x(t,this),this.init.walk(d),this.object.walk(i);var o=i.in_loop;return i.in_loop=this,E(i),this.body.walk(i),n(i),i.in_loop=o,!0}),s(AST_Function,t),s(AST_If,function(t){return this.condition.walk(t),E(t),this.body.walk(t),n(t),this.alternative&&(E(t),this.alternative.walk(t),n(t)),!0}),s(AST_LabeledStatement,function(t){return E(t),this.body.walk(t),n(t),!0}),s(AST_SwitchBranch,function(o,e){return E(o),e(),n(o),!0}),s(AST_SymbolCatch,function(){this.definition().fixed=!1}),s(AST_SymbolRef,function(r,e,t){var o=this.definition();o.references.push(this),1==o.references.length&&!o.fixed&&o.orig[0]instanceof AST_SymbolDefun&&(r.loop_ids[o.id]=r.in_loop);var i;void 0!==o.fixed&&l(r,o)&&"m"!=o.single_use?o.fixed&&(i=this.fixed_value(),i instanceof AST_Lambda&&w(r,o)?o.recursive_refs++:i&&!t.exposed(o)&&f(r,t,o)?o.single_use=i instanceof AST_Lambda||i instanceof AST_Class||o.scope===this.scope&&i.is_constant_expression():o.single_use=!1,u(r,this,i,0,c(i))&&(o.single_use?o.single_use="m":o.fixed=!1)):o.fixed=!1,g(r,o,this.scope,this,i,0,1)}),s(AST_Toplevel,function(t,e,o){this.globals.each(function(t){v(o,t)}),b(t,o,this)}),s(AST_Try,function(i,e,t){return x(t,this),E(i),walk_body(this,i),n(i),this.bcatch&&(E(i),this.bcatch.walk(i),n(i)),this.bfinally&&this.bfinally.walk(i),!0}),s(AST_Unary,function(n){var e=this;if(("++"==e.operator||"--"==e.operator)&&e.expression instanceof AST_SymbolRef){var t=e.expression.definition(),o=t.fixed;if(o)return p(n,t,!0)?(t.references.push(e.expression),t.assignments++,t.chained=!0,t.fixed=function(){return te(AST_Binary,e,{operator:e.operator.slice(0,-1),left:te(AST_UnaryPrefix,e,{operator:"+",expression:o instanceof AST_Node?o:o()}),right:te(AST_Number,e,{value:1})})},a(n,t,!0),!0):void 0}}),s(AST_VarDef,function(n,e){var t=this;if(t.name instanceof AST_Destructuring)return void t.name.walk(d);var o=t.name.definition();if(t.value){if(p(n,o,t.value))return o.fixed=function(){return t.value},n.loop_ids[o.id]=n.in_loop,a(n,o,!1),e(),a(n,o,!0),!0;o.fixed=!1}}),s(AST_While,function(i,e,t){x(t,this);var o=i.in_loop;return i.in_loop=this,E(i),this.condition.walk(i),this.body.walk(i),n(i),i.in_loop=o,!0})}(function(o,e){o.DEFMETHOD("reduce_vars",e)}),AST_Toplevel.DEFMETHOD("reset_opt_flags",function(r){var e=r.option("reduce_vars"),t=new TreeWalker(function(o,i){if(o._squeezed=!1,o._optimized=!1,e)return o.reduce_vars(t,i,r)});t.safe_ids=Object.create(null),t.in_loop=null,t.loop_ids=Object.create(null),this.walk(t)}),AST_Symbol.DEFMETHOD("fixed_value",function(){var t=this.definition().fixed;return!t||t instanceof AST_Node?t:t()}),AST_SymbolRef.DEFMETHOD("is_immutable",function(){var t=this.definition().orig;return 1==t.length&&t[0]instanceof AST_SymbolLambda});var k=makePredicate("Array Boolean clearInterval clearTimeout console Date decodeURI decodeURIComponent encodeURI encodeURIComponent Error escape eval EvalError Function isFinite isNaN JSON Math Number parseFloat parseInt RangeError ReferenceError RegExp Object setInterval setTimeout String SyntaxError TypeError unescape URIError");AST_SymbolRef.DEFMETHOD("is_declared",function(t){return!this.definition().undeclared||t.option("unsafe")&&k(this.name)});var D=makePredicate("Infinity NaN undefined");(function(o){function n(t){return /strict/.test(t.option("pure_getters"))}AST_Node.DEFMETHOD("may_throw_on_access",function(t){return!t.option("pure_getters")||this._dot_throw(t)}),o(AST_Node,n),o(AST_Null,return_true),o(AST_Undefined,return_true),o(AST_Constant,return_false),o(AST_Array,return_false),o(AST_Object,function(t){if(!n(t))return!1;for(var e=this.properties.length;0<=--e;)if(this.properties[e]._dot_throw(t))return!0;return!1}),o(AST_ObjectProperty,return_false),o(AST_ObjectGetter,return_true),o(AST_Expansion,function(t){return this.expression._dot_throw(t)}),o(AST_Function,return_false),o(AST_Arrow,return_false),o(AST_UnaryPostfix,return_false),o(AST_UnaryPrefix,function(){return"void"==this.operator}),o(AST_Binary,function(t){return("&&"==this.operator||"||"==this.operator)&&(this.left._dot_throw(t)||this.right._dot_throw(t))}),o(AST_Assign,function(t){return"="==this.operator&&this.right._dot_throw(t)}),o(AST_Conditional,function(t){return this.consequent._dot_throw(t)||this.alternative._dot_throw(t)}),o(AST_Dot,function(t){return!!n(t)&&!(this.expression instanceof AST_Function&&"prototype"==this.property)}),o(AST_Sequence,function(t){return this.tail_node()._dot_throw(t)}),o(AST_SymbolRef,function(t){if(this.is_undefined)return!0;if(!n(t))return!1;if(oe(this)&&this.is_declared(t))return!1;if(this.is_immutable())return!1;var e=this.fixed_value();return!e||e._dot_throw(t)})})(function(o,e){o.DEFMETHOD("_dot_throw",e)}),function(n){var e=["!","delete"],t=["in","instanceof","==","!=","===","!==","<","<=",">=",">"];n(AST_Node,return_false),n(AST_UnaryPrefix,function(){return member(this.operator,e)}),n(AST_Binary,function(){return member(this.operator,t)||O(this.operator)&&this.left.is_boolean()&&this.right.is_boolean()}),n(AST_Conditional,function(){return this.consequent.is_boolean()&&this.alternative.is_boolean()}),n(AST_Assign,function(){return"="==this.operator&&this.right.is_boolean()}),n(AST_Sequence,function(){return this.tail_node().is_boolean()}),n(AST_True,return_true),n(AST_False,return_true)}(function(o,e){o.DEFMETHOD("is_boolean",e)}),function(n){n(AST_Node,return_false),n(AST_Number,return_true);var e=makePredicate("+ - ~ ++ --");n(AST_Unary,function(){return e(this.operator)});var t=makePredicate("- * / % & | ^ << >> >>>");n(AST_Binary,function(o){return t(this.operator)||"+"==this.operator&&this.left.is_number(o)&&this.right.is_number(o)}),n(AST_Assign,function(o){return t(this.operator.slice(0,-1))||"="==this.operator&&this.right.is_number(o)}),n(AST_Sequence,function(t){return this.tail_node().is_number(t)}),n(AST_Conditional,function(t){return this.consequent.is_number(t)&&this.alternative.is_number(t)})}(function(o,e){o.DEFMETHOD("is_number",e)}),function(t){t(AST_Node,return_false),t(AST_String,return_true),t(AST_TemplateString,function(){return 1===this.segments.length}),t(AST_UnaryPrefix,function(){return"typeof"==this.operator}),t(AST_Binary,function(t){return"+"==this.operator&&(this.left.is_string(t)||this.right.is_string(t))}),t(AST_Assign,function(t){return("="==this.operator||"+="==this.operator)&&this.right.is_string(t)}),t(AST_Sequence,function(t){return this.tail_node().is_string(t)}),t(AST_Conditional,function(t){return this.consequent.is_string(t)&&this.alternative.is_string(t)})}(function(o,e){o.DEFMETHOD("is_string",e)});var O=makePredicate("&& ||"),q=makePredicate("delete ++ --");(function(o){function s(t,a){if(t instanceof AST_Node)return te(t.CTOR,a,t);if(Array.isArray(t))return te(AST_Array,a,{elements:t.map(function(t){return s(t,a)})});if(t&&"object"==typeof t){var e=[];for(var o in t)HOP(t,o)&&e.push(te(AST_ObjectKeyVal,a,{key:o,value:s(t[o],a)}));return te(AST_Object,a,{properties:e})}return r(t,a)}AST_Node.DEFMETHOD("resolve_defines",function(r){if(r.option("global_defs")){var e=this._find_defs(r,"");if(e){var t,o=this,i=0;do t=o,o=r.parent(i++);while(o instanceof AST_PropAccess&&o.expression===t);if(Z(t,o))r.warn("global_defs "+this.print_to_string()+" redefined [{file}:{line},{col}]",this.start);else return e}}}),o(AST_Node,noop),o(AST_Dot,function(o,e){return this.expression._find_defs(o,"."+this.property+e)}),o(AST_SymbolRef,function(t,e){if(this.global()){var o,i=t.option("global_defs");if(i&&HOP(i,o=this.name+e)){var n=s(i[o],this),r=t.find_parent(AST_Toplevel);return n.walk(new TreeWalker(function(t){t instanceof AST_SymbolRef&&(t.scope=r,t.thedef=r.def_global(t))})),n}}})})(function(o,e){o.DEFMETHOD("_find_defs",e)});var T=["constructor","toString","valueOf"],F={Array:["indexOf","join","lastIndexOf","slice"].concat(T),Boolean:T,Number:["toExponential","toFixed","toPrecision"].concat(T),Object:T,RegExp:["test"].concat(T),String:["charAt","charCodeAt","concat","indexOf","italics","lastIndexOf","match","replace","search","slice","split","substr","substring","toLowerCase","toUpperCase","trim"].concat(T)};h(F);var M={Array:["isArray"],Math:["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan","atan2","pow","max","min"],Number:["isFinite","isNaN"],Object:["create","getOwnPropertyDescriptor","getOwnPropertyNames","getPrototypeOf","isExtensible","isFrozen","isSealed","keys"],String:["fromCharCode"]};h(M),function(n){AST_Node.DEFMETHOD("evaluate",function(o){if(!o.option("evaluate"))return this;var e=this._eval(o,1);return!e||e instanceof RegExp||"object"!=typeof e?e:this});var e=makePredicate("! ~ - + void");AST_Node.DEFMETHOD("is_constant",function(){return this instanceof AST_Constant?!(this instanceof AST_RegExp):this instanceof AST_UnaryPrefix&&this.expression instanceof AST_Constant&&e(this.operator)}),n(AST_Statement,function(){throw new Error(string_template("Cannot evaluate a statement [{file}:{line},{col}]",this.start))}),n(AST_Lambda,return_this),n(AST_Class,return_this),n(AST_Node,return_this),n(AST_Constant,function(){return this.getValue()}),n(AST_TemplateString,function(){return 1===this.segments.length?this.segments[0].value:this}),n(AST_Array,function(s,e){if(s.option("unsafe")){for(var t,o=[],n=0,r=this.elements.length;n<r;n++){if(t=this.elements[n],t instanceof AST_Function){o.push(t);continue}var i=t._eval(s,e);if(t===i)return this;o.push(i)}return o}return this}),n(AST_Object,function(s,e){if(s.option("unsafe")){for(var t,o={},n=0,r=this.properties.length;n<r;n++){if(t=this.properties[n],t instanceof AST_Expansion)return this;var i=t.key;if(i instanceof AST_Symbol)i=i.name;else if(i instanceof AST_Node&&(i=i._eval(s,e),i===t.key))return this;if("function"==typeof Object.prototype[i])return this;if(!(t.value instanceof AST_Function)&&(o[i]=t.value._eval(s,e),o[i]===t.value))return this}return o}return this}),n(AST_UnaryPrefix,function(e,t){var o=this.expression;if(e.option("typeofs")&&"typeof"==this.operator&&(o instanceof AST_Lambda||o instanceof AST_SymbolRef&&o.fixed_value()instanceof AST_Lambda))return"function";if(o=o._eval(e,t),o===this.expression)return this;switch(this.operator){case"!":return!o;case"typeof":return o instanceof RegExp?this:typeof o;case"void":return;case"~":return~o;case"-":return-o;case"+":return+o;}return this}),n(AST_Binary,function(r,e){var t=this.left._eval(r,e);if(t===this.left)return this;var o=this.right._eval(r,e);if(o===this.right)return this;var i;switch(this.operator){case"&&":i=t&&o;break;case"||":i=t||o;break;case"|":i=t|o;break;case"&":i=t&o;break;case"^":i=t^o;break;case"+":i=t+o;break;case"*":i=t*o;break;case"**":i=Math.pow(t,o);break;case"/":i=t/o;break;case"%":i=t%o;break;case"-":i=t-o;break;case"<<":i=t<<o;break;case">>":i=t>>o;break;case">>>":i=t>>>o;break;case"==":i=t==o;break;case"===":i=t===o;break;case"!=":i=t!=o;break;case"!==":i=t!==o;break;case"<":i=t<o;break;case"<=":i=t<=o;break;case">":i=t>o;break;case">=":i=t>=o;break;default:return this;}return isNaN(i)&&r.find_parent(AST_With)?this:i}),n(AST_Conditional,function(r,e){var t=this.condition._eval(r,e);if(t===this.condition)return this;var o=t?this.consequent:this.alternative,i=o._eval(r,e);return i===o?this:i}),n(AST_SymbolRef,function(r,e){var t=this.fixed_value();if(!t)return this;var o;if(HOP(t,"_eval"))o=t._eval();else{if(this._eval=return_this,o=t._eval(r,e),delete this._eval,o===t)return this;t._eval=function(){return o}}if(o&&"object"==typeof o){var i=this.definition().escaped;if(i&&e>i)return this}return o});var t={Array:Array,Math:Math,Number:Number,Object:Object,String:String},o={Math:["E","LN10","LN2","LOG2E","LOG10E","PI","SQRT1_2","SQRT2"],Number:["MAX_VALUE","MIN_VALUE","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY"]};h(o),n(AST_PropAccess,function(i,e){if(i.option("unsafe")){var s=this.property;if(s instanceof AST_Node&&(s=s._eval(i,e),s===this.property))return this;var n,r=this.expression;if(oe(r)){if(!(o[r.name]||return_false)(s))return this;n=t[r.name]}else if(n=r._eval(i,e+1),!n||n===r||!HOP(n,s))return this;return n[s]}return this}),n(AST_Call,function(o,c){var n=this.expression;if(o.option("unsafe")&&n instanceof AST_PropAccess){var r=n.property;if(r instanceof AST_Node&&(r=r._eval(o,c),r===n.property))return this;var a,s=n.expression;if(oe(s)){if(!(M[s.name]||return_false)(r))return this;a=t[s.name]}else if(a=s._eval(o,c+1),a===s||!(a&&F[a.constructor.name]||return_false)(r))return this;for(var l=[],e=0,p=this.args.length;e<p;e++){var i=this.args[e],d=i._eval(o,c);if(i===d)return this;l.push(d)}try{return a[r].apply(a,l)}catch(t){o.warn("Error evaluating {code} [{file}:{line},{col}]",{code:this.print_to_string(),file:this.start.file,line:this.start.line,col:this.start.col})}}return this}),n(AST_New,return_this)}(function(o,e){o.DEFMETHOD("_eval",e)}),function(n){function s(t){return te(AST_UnaryPrefix,t,{operator:"!",expression:t})}function a(t,e,o){var i=s(t);if(o){var n=te(AST_SimpleStatement,e,{body:e});return u(i,n)===n?e:i}return u(i,e)}n(AST_Node,function(){return s(this)}),n(AST_Statement,function(){throw new Error("Cannot negate a statement")}),n(AST_Function,function(){return s(this)}),n(AST_Arrow,function(){return s(this)}),n(AST_UnaryPrefix,function(){return"!"==this.operator?this.expression:s(this)}),n(AST_Sequence,function(o){var e=this.expressions.slice();return e.push(e.pop().negate(o)),W(this,e)}),n(AST_Conditional,function(o,e){var t=this.clone();return t.consequent=t.consequent.negate(o),t.alternative=t.alternative.negate(o),a(this,t,e)}),n(AST_Binary,function(t,e){var o=this.clone(),n=this.operator;if(t.option("unsafe_comps"))switch(n){case"<=":return o.operator=">",o;case"<":return o.operator=">=",o;case">=":return o.operator="<",o;case">":return o.operator="<=",o;}return"=="===n?(o.operator="!=",o):"!="===n?(o.operator="==",o):"==="===n?(o.operator="!==",o):"!=="===n?(o.operator="===",o):"&&"===n?(o.operator="||",o.left=o.left.negate(t,e),o.right=o.right.negate(t),a(this,o,e)):"||"===n?(o.operator="&&",o.left=o.left.negate(t,e),o.right=o.right.negate(t),a(this,o,e)):s(this)})}(function(o,n){o.DEFMETHOD("negate",function(t,e){return n.call(this,t,e)})});var H=makePredicate("Boolean decodeURI decodeURIComponent Date encodeURI encodeURIComponent Error escape EvalError isFinite isNaN Number Object parseFloat parseInt RangeError ReferenceError String SyntaxError TypeError unescape URIError");AST_Call.DEFMETHOD("is_expr_pure",function(o){if(o.option("unsafe")){var e=this.expression;if(oe(e)&&H(e.name))return!0;if(e instanceof AST_Dot&&oe(e.expression)&&(M[e.expression.name]||return_false)(e.property))return!0}return this.pure||!o.pure_funcs(this)}),AST_Node.DEFMETHOD("is_call_pure",return_false),AST_Dot.DEFMETHOD("is_call_pure",function(n){if(n.option("unsafe")){var e=this.expression,t=return_false;return e instanceof AST_Array?t=F.Array:e.is_boolean()?t=F.Boolean:e.is_number(n)?t=F.Number:e instanceof AST_RegExp?t=F.RegExp:e.is_string(n)?t=F.String:!this.may_throw_on_access(n)&&(t=F.Object),t(this.property)}}),function(o){function n(n,e){for(var t=n.length;0<=--t;)if(n[t].has_side_effects(e))return!0;return!1}o(AST_Node,return_true),o(AST_EmptyStatement,return_false),o(AST_Constant,return_false),o(AST_This,return_false),o(AST_Block,function(t){return n(this.body,t)}),o(AST_Call,function(t){return!(this.is_expr_pure(t)||this.expression.is_call_pure(t)&&!this.expression.has_side_effects(t))||n(this.args,t)}),o(AST_Switch,function(t){return this.expression.has_side_effects(t)||n(this.body,t)}),o(AST_Case,function(t){return this.expression.has_side_effects(t)||n(this.body,t)}),o(AST_Try,function(t){return n(this.body,t)||this.bcatch&&this.bcatch.has_side_effects(t)||this.bfinally&&this.bfinally.has_side_effects(t)}),o(AST_If,function(t){return this.condition.has_side_effects(t)||this.body&&this.body.has_side_effects(t)||this.alternative&&this.alternative.has_side_effects(t)}),o(AST_LabeledStatement,function(t){return this.body.has_side_effects(t)}),o(AST_SimpleStatement,function(t){return this.body.has_side_effects(t)}),o(AST_Lambda,return_false),o(AST_Class,return_false),o(AST_DefClass,return_true),o(AST_Binary,function(t){return this.left.has_side_effects(t)||this.right.has_side_effects(t)}),o(AST_Assign,return_true),o(AST_Conditional,function(t){return this.condition.has_side_effects(t)||this.consequent.has_side_effects(t)||this.alternative.has_side_effects(t)}),o(AST_Unary,function(t){return q(this.operator)||this.expression.has_side_effects(t)}),o(AST_SymbolRef,function(t){return!this.is_declared(t)}),o(AST_SymbolDeclaration,return_false),o(AST_Object,function(t){return n(this.properties,t)}),o(AST_ObjectProperty,function(t){return!!(this.key instanceof AST_ObjectKeyVal&&this.key.has_side_effects(t))||this.value.has_side_effects(t)}),o(AST_Array,function(t){return n(this.elements,t)}),o(AST_Dot,function(t){return this.expression.may_throw_on_access(t)||this.expression.has_side_effects(t)}),o(AST_Sub,function(t){return this.expression.may_throw_on_access(t)||this.expression.has_side_effects(t)||this.property.has_side_effects(t)}),o(AST_Sequence,function(t){return n(this.expressions,t)}),o(AST_Definitions,function(t){return n(this.definitions,t)}),o(AST_VarDef,function(){return this.value}),o(AST_TemplateSegment,return_false),o(AST_TemplateString,function(t){return n(this.segments,t)})}(function(o,e){o.DEFMETHOD("has_side_effects",e)}),function(o){function n(n,e){for(var t=n.length;0<=--t;)if(n[t].may_throw(e))return!0;return!1}o(AST_Node,return_true),o(AST_Class,return_false),o(AST_Constant,return_false),o(AST_EmptyStatement,return_false),o(AST_Lambda,return_false),o(AST_SymbolDeclaration,return_false),o(AST_This,return_false),o(AST_Array,function(t){return n(this.elements,t)}),o(AST_Assign,function(t){return!!this.right.may_throw(t)||(t.has_directive("use strict")||"="!=this.operator||!(this.left instanceof AST_SymbolRef))&&this.left.may_throw(t)}),o(AST_Binary,function(t){return this.left.may_throw(t)||this.right.may_throw(t)}),o(AST_Block,function(t){return n(this.body,t)}),o(AST_Call,function(t){return!!n(this.args,t)||!this.is_expr_pure(t)&&(!!this.expression.may_throw(t)||!(this.expression instanceof AST_Lambda)||n(this.expression.body,t))}),o(AST_Case,function(t){return this.expression.may_throw(t)||n(this.body,t)}),o(AST_Conditional,function(t){return this.condition.may_throw(t)||this.consequent.may_throw(t)||this.alternative.may_throw(t)}),o(AST_Definitions,function(t){return n(this.definitions,t)}),o(AST_Dot,function(t){return this.expression.may_throw_on_access(t)||this.expression.may_throw(t)}),o(AST_If,function(t){return this.condition.may_throw(t)||this.body&&this.body.may_throw(t)||this.alternative&&this.alternative.may_throw(t)}),o(AST_LabeledStatement,function(t){return this.body.may_throw(t)}),o(AST_Object,function(t){return n(this.properties,t)}),o(AST_ObjectProperty,function(t){return this.value.may_throw(t)}),o(AST_Sequence,function(t){return n(this.expressions,t)}),o(AST_SimpleStatement,function(t){return this.body.may_throw(t)}),o(AST_Sub,function(t){return this.expression.may_throw_on_access(t)||this.expression.may_throw(t)||this.property.may_throw(t)}),o(AST_Switch,function(t){return this.expression.may_throw(t)||n(this.body,t)}),o(AST_SymbolRef,function(t){return!this.is_declared(t)}),o(AST_Try,function(t){return n(this.body,t)||this.bcatch&&this.bcatch.may_throw(t)||this.bfinally&&this.bfinally.may_throw(t)}),o(AST_Unary,function(t){return!("typeof"==this.operator&&this.expression instanceof AST_SymbolRef)&&this.expression.may_throw(t)}),o(AST_VarDef,function(t){return!!this.value&&this.value.may_throw(t)})}(function(o,e){o.DEFMETHOD("may_throw",e)}),function(n){function e(o){for(var e=o.length;0<=--e;)if(!o[e].is_constant_expression())return!1;return!0}function t(a){var e=this,t=!0;return e.walk(new TreeWalker(function(o){if(!t)return!0;if(o instanceof AST_SymbolRef){if(e.inlined)return t=!1,!0;var i=o.definition();if(member(i,e.enclosed)&&!e.variables.has(i.name)){if(a){var n=a.find_variable(o);if(i.undeclared?!n:n===i)return t="f",!0}t=!1}return!0}return o instanceof AST_This&&e instanceof AST_Arrow?(t=!1,!0):void 0})),t}n(AST_Node,return_false),n(AST_Constant,return_true),n(AST_Class,t),n(AST_Lambda,t),n(AST_Unary,function(){return this.expression.is_constant_expression()}),n(AST_Binary,function(){return this.left.is_constant_expression()&&this.right.is_constant_expression()}),n(AST_Array,function(){return e(this.elements)}),n(AST_Object,function(){return e(this.properties)}),n(AST_ObjectProperty,function(){return!(this.key instanceof AST_Node)&&this.value.is_constant_expression()})}(function(o,e){o.DEFMETHOD("is_constant_expression",e)}),function(o){function e(){var t=this.body.length;return 0<t&&m(this.body[t-1])}o(AST_Statement,return_null),o(AST_Jump,return_this),o(AST_Import,function(){return null}),o(AST_BlockStatement,e),o(AST_SwitchBranch,e),o(AST_If,function(){return this.alternative&&m(this.body)&&m(this.alternative)&&this})}(function(o,e){o.DEFMETHOD("aborts",e)}),G(AST_Directive,function(o,e){return e.has_directive(o.value)===o?o:te(AST_EmptyStatement,o)}),G(AST_Debugger,function(o,e){return e.option("drop_debugger")?te(AST_EmptyStatement,o):o}),G(AST_LabeledStatement,function(o,e){return o.body instanceof AST_Break&&e.loopcontrol_target(o.body)===o.body?te(AST_EmptyStatement,o):0==o.label.references.length?o.body:o}),G(AST_Block,function(o,e){return i(o.body,e),o}),G(AST_BlockStatement,function(o,e){switch(i(o.body,e),o.body.length){case 1:if(!e.has_directive("use strict")&&e.parent()instanceof AST_If||l(o.body[0]))return o.body[0];break;case 0:return te(AST_EmptyStatement,o);}return o}),AST_Scope.DEFMETHOD("drop_unused",function(r){function e(o,e){var t,n=i(o);if(n instanceof AST_SymbolRef&&!Q(o.left,AST_SymbolBlockDeclaration)&&f.variables.get(n.name)===(t=n.definition()))return o instanceof AST_Assign&&(o.right.walk(h),!t.chained&&o.left.fixed_value()===o.right&&(d[t.id]=o)),!0;if(o instanceof AST_SymbolRef)return t=o.definition(),t.id in c||(c[t.id]=!0,p.push(t),(t=t.redefined())&&(c[t.id]=!0,p.push(t))),!0;if(o instanceof AST_Scope){var r=g;return g=o,e(),g=r,!0}}if(r.option("unused")&&!r.has_directive("use asm")){var f=this;if(!(f.uses_eval||f.uses_with)){var o=!(f instanceof AST_Toplevel)||r.toplevel.funcs,a=!(f instanceof AST_Toplevel)||r.toplevel.vars,i=/keep_assign/.test(r.option("unused"))?return_false:function(t){return t instanceof AST_Assign&&(t.write_only||"="==t.operator)?t.left:t instanceof AST_Unary&&t.write_only?t.expression:void 0},p=[],c=Object.create(null),d=Object.create(null);f instanceof AST_Toplevel&&r.top_retain&&f.variables.each(function(e){r.top_retain(e)&&!(e.id in c)&&(c[e.id]=!0,p.push(e))});var _=new Dictionary,n=new Dictionary,u=null,g=this,h=new TreeWalker(function(t,i){if(t!==f){if(t instanceof AST_Defun||t instanceof AST_DefClass){var s=t.name.definition(),m=h.parent()instanceof AST_Export;return(m||!o&&g===f)&&s.global&&!(s.id in c)&&(c[s.id]=!0,p.push(s)),n.add(s.id,t),!0}if(t instanceof AST_SymbolFunarg&&g===f&&_.add(t.definition().id,t),t instanceof AST_Definitions&&g===f){var m=h.parent()instanceof AST_Export;return t.definitions.forEach(function(e){if(e.name instanceof AST_SymbolVar&&_.add(e.name.definition().id,e),(m||!a)&&e.name.walk(new TreeWalker(function(o){if(o instanceof AST_SymbolDeclaration){var e=o.definition();(m||e.global)&&!(e.id in c)&&(c[e.id]=!0,p.push(e))}})),e.value){if(e.name instanceof AST_Destructuring){var t=u;u=e.value,e.walk(h),u=t}else{var o=e.name.definition();n.add(o.id,e.value),o.chained||e.name.fixed_value()!==e.value||(d[o.id]=e)}e.value.has_side_effects(r)&&e.value.walk(h)}}),!0}return t.destructuring&&u&&n.add(t.name,u),e(t,i)}});f.walk(h),h=new TreeWalker(e);for(var t,m=0;m<p.length;m++)t=n.get(p[m].id),t&&t.forEach(function(t){t.walk(h)});var y=new TreeTransformer(function(e,t,n){function u(t){return{name:t.name,file:t.start.file,line:t.start.line,col:t.start.col}}var p=y.parent();if(a){var h=i(e);if(h instanceof AST_SymbolRef){var m=h.definition(),v=m.id in c;if(e instanceof AST_Assign){if(!v||m.id in d&&d[m.id]!==e)return J(p,e,e.right.transform(y));}else if(!v)return te(AST_Number,e,{value:0})}}if(g===f){if(e.name&&(!r.option("keep_classnames")&&e instanceof AST_ClassExpression||!r.option("keep_fnames")&&e instanceof AST_Function)){var m=e.name.definition();(!(m.id in c)||1<m.orig.length)&&(e.name=null)}if(e instanceof AST_Lambda&&!(e instanceof AST_Accessor))for(var h,b=!r.option("keep_fargs"),x=e.argnames,w=x.length;0<=--w;)h=x[w],h instanceof AST_Expansion&&(h=h.expression),h instanceof AST_DefaultAssign&&(h=h.left),h instanceof AST_Destructuring||h.definition().id in c?b=!1:(h.__unused=!0,b&&(x.pop(),r[h.unreferenced()?"warn":"info"]("Dropping unused function argument {name} [{file}:{line},{col}]",u(h))));if((e instanceof AST_Defun||e instanceof AST_DefClass)&&e!==f){var m=e.name.definition(),E=m.id in c||!o&&m.global;if(!E)return r[e.name.unreferenced()?"warn":"info"]("Dropping unused function {name} [{file}:{line},{col}]",u(e.name)),m.eliminated++,te(AST_EmptyStatement,e)}if(e instanceof AST_Definitions&&!(p instanceof AST_ForIn&&p.init===e)){var z=!(p instanceof AST_Toplevel)&&!(e instanceof AST_Var),k=[],D=[],O=[],q=[];switch(e.definitions.forEach(function(t){if(t.value&&(t.value=t.value.transform(y)),t.name instanceof AST_Destructuring)return O.push(t);var o=t.name.definition();if(z&&o.global)return O.push(t);if(!(a||z)||o.id in c){if(t.value&&o.id in d&&d[o.id]!==t&&(t.value=t.value.drop_side_effect_free(r)),t.name instanceof AST_SymbolVar){var i=_.get(o.id);if(1<i.length&&(!t.value||o.orig.indexOf(t.name)>o.eliminated)){if(r.warn("Dropping duplicated definition of variable {name} [{file}:{line},{col}]",u(t.name)),t.value){var n=te(AST_SymbolRef,t.name,t.name);o.references.push(n);var s=te(AST_Assign,t,{operator:"=",left:n,right:t.value});d[o.id]===t&&(d[o.id]=s),q.push(s.transform(y))}return remove(i,t),void o.eliminated++}}t.value?(0<q.length&&(0<O.length?(q.push(t.value),t.value=W(t.value,q)):k.push(te(AST_SimpleStatement,e,{body:W(e,q)})),q=[]),O.push(t)):D.push(t)}else if(o.orig[0]instanceof AST_SymbolCatch){var l=t.value&&t.value.drop_side_effect_free(r);l&&q.push(l),t.value=null,D.push(t)}else{var l=t.value&&t.value.drop_side_effect_free(r);l?(r.warn("Side effects in initialization of unused variable {name} [{file}:{line},{col}]",u(t.name)),q.push(l)):r[t.name.unreferenced()?"warn":"info"]("Dropping unused variable {name} [{file}:{line},{col}]",u(t.name)),o.eliminated++}}),(0<D.length||0<O.length)&&(e.definitions=D.concat(O),k.push(e)),0<q.length&&k.push(te(AST_SimpleStatement,e,{body:W(e,q)})),k.length){case 0:return n?MAP.skip:te(AST_EmptyStatement,e);case 1:return k[0];default:return n?MAP.splice(k):te(AST_BlockStatement,e,{body:k});}}if(e instanceof AST_For){t(e,this);var T;return e.init instanceof AST_BlockStatement&&(T=e.init,e.init=T.body.pop(),T.body.push(e)),e.init instanceof AST_SimpleStatement?e.init=e.init.body:s(e.init)&&(e.init=null),T?n?MAP.splice(T.body):T:e}if(e instanceof AST_LabeledStatement&&e.body instanceof AST_For){if(t(e,this),e.body instanceof AST_BlockStatement){var T=e.body;return e.body=T.body.pop(),T.body.push(e),n?MAP.splice(T.body):T}return e}if(e instanceof AST_BlockStatement)return t(e,this),n&&all(e.body,l)?MAP.splice(e.body):e;if(e instanceof AST_Scope){var F=g;return g=e,t(e,this),g=F,e}}});f.transform(y)}}}),AST_Scope.DEFMETHOD("hoist_declarations",function(r){var v=this;if(r.has_directive("use asm"))return v;if(!Array.isArray(v.body))return v;var e=r.option("hoist_funs"),t=r.option("hoist_vars");if(e||t){var o=[],n=[],i=new Dictionary,a=0,s=0;v.walk(new TreeWalker(function(t){return!!(t instanceof AST_Scope&&t!==v)||(t instanceof AST_Var?(++s,!0):void 0)})),t=t&&1<s;var l=new TreeTransformer(function(s){if(s!==v){if(s instanceof AST_Directive)return o.push(s),te(AST_EmptyStatement,s);if(e&&s instanceof AST_Defun&&!(l.parent()instanceof AST_Export)&&l.parent()===v)return n.push(s),te(AST_EmptyStatement,s);if(t&&s instanceof AST_Var){s.definitions.forEach(function(t){t.name instanceof AST_Destructuring||(i.set(t.name.name,t),++a)});var p=s.to_assignments(r),d=l.parent();if(d instanceof AST_ForIn&&d.init===s){if(null==p){var f=s.definitions[0].name;return te(AST_SymbolRef,f,f)}return p}return d instanceof AST_For&&d.init===s?p:p?te(AST_SimpleStatement,s,{body:p}):te(AST_EmptyStatement,s)}if(s instanceof AST_Scope)return s}});if(v=v.transform(l),0<a){var p=[];if(i.each(function(n,e){v instanceof AST_Lambda&&find_if(function(e){return e.name==n.name.name},v.args_as_names())?i.del(e):(n=n.clone(),n.value=null,p.push(n),i.set(e,n))}),0<p.length){for(;0<v.body.length;){if(v.body[0]instanceof AST_SimpleStatement){var d,f,c=v.body[0].body;if(c instanceof AST_Assign&&"="==c.operator&&(d=c.left)instanceof AST_Symbol&&i.has(d.name)){var _=i.get(d.name);if(_.value)break;_.value=c.right,remove(p,_),p.push(_),v.body.splice(0,1);continue}if(c instanceof AST_Sequence&&(f=c.expressions[0])instanceof AST_Assign&&"="==f.operator&&(d=f.left)instanceof AST_Symbol&&i.has(d.name)){var _=i.get(d.name);if(_.value)break;_.value=f.right,remove(p,_),p.push(_),v.body[0].body=W(c,c.expressions.slice(1));continue}}if(v.body[0]instanceof AST_EmptyStatement){v.body.splice(0,1);continue}if(v.body[0]instanceof AST_BlockStatement){var u=[0,1].concat(v.body[0].body);v.body.splice.apply(v.body,u);continue}break}p=te(AST_Var,v,{definitions:p}),n.push(p)}}v.body=o.concat(n,v.body)}return v}),AST_Scope.DEFMETHOD("var_names",function(){var n=this._var_names;return n||(this._var_names=n=Object.create(null),this.enclosed.forEach(function(e){n[e.name]=!0}),this.variables.each(function(e,t){n[t]=!0})),n}),AST_Scope.DEFMETHOD("make_var_name",function(i){var e=this.var_names();i=i.replace(/[^a-z_$]+/ig,"_");for(var t=i,o=0;e[t];o++)t=i+"$"+o;return e[t]=!0,t}),AST_Scope.DEFMETHOD("hoist_properties",function(r){var u=this;if(!r.option("hoist_props")||r.has_directive("use asm"))return u;var e=u instanceof AST_Toplevel&&r.top_retain||return_false,t=Object.create(null),o=new TreeTransformer(function(n,i){function a(t){var e=te(p.CTOR,p,{name:u.make_var_name(p.name+"_"+t),scope:u}),o=u.def_variable(e);return d.set(t,o),u.enclosed.push(o),e}if(n instanceof AST_Definitions&&o.parent()instanceof AST_Export)return n;if(n instanceof AST_VarDef){var s,l,p=n.name;if(p.scope===u&&1!=(s=p.definition()).escaped&&!s.single_use&&!s.direct_access&&!r.exposed(s)&&!e(s)&&(l=p.fixed_value())===n.value&&l instanceof AST_Object){i(n,this);var d=new Dictionary,f=[];return l.properties.forEach(function(t){f.push(te(AST_VarDef,n,{name:a(t.key),value:t.value}))}),t[s.id]=d,MAP.splice(f)}}if(n instanceof AST_PropAccess&&n.expression instanceof AST_SymbolRef){var d=t[n.expression.definition().id];if(d){var s=d.get(_(n.property)),p=te(AST_SymbolRef,n,{name:s.name,scope:n.expression.scope,thedef:s});return p.reference({}),p}}});return u.transform(o)}),function(t){function a(i,e,t){var o=i.length;if(!o)return null;for(var n,r=[],a=!1,s=0;s<o;s++)n=i[s].drop_side_effect_free(e,t),a|=n!==i[s],n&&(r.push(n),t=!1);return a?r.length?r:null:i}t(AST_Node,return_this),t(AST_Constant,return_null),t(AST_This,return_null),t(AST_Call,function(t,e){if(!this.is_expr_pure(t)){if(this.expression.is_call_pure(t)){var o=this.args.slice();return o.unshift(this.expression.expression),o=a(o,t,e),o&&W(this,o)}if($(this.expression)&&(!this.expression.name||!this.expression.name.definition().references.length)){var n=this.clone();return n.expression.process_expression(!1,t),n}return this}this.pure&&t.warn("Dropping __PURE__ call [{file}:{line},{col}]",this.start);var i=a(this.args,t,e);return i&&W(this,i)}),t(AST_Accessor,return_null),t(AST_Function,return_null),t(AST_Arrow,return_null),t(AST_ClassExpression,return_null),t(AST_Binary,function(r,e){var t=this.right.drop_side_effect_free(r);if(!t)return this.left.drop_side_effect_free(r,e);if(O(this.operator)){if(t===this.right)return this;var o=this.clone();return o.right=t,o}var i=this.left.drop_side_effect_free(r,e);return i?W(this,[i,t]):this.right.drop_side_effect_free(r,e)}),t(AST_Assign,function(o){var e=this.left;if(e.has_side_effects(o)||o.has_directive("use strict")&&e instanceof AST_PropAccess&&e.expression.is_constant())return this;for(this.write_only=!0;e instanceof AST_PropAccess;)e=e.expression;return e.is_constant_expression(o.find_parent(AST_Scope))?this.right.drop_side_effect_free(o):this}),t(AST_Conditional,function(n){var e=this.consequent.drop_side_effect_free(n),t=this.alternative.drop_side_effect_free(n);if(e===this.consequent&&t===this.alternative)return this;if(!e)return t?te(AST_Binary,this,{operator:"||",left:this.condition,right:t}):this.condition.drop_side_effect_free(n);if(!t)return te(AST_Binary,this,{operator:"&&",left:this.condition,right:e});var o=this.clone();return o.consequent=e,o.alternative=t,o}),t(AST_Unary,function(n,e){if(q(this.operator))return this.write_only=!this.expression.has_side_effects(n),this;if("typeof"==this.operator&&this.expression instanceof AST_SymbolRef)return null;var t=this.expression.drop_side_effect_free(n,e);return e&&t&&f(t)?t===this.expression&&"!"==this.operator?this:t.negate(n,e):t}),t(AST_SymbolRef,function(t){return this.is_declared(t)?null:this}),t(AST_Object,function(o,e){var t=a(this.properties,o,e);return t&&W(this,t)}),t(AST_ObjectProperty,function(o,e){return this.value.drop_side_effect_free(o,e)}),t(AST_Array,function(o,e){var t=a(this.elements,o,e);return t&&W(this,t)}),t(AST_Dot,function(o,e){return this.expression.may_throw_on_access(o)?this:this.expression.drop_side_effect_free(o,e)}),t(AST_Sub,function(n,e){if(this.expression.may_throw_on_access(n))return this;var t=this.expression.drop_side_effect_free(n,e);if(!t)return this.property.drop_side_effect_free(n,e);var o=this.property.drop_side_effect_free(n);return o?W(this,[t,o]):t}),t(AST_Sequence,function(n){var e=this.tail_node(),t=e.drop_side_effect_free(n);if(t===e)return this;var o=this.expressions.slice(0,-1);return t&&o.push(t),W(this,o)}),t(AST_Expansion,function(o,e){return this.expression.drop_side_effect_free(o,e)}),t(AST_TemplateSegment,return_null),t(AST_TemplateString,function(o){var e=a(this.segments,o,first_in_statement);return e&&W(this,e)})}(function(o,e){o.DEFMETHOD("drop_side_effect_free",e)}),G(AST_SimpleStatement,function(n,e){if(e.option("side_effects")){var t=n.body,o=t.drop_side_effect_free(e,!0);if(!o)return e.warn("Dropping side-effect-free statement [{file}:{line},{col}]",n.start),te(AST_EmptyStatement,n);if(o!==t)return te(AST_SimpleStatement,n,{body:o})}return n}),G(AST_While,function(o,e){return e.option("loops")?te(AST_For,o,o).optimize(e):o}),G(AST_Do,function(r,e){if(!e.option("loops"))return r;var t=r.condition.tail_node().evaluate(e);if(!(t instanceof AST_Node)){if(t)return te(AST_For,r,{body:te(AST_BlockStatement,r.body,{body:[r.body,te(AST_SimpleStatement,r.condition,{body:r.condition})]})}).optimize(e);var o=!1,i=new TreeWalker(function(e){return!!(e instanceof AST_Scope||o)||(e instanceof AST_LoopControl&&i.loopcontrol_target(e)===r?o=!0:void 0)}),n=e.parent();if((n instanceof AST_LabeledStatement?n:r).walk(i),!o)return te(AST_BlockStatement,r.body,{body:[r.body,te(AST_SimpleStatement,r.condition,{body:r.condition})]}).optimize(e)}return r}),G(AST_For,function(a,e){if(!e.option("loops"))return a;if(e.option("side_effects")&&a.init&&(a.init=a.init.drop_side_effect_free(e)),a.condition){var t=a.condition.evaluate(e);if(!(t instanceof AST_Node))if(t)a.condition=null;else if(!e.option("dead_code")){var o=a.condition;a.condition=r(t,a.condition),a.condition=u(a.condition.transform(e),o)}if(e.option("dead_code")&&(t instanceof AST_Node&&(t=a.condition.tail_node().evaluate(e)),!t)){var i=[];return c(e,a.body,i),a.init instanceof AST_Statement?i.push(a.init):a.init&&i.push(te(AST_SimpleStatement,a.init,{body:a.init})),i.push(te(AST_SimpleStatement,a.condition,{body:a.condition})),te(AST_BlockStatement,a,{body:i}).optimize(e)}}return v(a,e)}),G(AST_If,function(f,e){if(s(f.alternative)&&(f.alternative=null),!e.option("conditionals"))return f;var t=f.condition.evaluate(e);if(!e.option("dead_code")&&!(t instanceof AST_Node)){var o=f.condition;f.condition=r(t,o),f.condition=u(f.condition.transform(e),o)}if(e.option("dead_code")){if(t instanceof AST_Node&&(t=f.condition.tail_node().evaluate(e)),!t){e.warn("Condition always false [{file}:{line},{col}]",f.condition.start);var i=[];return c(e,f.body,i),i.push(te(AST_SimpleStatement,f.condition,{body:f.condition})),f.alternative&&i.push(f.alternative),te(AST_BlockStatement,f,{body:i}).optimize(e)}if(!(t instanceof AST_Node)){e.warn("Condition always true [{file}:{line},{col}]",f.condition.start);var i=[];return f.alternative&&c(e,f.alternative,i),i.push(te(AST_SimpleStatement,f.condition,{body:f.condition})),i.push(f.body),te(AST_BlockStatement,f,{body:i}).optimize(e)}}var n=f.condition.negate(e),a=f.condition.print_to_string().length,l=n.print_to_string().length,p=l<a;if(f.alternative&&p){p=!1,f.condition=n;var d=f.body;f.body=f.alternative||te(AST_EmptyStatement,f),f.alternative=d}if(s(f.body)&&s(f.alternative))return te(AST_SimpleStatement,f.condition,{body:f.condition.clone()}).optimize(e);if(f.body instanceof AST_SimpleStatement&&f.alternative instanceof AST_SimpleStatement)return te(AST_SimpleStatement,f,{body:te(AST_Conditional,f,{condition:f.condition,consequent:f.body.body,alternative:f.alternative.body})}).optimize(e);if(s(f.alternative)&&f.body instanceof AST_SimpleStatement)return a===l&&!p&&f.condition instanceof AST_Binary&&"||"==f.condition.operator&&(p=!0),p?te(AST_SimpleStatement,f,{body:te(AST_Binary,f,{operator:"||",left:n,right:f.body.body})}).optimize(e):te(AST_SimpleStatement,f,{body:te(AST_Binary,f,{operator:"&&",left:f.condition,right:f.body.body})}).optimize(e);if(f.body instanceof AST_EmptyStatement&&f.alternative instanceof AST_SimpleStatement)return te(AST_SimpleStatement,f,{body:te(AST_Binary,f,{operator:"||",left:f.condition,right:f.alternative.body})}).optimize(e);if(f.body instanceof AST_Exit&&f.alternative instanceof AST_Exit&&f.body.TYPE==f.alternative.TYPE)return te(f.body.CTOR,f,{value:te(AST_Conditional,f,{condition:f.condition,consequent:f.body.value||te(AST_Undefined,f.body),alternative:f.alternative.value||te(AST_Undefined,f.alternative)}).transform(e)}).optimize(e);if(!(f.body instanceof AST_If)||f.body.alternative||f.alternative||(f=te(AST_If,f,{condition:te(AST_Binary,f.condition,{operator:"&&",left:f.condition,right:f.body.condition}),body:f.body.body,alternative:null})),m(f.body)&&f.alternative){var g=f.alternative;return f.alternative=null,te(AST_BlockStatement,f,{body:[f,g]}).optimize(e)}if(m(f.alternative)){var i=f.body;return f.body=f.alternative,f.condition=p?n:f.condition.negate(e),f.alternative=null,te(AST_BlockStatement,f,{body:[f,i]}).optimize(e)}return f}),G(AST_Switch,function(s,y){function e(t,e){e&&!m(e)?e.body=e.body.concat(t.body):c(y,t,p)}if(!y.option("switches"))return s;var t,o=s.expression.evaluate(y);if(!(o instanceof AST_Node)){var n=s.expression;s.expression=r(o,n),s.expression=u(s.expression.transform(y),n)}if(!y.option("dead_code"))return s;o instanceof AST_Node&&(o=s.expression.tail_node().evaluate(y));for(var a,l,p=[],d=[],f=0,_=s.body.length;f<_&&!l;f++){if(t=s.body[f],t instanceof AST_Default)a?e(t,d[d.length-1]):a=t;else if(!(o instanceof AST_Node)){var i=t.expression.evaluate(y);if(!(i instanceof AST_Node)&&i!==o){e(t,d[d.length-1]);continue}if(i instanceof AST_Node&&(i=t.expression.tail_node().evaluate(y)),i===o&&(l=t,a)){var u=d.indexOf(a);d.splice(u,1),e(a,d[u-1]),a=null}}if(m(t)){var g=d[d.length-1];m(g)&&g.body.length==t.body.length&&te(AST_BlockStatement,g,g).equivalent_to(te(AST_BlockStatement,t,t))&&(g.body=[])}d.push(t)}for(;f<_;)e(s.body[f++],d[d.length-1]);for(0<d.length&&(d[0].body=p.concat(d[0].body)),s.body=d;t=d[d.length-1];){var h=t.body[t.body.length-1];if(h instanceof AST_Break&&y.loopcontrol_target(h)===s&&t.body.pop(),t.body.length||t instanceof AST_Case&&(a||t.expression.has_side_effects(y)))break;d.pop()===a&&(a=null)}if(0==d.length)return te(AST_BlockStatement,s,{body:p.concat(te(AST_SimpleStatement,s.expression,{body:s.expression}))}).optimize(y);if(1==d.length&&(d[0]===l||d[0]===a)){var w=!1,v=new TreeWalker(function(e){return!!(w||e instanceof AST_Lambda||e instanceof AST_SimpleStatement)||void(e instanceof AST_Break&&v.loopcontrol_target(e)===s&&(w=!0))});if(s.walk(v),!w){var b=d[0].body.slice(),i=d[0].expression;return i&&b.unshift(te(AST_SimpleStatement,i,{body:i})),b.unshift(te(AST_SimpleStatement,s.expression,{body:s.expression})),te(AST_BlockStatement,s,{body:b}).optimize(y)}}return s}),G(AST_Try,function(n,e){if(i(n.body,e),n.bcatch&&n.bfinally&&all(n.bfinally.body,s)&&(n.bfinally=null),e.option("dead_code")&&all(n.body,s)){var t=[];return n.bcatch&&(c(e,n.bcatch,t),t.forEach(function(t){t instanceof AST_Definitions&&t.definitions.forEach(function(o){var e=o.name.definition().redefined();e&&(o.name=o.name.clone(),o.name.thedef=e)})})),n.bfinally&&(t=t.concat(n.bfinally.body)),te(AST_BlockStatement,n,{body:t}).optimize(e)}return n}),AST_Definitions.DEFMETHOD("remove_initializers",function(){var n=[];this.definitions.forEach(function(e){e.name instanceof AST_SymbolDeclaration?(e.value=null,n.push(e)):e.name.walk(new TreeWalker(function(t){t instanceof AST_SymbolDeclaration&&n.push(te(AST_VarDef,e,{name:t,value:null}))}))}),this.definitions=n}),AST_Definitions.DEFMETHOD("to_assignments",function(n){var r=n.option("reduce_vars"),e=this.definitions.reduce(function(t,e){if(e.value&&!(e.name instanceof AST_Destructuring)){var o=te(AST_SymbolRef,e.name,e.name);t.push(te(AST_Assign,e,{operator:"=",left:o,right:e.value})),r&&(o.definition().fixed=!1)}else if(e.value){var i=te(AST_VarDef,e,{name:e.name,value:e.value}),n=te(AST_Var,e,{definitions:[i]});t.push(n)}return e=e.name.definition(),e.eliminated++,e.replaced--,t},[]);return 0==e.length?null:W(this,e)}),G(AST_Definitions,function(t){return 0==t.definitions.length?te(AST_EmptyStatement,t):t}),G(AST_Import,function(t){return t}),G(AST_Call,function(u,g){function o(e){return e?e instanceof AST_Return?e.value?e.value.clone(!0):te(AST_Undefined,u):e instanceof AST_SimpleStatement?te(AST_UnaryPrefix,e,{operator:"void",expression:e.body.clone(!0)}):void 0:te(AST_Undefined,u)}function e(n){var e=_.body instanceof AST_Node?[_.body]:_.body,t=e.length;if(3>g.option("inline"))return 1==t&&o(n);n=null;for(var i,r=0;r<t;r++)if(i=e[r],!(i instanceof AST_Var)){if(n)return!1;n=i}else if(n&&!all(i.definitions,function(t){return!t.value}))return!1;return o(n)}function n(r,e){for(var t,o=0,n=_.argnames.length;o<n;o++){if(t=_.argnames[o],t instanceof AST_DefaultAssign){if(t.left.__unused)continue;return!1}if(t instanceof AST_Destructuring)return!1;if(t instanceof AST_Expansion){if(t.expression.__unused)continue;return!1}if(!t.__unused){if(!e||r[t.name]||D(t.name)||B.var_names()[t.name])return!1;L&&L.push(t.definition())}}return!0}function a(s,e){for(var t,o=_.body.length,n=0;n<o;n++)if(t=_.body[n],t instanceof AST_Var){if(!e)return!1;for(var r,i=t.definitions.length;0<=--i;){if(r=t.definitions[i].name,s[r.name]||D(r.name)||B.var_names()[r.name])return!1;L&&L.push(r.definition())}}return!0}function t(){var o=Object.create(null);do if(B=g.parent(++G),B instanceof AST_Catch)o[B.argname.name]=!0;else if(B instanceof AST_IterationStatement)L=[];else if(B instanceof AST_SymbolRef&&B.fixed_value()instanceof AST_Scope)return!1;while(!(B instanceof AST_Scope)||B instanceof AST_Arrow);var e=!(B instanceof AST_Toplevel)||g.toplevel.vars,t=g.option("inline");return!!a(o,3<=t&&e)&&!!n(o,2<=t&&e)&&(!L||0==L.length||!x(_,L))}function k(e,t,o,i){var n=o.definition();B.variables.set(o.name,n),B.enclosed.push(n),B.var_names()[o.name]||(B.var_names()[o.name]=!0,e.push(te(AST_VarDef,o,{name:o,value:null})));var r=te(AST_SymbolRef,o,o);n.references.push(r),i&&t.push(te(AST_Assign,u,{operator:"=",left:r,right:i}))}function l(e,t){for(var o=_.argnames.length,n=u.args.length;--n>=o;)t.push(u.args[n]);for(n=o;0<=--n;){var r=_.argnames[n],i=u.args[n];if(r.__unused||!r.name||B.var_names()[r.name])i&&t.push(i);else{var a=te(AST_SymbolVar,r,r);r.definition().orig.push(a),!i&&L&&(i=te(AST_Undefined,u)),k(e,t,a,i)}}e.reverse(),t.reverse()}function p(r,e){for(var t,o=e.length,n=0,a=_.body.length;n<a;n++)if(t=_.body[n],t instanceof AST_Var)for(var i=0,s=t.definitions.length;i<s;i++){var l=t.definitions[i],p=l.name;if(k(r,e,p,l.value),L){var d=p.definition(),f=te(AST_SymbolRef,p,p);d.references.push(f),e.splice(o++,0,te(AST_Assign,l,{operator:"=",left:f,right:te(AST_Undefined,p)}))}}}function d(){var o=[],e=[];return l(o,e),p(o,e),e.push(M),o.length&&(b=B.body.indexOf(g.parent(G-1))+1,B.body.splice(b,0,te(AST_Var,_,{definitions:o}))),e}var c=u.expression,_=c,h=all(u.args,function(t){return!(t instanceof AST_Expansion)});g.option("reduce_vars")&&_ instanceof AST_SymbolRef&&(_=_.fixed_value());var m=_ instanceof AST_Lambda;if(g.option("unused")&&h&&m&&!_.uses_arguments&&!_.uses_eval){for(var v=0,y=0,b=0,E=u.args.length;b<E;b++){if(_.argnames[b]instanceof AST_Expansion){if(_.argnames[b].expression.__unused)for(;b<E;){var i=u.args[b++].drop_side_effect_free(g);i&&(u.args[v++]=i)}else for(;b<E;)u.args[v++]=u.args[b++];y=v;break}var z=b>=_.argnames.length;if(z||_.argnames[b].__unused){var i=u.args[b].drop_side_effect_free(g);if(i)u.args[v++]=i;else if(!z){u.args[v++]=te(AST_Number,u.args[b],{value:0});continue}}else u.args[v++]=u.args[b];y=v}u.args.length=y}if(g.option("unsafe"))if(oe(c))switch(c.name){case"Array":if(1!=u.args.length)return te(AST_Array,u,{elements:u.args}).optimize(g);break;case"Object":if(0==u.args.length)return te(AST_Object,u,{properties:[]});break;case"String":if(0==u.args.length)return te(AST_String,u,{value:""});if(1>=u.args.length)return te(AST_Binary,u,{left:u.args[0],operator:"+",right:te(AST_String,u,{value:""})}).optimize(g);break;case"Number":if(0==u.args.length)return te(AST_Number,u,{value:0});if(1==u.args.length)return te(AST_UnaryPrefix,u,{expression:u.args[0],operator:"+"}).optimize(g);case"Boolean":if(0==u.args.length)return te(AST_False,u);if(1==u.args.length)return te(AST_UnaryPrefix,u,{expression:te(AST_UnaryPrefix,u,{expression:u.args[0],operator:"!"}),operator:"!"}).optimize(g);break;case"RegExp":var D=[];if(all(u.args,function(o){var e=o.evaluate(g);return D.unshift(e),o!==e}))try{return ne(g,u,te(AST_RegExp,u,{value:RegExp.apply(RegExp,D)}))}catch(e){g.warn("Error converting {expr} [{file}:{line},{col}]",{expr:u.print_to_string(),file:u.start.file,line:u.start.line,col:u.start.col})}break;case"Symbol":return u.args=[],u;}else if(c instanceof AST_Dot)switch(c.property){case"toString":if(0==u.args.length&&!c.expression.may_throw_on_access(g))return te(AST_Binary,u,{left:te(AST_String,u,{value:""}),operator:"+",right:c.expression}).optimize(g);break;case"join":if(c.expression instanceof AST_Array)EXIT:{var O;if(0<u.args.length&&(O=u.args[0].evaluate(g),O===u.args[0]))break EXIT;for(var q,T=[],F=[],b=0,E=c.expression.elements.length;b<E;b++){if(q=c.expression.elements[b],q instanceof AST_Expansion)break EXIT;var M=q.evaluate(g);M===q?(0<F.length&&(T.push(te(AST_String,u,{value:F.join(O)})),F.length=0),T.push(q)):F.push(M)}if(0<F.length&&T.push(te(AST_String,u,{value:F.join(O)})),0==T.length)return te(AST_String,u,{value:""});if(1==T.length)return T[0].is_string(g)?T[0]:te(AST_Binary,T[0],{operator:"+",left:te(AST_String,u,{value:""}),right:T[0]});if(""==O){var H;return H=T[0].is_string(g)||T[1].is_string(g)?T.shift():te(AST_String,u,{value:""}),T.reduce(function(o,e){return te(AST_Binary,e,{operator:"+",left:o,right:e})},H).optimize(g)}var i=u.clone();return i.expression=i.expression.clone(),i.expression.expression=i.expression.expression.clone(),i.expression.expression.elements=T,ne(g,u,i)}break;case"charAt":if(c.expression.is_string(g)){var N=u.args[0],j=N?N.evaluate(g):0;if(j!==N)return te(AST_Sub,c,{expression:c.expression,property:r(0|j,N||c)}).optimize(g)}break;case"apply":if(2==u.args.length&&u.args[1]instanceof AST_Array){var I=u.args[1].elements.slice();return I.unshift(u.args[0]),te(AST_Call,u,{expression:te(AST_Dot,c,{expression:c.expression,property:"call"}),args:I}).optimize(g)}break;case"call":var C=c.expression;if(C instanceof AST_SymbolRef&&(C=C.fixed_value()),C instanceof AST_Lambda&&!C.contains_this())return W(this,[u.args[0],te(AST_Call,u,{expression:c.expression,args:u.args.slice(1)})]).optimize(g);}if(g.option("unsafe_Function")&&oe(c)&&"Function"==c.name){if(0==u.args.length)return te(AST_Function,u,{argnames:[],body:[]}).optimize(g);if(all(u.args,function(t){return t instanceof AST_String}))try{var R="n(function("+u.args.slice(0,-1).map(function(t){return t.value}).join(",")+"){"+u.args[u.args.length-1].value+"})",P=parse(R),S={ie8:g.option("ie8")};P.figure_out_scope(S);var V=new Compressor(g.options);P=P.transform(V),P.figure_out_scope(S),base54.reset(),P.compute_char_frequency(S),P.mangle_names(S);var A;P.walk(new TreeWalker(function(t){return!!A||($(t)?(A=t,!0):void 0)})),A.body instanceof AST_Node&&(A.body=[te(AST_Return,A.body,{value:A.body})]);var R=OutputStream();return AST_BlockStatement.prototype._codegen.call(A,A,R),u.args=[te(AST_String,u,{value:A.argnames.map(function(t){return t.print_to_string()}).join(",")}),te(AST_String,u.args[u.args.length-1],{value:R.get().replace(/^\{|\}$/g,"")})],u}catch(e){if(e instanceof JS_Parse_Error)g.warn("Error parsing code passed to new Function [{file}:{line},{col}]",u.args[u.args.length-1].start),g.warn(e.toString());else throw e}}var Y=m&&_.body;if(Y instanceof AST_Node?Y=te(AST_Return,Y,{value:Y}):Y&&(Y=Y[0]),g.option("inline")&&Y instanceof AST_Return){var M=Y.value;if(!M||M.is_constant_expression()){var I=u.args.concat(M||te(AST_Undefined,u));return W(u,I).optimize(g)}}if(m&&!_.is_generator&&!_.async){var U,M,B,L,G=-1;if(g.option("inline")&&h&&!_.uses_arguments&&!_.uses_eval&&!(_.name&&_ instanceof AST_Function)&&(!(g.find_parent(AST_Lambda)instanceof AST_Arrow)||0==_.argnames.length&&(_.body instanceof AST_Node||1==_.body.length))&&(M=e(Y))&&(c===_||g.option("unused")&&1==(U=c.definition()).references.length&&!w(g,U)&&_.is_constant_expression(c.scope))&&!u.pure&&!_.contains_this()&&t())return W(u,d()).optimize(g);if(g.option("side_effects")&&!(_.body instanceof AST_Node)&&all(_.body,s)){var I=u.args.concat(te(AST_Undefined,u));return W(u,I).optimize(g)}}if(g.option("drop_console")&&c instanceof AST_PropAccess){for(var Q=c.expression;Q.expression;)Q=Q.expression;if(oe(Q)&&"console"==Q.name)return te(AST_Undefined,u).optimize(g)}if(g.option("negate_iife")&&g.parent()instanceof AST_SimpleStatement&&f(u))return u.negate(g,!0);var $=u.evaluate(g);return $===u?u:($=r($,u).optimize(g),ne(g,$,u))}),G(AST_New,function(n,e){if(e.option("unsafe")){var t=n.expression;if(oe(t))switch(t.name){case"Object":case"RegExp":case"Function":case"Error":case"Array":return te(AST_Call,n,n).transform(e);}}return n}),G(AST_Sequence,function(r,s){function e(){var t=first_in_statement(s),o=r.expressions.length-1;r.expressions.forEach(function(n,e){e<o&&(n=n.drop_side_effect_free(s,t)),n&&(a(l,n),t=!1)})}function t(){for(;0<n&&o(l[n],s);)n--;n<l.length-1&&(l[n]=te(AST_UnaryPrefix,r,{operator:"void",expression:l[n]}),l.length=n+1)}if(!s.option("side_effects"))return r;var l=[];e();var n=l.length-1;return(t(),0==n)?(r=J(s.parent(),s.self(),l[0]),r instanceof AST_Sequence||(r=r.optimize(s)),r):(r.expressions=l,r)}),AST_Unary.DEFMETHOD("lift_sequences",function(e){if(e.option("sequences")&&this.expression instanceof AST_Sequence){var t=this.expression.expressions.slice(),o=this.clone();return o.expression=t.pop(),t.push(o),W(this,t).optimize(e)}return this}),G(AST_UnaryPostfix,function(o,e){return o.lift_sequences(e)}),G(AST_UnaryPrefix,function(a,t){var o=a.expression;if("delete"==a.operator&&!(o instanceof AST_SymbolRef||o instanceof AST_PropAccess||d(o)))return o instanceof AST_Sequence?(o=o.expressions.slice(),o.push(te(AST_True,a)),W(a,o).optimize(t)):W(a,[o,te(AST_True,a)]).optimize(t);var i=a.lift_sequences(t);if(i!==a)return i;if(t.option("side_effects")&&"void"==a.operator)return o=o.drop_side_effect_free(t),o?(a.expression=o,a):te(AST_Undefined,a).optimize(t);if(t.in_boolean_context())switch(a.operator){case"!":if(o instanceof AST_UnaryPrefix&&"!"==o.operator)return o.expression;o instanceof AST_Binary&&(a=ne(t,a,o.negate(t,first_in_statement(t))));break;case"typeof":return t.warn("Boolean expression always true [{file}:{line},{col}]",a.start),(o instanceof AST_SymbolRef?te(AST_True,a):W(a,[o,te(AST_True,a)])).optimize(t);}if("-"==a.operator&&o instanceof AST_Infinity&&(o=o.transform(t)),o instanceof AST_Binary&&("+"==a.operator||"-"==a.operator)&&("*"==o.operator||"/"==o.operator||"%"==o.operator))return te(AST_Binary,a,{operator:o.operator,left:te(AST_UnaryPrefix,o.left,{operator:a.operator,expression:o.left}),right:o.right});if("-"!=a.operator||!(o instanceof AST_Number||o instanceof AST_Infinity)){var e=a.evaluate(t);if(e!==a)return e=r(e,a).optimize(t),ne(t,e,a)}return a}),AST_Binary.DEFMETHOD("lift_sequences",function(i){if(i.option("sequences")){if(this.left instanceof AST_Sequence){var t=this.left.expressions.slice(),o=this.clone();return o.left=t.pop(),t.push(o),W(this,t).optimize(i)}if(this.right instanceof AST_Sequence&&!this.left.has_side_effects(i)){for(var n="="==this.operator&&this.left instanceof AST_SymbolRef,t=this.right.expressions,e=t.length-1,r=0;r<e&&(n||!t[r].has_side_effects(i));r++);if(r==e){t=t.slice();var o=this.clone();return o.right=t.pop(),t.push(o),W(this,t).optimize(i)}if(0<r){var o=this.clone();return o.right=W(this.right,t.slice(r)),t=t.slice(0,r),t.push(o),W(this,t).optimize(i)}}}return this});var N=makePredicate("== === != !== * & | ^");G(AST_Binary,function(a,e){function s(){return a.left.is_constant()||a.right.is_constant()||!a.left.has_side_effects(e)&&!a.right.has_side_effects(e)}function t(e){if(s()){e&&(a.operator=e);var t=a.left;a.left=a.right,a.right=t}}if(N(a.operator)&&a.right.is_constant()&&!a.left.is_constant()&&!(a.left instanceof AST_Binary&&PRECEDENCE[a.left.operator]>=PRECEDENCE[a.operator])&&t(),a=a.lift_sequences(e),e.option("comparisons"))switch(a.operator){case"===":case"!==":(a.left.is_string(e)&&a.right.is_string(e)||a.left.is_number(e)&&a.right.is_number(e)||a.left.is_boolean()&&a.right.is_boolean()||a.left.equivalent_to(a.right))&&(a.operator=a.operator.substr(0,2));case"==":case"!=":if(e.option("typeofs")&&a.left instanceof AST_String&&"undefined"==a.left.value&&a.right instanceof AST_UnaryPrefix&&"typeof"==a.right.operator){var i=a.right.expression;(i instanceof AST_SymbolRef?i.is_declared(e):!(i instanceof AST_PropAccess&&e.option("ie8")))&&(a.right=i,a.left=te(AST_Undefined,a.left).optimize(e),2==a.operator.length&&(a.operator+="="))}else if(a.left instanceof AST_SymbolRef&&a.right instanceof AST_SymbolRef&&a.left.definition()===a.right.definition()&&y(a.left.fixed_value()))return te("="==a.operator[0]?AST_True:AST_False,a);break;case"&&":case"||":var n=a.left;if(n.operator==a.operator&&(n=n.right),n instanceof AST_Binary&&n.operator==("&&"==a.operator?"!==":"===")&&a.right instanceof AST_Binary&&n.operator==a.right.operator&&(o(n.left,e)&&a.right.left instanceof AST_Null||n.left instanceof AST_Null&&o(a.right.left,e))&&!n.right.has_side_effects(e)&&n.right.equivalent_to(a.right.right)){var l=te(AST_Binary,a,{operator:n.operator.slice(0,-1),left:te(AST_Null,a),right:n.right});return n!==a.left&&(l=te(AST_Binary,a,{operator:a.operator,left:a.left.left,right:l})),l}}if("+"==a.operator&&e.in_boolean_context()){var p=a.left.evaluate(e),d=a.right.evaluate(e);if(p&&"string"==typeof p)return e.warn("+ in boolean context always true [{file}:{line},{col}]",a.start),W(a,[a.right,te(AST_True,a)]).optimize(e);if(d&&"string"==typeof d)return e.warn("+ in boolean context always true [{file}:{line},{col}]",a.start),W(a,[a.left,te(AST_True,a)]).optimize(e)}if(e.option("comparisons")&&a.is_boolean()){if(!(e.parent()instanceof AST_Binary)||e.parent()instanceof AST_Assign){var f=te(AST_UnaryPrefix,a,{operator:"!",expression:a.negate(e,first_in_statement(e))});a=ne(e,a,f)}if(e.option("unsafe_comps"))switch(a.operator){case"<":t(">");break;case"<=":t(">=");}}if("+"==a.operator){if(a.right instanceof AST_String&&""==a.right.getValue()&&a.left.is_string(e))return a.left;if(a.left instanceof AST_String&&""==a.left.getValue()&&a.right.is_string(e))return a.right;if(a.left instanceof AST_Binary&&"+"==a.left.operator&&a.left.left instanceof AST_String&&""==a.left.left.getValue()&&a.right.is_string(e))return a.left=a.left.right,a.transform(e)}if(e.option("evaluate")){switch(a.operator){case"&&":var p=!!a.left.truthy||!a.left.falsy&&a.left.evaluate(e);if(!p)return e.warn("Condition left of && always false [{file}:{line},{col}]",a.start),J(e.parent(),e.self(),a.left).optimize(e);if(!(p instanceof AST_Node))return e.warn("Condition left of && always true [{file}:{line},{col}]",a.start),W(a,[a.left,a.right]).optimize(e);var d=a.right.evaluate(e);if(!d){if(e.in_boolean_context())return e.warn("Boolean && always false [{file}:{line},{col}]",a.start),W(a,[a.left,te(AST_False,a)]).optimize(e);a.falsy=!0}else if(!(d instanceof AST_Node)){var c=e.parent();if("&&"==c.operator&&c.left===e.self()||e.in_boolean_context())return e.warn("Dropping side-effect-free && [{file}:{line},{col}]",a.start),a.left.optimize(e)}if("||"==a.left.operator){var _=a.left.right.evaluate(e);if(!_)return te(AST_Conditional,a,{condition:a.left.left,consequent:a.right,alternative:a.left.right}).optimize(e)}break;case"||":var p=!!a.left.truthy||!a.left.falsy&&a.left.evaluate(e);if(!p)return e.warn("Condition left of || always false [{file}:{line},{col}]",a.start),W(a,[a.left,a.right]).optimize(e);if(!(p instanceof AST_Node))return e.warn("Condition left of || always true [{file}:{line},{col}]",a.start),J(e.parent(),e.self(),a.left).optimize(e);var d=a.right.evaluate(e);if(!d){var c=e.parent();if("||"==c.operator&&c.left===e.self()||e.in_boolean_context())return e.warn("Dropping side-effect-free || [{file}:{line},{col}]",a.start),a.left.optimize(e)}else if(!(d instanceof AST_Node)){if(e.in_boolean_context())return e.warn("Boolean || always true [{file}:{line},{col}]",a.start),W(a,[a.left,te(AST_True,a)]).optimize(e);a.truthy=!0}if("&&"==a.left.operator){var _=a.left.right.evaluate(e);if(_&&!(_ instanceof AST_Node))return te(AST_Conditional,a,{condition:a.left.left,consequent:a.left.right,alternative:a.right}).optimize(e)}}var u=!0;switch(a.operator){case"+":if(a.left instanceof AST_Constant&&a.right instanceof AST_Binary&&"+"==a.right.operator&&a.right.left instanceof AST_Constant&&a.right.is_string(e)&&(a=te(AST_Binary,a,{operator:"+",left:te(AST_String,a.left,{value:""+a.left.getValue()+a.right.left.getValue(),start:a.left.start,end:a.right.left.end}),right:a.right.right})),a.right instanceof AST_Constant&&a.left instanceof AST_Binary&&"+"==a.left.operator&&a.left.right instanceof AST_Constant&&a.left.is_string(e)&&(a=te(AST_Binary,a,{operator:"+",left:a.left.left,right:te(AST_String,a.right,{value:""+a.left.right.getValue()+a.right.getValue(),start:a.left.right.start,end:a.right.end})})),a.left instanceof AST_Binary&&"+"==a.left.operator&&a.left.is_string(e)&&a.left.right instanceof AST_Constant&&a.right instanceof AST_Binary&&"+"==a.right.operator&&a.right.left instanceof AST_Constant&&a.right.is_string(e)&&(a=te(AST_Binary,a,{operator:"+",left:te(AST_Binary,a.left,{operator:"+",left:a.left.left,right:te(AST_String,a.left.right,{value:""+a.left.right.getValue()+a.right.left.getValue(),start:a.left.right.start,end:a.right.left.end})}),right:a.right.right})),a.right instanceof AST_UnaryPrefix&&"-"==a.right.operator&&a.left.is_number(e)){a=te(AST_Binary,a,{operator:"-",left:a.left,right:a.right.expression});break}if(a.left instanceof AST_UnaryPrefix&&"-"==a.left.operator&&s()&&a.right.is_number(e)){a=te(AST_Binary,a,{operator:"-",left:a.right,right:a.left.expression});break}case"*":u=e.option("unsafe_math");case"&":case"|":case"^":if(a.left.is_number(e)&&a.right.is_number(e)&&s()&&!(a.left instanceof AST_Binary&&a.left.operator!=a.operator&&PRECEDENCE[a.left.operator]>=PRECEDENCE[a.operator])){var g=te(AST_Binary,a,{operator:a.operator,left:a.right,right:a.left});a=a.right instanceof AST_Constant&&!(a.left instanceof AST_Constant)?ne(e,g,a):ne(e,a,g)}u&&a.is_number(e)&&(a.right instanceof AST_Binary&&a.right.operator==a.operator&&(a=te(AST_Binary,a,{operator:a.operator,left:te(AST_Binary,a.left,{operator:a.operator,left:a.left,right:a.right.left,start:a.left.start,end:a.right.left.end}),right:a.right.right})),a.right instanceof AST_Constant&&a.left instanceof AST_Binary&&a.left.operator==a.operator&&(a.left.left instanceof AST_Constant?a=te(AST_Binary,a,{operator:a.operator,left:te(AST_Binary,a.left,{operator:a.operator,left:a.left.left,right:a.right,start:a.left.left.start,end:a.right.end}),right:a.left.right}):a.left.right instanceof AST_Constant&&(a=te(AST_Binary,a,{operator:a.operator,left:te(AST_Binary,a.left,{operator:a.operator,left:a.left.right,right:a.right,start:a.left.right.start,end:a.right.end}),right:a.left.left}))),a.left instanceof AST_Binary&&a.left.operator==a.operator&&a.left.right instanceof AST_Constant&&a.right instanceof AST_Binary&&a.right.operator==a.operator&&a.right.left instanceof AST_Constant&&(a=te(AST_Binary,a,{operator:a.operator,left:te(AST_Binary,a.left,{operator:a.operator,left:te(AST_Binary,a.left.left,{operator:a.operator,left:a.left.right,right:a.right.left,start:a.left.right.start,end:a.right.left.end}),right:a.left.left}),right:a.right.right})));}}if(a.right instanceof AST_Binary&&a.right.operator==a.operator&&(O(a.operator)||"+"==a.operator&&(a.right.left.is_string(e)||a.left.is_string(e)&&a.right.right.is_string(e))))return a.left=te(AST_Binary,a.left,{operator:a.operator,left:a.left,right:a.right.left}),a.right=a.right.right,a.transform(e);var h=a.evaluate(e);return h===a?a:(h=r(h,a).optimize(e),ne(e,h,a))}),G(AST_SymbolExport,function(t){return t}),G(AST_SymbolRef,function(t,s){function e(o){var n;return o.walk(new TreeWalker(function(t){if(t instanceof AST_SymbolRef&&(n=!0),n)return!0})),n}var o=t.resolve_defines(s);if(o)return o.optimize(s);if(!s.option("ie8")&&oe(t)&&(!t.scope.uses_with||!s.find_parent(AST_With)))switch(t.name){case"undefined":return te(AST_Undefined,t).optimize(s);case"NaN":return te(AST_NaN,t).optimize(s);case"Infinity":return te(AST_Infinity,t).optimize(s);}if(s.option("reduce_vars")&&Z(t,s.parent())!==t){var n=t.definition(),i=t.fixed_value(),a=n.single_use;if(a&&(i instanceof AST_Lambda||i instanceof AST_Class))if(n.scope!==t.scope&&(!s.option("reduce_funcs")&&i instanceof AST_Lambda||1==n.escaped||i.inlined))a=!1;else if(w(s,n))a=!1;else if((n.scope!==t.scope||n.orig[0]instanceof AST_SymbolFunarg)&&(a=i.is_constant_expression(t.scope),"f"==a)){var l=t.scope;do(l instanceof AST_Defun||$(l))&&(l.inlined=!0);while(l=l.parent_scope)}if(a&&i){i instanceof AST_DefClass&&(i=te(AST_ClassExpression,i,i)),i instanceof AST_Defun&&(i._squeezed=!0,i=te(AST_Function,i,i));var p;if(0<n.recursive_refs&&i.name instanceof AST_SymbolDefun){p=i.clone(!0);var d=p.name.definition(),f=p.variables.get(p.name.name),c=f&&f.orig[0];c instanceof AST_SymbolLambda||(c=te(AST_SymbolLambda,p.name,p.name),c.scope=p,p.name=c,f=p.def_function(c)),p.walk(new TreeWalker(function(t){t instanceof AST_SymbolRef&&t.definition()===d&&(t.thedef=f,f.references.push(t))}))}else p=i.optimize(s),p===i&&(p=i.clone(!0));return p}if(i&&void 0===n.should_replace){var _;if(i instanceof AST_This)!(n.orig[0]instanceof AST_SymbolFunarg)&&all(n.references,function(t){return n.scope===t.scope})&&(_=i);else{var u=i.evaluate(s);u!==i&&(s.option("unsafe_regexp")||!(u instanceof RegExp))&&(_=r(u,i))}if(_){var g,h=_.optimize(s).print_to_string().length;e(i)?g=function(){var t=_.optimize(s);return t===_?t.clone(!0):t}:(h=z(h,i.print_to_string().length),g=function(){var t=u(_.optimize(s),i);return t===_||t===i?t.clone(!0):t});var m=n.name.length,v=0;s.option("unused")&&!s.exposed(n)&&(v=(m+2+h)/(n.references.length-n.assignments)),n.should_replace=!!(h<=m+v)&&g}else n.should_replace=!1}if(n.should_replace)return n.should_replace()}return t}),G(AST_Undefined,function(n,e){if(e.option("unsafe_undefined")){var t=X(e,"undefined");if(t){var o=te(AST_SymbolRef,n,{name:"undefined",scope:t.scope,thedef:t});return o.is_undefined=!0,o}}var i=Z(e.self(),e.parent());return i&&b(i,n)?n:te(AST_UnaryPrefix,n,{operator:"void",expression:te(AST_Number,n,{value:0})})}),G(AST_Infinity,function(n,e){var t=Z(e.self(),e.parent());return t&&b(t,n)?n:e.option("keep_infinity")&&(!t||b(t,n))&&!X(e,"Infinity")?n:te(AST_Binary,n,{operator:"/",left:te(AST_Number,n,{value:1}),right:te(AST_Number,n,{value:0})})}),G(AST_NaN,function(n,e){var t=Z(e.self(),e.parent());return t&&!b(t,n)||X(e,"NaN")?te(AST_Binary,n,{operator:"/",left:te(AST_Number,n,{value:0}),right:te(AST_Number,n,{value:0})}):n});var j=["+","-","/","*","%",">>","<<",">>>","|","^","&"],I=["*","|","^","&"];G(AST_Assign,function(l,e){function t(t,o){for(var i,n=l.left.definition().scope;(i=e.parent(t++))!==n;)if(i instanceof AST_Try){if(i.bfinally)return!0;if(o&&i.bcatch)return!0}}var o;if(e.option("dead_code")&&l.left instanceof AST_SymbolRef&&(o=l.left.definition()).scope===e.find_parent(AST_Lambda)){var i,n=0,r=l;do if(i=r,r=e.parent(n++),r instanceof AST_Exit){if(t(n,r instanceof AST_Throw))break;if(x(o.scope,[o]))break;return"="==l.operator?l.right:(o.fixed=!1,te(AST_Binary,l,{operator:l.operator.slice(0,-1),left:l.left,right:l.right}).optimize(e))}while(r instanceof AST_Binary&&r.right===i||r instanceof AST_Sequence&&r.tail_node()===i)}return l=l.lift_sequences(e),"="==l.operator&&l.left instanceof AST_SymbolRef&&l.right instanceof AST_Binary&&(l.right.left instanceof AST_SymbolRef&&l.right.left.name==l.left.name&&member(l.right.operator,j)?(l.operator=l.right.operator+"=",l.right=l.right.right):l.right.right instanceof AST_SymbolRef&&l.right.right.name==l.left.name&&member(l.right.operator,I)&&!l.right.left.has_side_effects(e)&&(l.operator=l.right.operator+"=",l.right=l.right.left)),l}),G(AST_DefaultAssign,function(n,e){if(!e.option("evaluate"))return n;var t=n.right.evaluate(e);return void 0===t?n=n.left:t!==n.right&&(t=r(t,n.right),n.right=u(t,n.right)),n}),G(AST_Conditional,function(r,a){function e(t){return t.is_boolean()?t:te(AST_UnaryPrefix,t,{operator:"!",expression:t.negate(a)})}function t(t){return t instanceof AST_True||_&&t instanceof AST_Constant&&t.getValue()||t instanceof AST_UnaryPrefix&&"!"==t.operator&&t.expression instanceof AST_Constant&&!t.expression.getValue()}function o(t){return t instanceof AST_False||_&&t instanceof AST_Constant&&!t.getValue()||t instanceof AST_UnaryPrefix&&"!"==t.operator&&t.expression instanceof AST_Constant&&t.expression.getValue()}if(!a.option("conditionals"))return r;if(r.condition instanceof AST_Sequence){var n=r.condition.expressions.slice();return r.condition=n.pop(),n.push(r),W(r,n)}var i=r.condition.evaluate(a);if(i!==r.condition)return i?(a.warn("Condition always true [{file}:{line},{col}]",r.start),J(a.parent(),a.self(),r.consequent)):(a.warn("Condition always false [{file}:{line},{col}]",r.start),J(a.parent(),a.self(),r.alternative));var s=i.negate(a,first_in_statement(a));ne(a,i,s)===s&&(r=te(AST_Conditional,r,{condition:s,consequent:r.alternative,alternative:r.consequent}));var l=r.condition,p=r.consequent,d=r.alternative;if(l instanceof AST_SymbolRef&&p instanceof AST_SymbolRef&&l.definition()===p.definition())return te(AST_Binary,r,{operator:"||",left:l,right:d});if(p instanceof AST_Assign&&d instanceof AST_Assign&&p.operator==d.operator&&p.left.equivalent_to(d.left)&&(!r.condition.has_side_effects(a)||"="==p.operator&&!p.left.has_side_effects(a)))return te(AST_Assign,r,{operator:p.operator,left:p.left,right:te(AST_Conditional,r,{condition:r.condition,consequent:p.right,alternative:d.right})});var f;if(p instanceof AST_Call&&d.TYPE===p.TYPE&&0<p.args.length&&p.args.length==d.args.length&&p.expression.equivalent_to(d.expression)&&!r.condition.has_side_effects(a)&&!p.expression.has_side_effects(a)&&"number"==typeof(f=function(){for(var r=p.args,e=d.args,t=0,o=r.length;t<o;t++){if(r[t]instanceof AST_Expansion)return;if(!r[t].equivalent_to(e[t])){if(e[t]instanceof AST_Expansion)return;for(var i=t+1;i<o;i++){if(r[i]instanceof AST_Expansion)return;if(!r[i].equivalent_to(e[i]))return}return t}}}())){var c=p.clone();return c.args[f]=te(AST_Conditional,r,{condition:r.condition,consequent:p.args[f],alternative:d.args[f]}),c}if(p instanceof AST_Conditional&&p.alternative.equivalent_to(d))return te(AST_Conditional,r,{condition:te(AST_Binary,r,{left:r.condition,operator:"&&",right:p.condition}),consequent:p.consequent,alternative:d});if(p.equivalent_to(d))return W(r,[r.condition,p]).optimize(a);if(p instanceof AST_Binary&&"||"==p.operator&&p.right.equivalent_to(d))return te(AST_Binary,r,{operator:"||",left:te(AST_Binary,r,{operator:"&&",left:r.condition,right:p.left}),right:d}).optimize(a);var _=a.in_boolean_context();return t(r.consequent)?o(r.alternative)?e(r.condition):te(AST_Binary,r,{operator:"||",left:e(r.condition),right:r.alternative}):o(r.consequent)?t(r.alternative)?e(r.condition.negate(a)):te(AST_Binary,r,{operator:"&&",left:e(r.condition.negate(a)),right:r.alternative}):t(r.alternative)?te(AST_Binary,r,{operator:"||",left:e(r.condition.negate(a)),right:r.consequent}):o(r.alternative)?te(AST_Binary,r,{operator:"&&",left:e(r.condition),right:r.consequent}):r}),G(AST_Boolean,function(n,e){if(e.in_boolean_context())return te(AST_Number,n,{value:+n.value});if(e.option("booleans")){var t=e.parent();return t instanceof AST_Binary&&("=="==t.operator||"!="==t.operator)?(e.warn("Non-strict equality against boolean: {operator} {value} [{file}:{line},{col}]",{operator:t.operator,value:n.value,file:t.start.file,line:t.start.line,col:t.start.col}),te(AST_Number,n,{value:+n.value})):te(AST_UnaryPrefix,n,{operator:"!",expression:te(AST_Number,n,{value:1-n.value})})}return n}),G(AST_Sub,function(a,e){var t=a.expression,o=a.property;if(e.option("properties")){var n=o.evaluate(e);if(n!==o){if("string"==typeof n)if("undefined"==n)n=void 0;else{var s=parseFloat(n);s.toString()==n&&(n=s)}o=a.property=u(o,r(n,o).transform(e));var l=""+n;if(is_identifier_string(l)&&l.length<=o.print_to_string().length+1)return te(AST_Dot,a,{expression:t,property:l}).optimize(e)}}if(Z(a,e.parent()))return a;if(n!==o){var p=a.flatten_object(l,e);p&&(t=a.expression=p.expression,o=a.property=p.property)}if(e.option("properties")&&e.option("side_effects")&&o instanceof AST_Number&&t instanceof AST_Array){var d=o.getValue(),f=t.elements;FLATTEN:if(d in f){for(var s,c=!0,_=[],u=f.length;--u>d;)s=f[u].drop_side_effect_free(e),s&&(_.unshift(s),c&&s.has_side_effects(e)&&(c=!1));var g=f[d];if(g instanceof AST_Expansion)break FLATTEN;for(g=g instanceof AST_Hole?te(AST_Undefined,g):g,c||_.unshift(g);0<=--u;){var s=f[u];if(s instanceof AST_Expansion)break FLATTEN;s=s.drop_side_effect_free(e),s?_.unshift(s):d--}return c?(_.push(g),W(a,_).optimize(e)):te(AST_Sub,a,{expression:te(AST_Array,t,{elements:_}),property:te(AST_Number,o,{value:d})})}}var i=a.evaluate(e);return i===a?a:(i=r(i,a).optimize(e),ne(e,i,a))}),AST_Lambda.DEFMETHOD("contains_this",function(){var n,e=this;return e.walk(new TreeWalker(function(t){return!!n||(t instanceof AST_This?n=!0:t!==e&&t instanceof AST_Scope&&!(t instanceof AST_Arrow)||void 0)})),n}),AST_PropAccess.DEFMETHOD("flatten_object",function(r,e){if(e.option("properties")){var t=e.option("unsafe_arrows")&&6<=e.option("ecma"),o=this.expression;if(o instanceof AST_Object)for(var n,a=o.properties,s=a.length;0<=--s;)if(n=a[s],""+(n instanceof AST_ConciseMethod?n.key.name:n.key)==r){if(!all(a,function(o){return o instanceof AST_ObjectKeyVal||t&&o instanceof AST_ConciseMethod&&!o.is_generator}))break;var l=n.value;if((l instanceof AST_Accessor||l instanceof AST_Function)&&!(e.parent()instanceof AST_New)&&l.contains_this())break;return te(AST_Sub,this,{expression:te(AST_Array,o,{elements:a.map(function(n){var e=n.value;e instanceof AST_Accessor&&(e=te(AST_Function,e,e));var t=n.key;return t instanceof AST_Node&&!(t instanceof AST_SymbolMethod)?W(n,[t,e]):e})}),property:te(AST_Number,this,{value:s})})}}}),G(AST_Dot,function(s,e){("arguments"==s.property||"caller"==s.property)&&e.warn("Function.protoype.{prop} not supported [{file}:{line},{col}]",{prop:s.property,file:s.start.file,line:s.start.line,col:s.start.col});var t=s.resolve_defines(e);if(t)return t.optimize(e);if(Z(s,e.parent()))return s;if(e.option("unsafe_proto")&&s.expression instanceof AST_Dot&&"prototype"==s.expression.property){var o=s.expression.expression;if(oe(o))switch(o.name){case"Array":s.expression=te(AST_Array,s.expression,{elements:[]});break;case"Function":s.expression=te(AST_Function,s.expression,{argnames:[],body:[]});break;case"Number":s.expression=te(AST_Number,s.expression,{value:0});break;case"Object":s.expression=te(AST_Object,s.expression,{properties:[]});break;case"RegExp":s.expression=te(AST_RegExp,s.expression,{value:/t/});break;case"String":s.expression=te(AST_String,s.expression,{value:""});}}var i=s.flatten_object(s.property,e);if(i)return i.optimize(e);var n=s.evaluate(e);return n===s?s:(n=r(n,s).optimize(e),ne(e,n,s))}),G(AST_Array,e),G(AST_Object,e),G(AST_RegExp,e),G(AST_Return,function(n,e){return n.value&&o(n.value,e)&&(n.value=null),n}),G(AST_Arrow,function(n,e){if(n.body instanceof AST_Node||i(n.body,e),e.option("arrows")&&1==n.body.length&&n.body[0]instanceof AST_Return){var t=n.body[0].value;n.body=t?t:[]}return n}),G(AST_Function,function(n,e){if(i(n.body,e),e.option("unsafe_arrows")&&6<=e.option("ecma")&&!n.name&&!n.is_generator&&!n.uses_arguments&&!n.uses_eval){var t=!1;if(n.walk(new TreeWalker(function(o){return!!t||(o instanceof AST_This?(t=!0,!0):void 0)})),!t)return te(AST_Arrow,n,n).optimize(e)}return n}),G(AST_Class,function(t){return t}),G(AST_Yield,function(n,e){return n.expression&&!n.is_star&&o(n.expression,e)&&(n.expression=null),n}),G(AST_VarDef,function(n,e){var t=e.option("global_defs");return t&&HOP(t,n.name.name)&&e.warn("global_defs "+n.name.name+" redefined [{file}:{line},{col}]",n.start),n}),G(AST_TemplateString,function(r,e){if(!e.option("evaluate")||e.parent()instanceof AST_PrefixedTemplateString)return r;for(var t,o=[],n=0;n<r.segments.length;n++){if(t=r.segments[n],t instanceof AST_Node){var a=t.evaluate(e);if(a!==t&&(a+"").length<=t.print_to_string().length+3){o[o.length-1].value=o[o.length-1].value+a+r.segments[++n].value;continue}}o.push(t)}return r.segments=o,1==o.length?te(AST_String,r,o[0]):r}),G(AST_PrefixedTemplateString,function(t){return t}),G(AST_ObjectProperty,E),G(AST_ConciseMethod,function(n,e){if(E(n,e),e.option("arrows")&&e.parent()instanceof AST_Object&&!n.value.uses_arguments&&!n.value.uses_eval&&1==n.value.body.length&&n.value.body[0]instanceof AST_Return&&n.value.body[0].value&&!n.value.contains_this()){var t=te(AST_Arrow,n.value,n.value);return t.async=n.async,t.is_generator=n.is_generator,te(AST_ObjectKeyVal,n,{key:n.key instanceof AST_SymbolMethod?n.key.name:n.key,value:t,quote:n.quote})}return n}),G(AST_ObjectKeyVal,function(r,e){E(r,e);var t=e.option("unsafe_methods");if(t&&6<=e.option("ecma")&&(!(t instanceof RegExp)||t.test(r.key+""))){var o=r.key,i=r.value,n=i instanceof AST_Arrow&&Array.isArray(i.body)&&!i.contains_this();if((n||i instanceof AST_Function)&&!i.name)return te(AST_ConciseMethod,r,{async:i.async,is_generator:i.is_generator,key:o instanceof AST_Node?o:te(AST_SymbolMethod,r,{name:o}),value:te(AST_Accessor,i,i),quote:r.quote})}return r})}();